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

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 (642) 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 +52548 -60412
  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 +51202 -59043
  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 +7093 -408
  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/bootstrap/src/setup.ts +7 -1
  56. package/packages/omo-codex/plugin/components/comment-checker/AGENTS.md +9 -0
  57. package/packages/omo-codex/plugin/components/comment-checker/biome.json +2 -2
  58. package/packages/omo-codex/plugin/components/comment-checker/dist/cli.js +2 -1
  59. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  60. package/packages/omo-codex/plugin/components/comment-checker/package.json +5 -5
  61. package/packages/omo-codex/plugin/components/comment-checker/src/apply-patch.ts +2 -8
  62. package/packages/omo-codex/plugin/components/comment-checker/src/core.ts +1 -2
  63. package/packages/omo-codex/plugin/components/comment-checker/src/request-extractor.ts +1 -1
  64. package/packages/omo-codex/plugin/components/comment-checker/src/runner.ts +1 -0
  65. package/packages/omo-codex/plugin/components/git-bash/AGENTS.md +1 -1
  66. package/packages/omo-codex/plugin/components/git-bash/dist/cli.js +1 -1
  67. package/packages/omo-codex/plugin/components/git-bash/dist/codex-hook.js +2 -1
  68. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  69. package/packages/omo-codex/plugin/components/git-bash/package.json +3 -4
  70. package/packages/omo-codex/plugin/components/git-bash/src/codex-hook.ts +2 -1
  71. package/packages/omo-codex/plugin/components/git-bash/test/codex-hook.test.ts +6 -7
  72. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/AGENTS.md +2 -2
  73. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/biome.json +2 -2
  74. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/directive.md +2 -0
  75. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/cli.js +36 -29
  76. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/codex-hook.js +32 -26
  77. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/types.d.ts +3 -0
  78. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  79. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +5 -5
  80. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/src/codex-hook.ts +32 -28
  81. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/src/types.ts +3 -0
  82. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/cli.test.ts +1 -1
  83. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/codex-hook.test.ts +137 -28
  84. package/packages/omo-codex/plugin/components/lcx/skills/lcx-doctor/SKILL.md +4 -2
  85. package/packages/omo-codex/plugin/components/lsp/AGENTS.md +30 -15
  86. package/packages/omo-codex/plugin/components/lsp/biome.json +2 -2
  87. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +4 -4
  88. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +941 -540
  89. package/packages/omo-codex/plugin/components/lsp/dist/daemon-cli-path.js +1 -1
  90. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  91. package/packages/omo-codex/plugin/components/lsp/package.json +5 -5
  92. package/packages/omo-codex/plugin/components/lsp/src/cli.ts +1 -1
  93. package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +1 -1
  94. package/packages/omo-codex/plugin/components/lsp/src/daemon-cli-path.ts +1 -5
  95. package/packages/omo-codex/plugin/components/lsp/test/codex-hook-unavailable.test.ts +6 -7
  96. package/packages/omo-codex/plugin/components/lsp/test/codex-hook.test.ts +1 -2
  97. package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +11 -1
  98. package/packages/omo-codex/plugin/components/rules/AGENTS.md +12 -0
  99. package/packages/omo-codex/plugin/components/rules/README.md +2 -0
  100. package/packages/omo-codex/plugin/components/rules/biome.json +2 -2
  101. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-6.md +123 -0
  102. package/packages/omo-codex/plugin/components/rules/dist/cli.js +91 -68
  103. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  104. package/packages/omo-codex/plugin/components/rules/package.json +7 -7
  105. package/packages/omo-codex/plugin/components/rules/src/config.ts +1 -2
  106. package/packages/omo-codex/plugin/components/rules/src/persistent-cache.ts +1 -2
  107. package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +15 -5
  108. package/packages/omo-codex/plugin/components/rules/src/rules-engine-factory.ts +1 -4
  109. package/packages/omo-codex/plugin/components/rules/src/static-injection.ts +4 -9
  110. package/packages/omo-codex/plugin/components/rules/test/bundled-rules-priority.test.ts +11 -16
  111. package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +17 -25
  112. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +9 -7
  113. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +0 -6
  114. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-dedup.test.ts +6 -4
  115. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-directive.test.ts +12 -9
  116. package/packages/omo-codex/plugin/components/rules/test/codex-hook.test.ts +28 -37
  117. package/packages/omo-codex/plugin/components/rules/test/dynamic-target-fingerprints.test.ts +1 -2
  118. package/packages/omo-codex/plugin/components/rules/test/engine.test.ts +7 -4
  119. package/packages/omo-codex/plugin/components/rules/test/finder.test.ts +2 -3
  120. package/packages/omo-codex/plugin/components/rules/test/formatter.test.ts +39 -72
  121. package/packages/omo-codex/plugin/components/rules/test/hephaestus-model-variant.test.ts +38 -3
  122. package/packages/omo-codex/plugin/components/rules/test/hook-output.test.ts +2 -3
  123. package/packages/omo-codex/plugin/components/rules/test/matcher.test.ts +2 -3
  124. package/packages/omo-codex/plugin/components/rules/test/package-smoke.test.ts +1 -1
  125. package/packages/omo-codex/plugin/components/rules/test/parser.test.ts +1 -2
  126. package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +29 -6
  127. package/packages/omo-codex/plugin/components/rules/test/rules-engine-consumption.test.ts +3 -6
  128. package/packages/omo-codex/plugin/components/rules/test/scanner.test.ts +1 -2
  129. package/packages/omo-codex/plugin/components/rules/test/sources.test.ts +2 -5
  130. package/packages/omo-codex/plugin/components/rules/test/windows-git-bash-bundled-rule.test.ts +2 -17
  131. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  132. package/packages/omo-codex/plugin/components/teammode/package.json +5 -5
  133. package/packages/omo-codex/plugin/components/teammode/test/thread-title-hook.test.ts +4 -10
  134. package/packages/omo-codex/plugin/components/telemetry/AGENTS.md +8 -0
  135. package/packages/omo-codex/plugin/components/telemetry/biome.json +2 -2
  136. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +2407 -684
  137. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +2411 -689
  138. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  139. package/packages/omo-codex/plugin/components/telemetry/package.json +5 -5
  140. package/packages/omo-codex/plugin/components/telemetry/src/codex-hook.ts +1 -4
  141. package/packages/omo-codex/plugin/components/telemetry/src/posthog.ts +4 -14
  142. package/packages/omo-codex/plugin/components/telemetry/src/product-identity.ts +1 -1
  143. package/packages/omo-codex/plugin/components/telemetry/test/diagnostics.test.ts +2 -5
  144. package/packages/omo-codex/plugin/components/ultrawork/AGENTS.md +10 -4
  145. package/packages/omo-codex/plugin/components/ultrawork/README.md +2 -0
  146. package/packages/omo-codex/plugin/components/ultrawork/agents/explorer.toml +1 -1
  147. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-clone-fidelity-reviewer.toml +1 -1
  148. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-code-reviewer.toml +1 -1
  149. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-gate-reviewer.toml +1 -1
  150. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-qa-executor.toml +1 -1
  151. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-high.toml +1 -1
  152. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-low.toml +1 -1
  153. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-medium.toml +1 -1
  154. package/packages/omo-codex/plugin/components/ultrawork/agents/librarian.toml +1 -1
  155. package/packages/omo-codex/plugin/components/ultrawork/agents/metis.toml +1 -1
  156. package/packages/omo-codex/plugin/components/ultrawork/agents/momus.toml +1 -1
  157. package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +1 -1
  158. package/packages/omo-codex/plugin/components/ultrawork/biome.json +2 -2
  159. package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +499 -4
  160. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  161. package/packages/omo-codex/plugin/components/ultrawork/package.json +5 -6
  162. package/packages/omo-codex/plugin/components/ultrawork/scripts/sync-directive.mjs +30 -14
  163. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +6 -7
  164. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +31 -7
  165. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +2 -1
  166. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +5 -5
  167. package/packages/omo-codex/plugin/components/ultrawork/src/directive-content.ts +4 -0
  168. package/packages/omo-codex/plugin/components/ultrawork/src/directive.ts +5 -2
  169. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook-trigger-policy.test.ts +9 -1
  170. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +0 -136
  171. package/packages/omo-codex/plugin/components/ultrawork/test/directive-source.test.ts +14 -8
  172. package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +12 -1
  173. package/packages/omo-codex/plugin/components/ultrawork/test/skill-pointer.test.ts +0 -2
  174. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/AGENTS.md +4 -4
  175. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/NOTICE +1 -1
  176. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/README.md +6 -6
  177. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/biome.json +2 -2
  178. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/directive.md +10 -10
  179. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/dist/cli.js +16 -16
  180. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +16 -0
  181. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/package.json +12 -12
  182. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/boulder-reader.ts +1 -1
  183. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/cli.ts +1 -1
  184. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/codex-hook.ts +4 -4
  185. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/directive.ts +1 -1
  186. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/index.ts +1 -1
  187. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/types.ts +1 -1
  188. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/boulder-reader.test.ts +3 -3
  189. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/cli.test.ts +4 -11
  190. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/codex-hook.test.ts +24 -22
  191. package/packages/omo-codex/plugin/components/ulw-loop/AGENTS.md +19 -0
  192. package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +3 -1
  193. package/packages/omo-codex/plugin/components/ulw-loop/README.md +12 -1
  194. package/packages/omo-codex/plugin/components/ulw-loop/biome.json +2 -2
  195. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +46 -24
  196. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.d.ts +16 -0
  197. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.js +25 -0
  198. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-continuation.js +10 -4
  199. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.d.ts +2 -5
  200. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.js +5 -78
  201. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-template.d.ts +12 -0
  202. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-template.js +114 -0
  203. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.d.ts +7 -1
  204. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +50 -42
  205. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-arg-parser.js +2 -2
  206. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-commands.js +21 -8
  207. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.d.ts +2 -1
  208. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.js +12 -1
  209. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-subcommands.d.ts +1 -1
  210. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-subcommands.js +40 -37
  211. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +1468 -535
  212. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.d.ts +2 -0
  213. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +28 -8
  214. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.d.ts +2 -5
  215. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.js +24 -20
  216. package/packages/omo-codex/plugin/components/ulw-loop/dist/constants.d.ts +1 -0
  217. package/packages/omo-codex/plugin/components/ulw-loop/dist/constants.js +1 -0
  218. package/packages/omo-codex/plugin/components/ulw-loop/dist/domain-types.d.ts +17 -9
  219. package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.d.ts +1 -0
  220. package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.js +13 -4
  221. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.d.ts +1 -0
  222. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.js +34 -4
  223. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-missing-recovery.d.ts +14 -0
  224. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-missing-recovery.js +29 -0
  225. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-aggregate.d.ts +7 -0
  226. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-aggregate.js +9 -0
  227. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-artifacts.d.ts +12 -0
  228. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-artifacts.js +104 -0
  229. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-fields.d.ts +13 -1
  230. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-fields.js +65 -9
  231. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-verdicts.js +5 -1
  232. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.d.ts +4 -2
  233. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.js +72 -117
  234. package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.d.ts +2 -0
  235. package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.js +16 -7
  236. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/factory.d.ts +2 -0
  237. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/factory.js +141 -0
  238. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/manifest.d.ts +46 -0
  239. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/manifest.js +28 -0
  240. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/types.d.ts +127 -0
  241. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/types.js +1 -0
  242. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk.d.ts +3 -0
  243. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk.js +3 -0
  244. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.d.ts +7 -1
  245. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.js +216 -33
  246. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-role-guard.d.ts +2 -0
  247. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-role-guard.js +22 -0
  248. package/packages/omo-codex/plugin/components/ulw-loop/dist/state-lock.d.ts +9 -0
  249. package/packages/omo-codex/plugin/components/ulw-loop/dist/state-lock.js +227 -0
  250. package/packages/omo-codex/plugin/components/ulw-loop/dist/status-next-actions.d.ts +6 -0
  251. package/packages/omo-codex/plugin/components/ulw-loop/dist/status-next-actions.js +33 -0
  252. package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +20 -6
  253. package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.d.ts +19 -0
  254. package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.js +75 -0
  255. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +18 -5
  256. package/packages/omo-codex/plugin/components/ulw-loop/package.json +6 -6
  257. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +10 -4
  258. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +108 -0
  259. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +32 -8
  260. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-codex-validation.ts +40 -0
  261. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-continuation.ts +8 -6
  262. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-reconciliation.ts +5 -98
  263. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-template.ts +134 -0
  264. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +52 -73
  265. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-arg-parser.ts +10 -4
  266. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-commands.ts +24 -8
  267. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-output.ts +14 -1
  268. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-subcommands.ts +52 -46
  269. package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +8 -6
  270. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +35 -7
  271. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-snapshot.ts +34 -28
  272. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +3 -1
  273. package/packages/omo-codex/plugin/components/ulw-loop/src/constants.ts +1 -0
  274. package/packages/omo-codex/plugin/components/ulw-loop/src/domain-types.ts +19 -9
  275. package/packages/omo-codex/plugin/components/ulw-loop/src/paths.ts +25 -4
  276. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-io.ts +39 -4
  277. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-missing-recovery.ts +38 -0
  278. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-aggregate.ts +11 -0
  279. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-artifacts.ts +123 -0
  280. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-fields.ts +71 -15
  281. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-verdicts.ts +6 -1
  282. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate.ts +92 -136
  283. package/packages/omo-codex/plugin/components/ulw-loop/src/review-blockers.ts +29 -8
  284. package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/factory.ts +183 -0
  285. package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/manifest.ts +42 -0
  286. package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/types.ts +140 -0
  287. package/packages/omo-codex/plugin/components/ulw-loop/src/sdk.ts +3 -0
  288. package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-guard.ts +226 -31
  289. package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-role-guard.ts +22 -0
  290. package/packages/omo-codex/plugin/components/ulw-loop/src/state-lock.ts +239 -0
  291. package/packages/omo-codex/plugin/components/ulw-loop/src/status-next-actions.ts +36 -0
  292. package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +19 -6
  293. package/packages/omo-codex/plugin/components/ulw-loop/src/surface.ts +107 -0
  294. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-continuation.test.ts +0 -1
  295. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-final.test.ts +131 -82
  296. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-template.test.ts +147 -0
  297. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint.test.ts +16 -22
  298. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-checkpoint-continuation.test.ts +4 -2
  299. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-checkpoint.test.ts +31 -2
  300. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-commands.test.ts +2 -0
  301. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-complete-goals.test.ts +3 -1
  302. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-create-goals.test.ts +35 -8
  303. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-entrypoint.test.ts +38 -4
  304. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-json-errors.test.ts +27 -0
  305. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-scope-required.test.ts +144 -0
  306. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-status-next-actions.test.ts +185 -0
  307. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-steering-batch.test.ts +8 -3
  308. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-validation-batch.test.ts +6 -0
  309. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +37 -2
  310. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-snapshot.test.ts +52 -11
  311. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +0 -3
  312. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/cli-session.ts +4 -0
  313. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/quality-gate-builder.ts +9 -4
  314. package/packages/omo-codex/plugin/components/ulw-loop/test/guided-recovery.test.ts +67 -0
  315. package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +5 -37
  316. package/packages/omo-codex/plugin/components/ulw-loop/test/paths.test.ts +9 -0
  317. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-io-cross-process.test.ts +106 -0
  318. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-io.test.ts +36 -2
  319. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-aggregate-basics.test.ts +258 -0
  320. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-cap-and-dedupe.test.ts +22 -0
  321. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-fields-messages.test.ts +98 -0
  322. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-lazycodex-surface.test.ts +93 -0
  323. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-poisoning-cascades.test.ts +97 -0
  324. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-roles.test.ts +51 -2
  325. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-senpi-surface.test.ts +131 -0
  326. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-single-report.test.ts +241 -0
  327. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate.test.ts +58 -3
  328. package/packages/omo-codex/plugin/components/ulw-loop/test/review-blockers.test.ts +9 -7
  329. package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-contract.test.ts +137 -0
  330. package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-driver-states.test.ts +145 -0
  331. package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-session-context.test.ts +148 -0
  332. package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-guard.test.ts +450 -7
  333. package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-role-matrix.test.ts +113 -0
  334. package/packages/omo-codex/plugin/components/ulw-loop/test/state-lock.test.ts +218 -0
  335. package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +8 -5
  336. package/packages/omo-codex/plugin/components/ulw-loop/test/stop-resume-hook.test.ts +1 -1
  337. package/packages/omo-codex/plugin/components/ulw-loop/test/surface.test.ts +74 -0
  338. package/packages/omo-codex/plugin/components/ulw-loop/test/ultrawork-directive.test.ts +13 -8
  339. package/packages/omo-codex/plugin/components/ulw-loop/vitest.config.ts +1 -0
  340. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  341. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  342. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  343. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  344. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  345. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  346. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  347. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +18 -0
  348. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  349. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  350. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  351. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  352. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  353. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  354. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  355. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +17 -0
  356. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  357. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  358. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  359. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  360. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  361. package/packages/omo-codex/plugin/model-catalog.json +16 -7
  362. package/packages/omo-codex/plugin/package-lock.json +676 -524
  363. package/packages/omo-codex/plugin/package.json +2 -3
  364. package/packages/omo-codex/plugin/scripts/AGENTS.md +39 -0
  365. package/packages/omo-codex/plugin/scripts/auto-update-plan.mjs +1 -2
  366. package/packages/omo-codex/plugin/scripts/auto-update.mjs +0 -9
  367. package/packages/omo-codex/plugin/scripts/canonical-ultrawork-directive.mjs +17 -0
  368. package/packages/omo-codex/plugin/scripts/hook-status-message.mjs +0 -1
  369. package/packages/omo-codex/plugin/scripts/migrate-codex-config/catalog.mjs +16 -7
  370. package/packages/omo-codex/plugin/scripts/migrate-codex-config/multi-agent-v2-guard.mjs +8 -4
  371. package/packages/omo-codex/plugin/scripts/migrate-codex-config/subagent-limit-guard.mjs +19 -90
  372. package/packages/omo-codex/plugin/scripts/migrate-codex-config/toml-section-editor.mjs +1 -1
  373. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +96 -57
  374. package/packages/omo-codex/plugin/shared/package.json +3 -4
  375. package/packages/omo-codex/plugin/shared/src/config-loader.ts +2 -102
  376. package/packages/omo-codex/plugin/shared/src/config-migration.ts +0 -1
  377. package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +41 -130
  378. package/packages/omo-codex/plugin/skills/ast-grep/AGENTS.md +51 -0
  379. package/packages/omo-codex/plugin/skills/ast-grep/SKILL.md +1 -1
  380. package/packages/omo-codex/plugin/skills/coding-agent-sessions/AGENTS.md +62 -0
  381. package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +1 -1
  382. package/packages/omo-codex/plugin/skills/data-scientist/SKILL.md +99 -239
  383. package/packages/omo-codex/plugin/skills/data-scientist/references/execution-surfaces.md +91 -0
  384. package/packages/omo-codex/plugin/skills/data-scientist/references/placement.md +74 -0
  385. package/packages/omo-codex/plugin/skills/data-scientist/references/polars-lane.md +95 -0
  386. package/packages/omo-codex/plugin/skills/data-scientist/references/uv-setup.md +1 -1
  387. package/packages/omo-codex/plugin/skills/data-scientist/references/visualization.md +64 -0
  388. package/packages/omo-codex/plugin/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
  389. package/packages/omo-codex/plugin/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
  390. package/packages/omo-codex/plugin/skills/debugging/SKILL.md +3 -1
  391. package/packages/omo-codex/plugin/skills/debugging/references/methodology/00-setup.md +12 -0
  392. package/packages/omo-codex/plugin/skills/debugging/references/methodology/02-investigate.md +21 -0
  393. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/go.md +15 -1
  394. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/native-binary.md +38 -0
  395. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/node.md +25 -0
  396. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/python.md +13 -0
  397. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/rust.md +41 -0
  398. package/packages/omo-codex/plugin/skills/debugging/references/scripts/dap.mjs +267 -0
  399. package/packages/omo-codex/plugin/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  400. package/packages/omo-codex/plugin/skills/debugging/references/tools/dap.md +103 -0
  401. package/packages/omo-codex/plugin/skills/debugging/references/tools/frida.md +193 -0
  402. package/packages/omo-codex/plugin/skills/frontend/ATTRIBUTION.md +10 -0
  403. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +15 -8
  404. package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +10 -2
  405. package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +2 -0
  406. package/packages/omo-codex/plugin/skills/frontend/references/design/ambience-skill.md +145 -0
  407. package/packages/omo-codex/plugin/skills/frontend/references/design/interaction-skill.md +2 -0
  408. package/packages/omo-codex/plugin/skills/frontend/references/design/print-paged-media.md +76 -0
  409. package/packages/omo-codex/plugin/skills/frontend/references/design/stylegallery.md +80 -0
  410. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/README.md +1 -1
  411. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  412. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  413. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  414. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/orchestration.md +1 -1
  415. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/routing.md +5 -5
  416. package/packages/omo-codex/plugin/skills/git-master/SKILL.md +1 -1
  417. package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +20 -18
  418. package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +4 -2
  419. package/packages/omo-codex/plugin/skills/lsp-setup/SKILL.md +1 -1
  420. package/packages/omo-codex/plugin/skills/programming/SKILL.md +1 -1
  421. package/packages/omo-codex/plugin/skills/refactor/SKILL.md +10 -8
  422. package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +7 -5
  423. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +116 -424
  424. package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +38 -11
  425. package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +26 -9
  426. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +110 -0
  427. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +1 -1
  428. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +23 -18
  429. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +9 -2
  430. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +46 -24
  431. package/packages/omo-codex/plugin/skills/{start-work → ulw-execute}/SKILL.md +31 -33
  432. package/packages/omo-codex/plugin/skills/ulw-execute/agents/openai.yaml +2 -0
  433. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +34 -4
  434. package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +108 -0
  435. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +32 -8
  436. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +6 -7
  437. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +31 -7
  438. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +2 -1
  439. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +5 -5
  440. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +14 -7
  441. package/packages/omo-codex/plugin/skills/visual-qa/AGENTS.md +58 -0
  442. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +10 -7
  443. package/packages/omo-codex/plugin/test/AGENTS.md +47 -0
  444. package/packages/omo-codex/plugin/test/aggregate-agents.test.mjs +19 -173
  445. package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +16 -51
  446. package/packages/omo-codex/plugin/test/aggregate-manifest.test.mjs +2 -3
  447. package/packages/omo-codex/plugin/test/aggregate-mcp.test.mjs +2 -7
  448. package/packages/omo-codex/plugin/test/aggregate-model-catalog.test.mjs +14 -4
  449. package/packages/omo-codex/plugin/test/aggregate-plugin-fixture.mjs +175 -13
  450. package/packages/omo-codex/plugin/test/aggregate.test.mjs +78 -2
  451. package/packages/omo-codex/plugin/test/auto-update-release-notes.test.mjs +19 -33
  452. package/packages/omo-codex/plugin/test/auto-update.test.mjs +4 -29
  453. package/packages/omo-codex/plugin/test/bootstrap-default-role.test.mjs +66 -0
  454. package/packages/omo-codex/plugin/test/bootstrap-setup.test.mjs +0 -31
  455. package/packages/omo-codex/plugin/test/canonical-ultrawork-directive.test.mjs +53 -0
  456. package/packages/omo-codex/plugin/test/component-bin-names.test.mjs +2 -2
  457. package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +1 -51
  458. package/packages/omo-codex/plugin/test/component-hook-contract-cases.mjs +100 -2
  459. package/packages/omo-codex/plugin/test/hook-status-message.test.mjs +5 -6
  460. package/packages/omo-codex/plugin/test/lcx-contribute-bug-fix-template.test.mjs +21 -27
  461. package/packages/omo-codex/plugin/test/mcp-research-servers.test.mjs +1 -3
  462. package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +35 -35
  463. package/packages/omo-codex/plugin/test/multi-agent-v2-regression.test.mjs +1 -1
  464. package/packages/omo-codex/plugin/test/scaffold-plan.test.mjs +0 -36
  465. package/packages/omo-codex/plugin/test/subagent-limit-migration.test.mjs +107 -15
  466. package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +168 -0
  467. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +54 -24
  468. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +18 -119
  469. package/packages/omo-codex/plugin/test/teammode-archive-ambiguity.test.mjs +0 -40
  470. package/packages/omo-codex/plugin/test/teammode-communication.test.mjs +6 -62
  471. package/packages/omo-codex/plugin/test/teammode-thread-links.test.mjs +3 -36
  472. package/packages/omo-codex/plugin/test/teammode-transport.test.mjs +0 -44
  473. package/packages/omo-codex/plugin/test/teammode-worktree.test.mjs +2 -6
  474. package/packages/omo-codex/plugin/test/ultrawork-skill-pointer.test.mjs +5 -5
  475. package/packages/omo-codex/plugin/test/ulw-plan-review-state-contract.test.mjs +0 -3
  476. package/packages/omo-codex/scripts/install-dist/install-local.mjs +9652 -1394
  477. package/packages/{omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md → prompts-core/prompts/ultrawork/codex.md} +46 -31
  478. package/packages/shared-skills/package.json +7 -1
  479. package/packages/shared-skills/skill-source-filter.d.ts +16 -0
  480. package/packages/shared-skills/skill-source-filter.mjs +44 -0
  481. package/packages/shared-skills/skills/ast-grep/AGENTS.md +51 -0
  482. package/packages/shared-skills/skills/ast-grep/SKILL.md +1 -1
  483. package/packages/shared-skills/skills/coding-agent-sessions/AGENTS.md +62 -0
  484. package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +1 -1
  485. package/packages/shared-skills/skills/data-scientist/SKILL.md +99 -239
  486. package/packages/shared-skills/skills/data-scientist/references/execution-surfaces.md +91 -0
  487. package/packages/shared-skills/skills/data-scientist/references/placement.md +74 -0
  488. package/packages/shared-skills/skills/data-scientist/references/polars-lane.md +95 -0
  489. package/packages/shared-skills/skills/data-scientist/references/uv-setup.md +1 -1
  490. package/packages/shared-skills/skills/data-scientist/references/visualization.md +64 -0
  491. package/packages/shared-skills/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
  492. package/packages/shared-skills/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
  493. package/packages/shared-skills/skills/debugging/SKILL.md +3 -1
  494. package/packages/shared-skills/skills/debugging/references/methodology/00-setup.md +12 -0
  495. package/packages/shared-skills/skills/debugging/references/methodology/02-investigate.md +21 -0
  496. package/packages/shared-skills/skills/debugging/references/runtimes/go.md +15 -1
  497. package/packages/shared-skills/skills/debugging/references/runtimes/native-binary.md +38 -0
  498. package/packages/shared-skills/skills/debugging/references/runtimes/node.md +25 -0
  499. package/packages/shared-skills/skills/debugging/references/runtimes/python.md +13 -0
  500. package/packages/shared-skills/skills/debugging/references/runtimes/rust.md +41 -0
  501. package/packages/shared-skills/skills/debugging/references/scripts/dap.mjs +267 -0
  502. package/packages/shared-skills/skills/debugging/references/scripts/dap.test.ts +86 -0
  503. package/packages/shared-skills/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  504. package/packages/shared-skills/skills/debugging/references/tools/dap.md +103 -0
  505. package/packages/shared-skills/skills/debugging/references/tools/frida.md +193 -0
  506. package/packages/shared-skills/skills/frontend/ATTRIBUTION.md +10 -0
  507. package/packages/shared-skills/skills/frontend/SKILL.md +15 -8
  508. package/packages/shared-skills/skills/frontend/references/design/README.md +10 -2
  509. package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +2 -0
  510. package/packages/shared-skills/skills/frontend/references/design/ambience-skill.md +145 -0
  511. package/packages/shared-skills/skills/frontend/references/design/interaction-skill.md +2 -0
  512. package/packages/shared-skills/skills/frontend/references/design/print-paged-media.md +76 -0
  513. package/packages/shared-skills/skills/frontend/references/design/stylegallery.md +80 -0
  514. package/packages/shared-skills/skills/frontend/references/designpowers/README.md +1 -1
  515. package/packages/shared-skills/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  516. package/packages/shared-skills/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  517. package/packages/shared-skills/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  518. package/packages/shared-skills/skills/frontend/references/designpowers/orchestration.md +1 -1
  519. package/packages/shared-skills/skills/frontend/references/designpowers/routing.md +5 -5
  520. package/packages/shared-skills/skills/git-master/SKILL.md +1 -1
  521. package/packages/shared-skills/skills/init-deep/SKILL.md +14 -14
  522. package/packages/shared-skills/skills/lsp-setup/SKILL.md +1 -1
  523. package/packages/shared-skills/skills/programming/SKILL.md +1 -1
  524. package/packages/shared-skills/skills/refactor/SKILL.md +4 -4
  525. package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +1 -1
  526. package/packages/shared-skills/skills/review-work/SKILL.md +101 -419
  527. package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +38 -11
  528. package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +26 -9
  529. package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +110 -0
  530. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +1 -1
  531. package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +23 -18
  532. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +9 -2
  533. package/packages/shared-skills/skills/{start-work → ulw-execute}/SKILL.md +20 -19
  534. package/packages/shared-skills/skills/ulw-plan/SKILL.md +7 -8
  535. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +31 -7
  536. package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +2 -1
  537. package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +5 -5
  538. package/packages/shared-skills/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
  539. package/packages/shared-skills/skills/ulw-research/SKILL.md +8 -3
  540. package/packages/shared-skills/skills/visual-qa/AGENTS.md +58 -0
  541. package/packages/shared-skills/skills/visual-qa/SKILL.md +4 -3
  542. package/script/qa/web-terminal-visual-qa.mjs +2 -0
  543. package/script/qa/xterm-live-terminal.mjs +18 -2
  544. package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.d.ts +0 -1
  545. package/packages/lsp-tools-mcp/dist/lsp/constants.d.ts +0 -1
  546. package/packages/lsp-tools-mcp/dist/lsp/language-mappings.d.ts +0 -1
  547. package/packages/lsp-tools-mcp/dist/lsp/process-signal-cleanup.d.ts +0 -1
  548. package/packages/lsp-tools-mcp/dist/missing-dependency-result.d.ts +0 -1
  549. package/packages/omo-codex/plugin/components/codegraph/AGENTS.md +0 -58
  550. package/packages/omo-codex/plugin/components/codegraph/NODE-RUNTIME-LICENSES.md +0 -2951
  551. package/packages/omo-codex/plugin/components/codegraph/NOTICE +0 -16
  552. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +0 -12149
  553. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +0 -9747
  554. package/packages/omo-codex/plugin/components/codegraph/package.json +0 -33
  555. package/packages/omo-codex/plugin/components/codegraph/src/cache-gc.ts +0 -29
  556. package/packages/omo-codex/plugin/components/codegraph/src/cli.ts +0 -79
  557. package/packages/omo-codex/plugin/components/codegraph/src/hook-input.ts +0 -33
  558. package/packages/omo-codex/plugin/components/codegraph/src/hook-sweep.ts +0 -25
  559. package/packages/omo-codex/plugin/components/codegraph/src/hook-types.ts +0 -131
  560. package/packages/omo-codex/plugin/components/codegraph/src/hook.ts +0 -258
  561. package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +0 -309
  562. package/packages/omo-codex/plugin/components/codegraph/src/mcp-unavailable.ts +0 -80
  563. package/packages/omo-codex/plugin/components/codegraph/src/post-tool-use-hook.ts +0 -34
  564. package/packages/omo-codex/plugin/components/codegraph/src/serve-invocation.ts +0 -29
  565. package/packages/omo-codex/plugin/components/codegraph/src/serve.ts +0 -263
  566. package/packages/omo-codex/plugin/components/codegraph/src/session-start-command.ts +0 -106
  567. package/packages/omo-codex/plugin/components/codegraph/src/session-start-cooldown.ts +0 -145
  568. package/packages/omo-codex/plugin/components/codegraph/src/session-start-hook-runtime.ts +0 -21
  569. package/packages/omo-codex/plugin/components/codegraph/src/session-start-lock.ts +0 -139
  570. package/packages/omo-codex/plugin/components/codegraph/src/session-start-outcome.ts +0 -15
  571. package/packages/omo-codex/plugin/components/codegraph/src/session-start-paths.ts +0 -32
  572. package/packages/omo-codex/plugin/components/codegraph/src/session-start-project.ts +0 -109
  573. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker-result.ts +0 -148
  574. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker.ts +0 -175
  575. package/packages/omo-codex/plugin/components/codegraph/src/sweep-cli.ts +0 -81
  576. package/packages/omo-codex/plugin/components/codegraph/test/cache-gc.test.ts +0 -34
  577. package/packages/omo-codex/plugin/components/codegraph/test/hook-exclusion.test.ts +0 -112
  578. package/packages/omo-codex/plugin/components/codegraph/test/hook-registration.test.ts +0 -26
  579. package/packages/omo-codex/plugin/components/codegraph/test/hook-session-start-guard.test.ts +0 -160
  580. package/packages/omo-codex/plugin/components/codegraph/test/hook-store-upgrade.test.ts +0 -50
  581. package/packages/omo-codex/plugin/components/codegraph/test/hook-sweep.test.ts +0 -29
  582. package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +0 -320
  583. package/packages/omo-codex/plugin/components/codegraph/test/mcp-bridge-fixtures.ts +0 -172
  584. package/packages/omo-codex/plugin/components/codegraph/test/package-runtime.test.ts +0 -91
  585. package/packages/omo-codex/plugin/components/codegraph/test/provisioned-node-guard.test.ts +0 -100
  586. package/packages/omo-codex/plugin/components/codegraph/test/serve-built-wrapper.test.ts +0 -76
  587. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge-lifecycle.test.ts +0 -133
  588. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge.test.ts +0 -245
  589. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-facade.test.ts +0 -69
  590. package/packages/omo-codex/plugin/components/codegraph/test/serve-node-support.test.ts +0 -43
  591. package/packages/omo-codex/plugin/components/codegraph/test/serve-provision.test.ts +0 -147
  592. package/packages/omo-codex/plugin/components/codegraph/test/serve-unavailable.test.ts +0 -175
  593. package/packages/omo-codex/plugin/components/codegraph/test/serve.test.ts +0 -385
  594. package/packages/omo-codex/plugin/components/codegraph/test/session-start-node-support.test.ts +0 -206
  595. package/packages/omo-codex/plugin/components/codegraph/test/session-start-project.test.ts +0 -58
  596. package/packages/omo-codex/plugin/components/codegraph/test/session-start-state.test.ts +0 -104
  597. package/packages/omo-codex/plugin/components/codegraph/test/session-start-trust-boundary.test.ts +0 -65
  598. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-availability.test.ts +0 -106
  599. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-cooldown.test.ts +0 -116
  600. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-flow.test.ts +0 -258
  601. package/packages/omo-codex/plugin/components/codegraph/test/sweep-cli.test.ts +0 -56
  602. package/packages/omo-codex/plugin/components/codegraph/tsconfig.build.json +0 -13
  603. package/packages/omo-codex/plugin/components/codegraph/tsconfig.json +0 -25
  604. package/packages/omo-codex/plugin/components/start-work-continuation/LICENSE +0 -21
  605. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +0 -28
  606. package/packages/omo-codex/plugin/components/ultrawork/directive.md +0 -471
  607. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +0 -18
  608. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +0 -17
  609. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +0 -17
  610. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +0 -17
  611. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/editor.mjs +0 -125
  612. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/jsonc.mjs +0 -43
  613. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/scaffold.mjs +0 -29
  614. package/packages/omo-codex/plugin/scripts/migrate-omo-sot.mjs +0 -121
  615. package/packages/omo-codex/plugin/skills/data-scientist/references/common-scenarios.md +0 -176
  616. package/packages/omo-codex/plugin/skills/data-scientist/references/execution-templates.md +0 -197
  617. package/packages/omo-codex/plugin/skills/data-scientist/references/integration-patterns.md +0 -153
  618. package/packages/omo-codex/plugin/skills/data-scientist/references/performance-benchmarks.md +0 -37
  619. package/packages/omo-codex/plugin/skills/start-work/agents/openai.yaml +0 -2
  620. package/packages/omo-codex/plugin/test/aggregate-skills.test.mjs +0 -92
  621. package/packages/omo-codex/plugin/test/component-codegraph-mcp-smoke.test.mjs +0 -76
  622. package/packages/omo-codex/plugin/test/migrate-omo-sot.test.mjs +0 -179
  623. package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +0 -314
  624. package/packages/omo-codex/plugin/test/ulw-plan-scope-contract.test.mjs +0 -24
  625. package/packages/shared-skills/skills/data-scientist/references/common-scenarios.md +0 -176
  626. package/packages/shared-skills/skills/data-scientist/references/execution-templates.md +0 -197
  627. package/packages/shared-skills/skills/data-scientist/references/integration-patterns.md +0 -153
  628. package/packages/shared-skills/skills/data-scientist/references/performance-benchmarks.md +0 -37
  629. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/.gitattributes +0 -0
  630. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/CHANGELOG.md +0 -0
  631. /package/packages/omo-codex/plugin/components/{codegraph → ulw-execute-continuation}/LICENSE +0 -0
  632. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/plan-checklist.ts +0 -0
  633. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-completed.json +0 -0
  634. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-mixed-platforms.json +0 -0
  635. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-single-codex-work.json +0 -0
  636. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-all-done.md +0 -0
  637. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-scaffold.md +0 -0
  638. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-nested-checkboxes.md +0 -0
  639. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-unchecked.md +0 -0
  640. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.build.json +0 -0
  641. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.json +0 -0
  642. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/vitest.config.ts +0 -0
