oh-my-opencode 5.0.0-beta.33 → 5.0.0-beta.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/.agents/skills/codex-qa/scripts/lsp-e2e.sh +1 -3
  2. package/.agents/skills/opencode-qa/scripts/lsp-e2e.sh +1 -1
  3. package/.agents/skills/tech-debt-audit/SKILL.md +6 -76
  4. package/README.ja.md +1 -1
  5. package/README.ko.md +1 -1
  6. package/README.md +1 -1
  7. package/README.ru.md +1 -1
  8. package/README.zh-cn.md +1 -1
  9. package/THIRD-PARTY-NOTICES.md +27 -99
  10. package/dist/cli/index.js +48350 -48559
  11. package/dist/cli-node/index.js +48480 -48689
  12. package/dist/config/index.d.ts +1 -1
  13. package/dist/config/schema/hooks.d.ts +0 -1
  14. package/dist/config/schema/oh-my-opencode-config.d.ts +0 -10
  15. package/dist/config/schema.d.ts +0 -1
  16. package/dist/create-hooks.d.ts +0 -1
  17. package/dist/hooks/index.d.ts +0 -1
  18. package/dist/index.js +11675 -13742
  19. package/dist/mcp/index.d.ts +0 -4
  20. package/dist/mcp/types.d.ts +0 -1
  21. package/dist/oh-my-opencode.schema.json +1 -45
  22. package/dist/plugin/hooks/create-core-hooks.d.ts +0 -1
  23. package/dist/plugin/hooks/create-session-hooks.d.ts +1 -2
  24. package/dist/shared/omo-process-sweep.d.ts +2 -4
  25. package/dist/skills/init-deep/SKILL.md +13 -13
  26. package/dist/skills/ulw-plan/SKILL.md +0 -1
  27. package/dist/tui.js +44809 -44910
  28. package/package.json +16 -18
  29. package/packages/omo-codex/THIRD-PARTY-NOTICES.md +0 -17
  30. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -3
  31. package/packages/omo-codex/plugin/.mcp.json +0 -6
  32. package/packages/omo-codex/plugin/AGENTS.md +5 -5
  33. package/packages/omo-codex/plugin/README.md +1 -1
  34. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +1 -15
  35. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  36. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  37. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  38. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  39. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  40. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  41. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  42. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  43. package/packages/omo-codex/plugin/components/lcx/skills/lcx-doctor/SKILL.md +1 -1
  44. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  45. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  46. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  47. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  48. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  49. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  50. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  51. package/packages/omo-codex/plugin/components/teammode/test/thread-title-hook.test.ts +1 -1
  52. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  53. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  54. package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +2 -2
  55. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  56. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  57. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +0 -1
  58. package/packages/omo-codex/plugin/components/ultrawork/src/directive-content.ts +1 -1
  59. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +2 -2
  60. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  61. package/packages/omo-codex/plugin/components/ulw-loop/README.md +11 -1
  62. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +2 -2
  63. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.d.ts +12 -0
  64. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.js +45 -0
  65. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.d.ts +1 -0
  66. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.js +5 -0
  67. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-template.js +10 -3
  68. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +35 -38
  69. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +278 -193
  70. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-aggregate.d.ts +5 -0
  71. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-aggregate.js +7 -51
  72. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-artifacts.js +39 -22
  73. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-fields.d.ts +13 -1
  74. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-fields.js +64 -8
  75. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-verdicts.js +5 -1
  76. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.js +37 -18
  77. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  78. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  79. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +2 -1
  80. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-codex-validation.ts +81 -0
  81. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-reconciliation.ts +6 -0
  82. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-template.ts +10 -3
  83. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +32 -63
  84. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-aggregate.ts +7 -53
  85. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-artifacts.ts +50 -31
  86. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-fields.ts +67 -14
  87. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-verdicts.ts +6 -1
  88. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate.ts +36 -17
  89. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-final.test.ts +26 -0
  90. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-template.test.ts +47 -2
  91. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-aggregate-basics.test.ts +258 -0
  92. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-cap-and-dedupe.test.ts +22 -0
  93. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-poisoning-cascades.test.ts +97 -0
  94. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-single-report.test.ts +241 -0
  95. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  96. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  97. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  98. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  99. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  100. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  101. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  102. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  103. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  104. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  105. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  106. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  107. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  108. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  109. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  110. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  111. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-ulw-execute-continuation.json +1 -1
  112. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  113. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  114. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  115. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  116. package/packages/omo-codex/plugin/package-lock.json +12 -146
  117. package/packages/omo-codex/plugin/package.json +1 -2
  118. package/packages/omo-codex/plugin/scripts/AGENTS.md +0 -1
  119. package/packages/omo-codex/plugin/scripts/auto-update-plan.mjs +0 -1
  120. package/packages/omo-codex/plugin/scripts/auto-update.mjs +0 -9
  121. package/packages/omo-codex/plugin/scripts/canonical-ultrawork-directive.mjs +17 -0
  122. package/packages/omo-codex/plugin/scripts/hook-status-message.mjs +0 -1
  123. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +2 -8
  124. package/packages/omo-codex/plugin/shared/src/config-loader.ts +2 -102
  125. package/packages/omo-codex/plugin/shared/src/config-migration.ts +0 -1
  126. package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +41 -130
  127. package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +13 -13
  128. package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +1 -1
  129. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +2 -2
  130. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +2 -1
  131. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +0 -1
  132. package/packages/omo-codex/plugin/test/AGENTS.md +2 -2
  133. package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +2 -21
  134. package/packages/omo-codex/plugin/test/aggregate-manifest.test.mjs +1 -2
  135. package/packages/omo-codex/plugin/test/aggregate-mcp.test.mjs +2 -7
  136. package/packages/omo-codex/plugin/test/auto-update.test.mjs +0 -25
  137. package/packages/omo-codex/plugin/test/bootstrap-setup.test.mjs +0 -31
  138. package/packages/omo-codex/plugin/test/canonical-ultrawork-directive.test.mjs +53 -0
  139. package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +0 -50
  140. package/packages/omo-codex/plugin/test/hook-status-message.test.mjs +0 -1
  141. package/packages/omo-codex/plugin/test/mcp-research-servers.test.mjs +1 -3
  142. package/packages/omo-codex/scripts/install-cache-copy.test.mjs +27 -1
  143. package/packages/omo-codex/scripts/install-config-git-bash.test.mjs +0 -23
  144. package/packages/omo-codex/scripts/install-dist/install-local.mjs +238 -431
  145. package/packages/omo-codex/scripts/install-git-bash-mcp-env.test.mjs +1 -25
  146. package/packages/omo-codex/scripts/install-mcp-runtime.test.mjs +0 -36
  147. package/packages/shared-skills/skills/init-deep/SKILL.md +13 -13
  148. package/packages/shared-skills/skills/ulw-plan/SKILL.md +0 -1
  149. package/dist/config/schema/codegraph.d.ts +0 -12
  150. package/dist/hooks/codegraph-bootstrap/command-runner.d.ts +0 -17
  151. package/dist/hooks/codegraph-bootstrap/hook.d.ts +0 -35
  152. package/dist/hooks/codegraph-bootstrap/index.d.ts +0 -1
  153. package/dist/hooks/codegraph-bootstrap/project-root.d.ts +0 -1
  154. package/dist/hooks/codegraph-bootstrap/status.d.ts +0 -11
  155. package/dist/mcp/codegraph.d.ts +0 -16
  156. package/packages/omo-codex/plugin/components/codegraph/AGENTS.md +0 -58
  157. package/packages/omo-codex/plugin/components/codegraph/LICENSE +0 -21
  158. package/packages/omo-codex/plugin/components/codegraph/NODE-RUNTIME-LICENSES.md +0 -2951
  159. package/packages/omo-codex/plugin/components/codegraph/NOTICE +0 -16
  160. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +0 -12326
  161. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +0 -9908
  162. package/packages/omo-codex/plugin/components/codegraph/package.json +0 -33
  163. package/packages/omo-codex/plugin/components/codegraph/src/cache-gc.ts +0 -29
  164. package/packages/omo-codex/plugin/components/codegraph/src/cli.ts +0 -79
  165. package/packages/omo-codex/plugin/components/codegraph/src/hook-input.ts +0 -33
  166. package/packages/omo-codex/plugin/components/codegraph/src/hook-sweep.ts +0 -25
  167. package/packages/omo-codex/plugin/components/codegraph/src/hook-types.ts +0 -131
  168. package/packages/omo-codex/plugin/components/codegraph/src/hook.ts +0 -258
  169. package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +0 -310
  170. package/packages/omo-codex/plugin/components/codegraph/src/mcp-unavailable.ts +0 -92
  171. package/packages/omo-codex/plugin/components/codegraph/src/post-tool-use-hook.ts +0 -34
  172. package/packages/omo-codex/plugin/components/codegraph/src/serve-invocation.ts +0 -29
  173. package/packages/omo-codex/plugin/components/codegraph/src/serve.ts +0 -263
  174. package/packages/omo-codex/plugin/components/codegraph/src/session-start-command.ts +0 -106
  175. package/packages/omo-codex/plugin/components/codegraph/src/session-start-cooldown.ts +0 -145
  176. package/packages/omo-codex/plugin/components/codegraph/src/session-start-hook-runtime.ts +0 -22
  177. package/packages/omo-codex/plugin/components/codegraph/src/session-start-lock.ts +0 -139
  178. package/packages/omo-codex/plugin/components/codegraph/src/session-start-outcome.ts +0 -15
  179. package/packages/omo-codex/plugin/components/codegraph/src/session-start-paths.ts +0 -32
  180. package/packages/omo-codex/plugin/components/codegraph/src/session-start-project.ts +0 -109
  181. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker-result.ts +0 -148
  182. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker.ts +0 -175
  183. package/packages/omo-codex/plugin/components/codegraph/src/sweep-cli.ts +0 -81
  184. package/packages/omo-codex/plugin/components/codegraph/test/cache-gc.test.ts +0 -34
  185. package/packages/omo-codex/plugin/components/codegraph/test/hook-exclusion.test.ts +0 -112
  186. package/packages/omo-codex/plugin/components/codegraph/test/hook-registration.test.ts +0 -26
  187. package/packages/omo-codex/plugin/components/codegraph/test/hook-session-start-guard.test.ts +0 -160
  188. package/packages/omo-codex/plugin/components/codegraph/test/hook-store-upgrade.test.ts +0 -50
  189. package/packages/omo-codex/plugin/components/codegraph/test/hook-sweep.test.ts +0 -29
  190. package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +0 -320
  191. package/packages/omo-codex/plugin/components/codegraph/test/mcp-bridge-fixtures.ts +0 -172
  192. package/packages/omo-codex/plugin/components/codegraph/test/package-runtime.test.ts +0 -91
  193. package/packages/omo-codex/plugin/components/codegraph/test/provisioned-node-guard.test.ts +0 -100
  194. package/packages/omo-codex/plugin/components/codegraph/test/serve-built-wrapper.test.ts +0 -76
  195. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge-lifecycle.test.ts +0 -133
  196. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge.test.ts +0 -245
  197. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-facade.test.ts +0 -69
  198. package/packages/omo-codex/plugin/components/codegraph/test/serve-node-support.test.ts +0 -43
  199. package/packages/omo-codex/plugin/components/codegraph/test/serve-provision.test.ts +0 -147
  200. package/packages/omo-codex/plugin/components/codegraph/test/serve-unavailable-idle.test.ts +0 -47
  201. package/packages/omo-codex/plugin/components/codegraph/test/serve-unavailable.test.ts +0 -175
  202. package/packages/omo-codex/plugin/components/codegraph/test/serve.test.ts +0 -385
  203. package/packages/omo-codex/plugin/components/codegraph/test/session-start-node-support.test.ts +0 -206
  204. package/packages/omo-codex/plugin/components/codegraph/test/session-start-project.test.ts +0 -58
  205. package/packages/omo-codex/plugin/components/codegraph/test/session-start-state.test.ts +0 -104
  206. package/packages/omo-codex/plugin/components/codegraph/test/session-start-trust-boundary.test.ts +0 -65
  207. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-availability.test.ts +0 -106
  208. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-cooldown.test.ts +0 -116
  209. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-flow.test.ts +0 -258
  210. package/packages/omo-codex/plugin/components/codegraph/test/sweep-cli.test.ts +0 -56
  211. package/packages/omo-codex/plugin/components/codegraph/tsconfig.build.json +0 -13
  212. package/packages/omo-codex/plugin/components/codegraph/tsconfig.json +0 -25
  213. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-aggregate.test.ts +0 -101
  214. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +0 -18
  215. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +0 -17
  216. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/editor.mjs +0 -125
  217. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/jsonc.mjs +0 -43
  218. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/scaffold.mjs +0 -29
  219. package/packages/omo-codex/plugin/scripts/migrate-omo-sot.mjs +0 -121
  220. package/packages/omo-codex/plugin/test/component-codegraph-mcp-smoke.test.mjs +0 -76
  221. package/packages/omo-codex/plugin/test/migrate-omo-sot.test.mjs +0 -179
