Commit Graph

668 Commits

Author SHA1 Message Date
YeonGyu-Kim a8ab137ee9 fix(test): cache-bust mcp-server-loader import to prevent mock leak 2026-04-05 13:55:10 +09:00
YeonGyu-Kim 52150fb60b fix(test): use dynamic import in discovery tests to prevent mock.module leak from loader.test.ts
When run-ci-tests.ts groups the claude-code-plugin-loader directory,
loader.test.ts mocks ./discovery with name: 'demo'. This mock leaked
into discovery.test.ts because both ran in the same process.

Fix: dynamic import with cache-busting query string ensures each test
gets a fresh module instance, immune to sibling test mocks.
2026-04-05 13:51:26 +09:00
YeonGyu-Kim 709706378b test(plugin-loader): isolate discovery name derivation
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-05 13:41:38 +09:00
YeonGyu-Kim a8450d6509 fix(test): prevent directory contamination in discovery tests
The discovery tests were failing in CI with "demo" plugin name instead
of expected names. The root cause was test directory structure:

**The Bug:**
Original test code created installPath as a subdirectory:
```typescript
const installPath = join(createTemporaryDirectory("omo-plugin-install-"), "oh-my-openagent")
```

This created: `/tmp/omo-plugin-install-XXXXXX/oh-my-openagent`

If another test created `/tmp/omo-plugin-install-YYYYYY/.claude-plugin/plugin.json`
with name "demo", and the test execution order caused the discovery test
to pick up the wrong temp directory, it would read the manifest with "demo".

**The Fix:**
Changed tests to use unique temp directories directly:
```typescript
const installPath = createTemporaryDirectory("omo-npm-plugin-")
```

This creates: `/tmp/omo-npm-plugin-XXXXXX`

Each test now has its own unique temp directory that cannot be contaminated
by other tests.

**Also included:**
- mock.module() for process isolation in CI runner
- pluginsHomeOverride parameter for plugins database isolation

Fixes CI failure on dev branch.
2026-04-05 11:45:43 +09:00
YeonGyu-Kim 4b0592c045 fix(test): isolate discovery tests using mock.module to force CI isolation
The discovery tests were failing in CI with "demo" plugin name instead of
expected names. This happened because:

1. The CI test runner (run-ci-tests.ts) groups tests by directory
2. Tests using mock.module() are run in isolated processes
3. Tests without mock.module run in a shared batch
4. Other tests in the shared batch were creating plugin state that
   contaminated the discovery tests

Fix adds mock.module() to discovery tests:
- Mocks the logger module to avoid noise
- Forces CI runner to run these tests in isolated process
- Prevents cross-test contamination

Combined with previous pluginsHomeOverride parameter fix, this ensures
tests are properly isolated both at the parameter level and process level.

Also removes debug logging that was added for troubleshooting.

Fixes CI failure on dev branch.
2026-04-05 11:40:01 +09:00
YeonGyu-Kim 23582ea9a5 fix(test): isolate discovery tests from global env var contamination
The discovery.test.ts was using process.env.CLAUDE_PLUGINS_HOME to set
the plugins directory, but this global state could be affected by other
tests running in parallel, causing flaky failures with errors like:
  Expected: "oh-my-openagent"
  Received: "demo"

Changes:
- Added pluginsHomeOverride option to PluginLoaderOptions type
- Modified discoverInstalledPlugins to accept optional pluginsHomeOverride
- Modified loadInstalledPlugins to accept optional pluginsBaseDir
- Updated all 3 discovery tests to use pluginsHomeOverride instead of
  relying on global process.env.CLAUDE_PLUGINS_HOME

This makes the tests properly isolated and deterministic regardless of
test execution order or parallelization.