@@ -0,0 +1,28 @@
1
+ export const ULW_LOOP_OPERATIONS = [
2
+ "help",
3
+ "create-goals",
4
+ "status",
5
+ "complete-goals",
6
+ "checkpoint",
7
+ "steer",
8
+ "add-goal",
9
+ "criteria",
10
+ "record-evidence",
11
+ "record-review-blockers",
12
+ ];
13
+ export const ULW_LOOP_MANIFEST = {
14
+ version: 1,
15
+ name: "ulw-loop",
16
+ operations: [
17
+ { name: "help", mutating: false },
18
+ { name: "create-goals", mutating: true },
19
+ { name: "status", mutating: false },
20
+ { name: "complete-goals", mutating: true },
21
+ { name: "checkpoint", mutating: true },
22
+ { name: "steer", mutating: true },
23
+ { name: "add-goal", mutating: true },
24
+ { name: "criteria", mutating: false },
25
+ { name: "record-evidence", mutating: true },
26
+ { name: "record-review-blockers", mutating: true },
27
+ ],
28
+ };
@@ -0,0 +1,127 @@
1
+ import type { CheckpointUlwLoopArgs, CheckpointUlwLoopResult } from "../checkpoint.js";
2
+ import type { CheckpointTemplate } from "../checkpoint-template.js";
3
+ import type { recordEvidence } from "../evidence.js";
4
+ import type { addUlwLoopGoal, createUlwLoopPlan, startNextUlwLoop, summarizeUlwLoopPlan } from "../plan-crud.js";
5
+ import type { recordFinalReviewBlockers } from "../review-blockers.js";
6
+ import type { steerUlwLoop } from "../steering.js";
7
+ import type { UlwLoopSteeringProposal } from "../steering-types.js";
8
+ import type { UlwLoopToolkitSurface } from "../surface.js";
9
+ import type { UlwLoopPlan } from "../types.js";
10
+ import type { ULW_LOOP_MANIFEST, UlwLoopOperation } from "./manifest.js";
11
+ export type ToolkitSurface = UlwLoopToolkitSurface;
12
+ export interface ToolkitContext {
13
+ readonly cwd: string;
14
+ readonly sessionId: string;
15
+ readonly surface: ToolkitSurface;
16
+ }
17
+ export type CreateGoalsArgs = Parameters<typeof createUlwLoopPlan>[1];
18
+ export type CompleteGoalsArgs = NonNullable<Parameters<typeof startNextUlwLoop>[1]>;
19
+ export type SteerArgs = UlwLoopSteeringProposal;
20
+ export type AddGoalArgs = Parameters<typeof addUlwLoopGoal>[1];
21
+ export type RecordEvidenceArgs = Parameters<typeof recordEvidence>[1];
22
+ export type CriteriaArgs = {
23
+ readonly goalId: string;
24
+ };
25
+ export type CheckpointMutationArgs = CheckpointUlwLoopArgs & {
26
+ readonly printTemplate?: false;
27
+ };
28
+ export type CheckpointTemplateArgs = {
29
+ readonly printTemplate: true;
30
+ readonly goalId?: string;
31
+ };
32
+ export type CheckpointArgs = CheckpointMutationArgs | CheckpointTemplateArgs;
33
+ export type RecordReviewBlockersArgs = Parameters<typeof recordFinalReviewBlockers>[1];
34
+ export type ToolkitDispatchRequest = {
35
+ readonly operation: "help";
36
+ readonly args?: Record<never, never>;
37
+ } | {
38
+ readonly operation: "create-goals";
39
+ readonly args: CreateGoalsArgs;
40
+ } | {
41
+ readonly operation: "status";
42
+ readonly args?: Record<never, never>;
43
+ } | {
44
+ readonly operation: "complete-goals";
45
+ readonly args?: CompleteGoalsArgs;
46
+ } | {
47
+ readonly operation: "checkpoint";
48
+ readonly args: CheckpointArgs;
49
+ } | {
50
+ readonly operation: "steer";
51
+ readonly args: SteerArgs;
52
+ } | {
53
+ readonly operation: "add-goal";
54
+ readonly args: AddGoalArgs;
55
+ } | {
56
+ readonly operation: "criteria";
57
+ readonly args: CriteriaArgs;
58
+ } | {
59
+ readonly operation: "record-evidence";
60
+ readonly args: RecordEvidenceArgs;
61
+ } | {
62
+ readonly operation: "record-review-blockers";
63
+ readonly args: RecordReviewBlockersArgs;
64
+ };
65
+ export interface ToolkitUnknownRequest {
66
+ readonly operation: string;
67
+ readonly args?: Record<never, never>;
68
+ }
69
+ export interface ToolkitError {
70
+ readonly code: string;
71
+ readonly message: string;
72
+ readonly details?: Readonly<Record<string, string>>;
73
+ }
74
+ export interface ToolkitSuccess<Operation extends UlwLoopOperation, Result> {
75
+ readonly ok: true;
76
+ readonly operation: Operation;
77
+ readonly result: Result;
78
+ readonly nextActions: readonly string[];
79
+ readonly warnings?: readonly string[];
80
+ }
81
+ export interface ToolkitFailure<Operation extends string = string> {
82
+ readonly ok: false;
83
+ readonly operation: Operation;
84
+ readonly error: ToolkitError;
85
+ }
86
+ type StatusResult = {
87
+ readonly plan: UlwLoopPlan;
88
+ readonly summary: ReturnType<typeof summarizeUlwLoopPlan>;
89
+ readonly nextActions: readonly string[];
90
+ readonly currentAttemptDir?: string;
91
+ };
92
+ type ResultFor<Operation extends UlwLoopOperation> = Operation extends "help" ? typeof ULW_LOOP_MANIFEST : Operation extends "create-goals" ? Awaited<ReturnType<typeof createUlwLoopPlan>> : Operation extends "status" ? StatusResult : Operation extends "complete-goals" ? Awaited<ReturnType<typeof startNextUlwLoop>> : Operation extends "checkpoint" ? CheckpointUlwLoopResult | CheckpointTemplate : Operation extends "steer" ? Awaited<ReturnType<typeof steerUlwLoop>> : Operation extends "add-goal" ? Awaited<ReturnType<typeof addUlwLoopGoal>> : Operation extends "criteria" ? {
93
+ readonly goalId: string;
94
+ readonly criteria: UlwLoopPlan["goals"][number]["successCriteria"];
95
+ } : Operation extends "record-evidence" ? Awaited<ReturnType<typeof recordEvidence>> : Operation extends "record-review-blockers" ? Awaited<ReturnType<typeof recordFinalReviewBlockers>> : never;
96
+ export type ToolkitResultFor<Operation extends UlwLoopOperation> = ResultFor<Operation>;
97
+ export type ToolkitResponseFor<Operation extends UlwLoopOperation> = ToolkitSuccess<Operation, ResultFor<Operation>> | ToolkitFailure<Operation>;
98
+ export type ToolkitOperationResponse = {
99
+ [Operation in UlwLoopOperation]: ToolkitResponseFor<Operation>;
100
+ }[UlwLoopOperation];
101
+ export type ToolkitDispatchResponse = ToolkitOperationResponse | ToolkitFailure<string>;
102
+ export type ToolkitResponse<Result> = ToolkitSuccess<UlwLoopOperation, Result> | ToolkitFailure<string>;
103
+ export interface ToolkitOperationHookEvent<Operation extends UlwLoopOperation = UlwLoopOperation> {
104
+ readonly operation: Operation;
105
+ readonly context: ToolkitContext;
106
+ readonly response: ToolkitResponseFor<Operation>;
107
+ }
108
+ export interface ToolkitHostHooks {
109
+ readonly onOperation?: <Operation extends UlwLoopOperation>(event: ToolkitOperationHookEvent<Operation>) => void | Promise<void>;
110
+ }
111
+ export interface AgentToolkitDependencies {
112
+ readonly hooks?: ToolkitHostHooks;
113
+ }
114
+ export interface AgentToolkit {
115
+ readonly dispatch: (request: ToolkitDispatchRequest | ToolkitUnknownRequest) => Promise<ToolkitDispatchResponse>;
116
+ readonly help: () => Promise<ToolkitResponseFor<"help">>;
117
+ readonly createGoals: (args: CreateGoalsArgs) => Promise<ToolkitResponseFor<"create-goals">>;
118
+ readonly status: () => Promise<ToolkitResponseFor<"status">>;
119
+ readonly completeGoals: (args?: CompleteGoalsArgs) => Promise<ToolkitResponseFor<"complete-goals">>;
120
+ readonly checkpoint: (args: CheckpointArgs) => Promise<ToolkitResponseFor<"checkpoint">>;
121
+ readonly steer: (args: SteerArgs) => Promise<ToolkitResponseFor<"steer">>;
122
+ readonly addGoal: (args: AddGoalArgs) => Promise<ToolkitResponseFor<"add-goal">>;
123
+ readonly criteria: (args: CriteriaArgs) => Promise<ToolkitResponseFor<"criteria">>;
124
+ readonly recordEvidence: (args: RecordEvidenceArgs) => Promise<ToolkitResponseFor<"record-evidence">>;
125
+ readonly recordReviewBlockers: (args: RecordReviewBlockersArgs) => Promise<ToolkitResponseFor<"record-review-blockers">>;
126
+ }
127
+ export {};
@@ -0,0 +1,3 @@
1
+ export { createAgentToolkit } from "./sdk/factory.js";
2
+ export * from "./sdk/manifest.js";
3
+ export * from "./sdk/types.js";
@@ -0,0 +1,3 @@
1
+ export { createAgentToolkit } from "./sdk/factory.js";
2
+ export * from "./sdk/manifest.js";
3
+ export * from "./sdk/types.js";
@@ -1,3 +1,9 @@
1
1
  import type { PreToolUsePayload } from "./codex-hook.js";
