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
@@ -0,0 +1,227 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { closeSync, mkdirSync, openSync, readFileSync, statSync, unlinkSync, writeSync } from "node:fs";
3
+ import { dirname } from "node:path";
4
+ import { setTimeout as sleep } from "node:timers/promises";
5
+ import { UlwLoopError } from "./types.js";
6
+ // Cross-process exclusive lock for one ulw-loop state directory. Every CLI
7
+ // invocation is its own process, so the in-process promise chain in plan-io
8
+ // serializes nothing across them; this file-level lock is what makes the
9
+ // read-modify-write of goals.json (and the counters next to it) atomic.
10
+ //
11
+ // Protocol: the lock is a file created with O_EXCL whose body records the
12
+ // owner (pid + a per-acquisition token). A waiter reclaims it only when the
13
+ // owner is provably gone (pid dead) or the body never became a record within
14
+ // `staleMs` (a creator that died mid-write); a live owner is never reclaimed by
15
+ // age alone, because overlapping two bodies is exactly the lost update this lock
16
+ // exists to prevent. Waiters back off and fail closed at `timeoutMs`. Release
17
+ // unlinks only a lock that still carries the releaser's own token.
18
+ export const ULW_LOOP_LOCK_TIMEOUT_CODE = "ULW_LOOP_LOCK_TIMEOUT";
19
+ const DEFAULT_TIMEOUT_MS = 10_000;
20
+ const DEFAULT_STALE_MS = 60_000;
21
+ const MIN_DELAY_MS = 5;
22
+ const MAX_DELAY_MS = 100;
23
+ const SLEEP_CELL = new Int32Array(new SharedArrayBuffer(4));
24
+ export async function withStateLock(lockPath, fn, options = {}) {
25
+ const token = await acquireAsync(lockPath, options);
26
+ try {
27
+ return await fn();
28
+ }
29
+ finally {
30
+ release(lockPath, token);
31
+ }
32
+ }
33
+ export function withStateLockSync(lockPath, fn, options = {}) {
34
+ const token = acquireSync(lockPath, options);
35
+ try {
36
+ return fn();
37
+ }
38
+ finally {
39
+ release(lockPath, token);
40
+ }
41
+ }
42
+ export function isStateLockTimeout(error) {
43
+ return error instanceof UlwLoopError && error.code === ULW_LOOP_LOCK_TIMEOUT_CODE;
44
+ }
45
+ async function acquireAsync(lockPath, options) {
46
+ const deadline = Date.now() + (options.timeoutMs ?? DEFAULT_TIMEOUT_MS);
47
+ const staleMs = options.staleMs ?? DEFAULT_STALE_MS;
48
+ mkdirSync(dirname(lockPath), { recursive: true });
49
+ for (let attempt = 0;;) {
50
+ const outcome = attemptOnce(lockPath, staleMs);
51
+ if (outcome.kind === "acquired")
52
+ return outcome.token;
53
+ if (outcome.kind === "retry")
54
+ continue;
55
+ if (Date.now() >= deadline)
56
+ throw lockTimeout(lockPath, options.timeoutMs ?? DEFAULT_TIMEOUT_MS);
57
+ await sleep(backoffMs(attempt));
58
+ attempt += 1;
59
+ }
60
+ }
61
+ function acquireSync(lockPath, options) {
62
+ const deadline = Date.now() + (options.timeoutMs ?? DEFAULT_TIMEOUT_MS);
63
+ const staleMs = options.staleMs ?? DEFAULT_STALE_MS;
64
+ mkdirSync(dirname(lockPath), { recursive: true });
65
+ for (let attempt = 0;;) {
66
+ const outcome = attemptOnce(lockPath, staleMs);
67
+ if (outcome.kind === "acquired")
68
+ return outcome.token;
69
+ if (outcome.kind === "retry")
70
+ continue;
71
+ if (Date.now() >= deadline)
72
+ throw lockTimeout(lockPath, options.timeoutMs ?? DEFAULT_TIMEOUT_MS);
73
+ Atomics.wait(SLEEP_CELL, 0, 0, backoffMs(attempt));
74
+ attempt += 1;
75
+ }
76
+ }
77
+ // EINTR surfaces raw from macOS fs syscalls under some runtimes; it is a retry, never a verdict.
78
+ function attemptOnce(lockPath, staleMs) {
79
+ try {
80
+ const token = tryCreate(lockPath);
81
+ if (token !== null)
82
+ return { kind: "acquired", token };
83
+ const snapshot = readSnapshot(lockPath);
84
+ if (snapshot === null)
85
+ return { kind: "retry" };
86
+ if (isStale(snapshot, staleMs) && reclaim(lockPath, snapshot.raw))
87
+ return { kind: "retry" };
88
+ return { kind: "wait" };
89
+ }
90
+ catch (error) {
91
+ if (hasCode(error, "EINTR"))
92
+ return { kind: "wait" };
93
+ throw error;
94
+ }
95
+ }
96
+ function tryCreate(lockPath) {
97
+ let fd;
98
+ try {
99
+ fd = openSync(lockPath, "wx");
100
+ }
101
+ catch (error) {
102
+ if (hasCode(error, "EEXIST"))
103
+ return null;
104
+ throw error;
105
+ }
106
+ const record = { pid: process.pid, createdAt: new Date().toISOString(), token: randomUUID() };
107
+ try {
108
+ writeSync(fd, JSON.stringify(record));
109
+ }
110
+ catch (error) {
111
+ closeSync(fd);
112
+ // A failed write (e.g. EINTR) must not leave a partial lock the owner never recorded;
113
+ // otherwise later readers see a young ownerless lock and only age can retire it.
114
+ try {
115
+ unlinkSync(lockPath);
116
+ }
117
+ catch {
118
+ // another process already reclaimed the partial file; leave it alone
119
+ }
120
+ throw error;
121
+ }
122
+ closeSync(fd);
123
+ return record.token;
124
+ }
125
+ function readSnapshot(lockPath) {
126
+ try {
127
+ const raw = readFileSync(lockPath, "utf8");
128
+ const ageMs = Date.now() - statSync(lockPath).mtimeMs;
129
+ return { raw, record: parseRecord(raw), ageMs };
130
+ }
131
+ catch (error) {
132
+ if (hasCode(error, "ENOENT"))
133
+ return null;
134
+ throw error;
135
+ }
136
+ }
137
+ function parseRecord(raw) {
138
+ try {
139
+ const parsed = JSON.parse(raw);
140
+ if (typeof parsed !== "object" || parsed === null)
141
+ return null;
142
+ const record = parsed;
143
+ const pid = record["pid"];
144
+ const createdAt = record["createdAt"];
145
+ const token = record["token"];
146
+ if (typeof pid !== "number" || !Number.isInteger(pid) || pid <= 0 || typeof createdAt !== "string")
147
+ return null;
148
+ if (typeof token !== "string" || token.length === 0)
149
+ return null;
150
+ return { pid, createdAt, token };
151
+ }
152
+ catch (error) {
153
+ if (error instanceof SyntaxError)
154
+ return null;
155
+ throw error;
156
+ }
157
+ }
158
+ // A body that is not a record is a lock mid-write (or a foreign/legacy file); only
159
+ // age retires it. A parsable record is stale only when its owner is dead: a live
160
+ // owner running past staleMs is slow, not gone, and the waiter fails closed instead.
161
+ function isStale(snapshot, staleMs) {
162
+ if (snapshot.record === null)
163
+ return snapshot.ageMs > staleMs;
164
+ return !isProcessAlive(snapshot.record.pid);
165
+ }
166
+ function isProcessAlive(pid) {
167
+ try {
168
+ process.kill(pid, 0);
169
+ return true;
170
+ }
171
+ catch (error) {
172
+ if (hasCode(error, "ESRCH"))
173
+ return false;
174
+ if (hasCode(error, "EPERM"))
175
+ return true;
176
+ throw error;
177
+ }
178
+ }
179
+ // Re-read right before unlinking so a lock that changed hands since the stale
180
+ // verdict (a sibling waiter reclaimed and re-acquired it) is left alone.
181
+ function reclaim(lockPath, expectedRaw) {
182
+ const current = readSnapshot(lockPath);
183
+ if (current === null)
184
+ return true;
185
+ if (current.raw !== expectedRaw)
186
+ return false;
187
+ try {
188
+ unlinkSync(lockPath);
189
+ }
190
+ catch (error) {
191
+ if (!hasCode(error, "ENOENT"))
192
+ throw error;
193
+ }
194
+ return true;
195
+ }
196
+ // Only the acquisition that wrote this token may unlink: if the file now carries
197
+ // another token, a waiter has legitimately taken over and its lock must stand.
198
+ function release(lockPath, token) {
199
+ const current = readSnapshot(lockPath);
200
+ if (current === null || current.record?.token !== token)
201
+ return;
202
+ try {
203
+ unlinkSync(lockPath);
204
+ }
205
+ catch (error) {
206
+ if (!hasCode(error, "ENOENT"))
207
+ throw error;
208
+ }
209
+ }
210
+ function backoffMs(attempt) {
211
+ const exponential = Math.min(MAX_DELAY_MS, MIN_DELAY_MS * 2 ** attempt);
212
+ return exponential + Math.random() * MIN_DELAY_MS;
213
+ }
214
+ function lockTimeout(lockPath, timeoutMs) {
215
+ const holder = readSnapshot(lockPath)?.record;
216
+ const owner = holder === undefined || holder === null ? "another process" : `pid ${holder.pid}`;
217
+ return new UlwLoopError(`ulw-loop state lock ${lockPath} is held by ${owner} for more than ${timeoutMs}ms; retry once that process finishes, or delete the lock file if that process is gone.`, ULW_LOOP_LOCK_TIMEOUT_CODE, {
218
+ details: {
219
+ lockPath,
220
+ timeoutMs,
221
+ ...(holder === undefined || holder === null ? {} : { holderPid: holder.pid }),
222
+ },
223
+ });
224
+ }
225
+ function hasCode(error, code) {
226
+ return error instanceof Error && "code" in error && error.code === code;
227
+ }
@@ -0,0 +1,6 @@
1
+ import type { UlwLoopPlan } from "./types.js";
2
+ /**
3
+ * `status --json` is the one call every agent already makes between steps, so it is
4
+ * also the cheapest place to answer "what now?" without a second round trip.
5
+ */
6
+ export declare function statusNextActions(plan: UlwLoopPlan): readonly string[];
@@ -0,0 +1,33 @@
1
+ import { hasAllCriteriaPass, isFinalRunCompletionCandidate } from "./goal-status.js";
2
+ import { ULW_LOOP_CREATE_GOALS_COMMAND } from "./plan-missing-recovery.js";
3
+ /**
4
+ * `status --json` is the one call every agent already makes between steps, so it is
5
+ * also the cheapest place to answer "what now?" without a second round trip.
6
+ */
7
+ export function statusNextActions(plan) {
8
+ const actions = [];
9
+ const active = plan.goals.find((goal) => goal.id === plan.activeGoalId);
10
+ if (plan.goals.length === 0)
11
+ actions.push(`No goals yet: bootstrap with \`${ULW_LOOP_CREATE_GOALS_COMMAND}\`.`);
12
+ else if (active !== undefined)
13
+ actions.push(...activeGoalActions(plan, active));
14
+ for (const goal of plan.goals.filter((candidate) => candidate.status === "review_blocked"))
15
+ actions.push(`${goal.id} is review_blocked: capture the reviewer verdict with \`omo-agent-toolkit ulw-loop record-review-blockers --goal-id ${goal.id} --title "<title>" --objective "<objective>" --evidence "<verdict>" --codex-goal-json '<get_goal json>'\`.`);
16
+ if (plan.evidenceLayoutVersion !== 2 || active === undefined)
17
+ actions.push("plan is evidence-layout v1; artifacts go under .omo/evidence/");
18
+ return actions;
19
+ }
20
+ function activeGoalActions(plan, active) {
21
+ const unresolved = active.successCriteria.filter((criterion) => criterion.status !== "pass");
22
+ if (unresolved.length > 0)
23
+ return [
24
+ `${active.id} has ${unresolved.length} unresolved criterion(s) (${unresolved.map((criterion) => criterion.id).join(", ")}): record proof with \`omo-agent-toolkit ulw-loop record-evidence --goal-id ${active.id} --criterion-id <id> --status pass --evidence "<observable proof>"\`.`,
25
+ ];
26
+ if (hasAllCriteriaPass(active) && isFinalRunCompletionCandidate(plan, active))
27
+ return [
28
+ `${active.id} passes every criterion and is the final story: update_goal complete, then checkpoint --print-template to build the final quality gate. Use status --json's currentAttemptDir for all quality-gate artifacts.`,
29
+ ];
30
+ return [
31
+ `${active.id} passes every criterion: close it with \`omo-agent-toolkit ulw-loop checkpoint --goal-id ${active.id} --status complete --evidence "<proof>" --codex-goal-json '<get_goal json>'\`. Put quality-gate artifacts under the currentAttemptDir shown by status --json.`,
32
+ ];
33
+ }
@@ -1,11 +1,12 @@
1
1
  import { existsSync, readFileSync, writeFileSync } from "node:fs";