Fixes CI failure on dev branch.
2026-04-05 11:34:32 +09:00
YeonGyu-Kim b14665f174 fix: cache plugin component loading results
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-05 11:24:10 +09:00
YeonGyu-Kim e67fcb95ba test: cover plugin component cache behavior
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-05 11:24:10 +09:00
YeonGyu-Kim 55d5ecb9fb test: fresh-import remaining contamination-prone modules 2026-04-04 20:14:50 +09:00
YeonGyu-Kim 861ce1c161 test: remove provider and cache mock leak paths 2026-04-04 20:06:56 +09:00
YeonGyu-Kim 963b576b9e test(background-agent): localize cache mock setup 2026-04-04 19:58:33 +09:00
YeonGyu-Kim a4db240d47 test: localize mock.module setup to fresh imports 2026-04-04 19:49:25 +09:00
YeonGyu-Kim 8b8559f39d test: load real modules with unique import ids 2026-04-04 19:42:18 +09:00
YeonGyu-Kim b0f754f506 test: import real modules in contamination-prone tests 2026-04-04 19:41:11 +09:00
YeonGyu-Kim f7d2ff75a7 Fix mock isolation in scope-filtering.test.ts
- Narrow mock.module() targets to prevent barrel export contamination
- Ensure proper cleanup after tests

🤖 GENERATED WITH ASSISTANCE OF OhMyOpenCode
2026-04-04 18:56:48 +09:00
YeonGyu-Kim ffcd34d4c1 Fix mock target path in claude-code-mcp-loader test
- Change mock.module target from "../../shared" to "../../shared/claude-config-dir"
- Narrows mock scope to prevent barrel export contamination

🤖 GENERATED WITH ASSISTANCE OF OhMyOpenCode
2026-04-04 18:56:30 +09:00
YeonGyu-Kim 51d2f8b3e9 fix(tmux-subagent): avoid transcript fetches during idle stability checks 2026-04-04 18:48:03 +09:00
YeonGyu-Kim f9a9a60b82 fix(background-agent): cache observed output for completion checks
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-04 18:39:26 +09:00
YeonGyu-Kim eb4060d739 fix(test): narrow mock.module() targets in background-agent tests to prevent barrel corruption
Three test files were mocking the entire '../../shared' barrel, which
corrupted exports for subsequent test files in the same batch run.
Narrow mocks to specific submodules (logger, connected-providers-cache).