@@ -62,30 +62,6 @@ test("#given a non-Windows install #when stamping #then the manifest stays byte-
62
62
  assert.equal(await readFile(join(pluginRoot, ".mcp.json"), "utf8"), MANIFEST);
63
63
  });
64
64
 
65
- test("#given a package-relative CodeGraph MCP path #when stamping on non-Windows #then codegraph server arg becomes absolute", async (t) => {
66
- const pluginRoot = await mkdtemp(join(tmpdir(), "git-bash-mcp-env-"));
67
- t.after(() => rm(pluginRoot, { recursive: true, force: true }));
68
- await writeFile(
69
- join(pluginRoot, ".mcp.json"),
70
- `${JSON.stringify(
71
- {
72
- mcpServers: {
73
- codegraph: { args: ["components/codegraph/dist/serve.js"], command: "node" },
74
- git_bash: { command: "node", args: ["../../git-bash-mcp/dist/cli.js", "mcp"] },
75
- },
76
- },
77
- null,
78
- "\t",
79
- )}\n`,
80
- );
81
-
82
- const changed = await stampGitBashMcpEnv({ pluginRoot, env: {}, platform: "darwin" });
83
-
84
- assert.equal(changed, true);
85
- const parsed = JSON.parse(await readFile(join(pluginRoot, ".mcp.json"), "utf8"));
86
- assert.deepEqual(parsed.mcpServers.codegraph.args, [join(pluginRoot, "components", "codegraph", "dist", "serve.js")]);
87
- });
88
-
89
65
  test("#given the override already stamped #when stamping again #then nothing changes", async (t) => {
90
66
  const pluginRoot = await createPluginRoot();
91
67
  t.after(() => rm(pluginRoot, { recursive: true, force: true }));
@@ -102,7 +78,7 @@ test("#given the override already stamped #when stamping again #then nothing cha
102
78
  test("#given a manifest without a git_bash server #when stamping #then the manifest stays byte-identical", async (t) => {
103
79
  const pluginRoot = await mkdtemp(join(tmpdir(), "git-bash-mcp-env-"));
104
80
  t.after(() => rm(pluginRoot, { recursive: true, force: true }));
105
- const manifest = `${JSON.stringify({ mcpServers: { codegraph: { command: "node" } } }, null, "\t")}\n`;
81
+ const manifest = `${JSON.stringify({ mcpServers: { lsp: { command: "node" } } }, null, "\t")}\n`;
106
82
  await writeFile(join(pluginRoot, ".mcp.json"), manifest);
107
83
 
108
84
  const changed = await stampGitBashMcpEnv({
@@ -104,42 +104,6 @@ test("#given plugin-local MCP runtime #when installing cached plugin #then manif
104
104
  assert.deepEqual(cachedMcp.mcpServers.omo.args, [join(result.path, "dist", "cli.js")]);
105
105
  });
106
106
 
107
- test("#given CodeGraph MCP runtime in plugin cache #when installing cached plugin #then manifest points at cached plugin before bootstrap", async () => {
108
- const repoRoot = await makeTempDir();
109
- const codexHome = await makeTempDir();
110
- const sourceRoot = join(repoRoot, "packages", "omo-codex", "plugin");
111
-
112
- await writeJson(join(sourceRoot, "package.json"), {
113
- name: "@example/omo",
114
- version: "0.1.0",
115
- });
116
- await writeJson(join(sourceRoot, ".mcp.json"), {
117
- mcpServers: {
118
- codegraph: {
119
- command: "node",
120
- args: ["components/codegraph/dist/serve.js"],
121
- cwd: ".",
122
- required: false,
123
- },
124
- },
125
- });
126
- await writeJson(join(sourceRoot, "components", "codegraph", "dist", "serve.js"), { executable: true });
127
-
128
- const result = await installCachedPlugin({
129
- codexHome,
130
- marketplaceName: "sisyphuslabs",
131
- name: "omo",
132
- runCommand: async () => {},
133
- sourcePath: sourceRoot,
134
- version: "0.1.0",
135
- });
136
-
137
- const cachedMcp = JSON.parse(await readFile(join(result.path, ".mcp.json"), "utf8"));
138
-
139
- assert.deepEqual(cachedMcp.mcpServers.codegraph.args, [join(result.path, "components", "codegraph", "dist", "serve.js")]);
140
- assert.equal(Object.hasOwn(cachedMcp.mcpServers.codegraph, "cwd"), false);
141
- });
142
-
143
107
  test("#given external MCP package not in the generated bundled runtime set #when installing cached plugin #then manifest args point at source", async () => {
144
108
  const repoRoot = await makeTempDir();
145
109
  const codexHome = await makeTempDir();
@@ -20,7 +20,7 @@ Generate hierarchical AGENTS.md files. Root + complexity-scored subdirectories.
20
20
 
21
21
  1. **Discovery + Analysis** (concurrent)
22
22
  - Fire background explore agents immediately
23
- - Main session: bash structure + LSP/codegraph code map + read existing AGENTS.md
23
+ - Main session: bash structure + LSP/ast-grep code map + read existing AGENTS.md
24
24
  2. **Score & Decide** - Determine AGENTS.md locations from merged findings
25
25
  3. **Generate** - Root first, then subdirs in parallel
26
26
  4. **Review** - Deduplicate, trim, validate
@@ -29,7 +29,7 @@ Generate hierarchical AGENTS.md files. Root + complexity-scored subdirectories.
29
29
  **TodoWrite ALL phases. Mark in_progress → completed in real-time.**
30
30
  ```
31
31
  TodoWrite([
32
- { id: "discovery", content: "Fire explore agents + LSP/codegraph map + read existing", status: "pending", priority: "high" },
32
+ { id: "discovery", content: "Fire explore agents + LSP/ast-grep map + read existing", status: "pending", priority: "high" },
33
33
  { id: "scoring", content: "Score directories, determine locations", status: "pending", priority: "high" },
34
34
  { id: "generate", content: "Generate AGENTS.md files (root + subdirs)", status: "pending", priority: "high" },
35
35
  { id: "review", content: "Deduplicate, validate, trim", status: "pending", priority: "medium" }
@@ -45,16 +45,16 @@ TodoWrite([
45
45
 
46
46
  ### Fire Background Explore Agents IMMEDIATELY
47
47
 
48
- Don't wait-these run async while main session works. **Equip every agent with the code graph**: any task touching structure, entry points, dependencies, or hotspots MUST query `codegraph_*` (explore/search/callers/callees/impact) and `lsp_symbols` when present, and ground its claims in that data instead of guessing from conventions. Richer real-graph context per agent = a more accurate project map.
48
+ Don't wait-these run async while main session works. **Ground every agent in real symbol data**: any task touching structure, entry points, dependencies, or hotspots MUST query `lsp_symbols`/`lsp_find_references` and the ast-grep skill (`sg`) when present, and ground its claims in that data instead of guessing from conventions. Richer real context per agent = a more accurate project map.
49
49
 
50
50
  ```
51
51
  // Fire all at once, collect results later
52
- task(subagent_type="explore", load_skills=[], description="Explore project structure", run_in_background=true, prompt="Project structure: map real layout via codegraph_explore/codegraph_files → REPORT deviations from standard patterns")
53
- task(subagent_type="explore", load_skills=[], description="Find entry points", run_in_background=true, prompt="Entry points: FIND main files, trace reach via codegraph_callees + lsp_symbols → REPORT non-standard organization")
52
+ task(subagent_type="explore", load_skills=[], description="Explore project structure", run_in_background=true, prompt="Project structure: map real layout via glob + lsp_symbols scope=workspace → REPORT deviations from standard patterns")
53
+ task(subagent_type="explore", load_skills=[], description="Find entry points", run_in_background=true, prompt="Entry points: FIND main files, trace reach via lsp_symbols + lsp_find_references → REPORT non-standard organization")
54
54
  task(subagent_type="explore", load_skills=[], description="Find conventions", run_in_background=true, prompt="Conventions: FIND config files (.eslintrc, pyproject.toml, .editorconfig) → REPORT project-specific rules")
55
55
  task(subagent_type="explore", load_skills=[], description="Find anti-patterns", run_in_background=true, prompt="Anti-patterns: FIND 'DO NOT', 'NEVER', 'ALWAYS', 'DEPRECATED' comments → LIST forbidden patterns")
56
56
  task(subagent_type="explore", load_skills=[], description="Explore build/CI", run_in_background=true, prompt="Build/CI: FIND .github/workflows, Makefile → REPORT non-standard patterns")
57
- task(subagent_type="explore", load_skills=[], description="Find test patterns", run_in_background=true, prompt="Test patterns: FIND test configs/structure; codegraph_callers on core modules to see what is covered → REPORT unique conventions")
57
+ task(subagent_type="explore", load_skills=[], description="Find test patterns", run_in_background=true, prompt="Test patterns: FIND test configs/structure; lsp_find_references on core modules to see what is covered → REPORT unique conventions")
58
58
  ```
59
59
 
60
60
  <dynamic-agents>
@@ -116,7 +116,7 @@ For each existing file found:
116
116
 
117
117
  If `--create-new`: Read all existing first (preserve context) → then delete all → regenerate.
118
118
 
119
- #### 3. Code Map - drive LSP AND codegraph (do NOT skip)
119
+ #### 3. Code Map - drive LSP AND ast-grep (do NOT skip)
120
120
 
121
121
  Highest-signal source for the CODE MAP and the Symbol/Export/Reference scoring rows. Complementary, not alternatives - run BOTH when present, alongside the explore agents.
122
122
 
@@ -125,10 +125,10 @@ Highest-signal source for the CODE MAP and the Symbol/Export/Reference scoring r
125
125
  - `lsp_symbols` scope="workspace", query by kind (class/interface/function) -> symbol inventory.
126
126
  - `lsp_find_references` on top exports (line/character from the symbols result) -> reference centrality.
127
127
 
128
- **codegraph** - when `codegraph_*` tools exist (check `codegraph_status`); a first-class peer to LSP, NOT a last resort:
129
- - `codegraph_explore` -> overview; `codegraph_callers`/`codegraph_callees`/`codegraph_impact` -> centrality + blast radius for the scoring matrix; `codegraph_search`/`codegraph_files` -> symbol/file inventory.
128
+ **ast-grep** - load the ast-grep skill; a first-class peer to LSP, NOT a last resort:
129
+ - `sg --pattern 'export $$$' --lang <lang>` -> export inventory; `sg --pattern 'import $$$ from "$MOD"'` -> dependency edges between modules for the scoring matrix.
130
130
 
131
- Only if NEITHER exists: explore agents + the ast-grep skill (`sg`), and mark centrality unmeasured in the CODE MAP.
131
+ Only if LSP is unavailable: explore agents + ast-grep alone, and mark reference centrality unmeasured in the CODE MAP.
132
132
 
133
133
  ### Collect Background Results
134
134
 
@@ -137,7 +137,7 @@ Only if NEITHER exists: explore agents + the ast-grep skill (`sg`), and mark cen
137
137
  for each background task ID (`bg_...`): background_output(task_id="bg_...")
138
138
  ```
139
139
 
140
- **Merge: bash + LSP/codegraph + existing + explore findings. Mark "discovery" as completed.**
140
+ **Merge: bash + LSP/ast-grep + existing + explore findings. Mark "discovery" as completed.**
141
141
 
142
142
  ---
143
143
 
@@ -213,7 +213,7 @@ NEVER use Write to overwrite an existing file. ALWAYS check existence first via
213
213
  |------|----------|-------|
214
214
 
215
215
  ## CODE MAP
216
- {From LSP/codegraph - skip only if neither exists or project <10 files}
216
+ {From LSP/ast-grep - skip only if neither exists or project <10 files}
217
217
 
218
218
  | Symbol | Type | Location | Refs | Role |
219
219
  |--------|------|----------|------|------|
@@ -296,7 +296,7 @@ Hierarchy:
296
296
  ## Anti-Patterns
297
297
 
298
298
  - **Static agent count**: MUST vary agents based on project size/depth
299
- - **Sequential execution**: MUST parallel (explore + LSP + codegraph concurrent)
299
+ - **Sequential execution**: MUST parallel (explore + LSP + ast-grep concurrent)
300
300
  - **Ignoring existing**: ALWAYS read existing first, even with --create-new
301
301
  - **Over-documenting**: Not every dir needs AGENTS.md
302
302
  - **Redundancy**: Child never repeats parent
@@ -71,7 +71,6 @@ When producing the plan, encode every executable item as a column-zero Markdown
71
71
  - **Decision-complete is the north star.** The executor has NO interview context - spell out exact paths, "every X in Y", and an explicit Must-NOT-Have. Leave the implementer ZERO judgment calls.
72
72
  - **Full scope is the default.** Plan the ENTIRE request; "MVP", "v1", "phase 1", or any reduced subset is never an option you invent or ask about - it exists only if the user introduces it. Scope OUT / Must-NOT-Have entries are guardrails against unrequested additions, never reductions of the request.
73
73
  - **Explore before asking.** Discoverable facts (repo/system/docs truth) -> research and cite, never ask. Preferences/tradeoffs -> the only things you bring to the user. When unsure which, treat it as a user-decision.
74
- - **CodeGraph first when present.** Use `codegraph_explore` for repo how/where/what/flow questions before wider reads; if codegraph_* tools are absent, inactive/uninitialized, or cold-start unavailable, continue with Read/Grep/Glob/LSP and the ast-grep skill.
75
74
  - **Two filters** on every candidate question, in order: (1) Could collected evidence answer it? -> explore instead. (2) Could the user's stated intent plus a defensible default answer it? -> adopt the default, record it, do not ask - UNLESS it is an owner-decision, which always survives as a question even when a default exists: anything irreversible / destructive / safety-critical, or a cross-cutting product choice the user lives with (public config surface, distribution / packaging, external dependency or pinned SHA, data / schema shape, real budget / paid-service spend, expected scale or capacity target, target-audience / compliance limits). Extrinsic constraints (budget, mandated stack, scale, audience) leave no repo evidence, so exploration can never surface them - sweep those axes explicitly once per plan and classify each as explored, defaulted (ledger), or asked. Default the reversible internals; surface the owner-decisions.
76
75
  - **Explore to sufficiency, then STOP.** One research wave per open question; stop when the clearance check is answerable; never re-explore to double-check.
77
76
  - **Parallel-dispatch** independent research in ONE turn and keep working while it runs. Subagent outputs are CLAIMS until you independently verify them.
@@ -1,12 +0,0 @@
1
- import { z } from "zod";
2
- export declare const CodegraphConfigSchema: z.ZodObject<{
3
- auto_init: z.ZodDefault<z.ZodBoolean>;
4
- auto_provision: z.ZodDefault<z.ZodBoolean>;
5
- daemon: z.ZodDefault<z.ZodBoolean>;
6
- enabled: z.ZodDefault<z.ZodBoolean>;
7
- excluded_roots: z.ZodOptional<z.ZodArray<z.ZodString>>;
8
- install_dir: z.ZodOptional<z.ZodString>;
9
- telemetry: z.ZodOptional<z.ZodBoolean>;
10
- watch_debounce_ms: z.ZodOptional<z.ZodNumber>;
11
- }, z.core.$strip>;
12
- export type CodegraphConfig = z.infer<typeof CodegraphConfigSchema>;
@@ -1,17 +0,0 @@
1
- export interface CodegraphCommandResult {
2
- readonly exitCode: number;
3
- readonly stderr?: string;
4
- readonly stdout: string;
5
- readonly timedOut: boolean;
6
- }
7
- export interface RunCodegraphCommandOptions {
8
- readonly env: Record<string, string>;
9
- readonly timeoutSignal?: AbortSignal;
10
- readonly timeoutMs: number;
11
- }
12
- export interface CodegraphCommandInvocation {
13
- readonly args: readonly string[];
14
- readonly command: string;
15
- }
16
- export declare function runCodegraphCommand(projectRoot: string, command: string, args: readonly string[], options: RunCodegraphCommandOptions): Promise<CodegraphCommandResult>;
17
- export declare function resolveCodegraphCommandInvocation(command: string, args: readonly string[], platform?: NodeJS.Platform): CodegraphCommandInvocation;
@@ -1,35 +0,0 @@
1
- import { CODEGRAPH_PINNED_VERSION, type BuildCodegraphEnvOptions, type CodegraphCommandResolution, type CodegraphProjectExclusionDecision, type CodegraphProjectExclusionOptions, type CodegraphNodeSupport, type CodegraphProvisionResult, type CodegraphWorkspacePreparation, type PrepareCodegraphWorkspaceOptions, type ResolveCodegraphCommandOptions } from "@oh-my-opencode/utils";
2
- import type { CodegraphConfig } from "../../config";
3
- import type { CodegraphCommandResult } from "./command-runner";
4
- export interface CodegraphBootstrapContext {
5
- readonly directory: string;
6
- }
7
- export interface CodegraphBootstrapEventInput {
8
- readonly event: {
9
- readonly properties?: unknown;
10
- readonly type: string;
11
- };
12
- }
13
- export interface CodegraphBootstrapDeps {
14
- readonly buildEnv: (options?: BuildCodegraphEnvOptions) => Record<string, string>;
15
- readonly ensureGitignored: (projectRoot: string) => boolean;
16
- readonly excludeProject: (projectRoot: string, options?: CodegraphProjectExclusionOptions) => CodegraphProjectExclusionDecision;
17
- readonly ensureProvisioned: (options: {
18
- readonly installDir?: string;
19
- readonly lockDir: string;
20
- readonly version: typeof CODEGRAPH_PINNED_VERSION;
21
- }) => Promise<CodegraphProvisionResult>;
22
- readonly log: (message: string, data?: Record<string, unknown>) => void;
23
- readonly nodeSupport: () => CodegraphNodeSupport;
24
- readonly prepareWorkspace: (projectRoot: string, options?: PrepareCodegraphWorkspaceOptions) => CodegraphWorkspacePreparation;
25
- readonly resolveCommand: (options?: ResolveCodegraphCommandOptions) => CodegraphCommandResolution;
26
- readonly runCommand: (projectRoot: string, command: string, args: readonly string[], options: {
27
- readonly env: Record<string, string>;
28
- readonly timeoutMs: number;
29
- }) => Promise<CodegraphCommandResult>;
30
- readonly schedule: (task: () => Promise<void>) => void;
31
- }
32
- export declare function clearCodegraphBootstrapProjectsForTesting(): void;
33
- export declare function createCodegraphBootstrapHook(ctx: CodegraphBootstrapContext, config: Partial<CodegraphConfig> | undefined, depsOverride?: Partial<CodegraphBootstrapDeps>): {
34
- event(input: CodegraphBootstrapEventInput): void;
35
- };
@@ -1 +0,0 @@
1
- export { clearCodegraphBootstrapProjectsForTesting, createCodegraphBootstrapHook, type CodegraphBootstrapContext, type CodegraphBootstrapDeps, type CodegraphBootstrapEventInput, } from "./hook";
@@ -1 +0,0 @@
1
- export declare function resolveCodegraphProjectRoot(properties: unknown, fallbackDirectory: string): string;
@@ -1,11 +0,0 @@
1
- import type { CodegraphCommandResult } from "./command-runner";
2
- type CodegraphStatusDecision = {
3
- readonly kind: "init";
4
- } | {
5
- readonly kind: "skip";
6
- readonly reason: string;
7
- } | {
8
- readonly kind: "sync";
9
- };
10
- export declare function decideCodegraphStartupAction(status: CodegraphCommandResult): CodegraphStatusDecision;
11
- export {};
@@ -1,16 +0,0 @@
1
- import type { ResolveCodegraphCommandOptions } from "@oh-my-opencode/utils";
2
- import type { CodegraphConfig } from "../config/schema/codegraph";
3
- import type { LocalMcpConfig } from "./lsp";
4
- import { type RuntimeExecutableResolver } from "./runtime-executable";
5
- export type CodegraphMcpConfigOptions = {
6
- readonly config?: Partial<CodegraphConfig>;
7
- readonly cwd?: string;
8
- readonly env?: ResolveCodegraphCommandOptions["env"];
9
- readonly fileExists?: ResolveCodegraphCommandOptions["fileExists"];
10
- readonly homeDir?: string;
11
- readonly nodeVersionForExecutable?: ResolveCodegraphCommandOptions["nodeVersion"];
12
- readonly provisioned?: ResolveCodegraphCommandOptions["provisioned"];
13
- readonly requireResolve?: ResolveCodegraphCommandOptions["requireResolve"];
14
- readonly resolveExecutable?: RuntimeExecutableResolver;
15
- };
16
- export declare function createCodegraphMcpConfig(options?: CodegraphMcpConfigOptions): LocalMcpConfig;
@@ -1,58 +0,0 @@
1
- # packages/omo-codex/plugin/components/codegraph/ (CodeGraph MCP Wrapper + Bootstrap Hooks)
2
-
3
- **Generated:** 2026-07-17 (7d664b96b)
4
-
5
- ## OVERVIEW
6
-
7
- `@sisyphuslabs/codex-codegraph` (private, Node >=20, bin `omo-codegraph`). Wraps the external CodeGraph CLI (`@colbymchenry/codegraph`, pinned `1.5.0` through the shared `CODEGRAPH_PINNED_VERSION` and the component optionalDependency) behind a stdio MCP server plus Codex lifecycle hooks. Two committed dists ship in the published payload; rebuild `dist/` in the same change as `src/` edits.
8
-
9
- Codex wiring (all repo-relative to `packages/omo-codex/plugin/`):
10
- - **MCP:** `.mcp.json` server `codegraph` → `node components/codegraph/dist/serve.js` (`required: false`).
11
- - **SessionStart hook:** `hooks/session-start-checking-codegraph-bootstrap.json` → `dist/cli.js hook session-start` (timeout 5).
12
- - **PostToolUse hook:** `hooks/post-tool-use-checking-codegraph-init-guidance.json`, matcher `^(codegraph[._].*|mcp__codegraph__.*)$` → `dist/cli.js hook post-tool-use`.
13
- - Both hooks registered in `.codex-plugin/plugin.json`; Windows variants dispatch via `components/bootstrap/scripts/node-dispatch.ps1`.
14
-
15
- Serve pipeline (`src/serve.ts`): OMO SOT config gate (`[codex].codegraph.enabled=false` → unavailable stub) → resolve binary (`OMO_CODEGRAPH_BIN` env → bundled → provisioned `~/.omo/codegraph/bin` → PATH) → Node support gate (major 20-24; >=25 crashes CodeGraph mid-indexing; `CODEGRAPH_ALLOW_UNSAFE_NODE=1` overrides) → auto-provision into `~/.omo/codegraph` unless `codegraph.auto_provision=false` → bridge JSON-RPC to `codegraph serve --mcp`. Project cwd resolved from `OMO_CODEGRAPH_PROJECT_CWD` → `OMO_CODEGRAPH_SESSION_START_CWD` → `PWD` → wrapper cwd. When the binary is missing/disabled, `mcp-unavailable.ts` still answers `initialize`/`tools/*` with the skip reason so Codex startup never fails.
16
-
17
- Hook pipeline (`src/hook.ts` + `src/session-start-*.ts`): `hook session-start` checks only the exact filesystem marker `<projectRoot>/.codegraph/codegraph.db`; it never invokes the upstream CLI for status. An exact database skips as initialized, an ancestor database records `skipped-nested-root`, and only a definitive no-database result may acquire the per-project atomic lock and spawn `hook session-start-worker`. Live locks record `skipped-locked`; stale locks recover into an exponential cooldown instead of spawning immediately. Worker failures and skips persist a cooldown stamp (15 minutes by default, doubling to a 24-hour cap; configurable with Codex-only `codegraph.session_start_cooldown_ms`, minimum 60000), while success clears it. The worker prepares the workspace, invokes only `codegraph init` with a 60-second tree timeout, and records success only after the exact project database appears. Hook suppressions and worker outcomes append to `~/.omo/codegraph/session-start.jsonl`. `hook post-tool-use` emits init guidance when a codegraph tool result indicates an uninitialized project. `cli.js` with no hook subcommand falls through to serve.
18
-
19
- ## includeCode CONTRACT (commit 4cf383c5b)
20
-
21
- `src/mcp-bridge.ts` rewrites the upstream `codegraph_node` contract in-flight: `tools/list` responses get a clarified description + `includeCode` schema description, and `tools/call` results replace "Structural outline only" text. Contract: `includeCode=true` returns leaf-symbol source only; container symbols (classes, interfaces, structs, enums, modules, namespaces) return structural outlines with member lists BY DESIGN: for container source, request a specific member symbol or file mode with `symbolsOnly=false` plus `offset`/`limit`. Pinned by `test/serve-mcp-bridge.test.ts`.
22
-
23
- ## KEY FILES
24
-
25
- | File | Purpose |
26
- |------|---------|
27
- | `src/serve.ts` | MCP entry: config/resolution/Node gates, provisioning, bridge or unavailable stub |
28
- | `src/cli.ts` | Hook CLI router: `hook session-start` / `hook post-tool-use` / `hook session-start-worker` / serve fallback |
29
- | `src/hook.ts` | SessionStart exact-root decision pipeline + detached worker spawn |
30
- | `src/post-tool-use-hook.ts` | PostToolUse init guidance emission |
31
- | `src/session-start-project.ts` | Exact database and ancestor-coverage filesystem probes |
32
- | `src/session-start-lock.ts` | Atomic per-project worker lock + stale recovery |
33
- | `src/session-start-cooldown.ts` | Persistent exponential failure cooldown state |
34
- | `src/session-start-worker.ts` | Background bootstrap orchestration and lock lifecycle |
35
- | `src/session-start-command.ts` | Provision/resolve + bounded `codegraph init` invocation |
36
- | `src/session-start-outcome.ts` | `session-start.jsonl` outcome writer |
37
- | `src/mcp-bridge.ts` | Stdio JSON-RPC forwarder; per-request framed/line response-mode tracking; codegraph_node contract rewrites; awaits stdio writes and SIGKILLs the child on response-forwarding failure |
38
- | `src/mcp-unavailable.ts` | Reason-bearing stub MCP server for disabled/missing binary |
39
- | `src/serve-invocation.ts` | win32 invocation shim: `.cmd`/`.bat` via `cmd.exe /d /s /c`, `.js`/`.mjs`/`.cjs` via `process.execPath` (mirrored by `resolveCodegraphCommandInvocation` in session-start-worker) |
40
- | `src/hook-types.ts` | Shared hook/worker option + outcome types |
41
-
42
- ## WHERE TO LOOK
43
-
44
- | Task | Location |
45
- |------|----------|
46
- | Resolution order, provisioning, Node gate, env, gitignore/workspace prep | `packages/utils/src/codegraph/` (`resolve.ts`, `provision.ts`, `node-support.ts`, `env.ts`, `workspace.ts`, `guidance.ts`), bundled at build time |
47
- | `[codex].codegraph` config keys (`enabled`, `auto_provision`, `trustedCodegraphInstallDir`) | `packages/omo-codex/plugin/shared/src/config-loader.ts` |
48
- | JSON-RPC framing primitives | `packages/mcp-stdio-core/src/` |
49
- | Build / test / typecheck | `bun run build` (bun build → `dist/serve.js` + `dist/cli.js`, target node ESM), `bun test ./test`, `tsc --noEmit` |
50
-
51
- ## NOTES
52
-
53
- - This component tests with `bun test` (unlike the vitest-based `lsp` sibling); given/when/then style.
54
- - `src/` imports reach sibling packages via relative paths (`../../../../../utils/src/...`); they are inlined by `bun build`, so runtime `dist/` has zero deps beyond Node.
55
- - `serve.ts` and SessionStart command provisioning derive their version from the shared `CODEGRAPH_PINNED_VERSION`; the component optionalDependency must match that pin.
56
- - `trustedCodegraphInstallDir` overrides the `~/.omo/codegraph` install dir and is forwarded to children as `CODEGRAPH_INSTALL_DIR`.
57
- - `resolution.source === "env"` is never auto-provisioned over: a user-set `OMO_CODEGRAPH_BIN` pointing at a missing file skips the MCP instead of silently substituting a download.
58
- - `runBridgedCodegraphProcess` awaits every stdio write and races `childExit` against response forwarding; a forwarding error (e.g. parent stdout `EPIPE`) rejects the serve promise, destroys the child pipes, and `SIGKILL`s the codegraph child if still alive so a held-open child is never orphaned. Pinned by `test/serve-mcp-bridge-lifecycle.test.ts` and the held-open case in `test/serve-mcp-bridge.test.ts`.
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Yeongyu Kim
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.