2
2
  import { isAbsolute, join, resolve, sep } from "node:path";
3
- import { normalizeUlwLoopSessionId, ulwLoopDir } from "./paths.js";
3
+ import { normalizeUlwLoopSessionId, ulwLoopDir, ulwLoopStateLockPath } from "./paths.js";
4
+ import { isStateLockTimeout, withStateLockSync } from "./state-lock.js";
4
5
  // Turn-death recovery only: Codex emits Stop when a turn ends, so a run that
5
6
  // dies mid-turn (crash, kill, context blowup before any Stop) never reaches
6
7
  // this handler. Mid-turn stalls are out of scope by design.
7
8
  const RESUME_CAP = 2;
8
- // Mirrors start-work-continuation's context-pressure bail-out: injecting a
9
+ // Mirrors ulw-execute-continuation's context-pressure bail-out: injecting a
9
10
  // resume directive into an already-overflowing context makes things worse.
10
11
  const CONTEXT_PRESSURE_MARKERS = [
11
12
  "context compacted",
@@ -24,14 +25,15 @@ export function runStopResumeHook(input) {
24
25
  return "";
25
26
  if (boulderContinuationWillFire(payload.cwd, payload.session_id))
26
27
  return "";
27
- const stateDir = ulwLoopDir(payload.cwd, { sessionId: payload.session_id });
28
+ const scope = { sessionId: payload.session_id };
29
+ const stateDir = ulwLoopDir(payload.cwd, scope);
28
30
  const plan = readPlan(join(stateDir, "goals.json"));
29
31
  if (plan === null || plan.aggregateCompletion?.status === "complete")
30
32
  return "";
31
33
  const goal = resumableGoal(plan);
32
34
  if (goal === undefined)
33
35
  return "";
34
- if (!consumeResumeBudget(stateDir, goal.id))
36
+ if (!consumeResumeBudgetLocked(ulwLoopStateLockPath(payload.cwd, scope), stateDir, goal.id))
35
37
  return "";
36
38
  const output = {
37
39
  decision: "block",
@@ -62,6 +64,18 @@ function resumableGoal(plan) {
62
64
  function isResumableStatus(status) {
63
65
  return status === "pending" || status === "in_progress";
64
66
  }
67
+ // A resume is a budgeted side effect; when the session lock cannot be taken the
68
+ // hook stays silent (fail closed) instead of charging the counter unlocked.
69
+ function consumeResumeBudgetLocked(lockPath, stateDir, goalId) {
70
+ try {
71
+ return withStateLockSync(lockPath, () => consumeResumeBudget(stateDir, goalId));
72
+ }
73
+ catch (error) {
74
+ if (isStateLockTimeout(error))
75
+ return false;
76
+ throw error;
77
+ }
78
+ }
65
79
  // Two-strike cap keyed on ledger movement: an unchanged ledger.jsonl line
66
80
  // count across resumes means the loop is not progressing. The stuck marker is
67
81
  // a separate file — a ledger append would change the count and self-reset.
@@ -132,7 +146,7 @@ function readCounter(counterPath) {
132
146
  throw error;
133
147
  }
134
148
  }
135
- // Local ~10-LOC approximation of start-work-continuation's boulder check (no
149
+ // Local ~10-LOC approximation of ulw-execute-continuation's boulder check (no
136
150
  // cross-component import allowed): any continuable work for this session means
137
151
  // that hook owns the Stop event, so this one stays silent.
138
152
  function boulderContinuationWillFire(cwd, sessionId) {
@@ -167,7 +181,7 @@ function transcriptShowsContextPressure(transcriptPath) {
167
181
  throw error;
168
182
  }
169
183
  }
170
- // start-work-continuation owns an active Boulder plan until its final gate marks
184
+ // ulw-execute-continuation owns an active Boulder plan until its final gate marks
171
185
  // the work complete, including the zero-remaining checklist state.
172
186
  function boulderPlanHasChecklist(cwd, entry) {
173
187
  const activePlan = entry["active_plan"];
@@ -0,0 +1,19 @@
1
+ export type UlwLoopToolkitSurface = "lazycodex" | "omo-senpi";
2
+ export interface UlwLoopReviewerRoles {
3
+ readonly codeReview: string;
4
+ readonly manualQa: string;
5
+ readonly gateReview: string;
6
+ }
7
+ export declare const REVIEWER_ROLES_BY_SURFACE: Readonly<Record<UlwLoopToolkitSurface, UlwLoopReviewerRoles>>;
8
+ export declare const GATE_REVIEWER_AGENT_NAMES: ReadonlySet<string>;
9
+ export type UlwLoopGateSection = "codeReview" | "manualQa" | "gateReview" | "iteration" | "criteriaCoverage";
10
+ export declare const REQUIRED_GATE_SECTIONS_BY_SURFACE: Readonly<Record<UlwLoopToolkitSurface, readonly UlwLoopGateSection[]>>;
11
+ export declare const OPTIONAL_GATE_SECTIONS_BY_SURFACE: Readonly<Record<UlwLoopToolkitSurface, readonly UlwLoopGateSection[]>>;
12
+ export declare const GATE_SECTION_BY_ACCEPTOR: Readonly<Record<UlwLoopToolkitSurface, Readonly<Partial<Record<UlwLoopGateSection, readonly string[]>>>>>;
13
+ export declare function reviewerRolesFor(surface: UlwLoopToolkitSurface): UlwLoopReviewerRoles;
14
+ export declare const SURFACE_MARKER_FILENAME = "surface.json";
15
+ export interface ResolveToolkitSurfaceOptions {
16
+ readonly env?: Readonly<Record<string, string | undefined>>;
17
+ readonly entryDir?: string;
18
+ }
19
+ export declare function resolveToolkitSurface(options?: ResolveToolkitSurfaceOptions): UlwLoopToolkitSurface;
@@ -0,0 +1,75 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ export const REVIEWER_ROLES_BY_SURFACE = {
5
+ lazycodex: {
6
+ codeReview: "lazycodex-code-reviewer",
7
+ manualQa: "lazycodex-qa-executor",
8
+ gateReview: "lazycodex-gate-reviewer",
9
+ },
10
+ "omo-senpi": {
11
+ codeReview: "omo-senpi-code-reviewer",
12
+ manualQa: "omo-senpi-qa-executor",
13
+ gateReview: "omo-senpi-gate-reviewer",
14
+ },
15
+ };
16
+ export const GATE_REVIEWER_AGENT_NAMES = new Set(Object.values(REVIEWER_ROLES_BY_SURFACE).map((roles) => roles.gateReview));
17
+ export const REQUIRED_GATE_SECTIONS_BY_SURFACE = {
18
+ lazycodex: ["manualQa", "gateReview", "iteration", "criteriaCoverage"],
19
+ "omo-senpi": ["manualQa", "gateReview", "iteration", "criteriaCoverage"],
20
+ };
21
+ export const OPTIONAL_GATE_SECTIONS_BY_SURFACE = {
22
+ lazycodex: ["codeReview"],
23
+ "omo-senpi": [],
24
+ };
25
+ export const GATE_SECTION_BY_ACCEPTOR = {
26
+ lazycodex: {
27
+ codeReview: [REVIEWER_ROLES_BY_SURFACE.lazycodex.codeReview, "main-session"],
28
+ manualQa: [REVIEWER_ROLES_BY_SURFACE.lazycodex.manualQa, "main-session"],
29
+ gateReview: [
30
+ REVIEWER_ROLES_BY_SURFACE.lazycodex.gateReview,
31
+ "category:deep",
32
+ "category:unspecified-high",
33
+ "category:unspecified-low",
34
+ "main-session",
35
+ ],
36
+ },
37
+ "omo-senpi": {
38
+ manualQa: ["main-session"],
39
+ gateReview: ["category:deep", "category:unspecified-high", "category:unspecified-low"],
40
+ },
41
+ };
42
+ export function reviewerRolesFor(surface) {
43
+ return REVIEWER_ROLES_BY_SURFACE[surface];
44
+ }
45
+ export const SURFACE_MARKER_FILENAME = "surface.json";
46
+ const SURFACE_ENV_KEY = "OMO_AGENT_TOOLKIT_SURFACE";
47
+ function parseSurface(value) {
48
+ return value === "lazycodex" || value === "omo-senpi" ? value : null;
49
+ }
50
+ // Resolution order: explicit env override (tests, doctor probes) -> staged surface.json marker
51
+ // sitting next to the running bundle -> lazycodex default. The marker is distribution-baked, so a
52
+ // malformed marker falls back to the default instead of crashing checkpoint validation; the env
53
+ // override remains available to force the intended surface on a damaged install.
54
+ export function resolveToolkitSurface(options) {
55
+ const env = options?.env ?? process.env;
56
+ const fromEnv = parseSurface(env[SURFACE_ENV_KEY]);
57
+ if (fromEnv !== null)
58
+ return fromEnv;
59
+ const entryDir = options?.entryDir ?? dirname(fileURLToPath(import.meta.url));
60
+ const markerPath = join(entryDir, SURFACE_MARKER_FILENAME);
61
+ return readMarkerSurface(markerPath) ?? "lazycodex";
62
+ }
63
+ function readMarkerSurface(markerPath) {
64
+ try {
65
+ if (!existsSync(markerPath))
66
+ return null;
67
+ const parsed = JSON.parse(readFileSync(markerPath, "utf8"));
68
+ return parseSurface(parsed["surface"]);
69
+ }
70
+ catch (error) {
71
+ if (error instanceof Error)
72
+ return null;
73
+ throw error;
74
+ }
75
+ }
@@ -7,7 +7,20 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit --with-ultrawork",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.6) Checking Ulw-Loop Steering"
10
+ "statusMessage": "(OmO 5.0.0-beta.60) Checking Ulw-Loop Steering"
11
+ }
12
+ ]
13
+ }
14
+ ],
15
+ "PostToolUse": [
16
+ {
17
+ "matcher": "^(spawn_agent|collaborationspawn_agent|collaboration\\.spawn_agent)$",
18
+ "hooks": [
19
+ {
20
+ "type": "command",
21
+ "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use-spawn",
22
+ "timeout": 5,
23
+ "statusMessage": "(OmO 5.0.0-beta.60) Recording Spawn Admission"
11
24
  }
12
25
  ]
13
26
  }
@@ -20,7 +33,7 @@
20
33
  "type": "command",
21
34
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
22
35
  "timeout": 5,
23
- "statusMessage": "(OmO 5.0.0-beta.6) Enforcing Unlimited Ulw-Loop Budget"
36
+ "statusMessage": "(OmO 5.0.0-beta.60) Enforcing Unlimited Ulw-Loop Budget"
24
37
  }
