lazycodex-ai 5.0.0-beta.6 → 5.0.0-beta.60

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 (635) hide show
  1. package/README.ja.md +65 -60
  2. package/README.ko.md +66 -61
  3. package/README.md +65 -72
  4. package/README.ru.md +62 -60
  5. package/README.zh-cn.md +61 -60
  6. package/dist/cli/config-manager/parse-opencode-config-file.d.ts +2 -1
  7. package/dist/cli/doctor/checks/index.d.ts +2 -0
  8. package/dist/cli/doctor/checks/latest-version.d.ts +11 -0
  9. package/dist/cli/doctor/checks/system-plugin.d.ts +4 -3
  10. package/dist/cli/doctor/framework/constants.d.ts +5 -0
  11. package/dist/cli/doctor/framework/types.d.ts +2 -0
  12. package/dist/cli/fallback-lane-policy.d.ts +1 -0
  13. package/dist/cli/index.js +51738 -59690
  14. package/dist/cli/install-codex/install-codex-test-fixtures.d.ts +1 -1
  15. package/dist/cli/run/on-complete-hook.d.ts +2 -0
  16. package/dist/cli/runtime-commands.d.ts +1 -1
  17. package/dist/cli/worktree-sweep/classify.d.ts +16 -0
  18. package/dist/cli/worktree-sweep/format.d.ts +8 -0
  19. package/dist/cli/worktree-sweep/git.d.ts +19 -0
  20. package/dist/cli/worktree-sweep/index.d.ts +7 -0
  21. package/dist/cli/worktree-sweep/options.d.ts +2 -0
  22. package/dist/cli/worktree-sweep/parse-worktree-list.d.ts +8 -0
  23. package/dist/cli/worktree-sweep/sweep.d.ts +2 -0
  24. package/dist/cli/worktree-sweep/types.d.ts +65 -0
  25. package/dist/cli/worktree-sweep/worktree-sweep.d.ts +2 -0
  26. package/dist/cli-node/index.js +50900 -58829
  27. package/package.json +11 -9
  28. package/packages/git-bash-mcp/dist/cli.js +6 -1
  29. package/packages/lsp-daemon/dist/cli.js +902 -479
  30. package/packages/lsp-daemon/dist/client.d.ts +10 -0
  31. package/packages/lsp-daemon/dist/client.js +920 -493
  32. package/packages/lsp-daemon/dist/daemon-client.d.ts +1 -0
  33. package/packages/lsp-daemon/dist/daemon-client.js +3 -0
  34. package/packages/lsp-daemon/dist/ensure-daemon.d.ts +6 -1
  35. package/packages/lsp-daemon/dist/ensure-daemon.js +10 -2
  36. package/packages/lsp-daemon/dist/index.js +824 -402
  37. package/packages/lsp-daemon/dist/ownership.js +2 -2
  38. package/packages/lsp-daemon/dist/proxy.js +3 -0
  39. package/packages/lsp-daemon/dist/version-reap.js +1 -1
  40. package/packages/lsp-daemon/package.json +1 -1
  41. package/packages/lsp-tools-mcp/dist/cli.js +762 -341
  42. package/packages/lsp-tools-mcp/dist/lsp/manager.js +272 -138
  43. package/packages/lsp-tools-mcp/dist/mcp.js +787 -368
  44. package/packages/lsp-tools-mcp/dist/request-context.js +12 -13
  45. package/packages/lsp-tools-mcp/dist/tools.js +717 -302
  46. package/packages/lsp-tools-mcp/package.json +1 -1
  47. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +4 -6
  48. package/packages/omo-codex/plugin/.mcp.json +0 -6
  49. package/packages/omo-codex/plugin/AGENTS.md +47 -0
  50. package/packages/omo-codex/plugin/README.md +6 -2
  51. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +197 -148
  52. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  53. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  54. package/packages/omo-codex/plugin/components/bootstrap/src/hook.ts +1 -0
  55. package/packages/omo-codex/plugin/components/comment-checker/AGENTS.md +9 -0
  56. package/packages/omo-codex/plugin/components/comment-checker/biome.json +2 -2
  57. package/packages/omo-codex/plugin/components/comment-checker/dist/cli.js +2 -1
  58. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  59. package/packages/omo-codex/plugin/components/comment-checker/package.json +5 -5
  60. package/packages/omo-codex/plugin/components/comment-checker/src/apply-patch.ts +2 -8
  61. package/packages/omo-codex/plugin/components/comment-checker/src/core.ts +1 -2
  62. package/packages/omo-codex/plugin/components/comment-checker/src/request-extractor.ts +1 -1
  63. package/packages/omo-codex/plugin/components/comment-checker/src/runner.ts +1 -0
  64. package/packages/omo-codex/plugin/components/git-bash/AGENTS.md +1 -1
  65. package/packages/omo-codex/plugin/components/git-bash/dist/cli.js +1 -1
  66. package/packages/omo-codex/plugin/components/git-bash/dist/codex-hook.js +2 -1
  67. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  68. package/packages/omo-codex/plugin/components/git-bash/package.json +3 -4
  69. package/packages/omo-codex/plugin/components/git-bash/src/codex-hook.ts +2 -1
  70. package/packages/omo-codex/plugin/components/git-bash/test/codex-hook.test.ts +6 -7
  71. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/AGENTS.md +2 -2
  72. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/biome.json +2 -2
  73. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/directive.md +2 -0
  74. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/cli.js +36 -29
  75. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/codex-hook.js +32 -26
  76. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/types.d.ts +3 -0
  77. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  78. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +5 -5
  79. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/src/codex-hook.ts +32 -28
  80. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/src/types.ts +3 -0
  81. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/cli.test.ts +1 -1
  82. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/codex-hook.test.ts +137 -28
  83. package/packages/omo-codex/plugin/components/lcx/skills/lcx-doctor/SKILL.md +4 -2
  84. package/packages/omo-codex/plugin/components/lsp/AGENTS.md +30 -15
  85. package/packages/omo-codex/plugin/components/lsp/biome.json +2 -2
  86. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +4 -4
  87. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +941 -540
  88. package/packages/omo-codex/plugin/components/lsp/dist/daemon-cli-path.js +1 -1
  89. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  90. package/packages/omo-codex/plugin/components/lsp/package.json +5 -5
  91. package/packages/omo-codex/plugin/components/lsp/src/cli.ts +1 -1
  92. package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +1 -1
  93. package/packages/omo-codex/plugin/components/lsp/src/daemon-cli-path.ts +1 -5
  94. package/packages/omo-codex/plugin/components/lsp/test/codex-hook-unavailable.test.ts +6 -7
  95. package/packages/omo-codex/plugin/components/lsp/test/codex-hook.test.ts +1 -2
  96. package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +11 -1
  97. package/packages/omo-codex/plugin/components/rules/AGENTS.md +12 -0
  98. package/packages/omo-codex/plugin/components/rules/README.md +2 -0
  99. package/packages/omo-codex/plugin/components/rules/biome.json +2 -2
  100. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-6.md +123 -0
  101. package/packages/omo-codex/plugin/components/rules/dist/cli.js +91 -68
  102. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  103. package/packages/omo-codex/plugin/components/rules/package.json +7 -7
  104. package/packages/omo-codex/plugin/components/rules/src/config.ts +1 -2
  105. package/packages/omo-codex/plugin/components/rules/src/persistent-cache.ts +1 -2
  106. package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +15 -5
  107. package/packages/omo-codex/plugin/components/rules/src/rules-engine-factory.ts +1 -4
  108. package/packages/omo-codex/plugin/components/rules/src/static-injection.ts +4 -9
  109. package/packages/omo-codex/plugin/components/rules/test/bundled-rules-priority.test.ts +11 -16
  110. package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +17 -25
  111. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +9 -7
  112. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +0 -6
  113. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-dedup.test.ts +6 -4
  114. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-directive.test.ts +12 -9
  115. package/packages/omo-codex/plugin/components/rules/test/codex-hook.test.ts +28 -37
  116. package/packages/omo-codex/plugin/components/rules/test/dynamic-target-fingerprints.test.ts +1 -2
  117. package/packages/omo-codex/plugin/components/rules/test/engine.test.ts +7 -4
  118. package/packages/omo-codex/plugin/components/rules/test/finder.test.ts +2 -3
  119. package/packages/omo-codex/plugin/components/rules/test/formatter.test.ts +39 -72
  120. package/packages/omo-codex/plugin/components/rules/test/hephaestus-model-variant.test.ts +38 -3
  121. package/packages/omo-codex/plugin/components/rules/test/hook-output.test.ts +2 -3
  122. package/packages/omo-codex/plugin/components/rules/test/matcher.test.ts +2 -3
  123. package/packages/omo-codex/plugin/components/rules/test/package-smoke.test.ts +1 -1
  124. package/packages/omo-codex/plugin/components/rules/test/parser.test.ts +1 -2
  125. package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +29 -6
  126. package/packages/omo-codex/plugin/components/rules/test/rules-engine-consumption.test.ts +3 -6
  127. package/packages/omo-codex/plugin/components/rules/test/scanner.test.ts +1 -2
  128. package/packages/omo-codex/plugin/components/rules/test/sources.test.ts +2 -5
  129. package/packages/omo-codex/plugin/components/rules/test/windows-git-bash-bundled-rule.test.ts +2 -17
  130. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  131. package/packages/omo-codex/plugin/components/teammode/package.json +5 -5
  132. package/packages/omo-codex/plugin/components/teammode/test/thread-title-hook.test.ts +4 -10
  133. package/packages/omo-codex/plugin/components/telemetry/AGENTS.md +8 -0
  134. package/packages/omo-codex/plugin/components/telemetry/biome.json +2 -2
  135. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +2407 -684
  136. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +2411 -689
  137. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  138. package/packages/omo-codex/plugin/components/telemetry/package.json +5 -5
  139. package/packages/omo-codex/plugin/components/telemetry/src/codex-hook.ts +1 -4
  140. package/packages/omo-codex/plugin/components/telemetry/src/posthog.ts +4 -14
  141. package/packages/omo-codex/plugin/components/telemetry/src/product-identity.ts +1 -1
  142. package/packages/omo-codex/plugin/components/telemetry/test/diagnostics.test.ts +2 -5
  143. package/packages/omo-codex/plugin/components/ultrawork/AGENTS.md +10 -4
  144. package/packages/omo-codex/plugin/components/ultrawork/README.md +2 -0
  145. package/packages/omo-codex/plugin/components/ultrawork/agents/explorer.toml +1 -1
  146. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-clone-fidelity-reviewer.toml +1 -1
  147. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-code-reviewer.toml +1 -1
  148. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-gate-reviewer.toml +1 -1
  149. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-qa-executor.toml +1 -1
  150. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-high.toml +1 -1
  151. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-low.toml +1 -1
  152. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-medium.toml +1 -1
  153. package/packages/omo-codex/plugin/components/ultrawork/agents/librarian.toml +1 -1
  154. package/packages/omo-codex/plugin/components/ultrawork/agents/metis.toml +1 -1
  155. package/packages/omo-codex/plugin/components/ultrawork/agents/momus.toml +1 -1
  156. package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +1 -1
  157. package/packages/omo-codex/plugin/components/ultrawork/biome.json +2 -2
  158. package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +490 -4
  159. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  160. package/packages/omo-codex/plugin/components/ultrawork/package.json +5 -6
  161. package/packages/omo-codex/plugin/components/ultrawork/scripts/sync-directive.mjs +30 -14
  162. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +6 -7
  163. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +31 -7
  164. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +2 -1
  165. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +5 -5
  166. package/packages/omo-codex/plugin/components/ultrawork/src/directive-content.ts +4 -0
  167. package/packages/omo-codex/plugin/components/ultrawork/src/directive.ts +5 -2
  168. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook-trigger-policy.test.ts +9 -1
  169. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +0 -136
  170. package/packages/omo-codex/plugin/components/ultrawork/test/directive-source.test.ts +14 -8
  171. package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +12 -1
  172. package/packages/omo-codex/plugin/components/ultrawork/test/skill-pointer.test.ts +0 -2
  173. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/AGENTS.md +4 -4
  174. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/NOTICE +1 -1
  175. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/README.md +6 -6
  176. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/biome.json +2 -2
  177. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/directive.md +10 -10
  178. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/dist/cli.js +16 -16
  179. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +16 -0
  180. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/package.json +12 -12
  181. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/boulder-reader.ts +1 -1
  182. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/cli.ts +1 -1
  183. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/codex-hook.ts +4 -4
  184. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/directive.ts +1 -1
  185. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/index.ts +1 -1
  186. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/types.ts +1 -1
  187. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/boulder-reader.test.ts +3 -3
  188. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/cli.test.ts +4 -11
  189. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/codex-hook.test.ts +24 -22
  190. package/packages/omo-codex/plugin/components/ulw-loop/AGENTS.md +19 -0
  191. package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +1 -1
  192. package/packages/omo-codex/plugin/components/ulw-loop/README.md +12 -1
  193. package/packages/omo-codex/plugin/components/ulw-loop/biome.json +2 -2
  194. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +26 -13
  195. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.d.ts +16 -0
  196. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.js +25 -0
  197. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-continuation.js +10 -4
  198. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.d.ts +2 -5
  199. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.js +5 -78
  200. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-template.d.ts +12 -0
  201. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-template.js +114 -0
  202. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.d.ts +7 -1
  203. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +50 -42
  204. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-arg-parser.js +2 -2
  205. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-commands.js +21 -8
  206. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.d.ts +2 -1
  207. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.js +12 -1
  208. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-subcommands.d.ts +1 -1
  209. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-subcommands.js +40 -37
  210. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +1396 -516
  211. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.d.ts +2 -0
  212. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +28 -8
  213. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.d.ts +2 -5
  214. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.js +24 -20
  215. package/packages/omo-codex/plugin/components/ulw-loop/dist/constants.d.ts +1 -0
  216. package/packages/omo-codex/plugin/components/ulw-loop/dist/constants.js +1 -0
  217. package/packages/omo-codex/plugin/components/ulw-loop/dist/domain-types.d.ts +17 -9
  218. package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.d.ts +1 -0
  219. package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.js +13 -4
  220. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.d.ts +1 -0
  221. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.js +34 -4
  222. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-missing-recovery.d.ts +14 -0
  223. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-missing-recovery.js +29 -0
  224. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-aggregate.d.ts +7 -0
  225. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-aggregate.js +9 -0
  226. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-artifacts.d.ts +12 -0
  227. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-artifacts.js +104 -0
  228. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-fields.d.ts +13 -1
  229. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-fields.js +65 -9
  230. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-verdicts.js +5 -1
  231. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.d.ts +4 -2
  232. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.js +72 -117
  233. package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.d.ts +2 -0
  234. package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.js +16 -7
  235. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/factory.d.ts +2 -0
  236. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/factory.js +125 -0
  237. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/manifest.d.ts +46 -0
  238. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/manifest.js +28 -0
  239. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/types.d.ts +127 -0
  240. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/types.js +1 -0
  241. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk.d.ts +3 -0
  242. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk.js +3 -0
  243. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.d.ts +6 -1
  244. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.js +195 -29
  245. package/packages/omo-codex/plugin/components/ulw-loop/dist/state-lock.d.ts +9 -0
  246. package/packages/omo-codex/plugin/components/ulw-loop/dist/state-lock.js +227 -0
  247. package/packages/omo-codex/plugin/components/ulw-loop/dist/status-next-actions.d.ts +6 -0
  248. package/packages/omo-codex/plugin/components/ulw-loop/dist/status-next-actions.js +33 -0
  249. package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +20 -6
  250. package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.d.ts +19 -0
  251. package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.js +75 -0
  252. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +17 -4
  253. package/packages/omo-codex/plugin/components/ulw-loop/package.json +6 -6
  254. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +10 -4
  255. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +108 -0
  256. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +32 -8
  257. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-codex-validation.ts +40 -0
  258. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-continuation.ts +8 -6
  259. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-reconciliation.ts +5 -98
  260. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-template.ts +134 -0
  261. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +52 -73
  262. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-arg-parser.ts +10 -4
  263. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-commands.ts +24 -8
  264. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-output.ts +14 -1
  265. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-subcommands.ts +52 -46
  266. package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +8 -6
  267. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +35 -7
  268. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-snapshot.ts +34 -28
  269. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +3 -1
  270. package/packages/omo-codex/plugin/components/ulw-loop/src/constants.ts +1 -0
  271. package/packages/omo-codex/plugin/components/ulw-loop/src/domain-types.ts +19 -9
  272. package/packages/omo-codex/plugin/components/ulw-loop/src/paths.ts +25 -4
  273. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-io.ts +39 -4
  274. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-missing-recovery.ts +38 -0
  275. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-aggregate.ts +11 -0
  276. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-artifacts.ts +123 -0
  277. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-fields.ts +71 -15
  278. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-verdicts.ts +6 -1
  279. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate.ts +92 -136
  280. package/packages/omo-codex/plugin/components/ulw-loop/src/review-blockers.ts +29 -8
  281. package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/factory.ts +159 -0
  282. package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/manifest.ts +42 -0
  283. package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/types.ts +140 -0
  284. package/packages/omo-codex/plugin/components/ulw-loop/src/sdk.ts +3 -0
  285. package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-guard.ts +205 -28
  286. package/packages/omo-codex/plugin/components/ulw-loop/src/state-lock.ts +239 -0
  287. package/packages/omo-codex/plugin/components/ulw-loop/src/status-next-actions.ts +36 -0
  288. package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +19 -6
  289. package/packages/omo-codex/plugin/components/ulw-loop/src/surface.ts +107 -0
  290. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-continuation.test.ts +0 -1
  291. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-final.test.ts +131 -82
  292. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-template.test.ts +147 -0
  293. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint.test.ts +16 -22
  294. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-checkpoint-continuation.test.ts +4 -2
  295. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-checkpoint.test.ts +31 -2
  296. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-commands.test.ts +2 -0
  297. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-complete-goals.test.ts +3 -1
  298. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-create-goals.test.ts +35 -8
  299. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-entrypoint.test.ts +38 -4
  300. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-json-errors.test.ts +27 -0
  301. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-scope-required.test.ts +144 -0
  302. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-status-next-actions.test.ts +185 -0
  303. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-steering-batch.test.ts +8 -3
  304. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-validation-batch.test.ts +6 -0
  305. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +37 -2
  306. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-snapshot.test.ts +52 -11
  307. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +0 -3
  308. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/cli-session.ts +4 -0
  309. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/quality-gate-builder.ts +9 -4
  310. package/packages/omo-codex/plugin/components/ulw-loop/test/guided-recovery.test.ts +67 -0
  311. package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +5 -37
  312. package/packages/omo-codex/plugin/components/ulw-loop/test/paths.test.ts +9 -0
  313. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-io-cross-process.test.ts +106 -0
  314. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-io.test.ts +36 -2
  315. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-aggregate-basics.test.ts +258 -0
  316. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-cap-and-dedupe.test.ts +22 -0
  317. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-fields-messages.test.ts +98 -0
  318. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-lazycodex-surface.test.ts +93 -0
  319. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-poisoning-cascades.test.ts +97 -0
  320. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-roles.test.ts +51 -2
  321. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-senpi-surface.test.ts +131 -0
  322. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-single-report.test.ts +241 -0
  323. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate.test.ts +58 -3
  324. package/packages/omo-codex/plugin/components/ulw-loop/test/review-blockers.test.ts +9 -7
  325. package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-contract.test.ts +137 -0
  326. package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-session-context.test.ts +148 -0
  327. package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-guard.test.ts +444 -7
  328. package/packages/omo-codex/plugin/components/ulw-loop/test/state-lock.test.ts +218 -0
  329. package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +8 -5
  330. package/packages/omo-codex/plugin/components/ulw-loop/test/stop-resume-hook.test.ts +1 -1
  331. package/packages/omo-codex/plugin/components/ulw-loop/test/surface.test.ts +74 -0
  332. package/packages/omo-codex/plugin/components/ulw-loop/test/ultrawork-directive.test.ts +13 -8
  333. package/packages/omo-codex/plugin/components/ulw-loop/vitest.config.ts +1 -0
  334. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  335. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  336. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  337. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  338. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  339. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  340. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  341. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +18 -0
  342. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  343. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  344. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  345. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  346. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  347. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  348. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  349. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +17 -0
  350. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  351. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  352. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  353. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  354. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  355. package/packages/omo-codex/plugin/model-catalog.json +16 -7
  356. package/packages/omo-codex/plugin/package-lock.json +676 -524
  357. package/packages/omo-codex/plugin/package.json +2 -3
  358. package/packages/omo-codex/plugin/scripts/AGENTS.md +39 -0
  359. package/packages/omo-codex/plugin/scripts/auto-update-plan.mjs +1 -2
  360. package/packages/omo-codex/plugin/scripts/auto-update.mjs +0 -9
  361. package/packages/omo-codex/plugin/scripts/canonical-ultrawork-directive.mjs +17 -0
  362. package/packages/omo-codex/plugin/scripts/hook-status-message.mjs +0 -1
  363. package/packages/omo-codex/plugin/scripts/migrate-codex-config/catalog.mjs +16 -7
  364. package/packages/omo-codex/plugin/scripts/migrate-codex-config/multi-agent-v2-guard.mjs +8 -4
  365. package/packages/omo-codex/plugin/scripts/migrate-codex-config/subagent-limit-guard.mjs +19 -90
  366. package/packages/omo-codex/plugin/scripts/migrate-codex-config/toml-section-editor.mjs +1 -1
  367. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +94 -55
  368. package/packages/omo-codex/plugin/shared/package.json +3 -4
  369. package/packages/omo-codex/plugin/shared/src/config-loader.ts +2 -102
  370. package/packages/omo-codex/plugin/shared/src/config-migration.ts +0 -1
  371. package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +41 -130
  372. package/packages/omo-codex/plugin/skills/ast-grep/AGENTS.md +51 -0
  373. package/packages/omo-codex/plugin/skills/ast-grep/SKILL.md +1 -1
  374. package/packages/omo-codex/plugin/skills/coding-agent-sessions/AGENTS.md +62 -0
  375. package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +1 -1
  376. package/packages/omo-codex/plugin/skills/data-scientist/SKILL.md +99 -239
  377. package/packages/omo-codex/plugin/skills/data-scientist/references/execution-surfaces.md +91 -0
  378. package/packages/omo-codex/plugin/skills/data-scientist/references/placement.md +74 -0
  379. package/packages/omo-codex/plugin/skills/data-scientist/references/polars-lane.md +95 -0
  380. package/packages/omo-codex/plugin/skills/data-scientist/references/uv-setup.md +1 -1
  381. package/packages/omo-codex/plugin/skills/data-scientist/references/visualization.md +64 -0
  382. package/packages/omo-codex/plugin/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
  383. package/packages/omo-codex/plugin/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
  384. package/packages/omo-codex/plugin/skills/debugging/SKILL.md +3 -1
  385. package/packages/omo-codex/plugin/skills/debugging/references/methodology/00-setup.md +12 -0
  386. package/packages/omo-codex/plugin/skills/debugging/references/methodology/02-investigate.md +21 -0
  387. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/go.md +15 -1
  388. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/native-binary.md +38 -0
  389. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/node.md +25 -0
  390. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/python.md +13 -0
  391. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/rust.md +41 -0
  392. package/packages/omo-codex/plugin/skills/debugging/references/scripts/dap.mjs +267 -0
  393. package/packages/omo-codex/plugin/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  394. package/packages/omo-codex/plugin/skills/debugging/references/tools/dap.md +103 -0
  395. package/packages/omo-codex/plugin/skills/debugging/references/tools/frida.md +193 -0
  396. package/packages/omo-codex/plugin/skills/frontend/ATTRIBUTION.md +10 -0
  397. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +15 -8
  398. package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +10 -2
  399. package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +2 -0
  400. package/packages/omo-codex/plugin/skills/frontend/references/design/ambience-skill.md +145 -0
  401. package/packages/omo-codex/plugin/skills/frontend/references/design/interaction-skill.md +2 -0
  402. package/packages/omo-codex/plugin/skills/frontend/references/design/print-paged-media.md +76 -0
  403. package/packages/omo-codex/plugin/skills/frontend/references/design/stylegallery.md +80 -0
  404. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/README.md +1 -1
  405. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  406. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  407. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  408. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/orchestration.md +1 -1
  409. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/routing.md +5 -5
  410. package/packages/omo-codex/plugin/skills/git-master/SKILL.md +1 -1
  411. package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +18 -16
  412. package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +4 -2
  413. package/packages/omo-codex/plugin/skills/lsp-setup/SKILL.md +1 -1
  414. package/packages/omo-codex/plugin/skills/programming/SKILL.md +1 -1
  415. package/packages/omo-codex/plugin/skills/refactor/SKILL.md +8 -6
  416. package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +5 -3
  417. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +114 -422
  418. package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +38 -11
  419. package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +26 -9
  420. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +110 -0
  421. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +1 -1
  422. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +23 -18
  423. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +9 -2
  424. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +26 -13
  425. package/packages/omo-codex/plugin/skills/{start-work → ulw-execute}/SKILL.md +29 -31
  426. package/packages/omo-codex/plugin/skills/ulw-execute/agents/openai.yaml +2 -0
  427. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +34 -4
  428. package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +108 -0
  429. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +32 -8
  430. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +6 -7
  431. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +31 -7
  432. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +2 -1
  433. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +5 -5
  434. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +12 -5
  435. package/packages/omo-codex/plugin/skills/visual-qa/AGENTS.md +58 -0
  436. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +8 -5
  437. package/packages/omo-codex/plugin/test/AGENTS.md +47 -0
  438. package/packages/omo-codex/plugin/test/aggregate-agents.test.mjs +19 -173
  439. package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +16 -51
  440. package/packages/omo-codex/plugin/test/aggregate-manifest.test.mjs +2 -3
  441. package/packages/omo-codex/plugin/test/aggregate-mcp.test.mjs +2 -7
  442. package/packages/omo-codex/plugin/test/aggregate-model-catalog.test.mjs +14 -4
  443. package/packages/omo-codex/plugin/test/aggregate-plugin-fixture.mjs +175 -13
  444. package/packages/omo-codex/plugin/test/aggregate.test.mjs +78 -2
  445. package/packages/omo-codex/plugin/test/auto-update-release-notes.test.mjs +19 -33
  446. package/packages/omo-codex/plugin/test/auto-update.test.mjs +4 -29
  447. package/packages/omo-codex/plugin/test/bootstrap-setup.test.mjs +0 -31
  448. package/packages/omo-codex/plugin/test/canonical-ultrawork-directive.test.mjs +53 -0
  449. package/packages/omo-codex/plugin/test/component-bin-names.test.mjs +2 -2
  450. package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +1 -51
  451. package/packages/omo-codex/plugin/test/component-hook-contract-cases.mjs +88 -2
  452. package/packages/omo-codex/plugin/test/hook-status-message.test.mjs +5 -6
  453. package/packages/omo-codex/plugin/test/lcx-contribute-bug-fix-template.test.mjs +21 -27
  454. package/packages/omo-codex/plugin/test/mcp-research-servers.test.mjs +1 -3
  455. package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +35 -35
  456. package/packages/omo-codex/plugin/test/multi-agent-v2-regression.test.mjs +1 -1
  457. package/packages/omo-codex/plugin/test/scaffold-plan.test.mjs +0 -36
  458. package/packages/omo-codex/plugin/test/subagent-limit-migration.test.mjs +107 -15
  459. package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +168 -0
  460. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +54 -24
  461. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +18 -119
  462. package/packages/omo-codex/plugin/test/teammode-archive-ambiguity.test.mjs +0 -40
  463. package/packages/omo-codex/plugin/test/teammode-communication.test.mjs +6 -62
  464. package/packages/omo-codex/plugin/test/teammode-thread-links.test.mjs +3 -36
  465. package/packages/omo-codex/plugin/test/teammode-transport.test.mjs +0 -44
  466. package/packages/omo-codex/plugin/test/teammode-worktree.test.mjs +2 -6
  467. package/packages/omo-codex/plugin/test/ultrawork-skill-pointer.test.mjs +5 -5
  468. package/packages/omo-codex/plugin/test/ulw-plan-review-state-contract.test.mjs +0 -3
  469. package/packages/omo-codex/scripts/install-dist/install-local.mjs +2987 -1370
  470. package/packages/{omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md → prompts-core/prompts/ultrawork/codex.md} +26 -20
  471. package/packages/shared-skills/package.json +7 -1
  472. package/packages/shared-skills/skill-source-filter.d.ts +16 -0
  473. package/packages/shared-skills/skill-source-filter.mjs +44 -0
  474. package/packages/shared-skills/skills/ast-grep/AGENTS.md +51 -0
  475. package/packages/shared-skills/skills/ast-grep/SKILL.md +1 -1
  476. package/packages/shared-skills/skills/coding-agent-sessions/AGENTS.md +62 -0
  477. package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +1 -1
  478. package/packages/shared-skills/skills/data-scientist/SKILL.md +99 -239
  479. package/packages/shared-skills/skills/data-scientist/references/execution-surfaces.md +91 -0
  480. package/packages/shared-skills/skills/data-scientist/references/placement.md +74 -0
  481. package/packages/shared-skills/skills/data-scientist/references/polars-lane.md +95 -0
  482. package/packages/shared-skills/skills/data-scientist/references/uv-setup.md +1 -1
  483. package/packages/shared-skills/skills/data-scientist/references/visualization.md +64 -0
  484. package/packages/shared-skills/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
  485. package/packages/shared-skills/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
  486. package/packages/shared-skills/skills/debugging/SKILL.md +3 -1
  487. package/packages/shared-skills/skills/debugging/references/methodology/00-setup.md +12 -0
  488. package/packages/shared-skills/skills/debugging/references/methodology/02-investigate.md +21 -0
  489. package/packages/shared-skills/skills/debugging/references/runtimes/go.md +15 -1
  490. package/packages/shared-skills/skills/debugging/references/runtimes/native-binary.md +38 -0
  491. package/packages/shared-skills/skills/debugging/references/runtimes/node.md +25 -0
  492. package/packages/shared-skills/skills/debugging/references/runtimes/python.md +13 -0
  493. package/packages/shared-skills/skills/debugging/references/runtimes/rust.md +41 -0
  494. package/packages/shared-skills/skills/debugging/references/scripts/dap.mjs +267 -0
  495. package/packages/shared-skills/skills/debugging/references/scripts/dap.test.ts +86 -0
  496. package/packages/shared-skills/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  497. package/packages/shared-skills/skills/debugging/references/tools/dap.md +103 -0
  498. package/packages/shared-skills/skills/debugging/references/tools/frida.md +193 -0
  499. package/packages/shared-skills/skills/frontend/ATTRIBUTION.md +10 -0
  500. package/packages/shared-skills/skills/frontend/SKILL.md +15 -8
  501. package/packages/shared-skills/skills/frontend/references/design/README.md +10 -2
  502. package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +2 -0
  503. package/packages/shared-skills/skills/frontend/references/design/ambience-skill.md +145 -0
  504. package/packages/shared-skills/skills/frontend/references/design/interaction-skill.md +2 -0
  505. package/packages/shared-skills/skills/frontend/references/design/print-paged-media.md +76 -0
  506. package/packages/shared-skills/skills/frontend/references/design/stylegallery.md +80 -0
  507. package/packages/shared-skills/skills/frontend/references/designpowers/README.md +1 -1
  508. package/packages/shared-skills/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  509. package/packages/shared-skills/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  510. package/packages/shared-skills/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  511. package/packages/shared-skills/skills/frontend/references/designpowers/orchestration.md +1 -1
  512. package/packages/shared-skills/skills/frontend/references/designpowers/routing.md +5 -5
  513. package/packages/shared-skills/skills/git-master/SKILL.md +1 -1
  514. package/packages/shared-skills/skills/init-deep/SKILL.md +14 -14
  515. package/packages/shared-skills/skills/lsp-setup/SKILL.md +1 -1
  516. package/packages/shared-skills/skills/programming/SKILL.md +1 -1
  517. package/packages/shared-skills/skills/refactor/SKILL.md +4 -4
  518. package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +1 -1
  519. package/packages/shared-skills/skills/review-work/SKILL.md +101 -419
  520. package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +38 -11
  521. package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +26 -9
  522. package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +110 -0
  523. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +1 -1
  524. package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +23 -18
  525. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +9 -2
  526. package/packages/shared-skills/skills/{start-work → ulw-execute}/SKILL.md +20 -19
  527. package/packages/shared-skills/skills/ulw-plan/SKILL.md +7 -8
  528. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +31 -7
  529. package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +2 -1
  530. package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +5 -5
  531. package/packages/shared-skills/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
  532. package/packages/shared-skills/skills/ulw-research/SKILL.md +8 -3
  533. package/packages/shared-skills/skills/visual-qa/AGENTS.md +58 -0
  534. package/packages/shared-skills/skills/visual-qa/SKILL.md +4 -3
  535. package/script/qa/web-terminal-visual-qa.mjs +2 -0
  536. package/script/qa/xterm-live-terminal.mjs +18 -2
  537. package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.d.ts +0 -1
  538. package/packages/lsp-tools-mcp/dist/lsp/constants.d.ts +0 -1
  539. package/packages/lsp-tools-mcp/dist/lsp/language-mappings.d.ts +0 -1
  540. package/packages/lsp-tools-mcp/dist/lsp/process-signal-cleanup.d.ts +0 -1
  541. package/packages/lsp-tools-mcp/dist/missing-dependency-result.d.ts +0 -1
  542. package/packages/omo-codex/plugin/components/codegraph/AGENTS.md +0 -58
  543. package/packages/omo-codex/plugin/components/codegraph/NODE-RUNTIME-LICENSES.md +0 -2951
  544. package/packages/omo-codex/plugin/components/codegraph/NOTICE +0 -16
  545. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +0 -12149
  546. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +0 -9747
  547. package/packages/omo-codex/plugin/components/codegraph/package.json +0 -33
  548. package/packages/omo-codex/plugin/components/codegraph/src/cache-gc.ts +0 -29
  549. package/packages/omo-codex/plugin/components/codegraph/src/cli.ts +0 -79
  550. package/packages/omo-codex/plugin/components/codegraph/src/hook-input.ts +0 -33
  551. package/packages/omo-codex/plugin/components/codegraph/src/hook-sweep.ts +0 -25
  552. package/packages/omo-codex/plugin/components/codegraph/src/hook-types.ts +0 -131
  553. package/packages/omo-codex/plugin/components/codegraph/src/hook.ts +0 -258
  554. package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +0 -309
  555. package/packages/omo-codex/plugin/components/codegraph/src/mcp-unavailable.ts +0 -80
  556. package/packages/omo-codex/plugin/components/codegraph/src/post-tool-use-hook.ts +0 -34
  557. package/packages/omo-codex/plugin/components/codegraph/src/serve-invocation.ts +0 -29
  558. package/packages/omo-codex/plugin/components/codegraph/src/serve.ts +0 -263
  559. package/packages/omo-codex/plugin/components/codegraph/src/session-start-command.ts +0 -106
  560. package/packages/omo-codex/plugin/components/codegraph/src/session-start-cooldown.ts +0 -145
  561. package/packages/omo-codex/plugin/components/codegraph/src/session-start-hook-runtime.ts +0 -21
  562. package/packages/omo-codex/plugin/components/codegraph/src/session-start-lock.ts +0 -139
  563. package/packages/omo-codex/plugin/components/codegraph/src/session-start-outcome.ts +0 -15
  564. package/packages/omo-codex/plugin/components/codegraph/src/session-start-paths.ts +0 -32
  565. package/packages/omo-codex/plugin/components/codegraph/src/session-start-project.ts +0 -109
  566. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker-result.ts +0 -148
  567. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker.ts +0 -175
  568. package/packages/omo-codex/plugin/components/codegraph/src/sweep-cli.ts +0 -81
  569. package/packages/omo-codex/plugin/components/codegraph/test/cache-gc.test.ts +0 -34
  570. package/packages/omo-codex/plugin/components/codegraph/test/hook-exclusion.test.ts +0 -112
  571. package/packages/omo-codex/plugin/components/codegraph/test/hook-registration.test.ts +0 -26
  572. package/packages/omo-codex/plugin/components/codegraph/test/hook-session-start-guard.test.ts +0 -160
  573. package/packages/omo-codex/plugin/components/codegraph/test/hook-store-upgrade.test.ts +0 -50
  574. package/packages/omo-codex/plugin/components/codegraph/test/hook-sweep.test.ts +0 -29
  575. package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +0 -320
  576. package/packages/omo-codex/plugin/components/codegraph/test/mcp-bridge-fixtures.ts +0 -172
  577. package/packages/omo-codex/plugin/components/codegraph/test/package-runtime.test.ts +0 -91
  578. package/packages/omo-codex/plugin/components/codegraph/test/provisioned-node-guard.test.ts +0 -100
  579. package/packages/omo-codex/plugin/components/codegraph/test/serve-built-wrapper.test.ts +0 -76
  580. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge-lifecycle.test.ts +0 -133
  581. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge.test.ts +0 -245
  582. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-facade.test.ts +0 -69
  583. package/packages/omo-codex/plugin/components/codegraph/test/serve-node-support.test.ts +0 -43
  584. package/packages/omo-codex/plugin/components/codegraph/test/serve-provision.test.ts +0 -147
  585. package/packages/omo-codex/plugin/components/codegraph/test/serve-unavailable.test.ts +0 -175
  586. package/packages/omo-codex/plugin/components/codegraph/test/serve.test.ts +0 -385
  587. package/packages/omo-codex/plugin/components/codegraph/test/session-start-node-support.test.ts +0 -206
  588. package/packages/omo-codex/plugin/components/codegraph/test/session-start-project.test.ts +0 -58
  589. package/packages/omo-codex/plugin/components/codegraph/test/session-start-state.test.ts +0 -104
  590. package/packages/omo-codex/plugin/components/codegraph/test/session-start-trust-boundary.test.ts +0 -65
  591. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-availability.test.ts +0 -106
  592. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-cooldown.test.ts +0 -116
  593. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-flow.test.ts +0 -258
  594. package/packages/omo-codex/plugin/components/codegraph/test/sweep-cli.test.ts +0 -56
  595. package/packages/omo-codex/plugin/components/codegraph/tsconfig.build.json +0 -13
  596. package/packages/omo-codex/plugin/components/codegraph/tsconfig.json +0 -25
  597. package/packages/omo-codex/plugin/components/start-work-continuation/LICENSE +0 -21
  598. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +0 -28
  599. package/packages/omo-codex/plugin/components/ultrawork/directive.md +0 -471
  600. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +0 -18
  601. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +0 -17
  602. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +0 -17
  603. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +0 -17
  604. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/editor.mjs +0 -125
  605. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/jsonc.mjs +0 -43
  606. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/scaffold.mjs +0 -29
  607. package/packages/omo-codex/plugin/scripts/migrate-omo-sot.mjs +0 -121
  608. package/packages/omo-codex/plugin/skills/data-scientist/references/common-scenarios.md +0 -176
  609. package/packages/omo-codex/plugin/skills/data-scientist/references/execution-templates.md +0 -197
  610. package/packages/omo-codex/plugin/skills/data-scientist/references/integration-patterns.md +0 -153
  611. package/packages/omo-codex/plugin/skills/data-scientist/references/performance-benchmarks.md +0 -37
  612. package/packages/omo-codex/plugin/skills/start-work/agents/openai.yaml +0 -2
  613. package/packages/omo-codex/plugin/test/aggregate-skills.test.mjs +0 -92
  614. package/packages/omo-codex/plugin/test/component-codegraph-mcp-smoke.test.mjs +0 -76
  615. package/packages/omo-codex/plugin/test/migrate-omo-sot.test.mjs +0 -179
  616. package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +0 -314
  617. package/packages/omo-codex/plugin/test/ulw-plan-scope-contract.test.mjs +0 -24
  618. package/packages/shared-skills/skills/data-scientist/references/common-scenarios.md +0 -176
  619. package/packages/shared-skills/skills/data-scientist/references/execution-templates.md +0 -197
  620. package/packages/shared-skills/skills/data-scientist/references/integration-patterns.md +0 -153
  621. package/packages/shared-skills/skills/data-scientist/references/performance-benchmarks.md +0 -37
  622. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/.gitattributes +0 -0
  623. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/CHANGELOG.md +0 -0
  624. /package/packages/omo-codex/plugin/components/{codegraph → ulw-execute-continuation}/LICENSE +0 -0
  625. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/plan-checklist.ts +0 -0
  626. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-completed.json +0 -0
  627. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-mixed-platforms.json +0 -0
  628. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-single-codex-work.json +0 -0
  629. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-all-done.md +0 -0
  630. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-scaffold.md +0 -0
  631. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-nested-checkboxes.md +0 -0
  632. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-unchecked.md +0 -0
  633. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.build.json +0 -0
  634. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.json +0 -0
  635. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/vitest.config.ts +0 -0