2
- export declare function applySpawnGuards(payload: PreToolUsePayload): string;
2
+ export declare const DEFAULT_FANOUT_LIMIT = 24;
3
+ export interface SpawnGuardOptions {
4
+ readonly lockTimeoutMs?: number;
5
+ }
6
+ export declare function applySpawnGuards(payload: PreToolUsePayload, options?: SpawnGuardOptions): string;
7
+ export declare function applySpawnBudgetGuards(payload: PreToolUsePayload, options?: SpawnGuardOptions): string;
8
+ export declare function runSpawnAdmissionRecorderCli(stdin: NodeJS.ReadableStream, stdout: NodeJS.WritableStream): Promise<void>;
3
9
  export declare function runSpawnGuardCli(stdin: NodeJS.ReadableStream, stdout: NodeJS.WritableStream): Promise<void>;
@@ -1,57 +1,168 @@
1
- import { existsSync, readdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
2
- import { join } from "node:path";
1
+ import { randomBytes } from "node:crypto";
2
+ import { existsSync, mkdirSync, readFileSync, renameSync, statSync, writeFileSync } from "node:fs";
3
+ import { dirname, join } from "node:path";
3
4
  import { parsePreToolUsePayload } from "./codex-hook.js";
4
5
  import { isFinalRunCompletionCandidate } from "./goal-status.js";
5
- import { ulwLoopAttemptEvidenceDir, ulwLoopDir } from "./paths.js";
6
+ import { ulwLoopAttemptEvidenceDir, ulwLoopDir, ulwLoopStateLockPath } from "./paths.js";
7
+ import { spawnRoleDenial } from "./spawn-role-guard.js";
8
+ import { isStateLockTimeout, withStateLockSync } from "./state-lock.js";
9
+ import { GATE_REVIEWER_AGENT_NAMES, REVIEWER_ROLES_BY_SURFACE, resolveToolkitSurface, reviewerRolesFor, } from "./surface.js";
6
10
  // spawn_agent = v1; collaborationspawn_agent = the delimiter-free flattened v2
7
11
  // hook token from codex-rs hook_names.rs; collaboration.spawn_agent = the
8
12
  // dotted token observed live in the task-1 probe (hook-tool-tokens.txt).
9
- const SPAWN_TOOL_TOKENS = new Set(["spawn_agent", "collaborationspawn_agent", "collaboration.spawn_agent"]);
10
- const DEFAULT_FANOUT_LIMIT = 60;
11
- const GATE_MESSAGE_PATTERN = /lazycodex-gate-reviewer|final gate review/i;
12
- export function applySpawnGuards(payload) {
13
+ const SPAWN_TOOL_TOKENS = new Set([
14
+ "spawn_agent",
15
+ "multi_agent_v1.spawn_agent",
16
+ "collaborationspawn_agent",
17
+ "collaboration.spawn_agent",
18
+ ]);
19
+ export const DEFAULT_FANOUT_LIMIT = 24;
20
+ const DEFAULT_REVIEW_SPAWN_LIMIT = 3;
21
+ const GATE_MESSAGE_PATTERN = /lazycodex-gate-reviewer|omo-senpi-gate-reviewer|final gate review/i;
22
+ const REVIEW_AGENT_TYPES = [
23
+ ...Object.values(REVIEWER_ROLES_BY_SURFACE).map((roles) => roles.gateReview),
24
+ ...Object.values(REVIEWER_ROLES_BY_SURFACE).map((roles) => roles.codeReview),
25
+ ...Object.values(REVIEWER_ROLES_BY_SURFACE).map((roles) => roles.manualQa),
26
+ ];
27
+ const REVIEW_AGENT_TYPE_SET = new Set(REVIEW_AGENT_TYPES);
28
+ export function applySpawnGuards(payload, options = {}) {
13
29
  if (payload.hook_event_name !== "PreToolUse" || !SPAWN_TOOL_TOKENS.has(payload.tool_name))
14
30
  return "";
15
- const stateDir = ulwLoopDir(payload.cwd, { sessionId: payload.session_id });
31
+ if (resolveToolkitSurface() === "lazycodex") {
32
+ const reason = spawnRoleDenial(payload.tool_input);
33
+ if (reason !== null)
34
+ return deny(reason);
35
+ }
36
+ return applySpawnBudgetGuards(payload, options);
37
+ }
38
+ export function applySpawnBudgetGuards(payload, options = {}) {
39
+ if (payload.hook_event_name !== "PreToolUse" || !SPAWN_TOOL_TOKENS.has(payload.tool_name))
40
+ return "";
41
+ const breaker = readAdmissionBreaker(payload.session_id);
42
+ if (breaker !== null)
43
+ return deny(`Subagent admission failed earlier in this session (${breaker}). Do not spawn more workers or reviewers; report the capacity block and wait for the user.`);
44
+ const scope = { sessionId: payload.session_id };
45
+ const stateDir = ulwLoopDir(payload.cwd, scope);
16
46
  const plan = readPlan(join(stateDir, "goals.json"));
17
47
  if (plan === null)
18
48
  return "";
49
+ const lockOptions = options.lockTimeoutMs === undefined ? {} : { timeoutMs: options.lockTimeoutMs };
50
+ try {
51
+ return withStateLockSync(ulwLoopStateLockPath(payload.cwd, scope), () => evaluateGuards(payload, plan, stateDir), lockOptions);
52
+ }
53
+ catch (error) {
54
+ if (isStateLockTimeout(error))
55
+ return deny(`ulw-loop spawn guard could not take the session state lock: ${error.message}`);
56
+ throw error;
57
+ }
58
+ }
59
+ function evaluateGuards(payload, plan, stateDir) {
60
+ const fanOutPeek = peekFanOutBudget(stateDir);
61
+ if (fanOutPeek !== null)
62
+ return deny(fanOutPeek);
63
+ const missingArtifact = missingGateArtifact(payload, plan);
64
+ if (missingArtifact !== null)
65
+ return deny(`record manual QA first; gate audits its artifacts: missing ${missingArtifact}`);
66
+ const reviewDenial = consumeReviewSpawnBudget(payload, plan, stateDir);
67
+ if (reviewDenial !== null)
68
+ return deny(reviewDenial);
19
69
  const fanOutDenial = consumeFanOutBudget(stateDir);
20
70
  if (fanOutDenial !== null)
21
71
  return deny(fanOutDenial);
22
- const missingArtifact = missingGateArtifact(payload, plan);
23
- if (missingArtifact !== null)
24
- return deny(`spawn code-review + QA first; gate audits their artifacts: missing ${missingArtifact}`);
25
72
  return "";
26
73
  }
74
+ export async function runSpawnAdmissionRecorderCli(stdin, stdout) {
75
+ const chunks = [];
76
+ for await (const chunk of stdin)
77
+ chunks.push(Buffer.from(chunk));
78
+ try {
79
+ const payload = JSON.parse(Buffer.concat(chunks).toString("utf8"));
80
+ const response = typeof payload["tool_response"] === "string"
81
+ ? payload["tool_response"]
82
+ : JSON.stringify(payload["tool_response"] ?? "");
83
+ if (!/too many active cells|AgentLimitReached|max_threads|max_concurrent_threads_per_session/i.test(response))
84
+ return;
85
+ const dataDir = process.env["PLUGIN_DATA"];
86
+ if (typeof dataDir !== "string" || typeof payload["session_id"] !== "string")
87
+ return;
88
+ const markerDir = join(dataDir, "spawn-breaker");
89
+ try {
90
+ mkdirSync(markerDir, { recursive: true });
91
+ atomicWriteJson(join(markerDir, `${payload["session_id"]}.json`), {
92
+ reason: response,
93
+ at: new Date().toISOString(),
94
+ });
95
+ }
96
+ catch (error) {
97
+ const message = error instanceof Error ? error.message : String(error);
98
+ process.stderr.write(`[ulw-loop] spawn-guard: could not persist admission failure: ${message}\n`);
99
+ }
100
+ }
101
+ catch {
102
+ /* malformed hook input is ignored */
103
+ }
104
+ void stdout;
105
+ }
27
106
  export async function runSpawnGuardCli(stdin, stdout) {
28
107
  try {
29
108
  const chunks = [];
30
109
  for await (const chunk of stdin)
31
110
  chunks.push(Buffer.from(chunk));
32
111
  const payload = parsePreToolUsePayload(Buffer.concat(chunks).toString("utf8"));
33
- if (payload === null)
112
+ if (payload === null) {
113
+ stdout.write(deny("LazyCodex spawn guard received an invalid hook payload; role routing was not verified."));
34
114
  return;
115
+ }
35
116
  const output = applySpawnGuards(payload);
36
117
  if (output.length > 0)
37
118
  stdout.write(output);
38
119
  }
39
120
  catch (error) {
40
- if (error instanceof Error)
41
- return;
121
+ stdout.write(deny(`LazyCodex spawn guard failed: ${error instanceof Error ? error.message : String(error)}`));
42
122
  }
43
123
  }
124
+ // Read-only fan-out eligibility check. Returns a denial reason when the next
125
+ // spawn would exceed the limit, without incrementing the counter. Call this
126
+ // before charging any per-reviewer quota so a saturated global cap cannot
127
+ // silently consume reviewer allowances for spawns that will never run.
128
+ function peekFanOutBudget(stateDir) {
129
+ const counterPath = join(stateDir, "spawn-count.json");
130
+ const count = readCount(counterPath) + 1;
131
+ const limit = fanOutLimit();
132
+ if (count <= limit)
133
+ return null;
134
+ return `ulw-loop spawn fan-out cap reached (${count}/${limit}). Consolidate work into the agents already running, or raise OMO_SPAWN_FANOUT_LIMIT if this volume is intentional.`;
135
+ }
44
136
  // Per-session spawn counter; depth/lineage tracking is descoped — this is a
45
137
  // total-volume backstop against fan-out explosions, not a recursion tracker.
46
138
  function consumeFanOutBudget(stateDir) {
47
139
  const counterPath = join(stateDir, "spawn-count.json");
48
140
  const count = readCount(counterPath) + 1;
49
- writeFileSync(counterPath, JSON.stringify({ count }));
141
+ atomicWriteJson(counterPath, { count });
50
142
  const limit = fanOutLimit();
51
143
  if (count <= limit)
52
144
  return null;
53
145
  return `ulw-loop spawn fan-out cap reached (${count}/${limit}). Consolidate work into the agents already running, or raise OMO_SPAWN_FANOUT_LIMIT if this volume is intentional.`;
54
146
  }
147
+ function consumeReviewSpawnBudget(payload, plan, stateDir) {
148
+ const agentType = reviewAgentType(payload.tool_input);
149
+ if (agentType === null)
150
+ return null;
151
+ const goal = plan.goals.find((candidate) => candidate.id === plan.activeGoalId) ??
152
+ plan.goals.find((candidate) => isFinalRunCompletionCandidate(plan, candidate));
153
+ if (goal === undefined)
154
+ return null;
155
+ const counterPath = join(stateDir, "review-spawn-counts.json");
156
+ const limit = reviewSpawnLimit();
157
+ const counts = readCounts(counterPath);
158
+ const key = `${agentType}:${goal.id}:a${goal.attempt}`;
159
+ const count = (counts[key] ?? 0) + 1;
160
+ if (count > limit)
161
+ return `ulw-loop reviewer no-progress cap reached (${agentType} ${count}/${limit}) for ${goal.id} attempt ${goal.attempt}. Consolidate existing review findings, or checkpoint and start a new attempt after concrete progress.`;
162
+ counts[key] = count;
163
+ atomicWriteJson(counterPath, counts);
164
+ return null;
165
+ }
55
166
  function missingGateArtifact(payload, plan) {
56
167
  if (!isGateReviewerSpawn(payload.tool_input))
57
168
  return null;
@@ -61,32 +172,77 @@ function missingGateArtifact(payload, plan) {
61
172
  if (!goal.successCriteria.every((criterion) => criterion.status === "pass"))
62
173
  return null;
63
174
  const scope = { sessionId: payload.session_id };
175
+ const requiredArtifacts = [`${goal.id}-manual-qa.md`];
64
176
  if (plan.evidenceLayoutVersion === 2) {
65
177
  const attemptDir = ulwLoopAttemptEvidenceDir(goal.id, goal.attempt, scope);
66
- for (const name of [`${goal.id}-code-review.md`, `${goal.id}-manual-qa.md`]) {
178
+ for (const name of requiredArtifacts) {
67
179
  const relative = `${attemptDir}/${name}`;
68
180
  if (!isNonEmptyFile(join(payload.cwd, relative)))
69
181
  return relative;
70
182
  }
71
183
  return null;
72
184
  }
73
- const flatReport = `.omo/evidence/${goal.id}-code-review.md`;
74
- if (!isNonEmptyFile(join(payload.cwd, flatReport)))
75
- return flatReport;
76
- // v1 manual-QA approximation: any other non-empty evidence file counts.
77
- if (!hasOtherEvidenceFile(join(payload.cwd, ".omo", "evidence"), `${goal.id}-code-review.md`))
78
- return `.omo/evidence/<any manual-QA artifact besides ${goal.id}-code-review.md>`;
79
- return null;
185
+ const manualQa = `.omo/evidence/${goal.id}-manual-qa.md`;
186
+ return isNonEmptyFile(join(payload.cwd, manualQa)) ? null : manualQa;
80
187
  }
81
188
  function isGateReviewerSpawn(toolInput) {
189
+ const agentType = reviewAgentType(toolInput);
190
+ return agentType !== null && GATE_REVIEWER_AGENT_NAMES.has(agentType);
191
+ }
192
+ function reviewAgentType(toolInput) {
82
193
  if (typeof toolInput !== "object" || toolInput === null)
83
- return false;
194
+ return null;
84
195
  const record = toolInput;
85
196
  const agentType = record["agent_type"];
86
- if (typeof agentType === "string")
87
- return agentType === "lazycodex-gate-reviewer";
197
+ if (typeof agentType === "string") {
198
+ // V1: agent_type is present — only reviewer types proceed; any other type is not a review spawn.
199
+ if (!REVIEW_AGENT_TYPE_SET.has(agentType))
200
+ return null;
201
+ return activeSurfaceReviewerAlias(agentType);
202
+ }
88
203
  const message = record["message"];
89
- return typeof message === "string" && GATE_MESSAGE_PATTERN.test(message);
204
+ if (typeof message !== "string")
205
+ return null;
206
+ const normalizedMessage = message.toLowerCase();
207
+ // Explicit "act as <role>" assignment takes priority. If the assigned role is not a reviewer,
208
+ // treat the spawn as non-review so a message that merely mentions a reviewer name does not
209
+ // accidentally charge that reviewer's quota.
210
+ const allRoleNames = [...REVIEW_AGENT_TYPES];
211
+ const explicitAssignment = allRoleNames
212
+ .map((name) => ({
213
+ name,
214
+ index: normalizedMessage.search(new RegExp(`\\bact as (?:an? )?${name}\\b`)),
215
+ }))
216
+ .filter(({ index }) => index >= 0)
217
+ .sort((left, right) => left.index - right.index)[0];
218
+ if (explicitAssignment !== undefined)
219
+ return activeSurfaceReviewerAlias(explicitAssignment.name);
220
+ // Check for an explicit "act as <non-reviewer-role>" assignment. If found, the spawn is not a
221
+ // review spawn even if the message body mentions a reviewer name.
222
+ const nonReviewerActAs = /\bact as (?:an? )?\S+/.test(normalizedMessage);
223
+ if (nonReviewerActAs)
224
+ return null;
225
+ const namedReviewer = REVIEW_AGENT_TYPES.find((name) => normalizedMessage.includes(name));
226
+ if (namedReviewer !== undefined)
227
+ return activeSurfaceReviewerAlias(namedReviewer);
228
+ return GATE_MESSAGE_PATTERN.test(message) ? reviewerRolesFor(resolveToolkitSurface()).gateReview : null;
229
+ }
230
+ function activeSurfaceReviewerAlias(reviewer) {
231
+ const activeRoles = reviewerRolesFor(resolveToolkitSurface());
232
+ for (const roles of Object.values(REVIEWER_ROLES_BY_SURFACE)) {
233
+ if (reviewer === roles.codeReview)
234
+ return activeRoles.codeReview;
235
+ if (reviewer === roles.manualQa)
236
+ return activeRoles.manualQa;
237
+ if (reviewer === roles.gateReview)
238
+ return activeRoles.gateReview;
239
+ }
240
+ return reviewer;
241
+ }
242
+ function atomicWriteJson(targetPath, data) {
243
+ const tmp = join(dirname(targetPath), `.tmp-${randomBytes(6).toString("hex")}`);
244
+ writeFileSync(tmp, JSON.stringify(data));
245
+ renameSync(tmp, targetPath);
90
246
  }
91
247
  function deny(reason) {
92
248
  return `${JSON.stringify({
@@ -98,6 +254,18 @@ function deny(reason) {
98
254
  },
99
255
  })}\n`;
100
256
  }
257
+ function readAdmissionBreaker(sessionId) {
258
+ const dataDir = process.env["PLUGIN_DATA"];
259
+ if (typeof dataDir !== "string")
260
+ return null;
261
+ try {
262
+ const value = JSON.parse(readFileSync(join(dataDir, "spawn-breaker", `${sessionId}.json`), "utf8"));
263
+ return typeof value.reason === "string" ? value.reason : "capacity limit";
264
+ }
265
+ catch {
266
+ return null;
267
+ }
268
+ }
101
269
  function fanOutLimit() {
102
270
  const raw = process.env["OMO_SPAWN_FANOUT_LIMIT"];
103
271
  if (raw === undefined)
@@ -105,6 +273,13 @@ function fanOutLimit() {
105
273
  const parsed = Number.parseInt(raw, 10);
106
274
  return Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_FANOUT_LIMIT;
107
275
  }
276
+ function reviewSpawnLimit() {
277
+ const raw = process.env["OMO_ULW_LOOP_REVIEW_SPAWN_LIMIT"];
278
+ if (raw === undefined)
279
+ return DEFAULT_REVIEW_SPAWN_LIMIT;
280
+ const parsed = Number.parseInt(raw, 10);
281
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_REVIEW_SPAWN_LIMIT;
282
+ }
108
283
  function isNonEmptyFile(path) {
109
284
  try {
110
285
  return existsSync(path) && statSync(path).size > 0;
@@ -115,24 +290,32 @@ function isNonEmptyFile(path) {
115
290
  throw error;
116
291
  }
117
292
  }
118
- function hasOtherEvidenceFile(evidenceDir, excludedName) {
293
+ function readCount(counterPath) {
119
294
  try {
120
- return readdirSync(evidenceDir).some((name) => name !== excludedName && isNonEmptyFile(join(evidenceDir, name)));
295
+ const parsed = JSON.parse(readFileSync(counterPath, "utf8"));
296
+ return typeof parsed["count"] === "number" && parsed["count"] >= 0 ? parsed["count"] : 0;
121
297
  }
122
298
  catch (error) {
123
299
  if (error instanceof Error)
124
- return false;
300
+ return 0;
125
301
  throw error;
126
302
  }
127
303
  }
128
- function readCount(counterPath) {
304
+ function readCounts(counterPath) {
129
305
  try {
130
306
  const parsed = JSON.parse(readFileSync(counterPath, "utf8"));
131
- return typeof parsed["count"] === "number" && parsed["count"] >= 0 ? parsed["count"] : 0;
307
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed))
308
+ return {};
309
+ const counts = {};
310
+ for (const [key, value] of Object.entries(parsed)) {
311
+ if (typeof value === "number" && value >= 0)
312
+ counts[key] = value;
313
+ }
314
+ return counts;
132
315
  }
133
316
  catch (error) {
134
317
  if (error instanceof Error)
135
- return 0;
318
+ return {};
136
319
  throw error;
137
320
  }
138
321
  }
@@ -0,0 +1,2 @@
1
+ export declare const LAZYCODEX_SPAWN_ROLES: ReadonlySet<string>;
2
+ export declare function spawnRoleDenial(input: unknown): string | null;
@@ -0,0 +1,22 @@
1
+ // Explicit selectors, pinned by a test to the bundled role TOMLs. The generated
2
+ // default is a non-fork fallback, not a selector: a user can opt out of owning it.
3
+ export const LAZYCODEX_SPAWN_ROLES = new Set([
4
+ "explorer",
5
+ "lazycodex-clone-fidelity-reviewer",
6
+ "lazycodex-code-reviewer",
7
+ "lazycodex-gate-reviewer",
8
+ "lazycodex-qa-executor",
9
+ "lazycodex-worker-high",
10
+ "lazycodex-worker-low",
11
+ "lazycodex-worker-medium",
12
+ "librarian",
13
+ "metis",
14
+ "momus",
15
+ "plan",
16
+ ]);
17
+ export function spawnRoleDenial(input) {
18
+ const role = typeof input === "object" && input !== null && "agent_type" in input ? input.agent_type : undefined;
19
+ if (typeof role === "string" && LAZYCODEX_SPAWN_ROLES.has(role))
20
+ return null;
21
+ return `LazyCodex requires an explicit registered agent_type: ${[...LAZYCODEX_SPAWN_ROLES].join(", ")}. Received ${JSON.stringify(role) ?? "no agent_type"}. Use the matching role and fork_turns: "none" (V2) or fork_context: false (V1), unless full history is deliberately required. The hook cannot see the tool schema; if agent_type is unavailable, stop and report incompatible role routing rather than spawning a generic agent. Describing a role in message does not select its TOML.`;
22
+ }
@@ -0,0 +1,9 @@
1
+ import { UlwLoopError } from "./types.js";
2
+ export declare const ULW_LOOP_LOCK_TIMEOUT_CODE = "ULW_LOOP_LOCK_TIMEOUT";
3
+ export interface StateLockOptions {
4
+ readonly timeoutMs?: number;
5
+ readonly staleMs?: number;
6
+ }
7
+ export declare function withStateLock<T>(lockPath: string, fn: () => Promise<T>, options?: StateLockOptions): Promise<T>;
8
+ export declare function withStateLockSync<T>(lockPath: string, fn: () => T, options?: StateLockOptions): T;
9
+ export declare function isStateLockTimeout(error: unknown): error is UlwLoopError;