Also reverts Bun version pin since the root cause was mock scope, not Bun.
2026-04-04 16:56:39 +09:00
YeonGyu-Kim 5d735372a4 fix(tmux): unify isolated cleanup across close paths
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-04 15:40:26 +09:00
YeonGyu-Kim b31dfa6928 fix(background-agent): clean tmux cancel bookkeeping
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-04 15:40:21 +09:00
YeonGyu-Kim fd476fe9a1 Merge pull request #3112 from code-yeongyu/fix/prepublish-code-quality
refactor: replace em dashes with hyphens in test files and docs
2026-04-04 14:56:54 +09:00
YeonGyu-Kim c4a5ba10cc Merge pull request #3110 from code-yeongyu/fix/prepublish-bg-race
fix(background-agent): prevent cancelled task from being revived after tmux callback
2026-04-04 14:56:49 +09:00
YeonGyu-Kim e860108b60 refactor: replace em dashes with hyphens in test files and docs
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-04 14:35:49 +09:00
YeonGyu-Kim 7f1497fc43 fix(background-agent): prevent cancelled task from being revived after tmux callback 2026-04-04 14:19:18 +09:00
YeonGyu-Kim 4fa3d0331a fix(security): block cloud credential env vars in MCP env cleaner
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-04 14:16:39 +09:00
YeonGyu-Kim 141881aa2d fix(tmux): re-attempt isolated container on deferred session retry 2026-04-04 02:38:15 +09:00
YeonGyu-Kim 6acca09bd0 fix(ci): resolve mock.module() cross-file leakage in test suite
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-04 02:35:23 +09:00
YeonGyu-Kim bda0f55196 Merge pull request #3091 from code-yeongyu/fix/prepublish-quality-checks
fix: address pre-publish quality checks
2026-04-04 01:46:49 +09:00
YeonGyu-Kim 1f2b69ed56 Merge pull request #3090 from code-yeongyu/fix/prepublish-tmux-regressions
fix(tmux): recover isolated session regressions
2026-04-04 01:46:46 +09:00
YeonGyu-Kim 565cf42c10 Merge pull request #3089 from code-yeongyu/fix/prepublish-background-regressions
fix(background-agent): bound abort waits and remove dead worktree sync
2026-04-04 01:46:43 +09:00
YeonGyu-Kim fabbcaa4b7 refactor(runtime): replace unicode dashes in prompt strings
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-04 01:27:51 +09:00
YeonGyu-Kim 2731adde05 fix(tmux): add grace period before resetting isolation
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-04 01:21:47 +09:00
YeonGyu-Kim 3871c7d263 fix(tmux): defer failed isolated container spawns
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-04 01:21:26 +09:00
YeonGyu-Kim b5f15f0371 test(tmux): add isolation regression coverage
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-04 01:21:04 +09:00
YeonGyu-Kim f5740d68c7 fix(background-agent): bound session abort waits
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-04 01:19:52 +09:00
YeonGyu-Kim 938c920092 test(background-agent): cover abort timeout handling
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-04 01:19:52 +09:00
YeonGyu-Kim 40374c8685 fix(boulder-state): remove dead worktree sync helper
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-04 01:19:52 +09:00
YeonGyu-Kim 67145b5339 fix(mcp): honor disabled server overrides in system name discovery
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-04 01:13:23 +09:00
YeonGyu-Kim 58e85960a1 test(mcp): add regression coverage for transcript and disable overrides
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-04 01:12:35 +09:00
YeonGyu-Kim 53eeac3f31 fix(ci): simplify test runner to plain bun test by fixing mock.module() leakage
- Add afterAll(() => { mock.restore() }) to 52 test files missing cleanup
- Rewrite create-tool-guard-hooks.test.ts to use spyOn instead of barrel mock
- Fix skill-mcp-manager OAuth tests with missing mockTokens/mockLogin definitions
- Fix start-work hook: show worktree active block on resume with existing worktree_path
- Extract createWorktreeActiveBlock to worktree-block.ts to avoid circular import
- Replace 80-line isolated test runner CI config with single `bun test` command
2026-04-04 00:34:03 +09:00
YeonGyu-Kim f6a8f64fa4 Merge pull request #3078 from code-yeongyu/refactor/deslop-features-managers
refactor(features): fix empty catches in manager modules
2026-04-03 21:45:53 +09:00
YeonGyu-Kim c7afc795be refactor(features): fix empty catches and remove AI slop from manager modules 2026-04-03 21:42:10 +09:00
YeonGyu-Kim af07610bc4 refactor(features): remove AI slop from feature modules 2026-04-03 21:37:17 +09:00
YeonGyu-Kim 6b431c5522 Merge pull request #3059 from code-yeongyu/fix/p2-13-anchor-pane-cleanup
fix(tmux): reassign anchor pane on first subagent deletion
2026-04-03 18:55:30 +09:00
YeonGyu-Kim 8be39e558d fix(tmux): preserve isolated container cleanup after anchor reassignment 2026-04-03 18:42:58 +09:00
YeonGyu-Kim e20b59cb29 fix(mcp): allow common Windows env vars by default
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-03 18:34:22 +09:00
YeonGyu-Kim b931e309f4 fix(mcp): warn when MCP env expansion is blocked
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-03 18:31:29 +09:00
YeonGyu-Kim 4766891557 fix(mcp): expand builtin allowlist for benign env vars
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-03 18:31:29 +09:00
YeonGyu-Kim 6cb7028ef7 fix(tmux): reassign anchor pane on first subagent deletion
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-03 18:12:33 +09:00