@@ -1,320 +0,0 @@
1
- import { describe, expect, it } from "bun:test";
2
- import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
3
- import { tmpdir } from "node:os";
4
- import { join, resolve } from "node:path";
5
- import { Readable } from "node:stream";
6
- import { fileURLToPath } from "node:url";
7
-
8
- import { runCodegraphCli } from "../src/cli.ts";
9
- import {
10
- executeCodegraphSessionStartHook,
11
- runCodegraphPostToolUseHook,
12
- type WorkerSpawnInvocation,
13
- } from "../src/hook.ts";
14
-
15
- const pluginRoot = resolve(fileURLToPath(new URL("../../..", import.meta.url)));
16
-
17
- function createAllowedWorkspace(prefix: string): string {
18
- return mkdtempSync(join(pluginRoot, `.tmp-${prefix}-`));
19
- }
20
-
21
- function expectOmoCodegraphProjectStoreGuidance(context: string): void {
22
- expect(context).toContain(".omo");
23
- expect(context).toContain("codegraph");
24
- expect(context).toContain("projects");
25
- expect(context).toContain("project-");
26
- }
27
-
28
- describe("CodeGraph SessionStart hook", () => {
29
- it("#given hook session-start cli args #when invoked with empty JSON input #then it emits valid JSON and exits zero", async () => {
30
- // given
31
- const stdout: string[] = [];
32
- const spawned: WorkerSpawnInvocation[] = [];
33
- const homeDir = mkdtempSync(join(tmpdir(), "omo-codegraph-hook-home-"));
34
- try {
35
- // when
36
- const exitCode = await runCodegraphCli({
37
- argv: ["node", "cli.js", "hook", "session-start"],
38
- cwd: createAllowedWorkspace("codegraph-hook-workspace"),
39
- env: { HOME: homeDir },
40
- stdin: Readable.from(["{}"]),
41
- stdout: { write: (chunk) => stdout.push(chunk) },
42
- ancestorProbe: () => ({ kind: "uninitialized" }),
43
- spawnWorker: (invocation) => spawned.push(invocation),
44
- sweepZombies: () => undefined,
45
- });
46
-
47
- // then
48
- expect(exitCode).toBe(0);
49
- expect(spawned).toHaveLength(1);
50
- const parsed = JSON.parse(stdout.join(""));
51
- expect(parsed).toEqual({
52
- hookSpecificOutput: {
53
- hookEventName: "SessionStart",
54
- additionalContext: "LazyCodex CodeGraph bootstrap scheduled in background",
55
- },
56
- });
57
- } finally {
58
- rmSync(homeDir, { recursive: true, force: true });
59
- }
60
- });
61
-
62
- it("#given CodeGraph MCP reports an uninitialized project #when PostToolUse fires #then it emits OMO global-store init guidance", async () => {
63
- // given
64
- const output = runCodegraphPostToolUseHook(
65
- {
66
- cwd: "/Users/me/project",
67
- tool_name: "codegraph.codegraph_status",
68
- tool_response: {
69
- error: [
70
- "Tool execution failed: CodeGraph not initialized in /Users/me/project.",
71
- "Run 'codegraph init' in that project first.",
72
- ].join(" "),
73
- },
74
- },
75
- { homeDir: "/Users/me" },
76
- );
77
-
78
- // when
79
- const parsed = JSON.parse(output);
80
-
81
- // then
82
- expect(parsed.hookSpecificOutput.hookEventName).toBe("PostToolUse");
83
- expect(parsed.hookSpecificOutput.additionalContext).toContain('CodeGraph is not initialized for "/Users/me/project"');
84
- expectOmoCodegraphProjectStoreGuidance(parsed.hookSpecificOutput.additionalContext);
85
- expect(parsed.hookSpecificOutput.additionalContext).toContain('run `codegraph init` from "/Users/me/project"');
86
- });
87
-
88
- it("#given real CodeGraph status output has no MCP path phrase #when PostToolUse fires #then it emits OMO global-store init guidance", async () => {
89
- // given
90
- const output = runCodegraphPostToolUseHook(
91
- {
92
- cwd: "/Users/me/project",
93
- tool_name: "mcp__codegraph__codegraph_status",
94
- tool_response: ['Project: /Users/me/project', "Not initialized", 'Run "codegraph init" to initialize'].join("\n"),
95
- },
96
- { homeDir: "/Users/me" },
97
- );
98
-
99
- // when
100
- const parsed = JSON.parse(output);
101
-
102
- // then
103
- expect(parsed.hookSpecificOutput.additionalContext).toContain('CodeGraph is not initialized for "/Users/me/project"');
104
- expectOmoCodegraphProjectStoreGuidance(parsed.hookSpecificOutput.additionalContext);
105
- });
106
-
107
- it("#given CodeGraph is disabled by Codex SOT config #when SessionStart fires #then it skips without spawning", async () => {
108
- // given
109
- const stdout: string[] = [];
110
- const spawned: WorkerSpawnInvocation[] = [];
111
-
112
- // when
113
- const result = await executeCodegraphSessionStartHook({
114
- config: { codegraph: { enabled: false }, sources: [], warnings: [] },
115
- env: {},
116
- stdin: Readable.from(["{}"]),
117
- stdout: { write: (chunk) => stdout.push(chunk) },
118
- sweepZombies: () => undefined,
119
- spawnWorker: (invocation) => spawned.push(invocation),
120
- });
121
-
122
- // then
123
- expect(result).toEqual({ action: "skipped-disabled", exitCode: 0 });
124
- expect(spawned).toEqual([]);
125
- expect(stdout.join("")).toBe("");
126
- });
127
-
128
- it("#given HOME OMO config disables Codex CodeGraph #when SessionStart fires #then it skips without spawning", async () => {
129
- // given
130
- const homeDir = mkdtempSync(join(tmpdir(), "omo-codegraph-sot-home-"));
131
- const workspace = mkdtempSync(join(tmpdir(), "omo-codegraph-sot-workspace-"));
132
- const stdout: string[] = [];
133
- const spawned: WorkerSpawnInvocation[] = [];
134
- try {
135
- mkdirSync(join(homeDir, ".omo"), { recursive: true });
136
- writeFileSync(
137
- join(homeDir, ".omo", "omo.jsonc"),
138
- '{ "codegraph": { "enabled": true }, "[codex]": { "codegraph": { "enabled": false } } }\n',
139
- );
140
-
141
- // when
142
- const result = await executeCodegraphSessionStartHook({
143
- cwd: workspace,
144
- env: { HOME: homeDir },
145
- stdin: Readable.from(["{}"]),
146
- stdout: { write: (chunk) => stdout.push(chunk) },
147
- sweepZombies: () => undefined,
148
- spawnWorker: (invocation) => spawned.push(invocation),
149
- });
150
-
151
- // then
152
- expect(result).toEqual({ action: "skipped-disabled", exitCode: 0 });
153
- expect(spawned).toEqual([]);
154
- expect(stdout.join("")).toBe("");
155
- } finally {
156
- rmSync(homeDir, { recursive: true, force: true });
157
- rmSync(workspace, { recursive: true, force: true });
158
- }
159
- });
160
-
161
- it("#given project Codex SOT disables global CodeGraph enablement #when SessionStart fires #then project config wins", async () => {
162
- // given
163
- const homeDir = mkdtempSync(join(tmpdir(), "omo-codegraph-project-sot-home-"));
164
- const workspace = mkdtempSync(join(tmpdir(), "omo-codegraph-project-sot-workspace-"));
165
- const stdout: string[] = [];
166
- const spawned: WorkerSpawnInvocation[] = [];
167
- try {
168
- mkdirSync(join(homeDir, ".omo"), { recursive: true });
169
- mkdirSync(join(workspace, ".omo"), { recursive: true });
170
- writeFileSync(join(homeDir, ".omo", "omo.jsonc"), '{ "codegraph": { "enabled": true } }\n');
171
- writeFileSync(join(workspace, ".omo", "omo.jsonc"), '{ "[codex]": { "codegraph": { "enabled": false } } }\n');
172
-
173
- // when
174
- const result = await executeCodegraphSessionStartHook({
175
- cwd: workspace,
176
- env: { HOME: homeDir },
177
- stdin: Readable.from(["{}"]),
178
- stdout: { write: (chunk) => stdout.push(chunk) },
179
- sweepZombies: () => undefined,
180
- spawnWorker: (invocation) => spawned.push(invocation),
181
- });
182
-
183
- // then
184
- expect(result).toEqual({ action: "skipped-disabled", exitCode: 0 });
185
- expect(spawned).toEqual([]);
186
- expect(stdout.join("")).toBe("");
187
- } finally {
188
- rmSync(homeDir, { recursive: true, force: true });
189
- rmSync(workspace, { recursive: true, force: true });
190
- }
191
- });
192
-
193
- it("#given env disables CodeGraph over SOT enablement #when SessionStart fires #then it skips without spawning", async () => {
194
- // given
195
- const homeDir = mkdtempSync(join(tmpdir(), "omo-codegraph-env-home-"));
196
- const stdout: string[] = [];
197
- const spawned: WorkerSpawnInvocation[] = [];
198
- try {
199
- mkdirSync(join(homeDir, ".omo"), { recursive: true });
200
- writeFileSync(join(homeDir, ".omo", "omo.jsonc"), '{ "codegraph": { "enabled": true } }\n');
201
-
202
- // when
203
- const result = await executeCodegraphSessionStartHook({
204
- env: { CODEX_CODEGRAPH_ENABLED: "0", HOME: homeDir },
205
- stdin: Readable.from(["{}"]),
206
- stdout: { write: (chunk) => stdout.push(chunk) },
207
- sweepZombies: () => undefined,
208
- spawnWorker: (invocation) => spawned.push(invocation),
209
- });
210
-
211
- // then
212
- expect(result).toEqual({ action: "skipped-disabled", exitCode: 0 });
213
- expect(spawned).toEqual([]);
214
- } finally {
215
- rmSync(homeDir, { recursive: true, force: true });
216
- }
217
- });
218
-
219
- it("#given CodeGraph is enabled #when SessionStart fires #then it detaches a background worker immediately", async () => {
220
- // given
221
- const stdout: string[] = [];
222
- const spawned: WorkerSpawnInvocation[] = [];
223
- const workspace = createAllowedWorkspace("codegraph-workspace");
224
- const homeDir = mkdtempSync(join(tmpdir(), "omo-codegraph-spawn-home-"));
225
-
226
- try {
227
- // when
228
- const result = await executeCodegraphSessionStartHook({
229
- ancestorProbe: () => ({ kind: "uninitialized" }),
230
- config: { codegraph: { enabled: true }, sources: [], warnings: [] },
231
- cwd: workspace,
232
- env: { HOME: homeDir, KEEP: "1", OPENAI_API_KEY: "sk-test-secret" },
233
- stdin: Readable.from(["{}"]),
234
- stdout: { write: (chunk) => stdout.push(chunk) },
235
- spawnWorker: (invocation) => {
236
- spawned.push(invocation);
237
- },
238
- sweepZombies: () => undefined,
239
- workerCliPath: "/plugin/components/codegraph/dist/cli.js",
240
- });
241
-
242
- // then
243
- expect(result).toEqual({ action: "spawned", exitCode: 0 });
244
- expect(spawned).toHaveLength(1);
245
- expect(spawned[0]?.args).toEqual(["/plugin/components/codegraph/dist/cli.js", "hook", "session-start-worker"]);
246
- expect(spawned[0]?.command).toBe(process.execPath);
247
- expect(spawned[0]?.env["HOME"]).toBe(homeDir);
248
- expect(spawned[0]?.env["OMO_CODEGRAPH_SESSION_START_CWD"]).toBe(workspace);
249
- expect(spawned[0]?.env["OMO_CODEGRAPH_SESSION_START_LOCK_TOKEN"]).toMatch(/^[0-9a-f-]{36}$/);
250
- expect(spawned[0]?.env["OPENAI_API_KEY"]).toBeUndefined();
251
- expect(spawned[0]?.env["KEEP"]).toBeUndefined();
252
- expect(JSON.parse(stdout.join(""))).toEqual({
253
- hookSpecificOutput: {
254
- additionalContext: "LazyCodex CodeGraph bootstrap scheduled in background",
255
- hookEventName: "SessionStart",
256
- },
257
- });
258
- } finally {
259
- rmSync(homeDir, { recursive: true, force: true });
260
- rmSync(workspace, { recursive: true, force: true });
261
- }
262
- });
263
-
264
- it("#given CodeGraph is already initialized #when SessionStart fires #then it stays silent without spawning", async () => {
265
- // given
266
- const stdout: string[] = [];
267
- const spawned: WorkerSpawnInvocation[] = [];
268
- const workspace = createAllowedWorkspace("codegraph-initialized-workspace");
269
- const homeDir = mkdtempSync(join(tmpdir(), "omo-codegraph-initialized-home-"));
270
-
271
- try {
272
- mkdirSync(join(workspace, ".codegraph"), { recursive: true });
273
- writeFileSync(join(workspace, ".codegraph", "codegraph.db"), "fixture");
274
-
275
- // when
276
- const result = await executeCodegraphSessionStartHook({
277
- ancestorProbe: () => {
278
- throw new Error("an initialized exact root must not invoke any fallback probe");
279
- },
280
- config: { codegraph: { enabled: true }, sources: [], warnings: [] },
281
- cwd: workspace,
282
- env: { HOME: homeDir, KEEP: "1" },
283
- stdin: Readable.from(["{}"]),
284
- stdout: { write: (chunk) => stdout.push(chunk) },
285
- sweepZombies: () => undefined,
286
- spawnWorker: (invocation) => spawned.push(invocation),
287
- });
288
-
289
- // then
290
- expect(result).toEqual({ action: "skipped-initialized", exitCode: 0 });
291
- expect(spawned).toEqual([]);
292
- expect(stdout.join("")).toBe("");
293
- } finally {
294
- rmSync(homeDir, { recursive: true, force: true });
295
- rmSync(workspace, { recursive: true, force: true });
296
- }
297
- });
298
-
299
- it("#given malformed hook input with CodeGraph disabled #when SessionStart fires #then it stays silent and exits zero", async () => {
300
- // given
301
- const stdout: string[] = [];
302
- const spawned: WorkerSpawnInvocation[] = [];
303
-
304
- // when
305
- const result = await executeCodegraphSessionStartHook({
306
- config: { codegraph: { enabled: false }, sources: [], warnings: [] },
307
- env: {},
308
- stdin: Readable.from(["{not-json"]),
309
- stdout: { write: (chunk) => stdout.push(chunk) },
310
- sweepZombies: () => undefined,
311
- spawnWorker: (invocation) => spawned.push(invocation),
312
- });
313
-
314
- // then
315
- expect(result.exitCode).toBe(0);
316
- expect(spawned).toEqual([]);
317
- expect(stdout.join("")).toBe("");
318
- });
319
-
320
- });
@@ -1,172 +0,0 @@
1
- import { chmodSync, writeFileSync } from "node:fs";
2
-
3
- export const CODEGRAPH_150_DEFAULT_TOOLS: readonly Record<string, unknown>[] = [
4
- {
5
- name: "codegraph_explore",
6
- description:
7
- "PRIMARY TOOL — call FIRST for almost any question OR before an edit: how does X work, architecture, a bug, where/what is X, surveying an area, or the symbols you are about to change. Returns the verbatim source of the relevant symbols grouped by file in ONE capped call (Read-equivalent — treat the shown source as already Read; do NOT re-open those files), plus the call path among them. Query can be a natural-language question OR a bag of symbol/file names. Usually the ONLY call you need — more accurate context, in far fewer tokens and round-trips than a search/Read/Grep loop.",
8
- inputSchema: {
9
- type: "object",
10
- properties: {
11
- query: {
12
- type: "string",
13
- description:
14
- 'Symbol names, file names, or short code terms to explore (e.g., "AuthService loginUser session-manager", "GraphTraverser BFS impact traversal.ts"). For a flow question, name the symbols spanning the flow (e.g. "mutateElement renderScene"). A natural-language question works too — no prior codegraph_search needed.',
15
- },
16
- maxFiles: {
17
- type: "number",
18
- description: "Maximum number of files to include source code from (default: 12)",
19
- default: 12,
20
- },
21
- projectPath: {
22
- type: "string",
23
- description:
24
- "Absolute path to the project to query (or any directory inside it) — codegraph uses the nearest .codegraph/ index at or above that path. Omit to use this session's default project. Pass it to query a second codebase, or when the server root has no index of its own (e.g. a monorepo where only sub-projects are indexed, so there is no default project).",
25
- },
26
- },
27
- required: ["query"],
28
- },
29
- },
30
- ];
31
-
32
- export function writeFakeNewlineCodegraph(filePath: string): void {
33
- writeFileSync(
34
- filePath,
35
- [
36
- "#!/usr/bin/env node",
37
- "const fs = require('node:fs');",
38
- "const readline = require('node:readline');",
39
- "fs.writeFileSync(process.env.CODEGRAPH_FAKE_LOG, `cwd=${process.cwd()}\\n`);",
40
- "const rl = readline.createInterface({ input: process.stdin });",
41
- "rl.on('line', (line) => {",
42
- " const request = JSON.parse(line);",
43
- " if (request.method === 'initialize') {",
44
- " process.stdout.write(JSON.stringify({ jsonrpc: '2.0', id: request.id, result: { capabilities: { tools: { listChanged: false } }, protocolVersion: request.params.protocolVersion, serverInfo: { name: 'codegraph', version: '1.5.0' } } }) + '\\n');",
45
- " }",
46
- " if (request.method === 'tools/list') {",
47
- ` process.stdout.write(JSON.stringify({ jsonrpc: '2.0', id: request.id, result: { tools: ${JSON.stringify(CODEGRAPH_150_DEFAULT_TOOLS)} } }) + '\\n');`,
48
- " }",
49
- "});",
50
- ].join("\n"),
51
- );
52
- chmodSync(filePath, 0o755);
53
- }
54
-
55
- export function writeFakeContractCodegraph(filePath: string): void {
56
- writeFileSync(
57
- filePath,
58
- [
59
- "#!/usr/bin/env node",
60
- "const fs = require('node:fs');",
61
- "const readline = require('node:readline');",
62
- "fs.writeFileSync(process.env.CODEGRAPH_FAKE_LOG, `cwd=${process.cwd()}\\n`);",
63
- "const rl = readline.createInterface({ input: process.stdin });",
64
- "rl.on('line', (line) => {",
65
- " const request = JSON.parse(line);",
66
- " if (request.method === 'tools/list') {",
67
- " process.stdout.write(JSON.stringify({ jsonrpc: '2.0', id: request.id, result: { tools: [",
68
- " { name: 'codegraph_search', description: 'search stays unchanged' },",
69
- " { name: 'codegraph_node', description: 'ONE SYMBOL you can name - its location, signature, verbatim source (includeCode=true) and caller/callee trail in one call', inputSchema: { type: 'object', properties: { includeCode: { type: 'boolean', description: \"Symbol mode: include the symbol's full body (default: false).\" }, symbol: { type: 'string' } } } }",
70
- " ] } }) + '\\n');",
71
- " }",
72
- " if (request.method === 'tools/call') {",
73
- " process.stdout.write(JSON.stringify({ jsonrpc: '2.0', id: request.id, result: { content: [{ type: 'text', text: 'JsonlMCP\\nMembers (7)\\nStructural outline only. For full source, use the Read tool on this file or request a member.' }] } }) + '\\n');",
74
- " }",
75
- "});",
76
- ].join("\n"),
77
- );
78
- chmodSync(filePath, 0o755);
79
- }
80
-
81
- export function writeFakeHeldOpenCodegraph(filePath: string): void {
82
- writeFileSync(
83
- filePath,
84
- [
85
- "#!/usr/bin/env node",
86
- "const fs = require('node:fs');",
87
- "const readline = require('node:readline');",
88
- "fs.writeFileSync(process.env.CODEGRAPH_FAKE_LOG, String(process.pid));",
89
- "const rl = readline.createInterface({ input: process.stdin });",
90
- "rl.once('line', (line) => {",
91
- " const request = JSON.parse(line);",
92
- " process.stdout.write(JSON.stringify({ jsonrpc: '2.0', id: request.id, result: { ok: true } }) + '\\n');",
93
- "});",
94
- "setInterval(() => {}, 1000);",
95
- ].join("\n"),
96
- );
97
- chmodSync(filePath, 0o755);
98
- }
99
-
100
- export function writeFakeExitingCodegraph(filePath: string): void {
101
- writeFileSync(
102
- filePath,
103
- [
104
- "#!/usr/bin/env node",
105
- "const readline = require('node:readline');",
106
- "const rl = readline.createInterface({ input: process.stdin });",
107
- "rl.once('line', (line) => {",
108
- " const request = JSON.parse(line);",
109
- " process.stdout.write(JSON.stringify({ jsonrpc: '2.0', id: request.id, result: { ok: true } }) + '\\n', () => process.exit(0));",
110
- "});",
111
- ].join("\n"),
112
- );
113
- chmodSync(filePath, 0o755);
114
- }
115
-
116
- export function frameMcpRequest(request: {
117
- readonly id: number;
118
- readonly method: string;
119
- readonly params: Record<string, unknown>;
120
- }): string {
121
- const body = JSON.stringify({ jsonrpc: "2.0", ...request });
122
- return `Content-Length: ${Buffer.byteLength(body)}\r\n\r\n${body}`;
123
- }
124
-
125
- export function parseMcpBodies(transcript: string): readonly unknown[] {
126
- const bodies: unknown[] = [];
127
- let cursor = 0;
128
- while (cursor < transcript.length) {
129
- const headerEnd = transcript.indexOf("\r\n\r\n", cursor);
130
- if (headerEnd === -1) break;
131
- const header = transcript.slice(cursor, headerEnd);
132
- const match = /^Content-Length: (?<length>\d+)$/m.exec(header);
133
- if (match?.groups?.["length"] === undefined) break;
134
- const length = Number.parseInt(match.groups["length"], 10);
135
- const bodyStart = headerEnd + 4;
136
- const body = transcript.slice(bodyStart, bodyStart + length);
137
- bodies.push(JSON.parse(body));
138
- cursor = bodyStart + length;
139
- }
140
- return bodies;
141
- }
142
-
143
- export function findTool(tools: readonly unknown[], name: string): Record<string, unknown> {
144
- for (const tool of tools) {
145
- const record = recordValue(tool);
146
- if (record["name"] === name) return record;
147
- }
148
- throw new Error(`Missing tool ${name}`);
149
- }
150
-
151
- export function arrayProperty(record: Record<string, unknown>, key: string): readonly unknown[] {
152
- const value = record[key];
153
- if (!Array.isArray(value)) throw new Error(`Expected ${key} to be an array`);
154
- return value;
155
- }
156
-
157
- export function recordProperty(record: Record<string, unknown>, key: string): Record<string, unknown> {
158
- return recordValue(record[key]);
159
- }
160
-
161
- export function stringProperty(record: Record<string, unknown>, key: string): string {
162
- const value = record[key];
163
- if (typeof value !== "string") throw new Error(`Expected ${key} to be a string`);
164
- return value;
165
- }
166
-
167
- export function recordValue(value: unknown): Record<string, unknown> {
168
- if (typeof value !== "object" || value === null || Array.isArray(value)) {
169
- throw new Error("Expected record value");
170
- }
171
- return value as Record<string, unknown>;
172
- }
@@ -1,91 +0,0 @@
1
- import { describe, expect, it } from "bun:test";
2
- import { existsSync, readFileSync } from "node:fs";
3
- import { dirname, resolve } from "node:path";
4
- import { fileURLToPath } from "node:url";
5
-
6
- type CodegraphPackageJson = {
7
- readonly files?: readonly string[];
8
- readonly optionalDependencies?: Readonly<Record<string, string>>;
9
- };
10
-
11
- const componentRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..");
12
- const repoRoot = resolve(componentRoot, "../../../../..");
13
-
14
- function readCodegraphPackageJson(): CodegraphPackageJson {
15
- const parsed: unknown = JSON.parse(readFileSync(resolve(componentRoot, "package.json"), "utf8"));
16
- if (!isCodegraphPackageJson(parsed)) throw new TypeError("Invalid CodeGraph package metadata");
17
- return parsed;
18
- }
19
-
20
- function isCodegraphPackageJson(value: unknown): value is CodegraphPackageJson {
21
- return isRecord(value) && maybeStringArray(value["files"]) && maybeStringRecord(value["optionalDependencies"]);
22
- }
23
-
24
- function maybeStringArray(value: unknown): value is readonly string[] | undefined {
25
- return value === undefined || (Array.isArray(value) && value.every((item) => typeof item === "string"));
26
- }
27
-
28
- function maybeStringRecord(value: unknown): value is Readonly<Record<string, string>> | undefined {
29
- return value === undefined || (isRecord(value) && Object.values(value).every((item) => typeof item === "string"));
30
- }
31
-
32
- function isRecord(value: unknown): value is Record<string, unknown> {
33
- return typeof value === "object" && value !== null && !Array.isArray(value);
34
- }
35
-
36
- describe("CodeGraph component runtime package metadata", () => {
37
- it("#given the CodeGraph component package #when validating runtime distribution metadata #then upstream CodeGraph installs optionally with shipped legal files", () => {
38
- // given
39
- const packageJson = readCodegraphPackageJson();
40
-
41
- // when
42
- const optionalDependencies = packageJson.optionalDependencies ?? {};
43
- const files = packageJson.files ?? [];
44
-
45
- // then
46
- expect(optionalDependencies["@colbymchenry/codegraph"]).toBe("1.5.0");
47
- expect(files).toContain("LICENSE");
48
- expect(files).toContain("NODE-RUNTIME-LICENSES.md");
49
- expect(files).toContain("NOTICE");
50
- expect(existsSync(resolve(componentRoot, "LICENSE"))).toBe(true);
51
- expect(existsSync(resolve(componentRoot, "NODE-RUNTIME-LICENSES.md"))).toBe(true);
52
- expect(existsSync(resolve(componentRoot, "NOTICE"))).toBe(true);
53
- expect(existsSync(resolve(componentRoot, "dist", "cli.d.ts"))).toBe(false);
54
- expect(existsSync(resolve(componentRoot, "dist", "serve.d.ts"))).toBe(false);
55
- });
56
-
57
- it("#given marketplace payload includes only the plugin tree #when reading CodeGraph NOTICE #then it is self-contained", () => {
58
- // given
59
- const notice = readFileSync(resolve(componentRoot, "NOTICE"), "utf8");
60
-
61
- expect(notice).toContain("@colbymchenry/codegraph@1.5.0");
62
- expect(notice).toContain("MIT license");
63
- expect(notice).toContain("Node.js v24.16.0 runtime");
64
- expect(notice).toContain("NODE-RUNTIME-LICENSES.md");
65
- expect(notice).not.toContain("packages/omo-codex/THIRD-PARTY-NOTICES.md");
66
- });
67
-
68
- it("#given CodeGraph platform bundles include Node #when reading runtime licenses #then Node license text ships with the component", () => {
69
- // given
70
- const licenseText = readFileSync(resolve(componentRoot, "NODE-RUNTIME-LICENSES.md"), "utf8");
71
-
72
- // then
73
- expect(licenseText).toContain("Node.js v24.16.0 LICENSE text");
74
- expect(licenseText).toContain("Copyright Node.js contributors");
75
- expect(licenseText).toContain("The externally maintained libraries used by Node.js are:");
76
- });
77
-
78
- it("#given third-party notices #when validating CodeGraph component notices #then aggregate Codex notices list CodeGraph as shipped", () => {
79
- // given
80
- const codexNotice = readFileSync(resolve(repoRoot, "packages/omo-codex/THIRD-PARTY-NOTICES.md"), "utf8");
81
-
82
- // when
83
- const listsCodegraphComponent = codexNotice.includes("@sisyphuslabs/codex-codegraph");
84
- const listsUpstreamRuntime = codexNotice.includes("@colbymchenry/codegraph");
85
-
86
- // then
87
- expect(listsCodegraphComponent).toBe(true);
88
- expect(listsUpstreamRuntime).toBe(true);
89
- expect(codexNotice).not.toContain("not currently an omo-codex plugin component");
90
- });
91
- });
@@ -1,100 +0,0 @@
1
- import { describe, expect, it } from "bun:test";
2
- import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
3
- import { tmpdir } from "node:os";
4
- import { join } from "node:path";
5
-
6
- import { CODEGRAPH_PINNED_VERSION } from "../../../../../utils/src/codegraph/manifest.ts";
7
- import { runCodegraphSessionStartWorker } from "../src/hook.ts";
8
- import { runCodegraphServe } from "../src/serve.ts";
9
-
10
- describe("CodeGraph provisioned launcher Node guard", () => {
11
- it("#given provisioned CodeGraph binary #when serve runs under unsupported local Node #then it trusts the launcher", async () => {
12
- // given
13
- const commandPath = "/home/test/.omo/codegraph/bin/codegraph";
14
- const spawned: Array<{ readonly args: readonly string[]; readonly command: string }> = [];
15
-
16
- // when
17
- const exitCode = await runCodegraphServe({
18
- env: {},
19
- nodeVersion: "26.3.0",
20
- buildEnv: () => ({}),
21
- resolve: () => ({ argsPrefix: [], command: commandPath, exists: true, source: "provisioned" }),
22
- runProcess: (command, args) => {
23
- spawned.push({ args, command });
24
- return Promise.resolve(0);
25
- },
26
- stderr: { write: () => undefined },
27
- });
28
-
29
- // then
30
- expect(exitCode).toBe(0);
31
- expect(spawned).toEqual([{ args: ["serve", "--mcp"], command: commandPath }]);
32
- });
33
-
34
- it("#given provisioned CodeGraph exists #when SessionStart worker runs under unsupported local Node #then it bootstraps through the launcher", async () => {
35
- // given
36
- const workspace = mkdtempSync(join(tmpdir(), "omo-codegraph-worker-node25-"));
37
- const homeDir = mkdtempSync(join(tmpdir(), "omo-codegraph-worker-node25-home-"));
38
- const installDir = mkdtempSync(join(tmpdir(), "omo-codegraph-worker-node25-install-"));
39
- const binPath = join(installDir, "bin", process.platform === "win32" ? "codegraph.cmd" : "codegraph");
40
- const calls: Array<{ readonly args: readonly string[]; readonly command: string }> = [];
41
- const outcomes: unknown[] = [];
42
-
43
- try {
44
- mkdirSync(join(installDir, "bin"), { recursive: true });
45
- mkdirSync(join(installDir, ".provisioned"), { recursive: true });
46
- writeFileSync(binPath, "");
47
- writeFileSync(
48
- join(installDir, ".provisioned", `codegraph-${CODEGRAPH_PINNED_VERSION}.json`),
49
- `${JSON.stringify({ binPath, version: CODEGRAPH_PINNED_VERSION })}\n`,
50
- );
51
-
52
- // when
53
- const result = await runCodegraphSessionStartWorker({
54
- config: { codegraph: { enabled: true, install_dir: installDir }, sources: [], trustedCodegraphInstallDir: installDir, warnings: [] },
55
- nodeVersion: "26.3.0",
56
- cwd: workspace,
57
- env: { HOME: homeDir },
58
- logOutcome: (outcome) => outcomes.push(outcome),
59
- deps: {
60
- ensureGitignored: () => true,
61
- ensureProvisioned: () => {
62
- throw new Error("provisioning should not run when install_dir binary exists");
63
- },
64
- prepareWorkspace: () => ({
65
- dataDir: join(homeDir, ".omo/codegraph/projects/test"),
66
- dataRoot: join(homeDir, ".omo/codegraph"),
67
- linked: true,
68
- mode: "global-linked",
69
- projectLink: join(workspace, ".codegraph"),
70
- }),
71
- resolveCommand: (options) => {
72
- const provisioned = options?.provisioned?.() ?? null;
73
- return {
74
- argsPrefix: [],
75
- command: provisioned ?? "missing-codegraph",
76
- exists: provisioned !== null,
77
- source: provisioned === null ? "path" : "provisioned",
78
- };
79
- },
80
- resolveManagedBin: () => binPath,
81
- runCommand: (_projectRoot, command, args) => {
82
- calls.push({ args, command });
83
- mkdirSync(join(workspace, ".codegraph"), { recursive: true });
84
- writeFileSync(join(workspace, ".codegraph", "codegraph.db"), "fixture");
85
- return Promise.resolve({ exitCode: 0, stdout: "", timedOut: false });
86
- },
87
- },
88
- });
89
-
90
- // then
91
- expect(result).toEqual({ action: "initialized" });
92
- expect(calls).toEqual([{ args: ["init"], command: binPath }]);
93
- expect(outcomes).toEqual([{ action: "initialized", exitCode: 0, projectRoot: workspace, source: "provisioned", timedOut: false }]);
94
- } finally {
95
- rmSync(workspace, { recursive: true, force: true });
96
- rmSync(homeDir, { recursive: true, force: true });
97
- rmSync(installDir, { recursive: true, force: true });
98
- }
99
- });
100
- });