25
38
  ]
26
39
  },
@@ -31,7 +44,7 @@
31
44
  "type": "command",
32
45
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use-spawn",
33
46
  "timeout": 5,
34
- "statusMessage": "(OmO 5.0.0-beta.6) Guarding Ulw-Loop Spawns"
47
+ "statusMessage": "(OmO 5.0.0-beta.60) Guarding Ulw-Loop Spawns"
35
48
  }
36
49
  ]
37
50
  }
@@ -43,7 +56,7 @@
43
56
  "type": "command",
44
57
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook stop",
45
58
  "timeout": 10,
46
- "statusMessage": "(OmO 5.0.0-beta.6) Checking Ulw-Loop Resume"
59
+ "statusMessage": "(OmO 5.0.0-beta.60) Checking Ulw-Loop Resume"
47
60
  }
48
61
  ]
49
62
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-ulw-loop",
3
- "version": "5.0.0-beta.6",
3
+ "version": "5.0.0-beta.60",
4
4
  "description": "Codex plugin: durable repo-native multi-goal orchestration with embedded success criteria and observable evidence audit.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -38,7 +38,7 @@
38
38
  "CHANGELOG.md"
39
39
  ],
40
40
  "scripts": {
41
- "build": "tsc -p tsconfig.build.json",
41
+ "build": "tsc -p tsconfig.build.json && bun build src/cli.ts --target node --format esm --outfile dist/cli.js",
42
42
  "test": "vitest --run",
43
43
  "test:watch": "vitest",
44
44
  "typecheck": "tsc --noEmit",
@@ -47,10 +47,10 @@
47
47
  "check": "tsc --noEmit && biome check . && npm run build"
48
48
  },
49
49
  "devDependencies": {
50
- "@biomejs/biome": "2.4.16",
51
- "@types/node": "^25.9.3",
52
- "typescript": "^6.0.3",
53
- "vitest": "^4.1.8"
50
+ "@biomejs/biome": "2.5.9",
51
+ "@types/node": "^26.2.0",
52
+ "typescript": "^7.0.2",
53
+ "vitest": "^4.1.11"
54
54
  },
55
55
  "engines": {
56
56
  "node": ">=20.0.0"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ulw-loop
3
- description: Goal-like loop that uses ultrawork mode to decompose work into systematic, evidence-bound steps.
3
+ description: "A goal-like loop that decomposes work into systematic, evidence-bound ultrawork steps. Use when the user wants a goal loop or durable, checkpointed execution."
4
4
  metadata:
5
5
  short-description: Goal-like ultrawork loop for systematic decomposition
6
6
  ---
@@ -15,14 +15,16 @@ This skill is intentionally compact. The full workflow lives in `references/full
15
15
 
16
16
  1. Open `references/full-workflow.md`.
17
17
  2. Read through **Bootstrap** (including its tier triage), **Execution Loop**, the **Manual-QA channels** table, and the **Stop Rules** before running any ULW command or recording evidence.
18
- 3. If the task has code edits, tests, QA, or commit work, follow the full workflow's delegation and evidence rules. Tests alone never prove done.
18
+ 3. Open `references/define-goal.md` and register the run's goal by it. Goal creation is NEVER skipped: shape the objective and every success criterion by that reference before any implementation.
19
+ 4. If the task has code edits, tests, QA, or commit work, follow the full workflow's delegation and evidence rules. Tests alone never prove done.
19
20
 
20
21
  ## Non-Negotiables
21
22
 
22
23
  - Use the ulw-loop CLI state under `.omo/ulw-loop`; do not hand-edit goal state.
23
- - Register goals up front (`omo-agent-toolkit ulw-loop create-goals`, then `create_goal` from the printed handoff) and mirror every atomic step into the live `update_plan` checklist: one ultra-granular step per action, exactly one in_progress, transitions marked the instant they happen.
24
+ - Register goals up front, shaped by `references/define-goal.md` (`omo-agent-toolkit ulw-loop create-goals`, then `create_goal` from the printed handoff), and mirror every atomic step into the live `update_plan` checklist: one ultra-granular step per action, exactly one in_progress, transitions marked the instant they happen.
24
25
  - After any compaction or context loss, re-read brief + goals + ledger FIRST plus `omo-agent-toolkit ulw-loop status --json`, then resume; never re-plan from scratch.
25
- - If `omo-agent-toolkit ulw-loop create-goals` says the existing aggregate is already complete, start unrelated new work with a fresh `--session-id <new-id>` instead of steering or forcing the completed default state. Use `--force` only to intentionally overwrite completed evidence.
26
+ - Every ulw-loop command needs the session scope: pass `--session-id <id>` (the printed handoff and resume directive carry it; `CODEX_THREAD_ID` in the environment also resolves it). The CLI refuses unscoped state (`ULW_LOOP_SESSION_SCOPE_REQUIRED`) instead of touching the shared `.omo/ulw-loop` root.
27
+ - If `omo-agent-toolkit ulw-loop create-goals` says this session's aggregate is already complete, start unrelated new work with a fresh `--session-id <new-id>` (passed on every later call) instead of steering or forcing the completed state. Use `--force` only to intentionally overwrite completed evidence.
26
28
  - Every success criterion needs observable evidence from a real surface: a channel (terminal/TUI via the xterm.js web terminal, HTTP, browser, computer-use) or, for CLI- or data-shaped criteria, an auxiliary surface (CLI stdout, DB diff, parsed config dump).
27
29
  - Evidence is bound to the tree it was captured at (`git rev-parse --short "HEAD^{tree}"`); it goes stale only when tracked content changes — a rebase or amend that keeps the tree identical keeps it valid. When the tree differs, re-run at the current HEAD and re-record, never relabel or regenerate. Record only after cleanup receipts exist.
28
30
  - Delegate code edits, test writes, fixes, and QA execution to right-sized Codex subagents when the workflow requires it.
@@ -66,3 +68,7 @@ Codex exposes ONE subagent surface per session — check your tool list. GPT-5.6
66
68
  V1 fallback (gpt-5.5, gpt-5.6-luna): `multi_agent_v1.spawn_agent({...,"fork_context":false})`, `multi_agent_v1.send_input` (re-task), `multi_agent_v1.wait_agent({"targets":[...],"timeout_ms":...})`, `multi_agent_v1.close_agent`.
67
69
 
68
70
  When translating `load_skills=[...]`, include the requested skill names in the spawned agent's `message`.
71
+
72
+ ## Driver goal lifecycle
73
+
74
+ The Codex thread goal is a DRIVER the loop instructs, never a gate. `checkpoint` takes an OPTIONAL `--codex-goal-json` snapshot, records it verbatim in the ledger, and never rejects on its status or objective; the advice arrives in `nextActions`. A driver completed early yields advice to `create_goal` again with the plan's objective verbatim; `paused`, `usage_limited`, and `budget_limited` yield resume advice; a differing objective is a warning, not a refusal. Malformed snapshot input is the only failure, reported as `ULW_LOOP_CODEX_GOAL_JSON_INVALID`.