lazycodex-ai 5.0.0-beta.7 → 5.0.0-beta.71

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 (725) hide show
  1. package/README.ja.md +66 -61
  2. package/README.ko.md +67 -62
  3. package/README.md +108 -182
  4. package/README.ru.md +63 -61
  5. package/README.zh-cn.md +62 -61
  6. package/dist/cli/config-manager/parse-opencode-config-file.d.ts +2 -1
  7. package/dist/cli/doctor/checks/browser-provider.d.ts +2 -0
  8. package/dist/cli/doctor/checks/index.d.ts +2 -0
  9. package/dist/cli/doctor/checks/latest-version.d.ts +11 -0
  10. package/dist/cli/doctor/checks/system-plugin.d.ts +4 -3
  11. package/dist/cli/doctor/framework/constants.d.ts +5 -0
  12. package/dist/cli/doctor/framework/types.d.ts +2 -0
  13. package/dist/cli/fallback-lane-policy.d.ts +1 -0
  14. package/dist/cli/index.js +51933 -59845
  15. package/dist/cli/install-codex/install-codex-test-fixtures.d.ts +1 -1
  16. package/dist/cli/run/on-complete-hook.d.ts +2 -0
  17. package/dist/cli/runtime-commands.d.ts +1 -1
  18. package/dist/cli/worktree-sweep/classify.d.ts +16 -0
  19. package/dist/cli/worktree-sweep/format.d.ts +8 -0
  20. package/dist/cli/worktree-sweep/git.d.ts +19 -0
  21. package/dist/cli/worktree-sweep/index.d.ts +7 -0
  22. package/dist/cli/worktree-sweep/options.d.ts +2 -0
  23. package/dist/cli/worktree-sweep/parse-worktree-list.d.ts +8 -0
  24. package/dist/cli/worktree-sweep/sweep.d.ts +2 -0
  25. package/dist/cli/worktree-sweep/types.d.ts +65 -0
  26. package/dist/cli/worktree-sweep/worktree-sweep.d.ts +2 -0
  27. package/dist/cli-node/index.js +51915 -59804
  28. package/package.json +12 -14
  29. package/packages/git-bash-mcp/dist/cli.js +6 -1
  30. package/packages/lsp-daemon/dist/cli.js +904 -479
  31. package/packages/lsp-daemon/dist/client.d.ts +10 -0
  32. package/packages/lsp-daemon/dist/client.js +922 -493
  33. package/packages/lsp-daemon/dist/daemon-client.d.ts +1 -0
  34. package/packages/lsp-daemon/dist/daemon-client.js +3 -0
  35. package/packages/lsp-daemon/dist/ensure-daemon.d.ts +6 -1
  36. package/packages/lsp-daemon/dist/ensure-daemon.js +10 -2
  37. package/packages/lsp-daemon/dist/index.js +826 -402
  38. package/packages/lsp-daemon/dist/ownership.js +2 -2
  39. package/packages/lsp-daemon/dist/proxy.js +3 -0
  40. package/packages/lsp-daemon/dist/version-reap.js +1 -1
  41. package/packages/lsp-daemon/package.json +1 -1
  42. package/packages/lsp-tools-mcp/dist/cli.js +764 -341
  43. package/packages/lsp-tools-mcp/dist/lsp/manager.js +274 -138
  44. package/packages/lsp-tools-mcp/dist/mcp.js +789 -368
  45. package/packages/lsp-tools-mcp/dist/request-context.js +12 -13
  46. package/packages/lsp-tools-mcp/dist/tools.js +719 -302
  47. package/packages/lsp-tools-mcp/package.json +1 -1
  48. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +4 -6
  49. package/packages/omo-codex/plugin/.mcp.json +0 -6
  50. package/packages/omo-codex/plugin/AGENTS.md +47 -0
  51. package/packages/omo-codex/plugin/README.md +6 -2
  52. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +7100 -408
  53. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  54. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  55. package/packages/omo-codex/plugin/components/bootstrap/src/hook.ts +1 -0
  56. package/packages/omo-codex/plugin/components/bootstrap/src/setup.ts +7 -1
  57. package/packages/omo-codex/plugin/components/comment-checker/AGENTS.md +9 -0
  58. package/packages/omo-codex/plugin/components/comment-checker/biome.json +2 -2
  59. package/packages/omo-codex/plugin/components/comment-checker/dist/cli.js +2 -1
  60. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  61. package/packages/omo-codex/plugin/components/comment-checker/package.json +5 -5
  62. package/packages/omo-codex/plugin/components/comment-checker/src/apply-patch.ts +2 -8
  63. package/packages/omo-codex/plugin/components/comment-checker/src/core.ts +1 -2
  64. package/packages/omo-codex/plugin/components/comment-checker/src/request-extractor.ts +1 -1
  65. package/packages/omo-codex/plugin/components/comment-checker/src/runner.ts +1 -0
  66. package/packages/omo-codex/plugin/components/git-bash/AGENTS.md +1 -1
  67. package/packages/omo-codex/plugin/components/git-bash/dist/cli.js +1 -1
  68. package/packages/omo-codex/plugin/components/git-bash/dist/codex-hook.js +2 -1
  69. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  70. package/packages/omo-codex/plugin/components/git-bash/package.json +3 -4
  71. package/packages/omo-codex/plugin/components/git-bash/src/codex-hook.ts +2 -1
  72. package/packages/omo-codex/plugin/components/git-bash/test/codex-hook.test.ts +6 -7
  73. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/AGENTS.md +2 -2
  74. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/biome.json +2 -2
  75. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/directive.md +2 -0
  76. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/cli.js +36 -29
  77. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/codex-hook.js +32 -26
  78. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/types.d.ts +3 -0
  79. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  80. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +5 -5
  81. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/src/codex-hook.ts +32 -28
  82. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/src/types.ts +3 -0
  83. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/cli.test.ts +1 -1
  84. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/codex-hook.test.ts +137 -28
  85. package/packages/omo-codex/plugin/components/lcx/skills/lcx-doctor/SKILL.md +4 -2
  86. package/packages/omo-codex/plugin/components/lsp/AGENTS.md +30 -15
  87. package/packages/omo-codex/plugin/components/lsp/biome.json +2 -2
  88. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +4 -4
  89. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +943 -540
  90. package/packages/omo-codex/plugin/components/lsp/dist/daemon-cli-path.js +1 -1
  91. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  92. package/packages/omo-codex/plugin/components/lsp/package.json +5 -5
  93. package/packages/omo-codex/plugin/components/lsp/src/cli.ts +1 -1
  94. package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +1 -1
  95. package/packages/omo-codex/plugin/components/lsp/src/daemon-cli-path.ts +1 -5
  96. package/packages/omo-codex/plugin/components/lsp/test/codex-hook-unavailable.test.ts +6 -7
  97. package/packages/omo-codex/plugin/components/lsp/test/codex-hook.test.ts +1 -2
  98. package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +11 -1
  99. package/packages/omo-codex/plugin/components/rules/AGENTS.md +12 -0
  100. package/packages/omo-codex/plugin/components/rules/README.md +2 -0
  101. package/packages/omo-codex/plugin/components/rules/biome.json +2 -2
  102. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-6.md +123 -0
  103. package/packages/omo-codex/plugin/components/rules/dist/cli.js +91 -68
  104. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  105. package/packages/omo-codex/plugin/components/rules/package.json +7 -7
  106. package/packages/omo-codex/plugin/components/rules/src/config.ts +1 -2
  107. package/packages/omo-codex/plugin/components/rules/src/persistent-cache.ts +1 -2
  108. package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +15 -5
  109. package/packages/omo-codex/plugin/components/rules/src/rules-engine-factory.ts +1 -4
  110. package/packages/omo-codex/plugin/components/rules/src/static-injection.ts +4 -9
  111. package/packages/omo-codex/plugin/components/rules/test/bundled-rules-priority.test.ts +11 -16
  112. package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +17 -25
  113. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +9 -7
  114. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +0 -6
  115. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-dedup.test.ts +6 -4
  116. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-directive.test.ts +12 -9
  117. package/packages/omo-codex/plugin/components/rules/test/codex-hook.test.ts +28 -37
  118. package/packages/omo-codex/plugin/components/rules/test/dynamic-target-fingerprints.test.ts +1 -2
  119. package/packages/omo-codex/plugin/components/rules/test/engine.test.ts +7 -4
  120. package/packages/omo-codex/plugin/components/rules/test/finder.test.ts +2 -3
  121. package/packages/omo-codex/plugin/components/rules/test/formatter.test.ts +39 -72
  122. package/packages/omo-codex/plugin/components/rules/test/hephaestus-model-variant.test.ts +38 -3
  123. package/packages/omo-codex/plugin/components/rules/test/hook-output.test.ts +2 -3
  124. package/packages/omo-codex/plugin/components/rules/test/matcher.test.ts +2 -3
  125. package/packages/omo-codex/plugin/components/rules/test/package-smoke.test.ts +1 -1
  126. package/packages/omo-codex/plugin/components/rules/test/parser.test.ts +1 -2
  127. package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +29 -6
  128. package/packages/omo-codex/plugin/components/rules/test/rules-engine-consumption.test.ts +3 -6
  129. package/packages/omo-codex/plugin/components/rules/test/scanner.test.ts +1 -2
  130. package/packages/omo-codex/plugin/components/rules/test/sources.test.ts +2 -5
  131. package/packages/omo-codex/plugin/components/rules/test/windows-git-bash-bundled-rule.test.ts +2 -17
  132. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  133. package/packages/omo-codex/plugin/components/teammode/package.json +5 -5
  134. package/packages/omo-codex/plugin/components/teammode/test/thread-title-hook.test.ts +4 -10
  135. package/packages/omo-codex/plugin/components/telemetry/AGENTS.md +8 -0
  136. package/packages/omo-codex/plugin/components/telemetry/biome.json +2 -2
  137. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +2407 -684
  138. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +2411 -689
  139. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  140. package/packages/omo-codex/plugin/components/telemetry/package.json +5 -5
  141. package/packages/omo-codex/plugin/components/telemetry/src/codex-hook.ts +1 -4
  142. package/packages/omo-codex/plugin/components/telemetry/src/posthog.ts +4 -14
  143. package/packages/omo-codex/plugin/components/telemetry/src/product-identity.ts +1 -1
  144. package/packages/omo-codex/plugin/components/telemetry/test/diagnostics.test.ts +2 -5
  145. package/packages/omo-codex/plugin/components/ultrawork/AGENTS.md +10 -4
  146. package/packages/omo-codex/plugin/components/ultrawork/README.md +2 -0
  147. package/packages/omo-codex/plugin/components/ultrawork/agents/explorer.toml +1 -1
  148. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-clone-fidelity-reviewer.toml +1 -1
  149. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-code-reviewer.toml +1 -1
  150. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-gate-reviewer.toml +1 -1
  151. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-qa-executor.toml +1 -1
  152. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-high.toml +1 -1
  153. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-low.toml +1 -1
  154. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-medium.toml +1 -1
  155. package/packages/omo-codex/plugin/components/ultrawork/agents/librarian.toml +1 -1
  156. package/packages/omo-codex/plugin/components/ultrawork/agents/metis.toml +1 -1
  157. package/packages/omo-codex/plugin/components/ultrawork/agents/momus.toml +1 -1
  158. package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +4 -4
  159. package/packages/omo-codex/plugin/components/ultrawork/biome.json +2 -2
  160. package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +500 -4
  161. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  162. package/packages/omo-codex/plugin/components/ultrawork/package.json +5 -6
  163. package/packages/omo-codex/plugin/components/ultrawork/scripts/sync-directive.mjs +30 -14
  164. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +6 -7
  165. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +31 -7
  166. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +2 -1
  167. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +5 -5
  168. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -0
  169. package/packages/omo-codex/plugin/components/ultrawork/src/directive-content.ts +4 -0
  170. package/packages/omo-codex/plugin/components/ultrawork/src/directive.ts +5 -2
  171. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook-trigger-policy.test.ts +9 -1
  172. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +0 -136
  173. package/packages/omo-codex/plugin/components/ultrawork/test/directive-source.test.ts +14 -8
  174. package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +12 -1
  175. package/packages/omo-codex/plugin/components/ultrawork/test/skill-pointer.test.ts +0 -2
  176. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/AGENTS.md +4 -4
  177. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/NOTICE +1 -1
  178. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/README.md +6 -6
  179. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/biome.json +2 -2
  180. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/directive.md +11 -11
  181. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/dist/cli.js +16 -16
  182. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +16 -0
  183. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/package.json +12 -12
  184. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/boulder-reader.ts +1 -1
  185. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/cli.ts +1 -1
  186. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/codex-hook.ts +4 -4
  187. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/directive.ts +1 -1
  188. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/index.ts +1 -1
  189. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/types.ts +1 -1
  190. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/boulder-reader.test.ts +3 -3
  191. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/cli.test.ts +4 -11
  192. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/codex-hook.test.ts +24 -22
  193. package/packages/omo-codex/plugin/components/ulw-loop/AGENTS.md +19 -0
  194. package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +17 -1
  195. package/packages/omo-codex/plugin/components/ulw-loop/README.md +12 -1
  196. package/packages/omo-codex/plugin/components/ulw-loop/biome.json +2 -2
  197. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +44 -27
  198. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.d.ts +18 -0
  199. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.js +30 -0
  200. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-continuation.js +10 -4
  201. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.d.ts +2 -5
  202. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.js +5 -78
  203. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-template.d.ts +12 -0
  204. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-template.js +114 -0
  205. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.d.ts +7 -1
  206. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +57 -46
  207. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-arg-parser.js +2 -2
  208. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-commands.js +21 -8
  209. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.d.ts +2 -1
  210. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.js +12 -1
  211. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-subcommands.d.ts +1 -1
  212. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-subcommands.js +40 -37
  213. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +2183 -737
  214. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.d.ts +2 -0
  215. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +28 -8
  216. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.d.ts +8 -5
  217. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.js +35 -23
  218. package/packages/omo-codex/plugin/components/ulw-loop/dist/constants.d.ts +1 -0
  219. package/packages/omo-codex/plugin/components/ulw-loop/dist/constants.js +1 -0
  220. package/packages/omo-codex/plugin/components/ulw-loop/dist/domain-types.d.ts +25 -9
  221. package/packages/omo-codex/plugin/components/ulw-loop/dist/driver-objective-ack.d.ts +4 -0
  222. package/packages/omo-codex/plugin/components/ulw-loop/dist/driver-objective-ack.js +18 -0
  223. package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence-artifacts.d.ts +1 -0
  224. package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence-artifacts.js +37 -0
  225. package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence.d.ts +1 -0
  226. package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence.js +24 -12
  227. package/packages/omo-codex/plugin/components/ulw-loop/dist/ledger.d.ts +4 -0
  228. package/packages/omo-codex/plugin/components/ulw-loop/dist/ledger.js +39 -0
  229. package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.d.ts +2 -0
  230. package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.js +19 -4
  231. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-commit.d.ts +19 -0
  232. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-commit.js +108 -0
  233. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.d.ts +6 -2
  234. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.js +54 -25
  235. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-goal-factory.d.ts +10 -3
  236. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-goal-factory.js +38 -31
  237. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.d.ts +10 -7
  238. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.js +121 -100
  239. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-log.d.ts +16 -0
  240. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-log.js +115 -0
  241. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-missing-recovery.d.ts +18 -0
  242. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-missing-recovery.js +41 -0
  243. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-aggregate.d.ts +7 -0
  244. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-aggregate.js +9 -0
  245. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-artifacts.d.ts +12 -0
  246. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-artifacts.js +104 -0
  247. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-fields.d.ts +13 -1
  248. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-fields.js +65 -9
  249. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-verdicts.js +5 -1
  250. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.d.ts +4 -2
  251. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.js +72 -117
  252. package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.d.ts +2 -0
  253. package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.js +25 -13
  254. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/factory.d.ts +2 -0
  255. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/factory.js +157 -0
  256. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/manifest.d.ts +381 -0
  257. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/manifest.js +127 -0
  258. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/types.d.ts +130 -0
  259. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/types.js +1 -0
  260. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk.d.ts +3 -0
  261. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk.js +3 -0
  262. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-budget-io.d.ts +5 -0
  263. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-budget-io.js +67 -0
  264. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.d.ts +7 -1
  265. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.js +188 -59
  266. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-role-guard.d.ts +2 -0
  267. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-role-guard.js +22 -0
  268. package/packages/omo-codex/plugin/components/ulw-loop/dist/state-lock.d.ts +19 -0
  269. package/packages/omo-codex/plugin/components/ulw-loop/dist/state-lock.js +259 -0
  270. package/packages/omo-codex/plugin/components/ulw-loop/dist/status-next-actions.d.ts +7 -0
  271. package/packages/omo-codex/plugin/components/ulw-loop/dist/status-next-actions.js +41 -0
  272. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-batch.js +4 -4
  273. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-mutations.d.ts +3 -2
  274. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-mutations.js +4 -4
  275. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-types.d.ts +9 -1
  276. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering.d.ts +3 -2
  277. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering.js +11 -11
  278. package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +28 -23
  279. package/packages/omo-codex/plugin/components/ulw-loop/dist/success-criteria-input.d.ts +9 -0
  280. package/packages/omo-codex/plugin/components/ulw-loop/dist/success-criteria-input.js +41 -0
  281. package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.d.ts +19 -0
  282. package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.js +75 -0
  283. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +18 -5
  284. package/packages/omo-codex/plugin/components/ulw-loop/package.json +6 -6
  285. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +7 -2
  286. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +5 -3
  287. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +34 -11
  288. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-codex-validation.ts +52 -0
  289. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-continuation.ts +8 -6
  290. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-reconciliation.ts +5 -98
  291. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-template.ts +134 -0
  292. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +59 -77
  293. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-arg-parser.ts +10 -4
  294. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-commands.ts +24 -8
  295. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-output.ts +14 -1
  296. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-subcommands.ts +52 -46
  297. package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +8 -6
  298. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +35 -7
  299. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-snapshot.ts +51 -33
  300. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +3 -1
  301. package/packages/omo-codex/plugin/components/ulw-loop/src/constants.ts +1 -0
  302. package/packages/omo-codex/plugin/components/ulw-loop/src/domain-types.ts +27 -9
  303. package/packages/omo-codex/plugin/components/ulw-loop/src/driver-objective-ack.ts +20 -0
  304. package/packages/omo-codex/plugin/components/ulw-loop/src/evidence-artifacts.ts +45 -0
  305. package/packages/omo-codex/plugin/components/ulw-loop/src/evidence.ts +23 -16
  306. package/packages/omo-codex/plugin/components/ulw-loop/src/ledger.ts +38 -0
  307. package/packages/omo-codex/plugin/components/ulw-loop/src/paths.ts +32 -4
  308. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-commit.ts +132 -0
  309. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-crud.ts +67 -54
  310. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-goal-factory.ts +63 -31
  311. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-io.ts +140 -119
  312. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-log.ts +112 -0
  313. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-missing-recovery.ts +61 -0
  314. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-aggregate.ts +11 -0
  315. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-artifacts.ts +123 -0
  316. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-fields.ts +71 -15
  317. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-verdicts.ts +6 -1
  318. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate.ts +92 -136
  319. package/packages/omo-codex/plugin/components/ulw-loop/src/review-blockers.ts +38 -13
  320. package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/factory.ts +218 -0
  321. package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/manifest.ts +156 -0
  322. package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/types.ts +143 -0
  323. package/packages/omo-codex/plugin/components/ulw-loop/src/sdk.ts +3 -0
  324. package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-budget-io.ts +59 -0
  325. package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-guard.ts +196 -52
  326. package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-role-guard.ts +22 -0
  327. package/packages/omo-codex/plugin/components/ulw-loop/src/state-lock.ts +257 -0
  328. package/packages/omo-codex/plugin/components/ulw-loop/src/status-next-actions.ts +45 -0
  329. package/packages/omo-codex/plugin/components/ulw-loop/src/steering-batch.ts +4 -4
  330. package/packages/omo-codex/plugin/components/ulw-loop/src/steering-mutations.ts +5 -4
  331. package/packages/omo-codex/plugin/components/ulw-loop/src/steering-types.ts +13 -1
  332. package/packages/omo-codex/plugin/components/ulw-loop/src/steering.ts +12 -10
  333. package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +27 -22
  334. package/packages/omo-codex/plugin/components/ulw-loop/src/success-criteria-input.ts +56 -0
  335. package/packages/omo-codex/plugin/components/ulw-loop/src/surface.ts +107 -0
  336. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-continuation.test.ts +0 -1
  337. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-final.test.ts +131 -82
  338. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-template.test.ts +147 -0
  339. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint.test.ts +16 -22
  340. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-checkpoint-continuation.test.ts +4 -2
  341. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-checkpoint.test.ts +31 -2
  342. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-commands.test.ts +2 -0
  343. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-complete-goals.test.ts +3 -1
  344. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-create-goals.test.ts +35 -8
  345. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-entrypoint.test.ts +38 -4
  346. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-json-errors.test.ts +27 -0
  347. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-scope-required.test.ts +144 -0
  348. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-status-next-actions.test.ts +185 -0
  349. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-steering-batch.test.ts +8 -3
  350. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-validation-batch.test.ts +6 -0
  351. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +37 -2
  352. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-snapshot.test.ts +88 -11
  353. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +0 -3
  354. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/barrier.ts +13 -0
  355. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/cli-session.ts +4 -0
  356. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-child.ts +65 -0
  357. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-cli-qa.mjs +76 -0
  358. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-crash.ts +23 -0
  359. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-mutations.mjs +58 -0
  360. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-writer.ts +65 -0
  361. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/lease-clock.ts +23 -0
  362. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/quality-gate-builder.ts +9 -4
  363. package/packages/omo-codex/plugin/components/ulw-loop/test/guided-recovery.test.ts +67 -0
  364. package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +5 -37
  365. package/packages/omo-codex/plugin/components/ulw-loop/test/paths.test.ts +9 -0
  366. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-commit-log.test.ts +252 -0
  367. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-commit-recovery.test.ts +190 -0
  368. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-io-cross-process.test.ts +106 -0
  369. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-io.test.ts +74 -25
  370. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-log-legacy-projection.test.ts +228 -0
  371. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-log-newest.test.ts +72 -0
  372. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-aggregate-basics.test.ts +258 -0
  373. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-cap-and-dedupe.test.ts +22 -0
  374. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-fields-messages.test.ts +98 -0
  375. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-lazycodex-surface.test.ts +93 -0
  376. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-poisoning-cascades.test.ts +97 -0
  377. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-roles.test.ts +51 -2
  378. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-senpi-surface.test.ts +131 -0
  379. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-single-report.test.ts +241 -0
  380. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate.test.ts +58 -3
  381. package/packages/omo-codex/plugin/components/ulw-loop/test/review-blockers.test.ts +9 -7
  382. package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-completed-plan.test.ts +43 -0
  383. package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-contract.test.ts +137 -0
  384. package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-driver-states.test.ts +174 -0
  385. package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-dx.test.ts +219 -0
  386. package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-session-context.test.ts +169 -0
  387. package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-guard.test.ts +450 -7
  388. package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-role-matrix.test.ts +113 -0
  389. package/packages/omo-codex/plugin/components/ulw-loop/test/state-lock.test.ts +310 -0
  390. package/packages/omo-codex/plugin/components/ulw-loop/test/status-next-actions-surface.test.ts +133 -0
  391. package/packages/omo-codex/plugin/components/ulw-loop/test/steering-batch.test.ts +12 -12
  392. package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +12 -6
  393. package/packages/omo-codex/plugin/components/ulw-loop/test/stop-resume-hook.test.ts +1 -1
  394. package/packages/omo-codex/plugin/components/ulw-loop/test/surface.test.ts +74 -0
  395. package/packages/omo-codex/plugin/components/ulw-loop/test/ultrawork-directive.test.ts +13 -8
  396. package/packages/omo-codex/plugin/components/ulw-loop/vitest.config.ts +1 -0
  397. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  398. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  399. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  400. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  401. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  402. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  403. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  404. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +18 -0
  405. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  406. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  407. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  408. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  409. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  410. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  411. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  412. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +17 -0
  413. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  414. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  415. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  416. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  417. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  418. package/packages/omo-codex/plugin/model-catalog.json +16 -7
  419. package/packages/omo-codex/plugin/package-lock.json +676 -524
  420. package/packages/omo-codex/plugin/package.json +2 -3
  421. package/packages/omo-codex/plugin/scripts/AGENTS.md +39 -0
  422. package/packages/omo-codex/plugin/scripts/auto-update-plan.mjs +1 -2
  423. package/packages/omo-codex/plugin/scripts/auto-update.mjs +0 -9
  424. package/packages/omo-codex/plugin/scripts/canonical-ultrawork-directive.mjs +17 -0
  425. package/packages/omo-codex/plugin/scripts/hook-status-message.mjs +0 -1
  426. package/packages/omo-codex/plugin/scripts/migrate-codex-config/catalog.mjs +16 -7
  427. package/packages/omo-codex/plugin/scripts/migrate-codex-config/multi-agent-v2-guard.mjs +8 -4
  428. package/packages/omo-codex/plugin/scripts/migrate-codex-config/subagent-limit-guard.mjs +19 -90
  429. package/packages/omo-codex/plugin/scripts/migrate-codex-config/toml-section-editor.mjs +1 -1
  430. package/packages/omo-codex/plugin/scripts/sync-skills.d.mts +4 -0
  431. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +111 -64
  432. package/packages/omo-codex/plugin/shared/package.json +3 -4
  433. package/packages/omo-codex/plugin/shared/src/config-loader.ts +2 -102
  434. package/packages/omo-codex/plugin/shared/src/config-migration.ts +0 -1
  435. package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +41 -130
  436. package/packages/omo-codex/plugin/skills/ast-grep/AGENTS.md +51 -0
  437. package/packages/omo-codex/plugin/skills/ast-grep/SKILL.md +13 -1
  438. package/packages/omo-codex/plugin/skills/coding-agent-sessions/AGENTS.md +62 -0
  439. package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +1 -1
  440. package/packages/omo-codex/plugin/skills/data-scientist/SKILL.md +99 -239
  441. package/packages/omo-codex/plugin/skills/data-scientist/references/execution-surfaces.md +91 -0
  442. package/packages/omo-codex/plugin/skills/data-scientist/references/placement.md +74 -0
  443. package/packages/omo-codex/plugin/skills/data-scientist/references/polars-lane.md +95 -0
  444. package/packages/omo-codex/plugin/skills/data-scientist/references/uv-setup.md +1 -1
  445. package/packages/omo-codex/plugin/skills/data-scientist/references/visualization.md +64 -0
  446. package/packages/omo-codex/plugin/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
  447. package/packages/omo-codex/plugin/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
  448. package/packages/omo-codex/plugin/skills/debugging/SKILL.md +3 -1
  449. package/packages/omo-codex/plugin/skills/debugging/references/methodology/00-setup.md +12 -0
  450. package/packages/omo-codex/plugin/skills/debugging/references/methodology/02-investigate.md +21 -0
  451. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/go.md +15 -1
  452. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/native-binary.md +38 -0
  453. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/node.md +25 -0
  454. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/python.md +13 -0
  455. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/rust.md +41 -0
  456. package/packages/omo-codex/plugin/skills/debugging/references/scripts/dap.mjs +267 -0
  457. package/packages/omo-codex/plugin/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  458. package/packages/omo-codex/plugin/skills/debugging/references/tools/dap.md +103 -0
  459. package/packages/omo-codex/plugin/skills/debugging/references/tools/frida.md +193 -0
  460. package/packages/omo-codex/plugin/skills/debugging/references/tools/playwright-cli.md +79 -161
  461. package/packages/omo-codex/plugin/skills/frontend/ATTRIBUTION.md +10 -0
  462. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +16 -9
  463. package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +10 -2
  464. package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +2 -0
  465. package/packages/omo-codex/plugin/skills/frontend/references/design/ambience-skill.md +145 -0
  466. package/packages/omo-codex/plugin/skills/frontend/references/design/aside.md +1 -1
  467. package/packages/omo-codex/plugin/skills/frontend/references/design/clone-from-url.md +1 -1
  468. package/packages/omo-codex/plugin/skills/frontend/references/design/interaction-skill.md +2 -0
  469. package/packages/omo-codex/plugin/skills/frontend/references/design/print-paged-media.md +76 -0
  470. package/packages/omo-codex/plugin/skills/frontend/references/design/stylegallery.md +80 -0
  471. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/README.md +1 -1
  472. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  473. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  474. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  475. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/orchestration.md +1 -1
  476. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/routing.md +5 -5
  477. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/lighthouse-audit.py +2 -2
  478. package/packages/omo-codex/plugin/skills/git-master/SKILL.md +1 -1
  479. package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +20 -18
  480. package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +4 -2
  481. package/packages/omo-codex/plugin/skills/lsp-setup/SKILL.md +1 -1
  482. package/packages/omo-codex/plugin/skills/programming/SKILL.md +1 -1
  483. package/packages/omo-codex/plugin/skills/refactor/SKILL.md +10 -8
  484. package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +7 -5
  485. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +116 -424
  486. package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +32 -86
  487. package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +32 -27
  488. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +111 -0
  489. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +2 -2
  490. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/playwright_mobile_chrome.js +5 -2
  491. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/playwright_real_chrome.js +8 -6
  492. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_playwright_stealth.py +86 -0
  493. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_playwright_templates.py +4 -7
  494. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +86 -95
  495. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +18 -5
  496. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/playwright.md +16 -13
  497. package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/extract_cookies.py +3 -3
  498. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +44 -27
  499. package/packages/omo-codex/plugin/skills/{start-work → ulw-execute}/SKILL.md +32 -34
  500. package/packages/omo-codex/plugin/skills/ulw-execute/agents/openai.yaml +2 -0
  501. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +31 -2
  502. package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +5 -3
  503. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +34 -11
  504. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +6 -7
  505. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +31 -7
  506. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +2 -1
  507. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +5 -5
  508. package/packages/omo-codex/plugin/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -0
  509. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +14 -7
  510. package/packages/omo-codex/plugin/skills/visual-qa/AGENTS.md +58 -0
  511. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +10 -7
  512. package/packages/omo-codex/plugin/skills/visual-qa/references/browser-setup.md +75 -0
  513. package/packages/omo-codex/plugin/test/AGENTS.md +47 -0
  514. package/packages/omo-codex/plugin/test/aggregate-agents.test.mjs +19 -173
  515. package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +16 -51
  516. package/packages/omo-codex/plugin/test/aggregate-manifest.test.mjs +2 -3
  517. package/packages/omo-codex/plugin/test/aggregate-mcp.test.mjs +2 -7
  518. package/packages/omo-codex/plugin/test/aggregate-model-catalog.test.mjs +14 -4
  519. package/packages/omo-codex/plugin/test/aggregate-plugin-fixture.mjs +175 -13
  520. package/packages/omo-codex/plugin/test/aggregate.test.mjs +78 -2
  521. package/packages/omo-codex/plugin/test/auto-update-release-notes.test.mjs +19 -33
  522. package/packages/omo-codex/plugin/test/auto-update.test.mjs +4 -29
  523. package/packages/omo-codex/plugin/test/bootstrap-default-role.test.mjs +66 -0
  524. package/packages/omo-codex/plugin/test/bootstrap-setup.test.mjs +0 -31
  525. package/packages/omo-codex/plugin/test/canonical-ultrawork-directive.test.mjs +53 -0
  526. package/packages/omo-codex/plugin/test/component-bin-names.test.mjs +2 -2
  527. package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +1 -51
  528. package/packages/omo-codex/plugin/test/component-hook-contract-cases.mjs +100 -2
  529. package/packages/omo-codex/plugin/test/hook-status-message.test.mjs +5 -6
  530. package/packages/omo-codex/plugin/test/lcx-contribute-bug-fix-template.test.mjs +21 -27
  531. package/packages/omo-codex/plugin/test/mcp-research-servers.test.mjs +1 -3
  532. package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +35 -35
  533. package/packages/omo-codex/plugin/test/multi-agent-v2-regression.test.mjs +1 -1
  534. package/packages/omo-codex/plugin/test/scaffold-plan.test.mjs +0 -36
  535. package/packages/omo-codex/plugin/test/subagent-limit-migration.test.mjs +107 -15
  536. package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +168 -0
  537. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +54 -24
  538. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +18 -119
  539. package/packages/omo-codex/plugin/test/teammode-archive-ambiguity.test.mjs +0 -40
  540. package/packages/omo-codex/plugin/test/teammode-communication.test.mjs +6 -62
  541. package/packages/omo-codex/plugin/test/teammode-thread-links.test.mjs +3 -36
  542. package/packages/omo-codex/plugin/test/teammode-transport.test.mjs +0 -44
  543. package/packages/omo-codex/plugin/test/teammode-worktree.test.mjs +2 -6
  544. package/packages/omo-codex/plugin/test/ultrawork-skill-pointer.test.mjs +5 -5
  545. package/packages/omo-codex/plugin/test/ulw-plan-review-state-contract.test.mjs +0 -3
  546. package/packages/omo-codex/scripts/install-dist/install-local.mjs +9659 -1394
  547. package/packages/{omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md → prompts-core/prompts/ultrawork/codex.md} +44 -34
  548. package/packages/shared-skills/package.json +7 -1
  549. package/packages/shared-skills/skill-source-filter.d.ts +16 -0
  550. package/packages/shared-skills/skill-source-filter.mjs +44 -0
  551. package/packages/shared-skills/skills/ast-grep/AGENTS.md +51 -0
  552. package/packages/shared-skills/skills/ast-grep/SKILL.md +13 -1
  553. package/packages/shared-skills/skills/coding-agent-sessions/AGENTS.md +62 -0
  554. package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +1 -1
  555. package/packages/shared-skills/skills/data-scientist/SKILL.md +99 -239
  556. package/packages/shared-skills/skills/data-scientist/references/execution-surfaces.md +91 -0
  557. package/packages/shared-skills/skills/data-scientist/references/placement.md +74 -0
  558. package/packages/shared-skills/skills/data-scientist/references/polars-lane.md +95 -0
  559. package/packages/shared-skills/skills/data-scientist/references/uv-setup.md +1 -1
  560. package/packages/shared-skills/skills/data-scientist/references/visualization.md +64 -0
  561. package/packages/shared-skills/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
  562. package/packages/shared-skills/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
  563. package/packages/shared-skills/skills/debugging/SKILL.md +3 -1
  564. package/packages/shared-skills/skills/debugging/references/methodology/00-setup.md +12 -0
  565. package/packages/shared-skills/skills/debugging/references/methodology/02-investigate.md +21 -0
  566. package/packages/shared-skills/skills/debugging/references/runtimes/go.md +15 -1
  567. package/packages/shared-skills/skills/debugging/references/runtimes/native-binary.md +38 -0
  568. package/packages/shared-skills/skills/debugging/references/runtimes/node.md +25 -0
  569. package/packages/shared-skills/skills/debugging/references/runtimes/python.md +13 -0
  570. package/packages/shared-skills/skills/debugging/references/runtimes/rust.md +41 -0
  571. package/packages/shared-skills/skills/debugging/references/scripts/dap.mjs +267 -0
  572. package/packages/shared-skills/skills/debugging/references/scripts/dap.test.ts +86 -0
  573. package/packages/shared-skills/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  574. package/packages/shared-skills/skills/debugging/references/tools/dap.md +103 -0
  575. package/packages/shared-skills/skills/debugging/references/tools/frida.md +193 -0
  576. package/packages/shared-skills/skills/debugging/references/tools/playwright-cli.md +79 -161
  577. package/packages/shared-skills/skills/frontend/ATTRIBUTION.md +10 -0
  578. package/packages/shared-skills/skills/frontend/SKILL.md +16 -9
  579. package/packages/shared-skills/skills/frontend/references/design/README.md +10 -2
  580. package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +2 -0
  581. package/packages/shared-skills/skills/frontend/references/design/ambience-skill.md +145 -0
  582. package/packages/shared-skills/skills/frontend/references/design/aside.md +1 -1
  583. package/packages/shared-skills/skills/frontend/references/design/clone-from-url.md +1 -1
  584. package/packages/shared-skills/skills/frontend/references/design/interaction-skill.md +2 -0
  585. package/packages/shared-skills/skills/frontend/references/design/print-paged-media.md +76 -0
  586. package/packages/shared-skills/skills/frontend/references/design/stylegallery.md +80 -0
  587. package/packages/shared-skills/skills/frontend/references/designpowers/README.md +1 -1
  588. package/packages/shared-skills/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  589. package/packages/shared-skills/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  590. package/packages/shared-skills/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  591. package/packages/shared-skills/skills/frontend/references/designpowers/orchestration.md +1 -1
  592. package/packages/shared-skills/skills/frontend/references/designpowers/routing.md +5 -5
  593. package/packages/shared-skills/skills/frontend/scripts/perfection/lighthouse-audit.py +2 -2
  594. package/packages/shared-skills/skills/git-master/SKILL.md +1 -1
  595. package/packages/shared-skills/skills/init-deep/SKILL.md +14 -14
  596. package/packages/shared-skills/skills/lsp-setup/SKILL.md +1 -1
  597. package/packages/shared-skills/skills/programming/SKILL.md +1 -1
  598. package/packages/shared-skills/skills/refactor/SKILL.md +4 -4
  599. package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +1 -1
  600. package/packages/shared-skills/skills/review-work/SKILL.md +101 -419
  601. package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +32 -86
  602. package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +32 -27
  603. package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +111 -0
  604. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +2 -2
  605. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/playwright_mobile_chrome.js +5 -2
  606. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/playwright_real_chrome.js +8 -6
  607. package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_playwright_stealth.py +86 -0
  608. package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_playwright_templates.py +4 -7
  609. package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +86 -95
  610. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +18 -5
  611. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/playwright.md +16 -13
  612. package/packages/shared-skills/skills/ultimate-browsing/scripts/extract_cookies.py +3 -3
  613. package/packages/shared-skills/skills/{start-work → ulw-execute}/SKILL.md +21 -20
  614. package/packages/shared-skills/skills/ulw-plan/SKILL.md +7 -8
  615. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +32 -7
  616. package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +2 -1
  617. package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +5 -5
  618. package/packages/shared-skills/skills/ulw-plan/scripts/scaffold-plan.mjs +2 -1
  619. package/packages/shared-skills/skills/ulw-research/SKILL.md +8 -3
  620. package/packages/shared-skills/skills/visual-qa/AGENTS.md +58 -0
  621. package/packages/shared-skills/skills/visual-qa/SKILL.md +4 -3
  622. package/packages/shared-skills/skills/visual-qa/references/browser-setup.md +75 -0
  623. package/script/qa/web-terminal-visual-qa.mjs +2 -0
  624. package/script/qa/xterm-live-terminal.mjs +18 -2
  625. package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.d.ts +0 -1
  626. package/packages/lsp-tools-mcp/dist/lsp/constants.d.ts +0 -1
  627. package/packages/lsp-tools-mcp/dist/lsp/language-mappings.d.ts +0 -1
  628. package/packages/lsp-tools-mcp/dist/lsp/process-signal-cleanup.d.ts +0 -1
  629. package/packages/lsp-tools-mcp/dist/missing-dependency-result.d.ts +0 -1
  630. package/packages/omo-codex/plugin/components/codegraph/AGENTS.md +0 -58
  631. package/packages/omo-codex/plugin/components/codegraph/NODE-RUNTIME-LICENSES.md +0 -2951
  632. package/packages/omo-codex/plugin/components/codegraph/NOTICE +0 -16
  633. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +0 -12222
  634. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +0 -9820
  635. package/packages/omo-codex/plugin/components/codegraph/package.json +0 -33
  636. package/packages/omo-codex/plugin/components/codegraph/src/cache-gc.ts +0 -29
  637. package/packages/omo-codex/plugin/components/codegraph/src/cli.ts +0 -79
  638. package/packages/omo-codex/plugin/components/codegraph/src/hook-input.ts +0 -33
  639. package/packages/omo-codex/plugin/components/codegraph/src/hook-sweep.ts +0 -25
  640. package/packages/omo-codex/plugin/components/codegraph/src/hook-types.ts +0 -131
  641. package/packages/omo-codex/plugin/components/codegraph/src/hook.ts +0 -258
  642. package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +0 -309
  643. package/packages/omo-codex/plugin/components/codegraph/src/mcp-unavailable.ts +0 -80
  644. package/packages/omo-codex/plugin/components/codegraph/src/post-tool-use-hook.ts +0 -34
  645. package/packages/omo-codex/plugin/components/codegraph/src/serve-invocation.ts +0 -29
  646. package/packages/omo-codex/plugin/components/codegraph/src/serve.ts +0 -263
  647. package/packages/omo-codex/plugin/components/codegraph/src/session-start-command.ts +0 -106
  648. package/packages/omo-codex/plugin/components/codegraph/src/session-start-cooldown.ts +0 -145
  649. package/packages/omo-codex/plugin/components/codegraph/src/session-start-hook-runtime.ts +0 -21
  650. package/packages/omo-codex/plugin/components/codegraph/src/session-start-lock.ts +0 -139
  651. package/packages/omo-codex/plugin/components/codegraph/src/session-start-outcome.ts +0 -15
  652. package/packages/omo-codex/plugin/components/codegraph/src/session-start-paths.ts +0 -32
  653. package/packages/omo-codex/plugin/components/codegraph/src/session-start-project.ts +0 -109
  654. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker-result.ts +0 -148
  655. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker.ts +0 -175
  656. package/packages/omo-codex/plugin/components/codegraph/src/sweep-cli.ts +0 -81
  657. package/packages/omo-codex/plugin/components/codegraph/test/cache-gc.test.ts +0 -34
  658. package/packages/omo-codex/plugin/components/codegraph/test/hook-exclusion.test.ts +0 -112
  659. package/packages/omo-codex/plugin/components/codegraph/test/hook-registration.test.ts +0 -26
  660. package/packages/omo-codex/plugin/components/codegraph/test/hook-session-start-guard.test.ts +0 -160
  661. package/packages/omo-codex/plugin/components/codegraph/test/hook-store-upgrade.test.ts +0 -50
  662. package/packages/omo-codex/plugin/components/codegraph/test/hook-sweep.test.ts +0 -29
  663. package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +0 -320
  664. package/packages/omo-codex/plugin/components/codegraph/test/mcp-bridge-fixtures.ts +0 -172
  665. package/packages/omo-codex/plugin/components/codegraph/test/package-runtime.test.ts +0 -91
  666. package/packages/omo-codex/plugin/components/codegraph/test/provisioned-node-guard.test.ts +0 -100
  667. package/packages/omo-codex/plugin/components/codegraph/test/serve-built-wrapper.test.ts +0 -76
  668. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge-lifecycle.test.ts +0 -133
  669. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge.test.ts +0 -245
  670. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-facade.test.ts +0 -69
  671. package/packages/omo-codex/plugin/components/codegraph/test/serve-node-support.test.ts +0 -43
  672. package/packages/omo-codex/plugin/components/codegraph/test/serve-provision.test.ts +0 -147
  673. package/packages/omo-codex/plugin/components/codegraph/test/serve-unavailable.test.ts +0 -175
  674. package/packages/omo-codex/plugin/components/codegraph/test/serve.test.ts +0 -385
  675. package/packages/omo-codex/plugin/components/codegraph/test/session-start-node-support.test.ts +0 -206
  676. package/packages/omo-codex/plugin/components/codegraph/test/session-start-project.test.ts +0 -58
  677. package/packages/omo-codex/plugin/components/codegraph/test/session-start-state.test.ts +0 -104
  678. package/packages/omo-codex/plugin/components/codegraph/test/session-start-trust-boundary.test.ts +0 -65
  679. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-availability.test.ts +0 -106
  680. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-cooldown.test.ts +0 -116
  681. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-flow.test.ts +0 -258
  682. package/packages/omo-codex/plugin/components/codegraph/test/sweep-cli.test.ts +0 -56
  683. package/packages/omo-codex/plugin/components/codegraph/tsconfig.build.json +0 -13
  684. package/packages/omo-codex/plugin/components/codegraph/tsconfig.json +0 -25
  685. package/packages/omo-codex/plugin/components/start-work-continuation/LICENSE +0 -21
  686. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +0 -28
  687. package/packages/omo-codex/plugin/components/ultrawork/directive.md +0 -477
  688. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +0 -18
  689. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +0 -17
  690. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +0 -17
  691. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +0 -17
  692. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/editor.mjs +0 -125
  693. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/jsonc.mjs +0 -43
  694. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/scaffold.mjs +0 -29
  695. package/packages/omo-codex/plugin/scripts/migrate-omo-sot.mjs +0 -121
  696. package/packages/omo-codex/plugin/skills/data-scientist/references/common-scenarios.md +0 -176
  697. package/packages/omo-codex/plugin/skills/data-scientist/references/execution-templates.md +0 -197
  698. package/packages/omo-codex/plugin/skills/data-scientist/references/integration-patterns.md +0 -153
  699. package/packages/omo-codex/plugin/skills/data-scientist/references/performance-benchmarks.md +0 -37
  700. package/packages/omo-codex/plugin/skills/start-work/agents/openai.yaml +0 -2
  701. package/packages/omo-codex/plugin/skills/visual-qa/references/agent-browser-setup.md +0 -45
  702. package/packages/omo-codex/plugin/test/aggregate-skills.test.mjs +0 -92
  703. package/packages/omo-codex/plugin/test/component-codegraph-mcp-smoke.test.mjs +0 -76
  704. package/packages/omo-codex/plugin/test/migrate-omo-sot.test.mjs +0 -179
  705. package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +0 -314
  706. package/packages/omo-codex/plugin/test/ulw-plan-scope-contract.test.mjs +0 -24
  707. package/packages/shared-skills/skills/data-scientist/references/common-scenarios.md +0 -176
  708. package/packages/shared-skills/skills/data-scientist/references/execution-templates.md +0 -197
  709. package/packages/shared-skills/skills/data-scientist/references/integration-patterns.md +0 -153
  710. package/packages/shared-skills/skills/data-scientist/references/performance-benchmarks.md +0 -37
  711. package/packages/shared-skills/skills/visual-qa/references/agent-browser-setup.md +0 -45
  712. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/.gitattributes +0 -0
  713. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/CHANGELOG.md +0 -0
  714. /package/packages/omo-codex/plugin/components/{codegraph → ulw-execute-continuation}/LICENSE +0 -0
  715. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/plan-checklist.ts +0 -0
  716. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-completed.json +0 -0
  717. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-mixed-platforms.json +0 -0
  718. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-single-codex-work.json +0 -0
  719. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-all-done.md +0 -0
  720. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-scaffold.md +0 -0
  721. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-nested-checkboxes.md +0 -0
  722. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-unchecked.md +0 -0
  723. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.build.json +0 -0
  724. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.json +0 -0
  725. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/vitest.config.ts +0 -0
@@ -1,6 +1,6 @@
1
- # codex-start-work-continuation
1
+ # codex-ulw-execute-continuation
2
2
 
3
- Codex Stop-hook continuation injector for the omo-codex `start-work` skill.
3
+ Codex Stop-hook continuation injector for the omo-codex `ulw-execute` skill.
4
4
 
5
5
  It reads `.omo/boulder.json` in the hook payload `cwd`, resolves the active work, inspects the active plan's top-level checklist, and emits Codex Stop-hook JSON while the plan still has unchecked tasks or its final review/debugging gate remains pending:
6
6
 
@@ -8,13 +8,13 @@ It reads `.omo/boulder.json` in the hook payload `cwd`, resolves the active work
8
8
  {"decision":"block","reason":"<directive>"}
9
9
  ```
10
10
 
11
- The `reason` is loaded from `directive.md` on every invocation and filled with current plan state. The hook returns no output when `stop_hook_active` is `true`, when `last_assistant_message` starts with `<start-work-blocked-external>` (or places it immediately after the mandatory `ULTRAWORK MODE ENABLED!` opener), when no active Boulder work exists, when the work is completed, when the active work is not tied to `codex:<session_id>`, or when the plan has no readable top-level checklist. An active plan whose checklist is fully checked still blocks Stop until the final gate runs and Boulder is marked completed.
11
+ The `reason` is loaded from `directive.md` on every invocation and filled with current plan state. The hook returns no output when `stop_hook_active` is `true`, when `last_assistant_message` starts with `<ulw-execute-blocked-external>` (or places it immediately after the mandatory `ULTRAWORK MODE ENABLED!` opener), when no active Boulder work exists, when the work is completed, when the active work is not tied to `codex:<session_id>`, or when the plan has no readable top-level checklist. An active plan whose checklist is fully checked still blocks Stop until the final gate runs and Boulder is marked completed. SubagentStop is deliberately de-wired: the compatibility CLI subcommand returns no output and never injects a root plan.
12
12
 
13
13
  ## External blocker escape hatch
14
14
 
15
- A plan can stall on something no amount of retrying fixes: a missing credential, missing hardware, a revoked authorization, an unavailable third-party service. `directive.md` instructs the agent to write `<start-work-blocked-external>` as the entire first line of its answer in that case, or as the entire second line when ultrawork's mandatory opener occupies the first. The hook recognizes those structural forms and lets the turn end so the user can act, instead of continuing the same unchanged external-state check forever. Merely discussing the marker later in an answer still continues the plan.
15
+ A plan can stall on something no amount of retrying fixes: a missing credential, missing hardware, a revoked authorization, an unavailable third-party service. `directive.md` instructs the agent to write `<ulw-execute-blocked-external>` as the entire first line of its answer in that case, or as the entire second line when ultrawork's mandatory opener occupies the first. The hook recognizes those structural forms and lets the turn end so the user can act, instead of continuing the same unchanged external-state check forever. Merely discussing the marker later in an answer still continues the plan.
16
16
 
17
- This pairs with the `start-work` skill at `plugin/skills/start-work/SKILL.md`. That skill writes `.omo/boulder.json` with Codex session ids prefixed as `codex:` so the hook can continue only its own active Codex session.
17
+ This pairs with the `ulw-execute` skill at `plugin/skills/ulw-execute/SKILL.md`. That skill writes `.omo/boulder.json` with Codex session ids prefixed as `codex:` so the hook can continue only its own active Codex session. The continuation gate performs self-review and own manual QA by default; it escalates to one gate reviewer only when the user explicitly demands strict, rigorous, or high-accuracy review.
18
18
 
19
19
  ## Counted plan checkboxes
20
20
 
@@ -48,7 +48,7 @@ echo "$PAYLOAD_LOOP" | node dist/cli.js hook stop
48
48
  rm -rf "$TMP"
49
49
  ```
50
50
 
51
- Expect the first command to print JSON containing `"decision":"block"`; expect the anti-loop command to print nothing.
51
+ Expect the first command to print JSON containing `"decision":"block"`; expect the anti-loop command to print nothing. A `SubagentStop` payload passed to `hook subagent-stop` also prints nothing.
52
52
 
53
53
  ## License
54
54
 
@@ -1,9 +1,9 @@
1
1
  {
2
- "$schema": "https://biomejs.dev/schemas/2.4.15/schema.json",
2
+ "$schema": "https://biomejs.dev/schemas/2.5.9/schema.json",
3
3
  "linter": {
4
4
  "enabled": true,
5
5
  "rules": {
6
- "recommended": true,
6
+ "preset": "recommended",
7
7
  "style": {
8
8
  "noDefaultExport": "error",
9
9
  "noEnum": "error",
@@ -1,4 +1,4 @@
1
- <start-work-continuation>
1
+ <ulw-execute-continuation>
2
2
 
3
3
  You are mid-flight on a Prometheus work plan; this turn is an automatic continuation. Do NOT ask whether to continue — the contract is auto-continue until every top-level checkbox is `- [x]`.
4
4
 
@@ -17,11 +17,11 @@ You are mid-flight on a Prometheus work plan; this turn is an automatic continua
17
17
 
18
18
  1. Read `{{PLAN_PATH}}` AND `{{LEDGER_PATH}}` first — they are the only sources of truth for what remains and what evidence exists; do not trust your memory of prior turns.
19
19
  2. When the remaining count is `0`, skip checkbox execution and perform the Final gate now. Otherwise, pick the FIRST unchecked top-level checkbox in `## TODOs` or `## Final Verification Wave`. Ignore nested checkboxes under Acceptance Criteria / Evidence / Definition of Done.
20
- 3. Follow the `start-work` skill in full. The skill is already loaded from your earlier turn — re-read its file at `packages/omo-codex/plugin/skills/start-work/SKILL.md` if you have lost context.
21
- 4. Apply the checkbox's tier from its ledger entry, or classify it now per the start-work skill: LIGHT (default — a narrow change inside existing layers) needs one real-surface proof of the deliverable, with auxiliary surfaces first-class for CLI- or data-shaped work, and only trigger-mapped adversarial classes; HEAVY (new module/abstraction, auth/security, external integration, schema/migration, concurrency, cross-domain refactor, care signals) takes the full per-criterion regime. When unsure, take HEAVY; never downgrade.
20
+ 3. Follow the `ulw-execute` skill in full. The skill is already loaded from your earlier turn — re-read its file at `packages/omo-codex/plugin/skills/ulw-execute/SKILL.md` if you have lost context.
21
+ 4. Apply the checkbox's tier from its ledger entry, or classify it now per the ulw-execute skill: LIGHT (default — a narrow change inside existing layers) needs one real-surface proof of the deliverable, with auxiliary surfaces first-class for CLI- or data-shaped work, and only trigger-mapped adversarial classes; HEAVY (new module/abstraction, auth/security, external integration, schema/migration, concurrency, cross-domain refactor, care signals) takes the full per-criterion regime. When unsure, take HEAVY; never downgrade.
22
22
  5. Decompose the checkbox into atomic sub-tasks. Dispatch them in PARALLEL via `multi_agent_v1.spawn_agent` calls in this same response unless a sub-task has a NAMED blocking dependency (input from another sub-task or shared file). Use `fork_context: false` unless full history is truly required. Put role and specialty instructions inside `message`. Flat `spawn_agent` requiring `task_name` instead (`multi_agent_v2`)? Add `"task_name"`, use `fork_turns: "none"`, `wait_agent` takes only `timeout_ms`, finished agents end on their own.
23
- 6. Every sub-task message MUST be self-contained, executable, not a context handoff: start with `TASK: <imperative assignment>`, then name `DELIVERABLE`, `SCOPE`, and `VERIFY`. It must include all 7 sections and a Manual-QA channel with exact invocation (`curl`, `send-keys`, `browser:control-in-app-browser` action, `page.click`) and PASS/FAIL observable, plus ultraqa classes, artifact, and cleanup receipt. Channels: HTTP (`curl -i`); terminal/TUI (`send-keys` for boot smoke; xterm.js web terminal for color/visual evidence, never `tmux capture-pane`); browser (Codex: `browser:control-in-app-browser` first unless auth/persistent profile needed; else Chrome/agent-browser); computer use.
24
- 7. Treat every worker DoneClaim as untrusted input. Run independent AdversarialVerify before any checkbox can become FullyDone; `confirmed` is the only pass verdict, while `false-positive`, `needs-fix`, and `needs-human-review` loop back to the executor with exact feedback.
23
+ 6. Every sub-task message MUST be self-contained, executable, not a context handoff: start with `TASK: <imperative assignment>`, then name `DELIVERABLE`, `SCOPE`, and `VERIFY`. It must include all 7 sections and a Manual-QA channel with exact invocation (`curl`, `send-keys`, `browser:control-in-app-browser` action, `page.click`) and PASS/FAIL observable, plus ultraqa classes, artifact, and cleanup receipt. Channels: HTTP (`curl -i`); terminal/TUI (`send-keys` for boot smoke; xterm.js web terminal for color/visual evidence, never `tmux capture-pane`); browser (Codex: `browser:control-in-app-browser`; otherwise, or for Chrome semantics/stealth/trace/auth, write and run a `playwright-core` script from js eval with `channel: "chrome"`, persistent contexts on CLONED profiles only); computer use.
24
+ 7. Treat every worker DoneClaim as untrusted input. Run independent AdversarialVerify before any checkbox can become FullyDone; the main session may run AdversarialVerify when no separate reviewer is available. `confirmed` is the only pass verdict, while `false-positive`, `needs-fix`, and `needs-human-review` loop back to the executor with exact feedback.
25
25
  8. Use `multi_agent_v1.wait_agent` for mailbox signals, not proof of completion — a timeout only means no new mailbox update arrived; a running child is alive. For sub-tasks likely to exceed one wait cycle, require `WORKING: <task> - <current phase>` before long passes and `BLOCKED: <reason>` only when progress stops. Send `TASK STILL ACTIVE: return <deliverable> or BLOCKED: <reason>` only when the child is completed without the deliverable, ack-only, or no longer running. If that followup is still silent or ack-only, record inconclusive, do not count it as pass/review approval, close if safe, and respawn a smaller `fork_context: false` task with the missing deliverable.
26
26
  9. After verification of ALL sub-tasks under this checkbox: `apply_patch` the plan to change `- [ ]` → `- [x]`, re-read the plan to confirm the count decreased, append a `task-completed` line to the ledger, then continue.
27
27
  10. Do not start fresh on a sub-agent failure. Re-dispatch with a fix-message: `FAILED: <exact error>` + `Diagnosis: <observation>` + `Fix: <instruction>`.
@@ -32,7 +32,7 @@ You are mid-flight on a Prometheus work plan; this turn is an automatic continua
32
32
  - No `--dry-run` as evidence. No "should work". No "tests pass" as completion proof.
33
33
  - TUI visual evidence MUST render through the real xterm.js web terminal, never `tmux capture-pane`: run `node script/qa/web-terminal-visual-qa.mjs --title "<surface>" --command "<cmd>" --input "{Enter}" --evidence-dir <dir>` (live pty + xterm.js in Chrome; `--from-file <capture>` replays a raw stream), then cite `terminal.png`, `terminal.txt`, and `metadata.json`.
34
34
  - No `as any` / `@ts-ignore` / `@ts-expect-error`. No deleting failing tests.
35
- - Probe every ultraqa adversarial class whose trigger fact holds (malformed input, prompt injection, cancel/resume, stale state, dirty worktree, hung or long commands, flaky tests, misleading success output, repeated interruptions — trigger map in the start-work skill) and capture the observable for each. A clean happy-path artifact alone is NOT a PASS when an applicable class went unprobed; record skipped classes with a one-line not-applicable reason.
35
+ - Probe every ultraqa adversarial class whose trigger fact holds (malformed input, prompt injection, cancel/resume, stale state, dirty worktree, hung or long commands, flaky tests, misleading success output, repeated interruptions — trigger map in the ulw-execute skill) and capture the observable for each. A clean happy-path artifact alone is NOT a PASS when an applicable class went unprobed; record skipped classes with a one-line not-applicable reason.
36
36
  - Cleanup receipt is mandatory. Register each QA teardown (scripts, tmux, browser contexts, PIDs, ports, containers, temp dirs) as a todo when it spawns, then execute it. Leftover QA state = BLOCKED, not PASS.
37
37
  - The worktree path (if set in boulder.json) governs every file edit and command. Do not stray into the main repo.
38
38
  - PR or branch implementation/review/merge work requires a task-owned git worktree. Treat the main worktree as read-only context.
@@ -40,15 +40,15 @@ You are mid-flight on a Prometheus work plan; this turn is an automatic continua
40
40
 
41
41
  # Final gate
42
42
 
43
- Before completion, satisfy all five `review-work` lanes and a `debugging` runtime audit; inconclusive lanes or an inconclusive audit fail. Each pass binds to the exact full commit SHA it reviewed. Immediately append a durable task-evidence record to `{{LEDGER_PATH}}` for every passing lane and the debugging audit with its name, full SHA, verdict, and report artifact/source. Before same-SHA reuse after any continuation or compaction, re-read the ledger record and verify the exact lane/SHA pair; memory, chat history, or an unstamped report is not coverage. New commits require fresh applicable coverage. Do not create a PR, PR handoff, branch handoff, merge, or final completion answer until this gate passes. For PR/branch work, stay in the task-owned worktree: create/update the PR, wait for CI/review/Cubic gates, merge by default unless explicitly opted out, then clean up. After the gate and lifecycle pass, mark the Boulder work completed before the final answer. Redact secrets, tokens, credentials, auth headers, cookies, env dumps, logs, and PII. Honor the delivery mode recorded in the goal/ledger at session start: `--make-pr` hands off with the PR URL after the PR opens (merge only on explicit user ask); `--ship` keeps working until the PR is MERGED - CI and review gates fixed and addressed - then removes the worktree and syncs `.omo/` state back.
43
+ Before completion, run your own manual QA on the real surface and a self-review against every acceptance criterion; spawn ONE gate reviewer only when the user demanded strict/rigorous/high-accuracy review; run a `debugging` runtime audit only when a failure was observed. Record the observable evidence under `{{LEDGER_PATH}}`; when a reviewer is spawned, it is allowed at most once per sub-task. Do not create a PR, PR handoff, branch handoff, merge, or final completion answer until this gate passes. For PR/branch work, stay in the task-owned worktree: create/update the PR, wait for CI/review/Cubic gates, merge by default unless explicitly opted out, then clean up. After the gate and lifecycle pass, mark the Boulder work completed before the final answer. Redact secrets, tokens, credentials, auth headers, cookies, env dumps, logs, and PII. Honor the delivery mode recorded in the goal/ledger at session start: `--make-pr` hands off with the PR URL after the PR opens (merge only on explicit user ask); `--ship` keeps working until the PR is MERGED - CI and review gates fixed and addressed - then removes the worktree and syncs `.omo/` state back.
44
44
 
45
45
  # Stop conditions for THIS turn
46
46
 
47
47
  - A top-level checkbox flipped to `- [x]` after the 5-phase QA gate (Phase 1 read, Phase 2 automated, Phase 3 channel scenario, Phase 4 adversarial-class probing, Phase 5 gate decision). Then the Stop hook will re-evaluate; if more checkboxes remain you will be continued again.
48
- - A conclusive external blocker only the user or external state can clear (missing hardware, credential, authorization, or an unavailable service) → after ONE authoritative check, stop retrying and stop reviewer dispatch. Write `<start-work-blocked-external>` as the entire first line of your answer, then state the exact blocker and the observable condition that resumes the work. If ultrawork requires `ULTRAWORK MODE ENABLED!` as the first line, put the blocker marker alone on the second line instead. The Stop hook recognizes both forms and lets this turn end.
49
- - 3 same-failure cycles on one agent-controllable sub-task → escalate via `multi_agent_v1.spawn_agent({"message":"TASK: act as a rigorous reviewer. DELIVERABLE: diagnose the repeated sub-task failure and recommend the next safe action. VERIFY: cite the failing evidence.","fork_context":false})` and stop dispatch.
48
+ - A conclusive external blocker only the user or external state can clear (missing hardware, credential, authorization, or an unavailable service) → after ONE authoritative check, stop retrying and stop reviewer dispatch. Write `<ulw-execute-blocked-external>` as the entire first line of your answer, then state the exact blocker and the observable condition that resumes the work. If ultrawork requires `ULTRAWORK MODE ENABLED!` as the first line, put the blocker marker alone on the second line instead. The Stop hook recognizes both forms and lets this turn end.
49
+ - 3 materially different failed remediation approaches on one agent-controllable sub-task → spawn ONE rigorous reviewer at most once per sub-task; if still blocked, hand off with the external-blocker marker at `:48`.
50
50
  - Safety boundary (destructive command, secret exfiltration, production write) → stop and surface a safe substitute.
51
- - All top-level checkboxes `- [x]` AND the Global Review and Debugging Gate passed → print the ORCHESTRATION COMPLETE block and end.
51
+ - All top-level checkboxes `- [x]` AND the Final gate passed → print the ORCHESTRATION COMPLETE block and end.
52
52
 
53
53
  # Output discipline
54
54
 
@@ -57,4 +57,4 @@ Before completion, satisfy all five `review-work` lanes and a `debugging` runtim
57
57
 
58
58
  Begin now. If no checkbox remains, run the Final gate; otherwise pick the next checkbox, dispatch the parallel sub-agents, verify, mark, continue.
59
59
 
60
- </start-work-continuation>
60
+ </ulw-execute-continuation>
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- // components/start-work-continuation/src/cli.ts
3
+ // components/ulw-execute-continuation/src/cli.ts
4
4
  import { readFileSync as readFileSync4 } from "node:fs";
5
5
  import { stdin as processStdin, stdout as processStdout } from "node:process";
6
6
 
7
- // components/start-work-continuation/src/boulder-reader.ts
7
+ // components/ulw-execute-continuation/src/boulder-reader.ts
8
8
  import { existsSync as existsSync2, readFileSync as readFileSync2 } from "node:fs";
9
9
  import { isAbsolute, join, relative, resolve } from "node:path";
10
10
 
11
- // components/start-work-continuation/src/plan-checklist.ts
11
+ // components/ulw-execute-continuation/src/plan-checklist.ts
12
12
  import { existsSync, readFileSync } from "node:fs";
13
13
  var TODO_HEADING_PATTERN = /^##[ \t]+TODOs(?:[ \t]+#+)?[ \t]*$/i;
14
14
  var FINAL_VERIFICATION_HEADING_PATTERN = /^##[ \t]+Final Verification Wave(?:[ \t]+#+)?[ \t]*$/i;
@@ -153,7 +153,7 @@ function emptyChecklist() {
153
153
  return { completed: 0, remaining: 0, total: 0, nextTaskLabel: null };
154
154
  }
155
155
 
156
- // components/start-work-continuation/src/boulder-reader.ts
156
+ // components/ulw-execute-continuation/src/boulder-reader.ts
157
157
  var SESSION_ID_PREFIX_PATTERN = /^(codex|opencode):/;
158
158
  function readContinuationState(cwd, sessionId) {
159
159
  const boulderPath = getBoulderFilePath(cwd);
@@ -171,7 +171,7 @@ function readContinuationState(cwd, sessionId) {
171
171
  planName: work.planName,
172
172
  planPath,
173
173
  boulderPath,
174
- ledgerPath: join(cwd, ".omo", "start-work", "ledger.jsonl"),
174
+ ledgerPath: join(cwd, ".omo", "ulw-execute", "ledger.jsonl"),
175
175
  worktreePath: work.worktreePath ?? null,
176
176
  checklist
177
177
  };
@@ -297,11 +297,11 @@ function isRecord(value) {
297
297
  return typeof value === "object" && value !== null && !Array.isArray(value);
298
298
  }
299
299
 
300
- // components/start-work-continuation/src/directive.ts
300
+ // components/ulw-execute-continuation/src/directive.ts
301
301
  import { readFileSync as readFileSync3 } from "node:fs";
302
- var START_WORK_CONTINUATION_DIRECTIVE = readFileSync3(new URL("../directive.md", import.meta.url), "utf8");
302
+ var ULW_EXECUTE_CONTINUATION_DIRECTIVE = readFileSync3(new URL("../directive.md", import.meta.url), "utf8");
303
303
 
304
- // components/start-work-continuation/src/codex-hook.ts
304
+ // components/ulw-execute-continuation/src/codex-hook.ts
305
305
  function runStopHook(input, fs) {
306
306
  if (!isStopInput(input))
307
307
  return "";
@@ -333,13 +333,13 @@ function renderDirective(state, sessionId) {
333
333
  LEDGER_PATH: state.ledgerPath,
334
334
  SESSION_ID: sessionId
335
335
  };
336
- let rendered = START_WORK_CONTINUATION_DIRECTIVE;
336
+ let rendered = ULW_EXECUTE_CONTINUATION_DIRECTIVE;
337
337
  for (const [placeholder, value] of Object.entries(replacements)) {
338
338
  rendered = rendered.replaceAll(`{{${placeholder}}}`, value);
339
339
  }
340
340
  return rendered;
341
341
  }
342
- var EXTERNAL_BLOCKER_MARKER = "<start-work-blocked-external>";
342
+ var EXTERNAL_BLOCKER_MARKER = "<ulw-execute-blocked-external>";
343
343
  var ULTRAWORK_OPENER = "ULTRAWORK MODE ENABLED!";
344
344
  function hasAllowedExternalBlockerMarker(lastAssistantMessage) {
345
345
  if (lastAssistantMessage === undefined)
@@ -378,7 +378,7 @@ function isStopInput(value) {
378
378
  return isRecord2(value) && isStopHookEventName(value["hook_event_name"]) && typeof value["session_id"] === "string" && typeof value["turn_id"] === "string" && typeof value["transcript_path"] === "string" && typeof value["cwd"] === "string" && typeof value["model"] === "string" && typeof value["permission_mode"] === "string" && typeof value["stop_hook_active"] === "boolean" && optionalString(value["last_assistant_message"]);
379
379
  }
380
380
  function isStopHookEventName(value) {
381
- return value === "Stop" || value === "SubagentStop";
381
+ return value === "Stop";
382
382
  }
383
383
  function optionalString(value) {
384
384
  return value === undefined || typeof value === "string";
@@ -387,7 +387,7 @@ function isRecord2(value) {
387
387
  return typeof value === "object" && value !== null && !Array.isArray(value);
388
388
  }
389
389
 
390
- // components/start-work-continuation/src/cli.ts
390
+ // components/ulw-execute-continuation/src/cli.ts
391
391
  var nodeFileSystem = {
392
392
  readFileSync(path, encoding) {
393
393
  return readFileSync4(path, encoding);
@@ -398,7 +398,7 @@ var subcommand = process.argv[3];
398
398
  if (command === "hook" && (subcommand === "stop" || subcommand === "subagent-stop")) {
399
399
  await runHookCli();
400
400
  } else {
401
- process.stderr.write(`Usage: omo-start-work-continuation hook <stop|subagent-stop>
401
+ process.stderr.write(`Usage: omo-ulw-execute-continuation hook <stop|subagent-stop>
402
402
  `);
403
403
  process.exitCode = 1;
404
404
  }
@@ -422,13 +422,13 @@ function parseHookInput(raw) {
422
422
  }
423
423
  }
424
424
  function readStdin() {
425
- return new Promise((resolve2) => {
425
+ return new Promise((resolve) => {
426
426
  let data = "";
427
427
  processStdin.setEncoding("utf8");
428
428
  processStdin.on("data", (chunk) => {
429
429
  data += chunk;
430
430
  });
431
- processStdin.once("error", () => resolve2(data));
432
- processStdin.once("end", () => resolve2(data));
431
+ processStdin.once("error", () => resolve(data));
432
+ processStdin.once("end", () => resolve(data));
433
433
  });
434
434
  }
@@ -0,0 +1,16 @@
1
+ {
2
+ "hooks": {
3
+ "Stop": [
4
+ {
5
+ "hooks": [
6
+ {
7
+ "type": "command",
8
+ "command": "node \"${PLUGIN_ROOT}/components/ulw-execute-continuation/dist/cli.js\" hook stop",
9
+ "timeout": 10,
10
+ "statusMessage": "(OmO 5.0.0-beta.71) Checking Ulw-Execute Continuation"
11
+ }
12
+ ]
13
+ }
14
+ ]
15
+ }
16
+ }
@@ -1,28 +1,28 @@
1
1
  {
2
- "name": "@code-yeongyu/codex-start-work-continuation",
3
- "version": "5.0.0-beta.7",
4
- "description": "Codex Stop hook continuation injector for omo-codex start-work plans.",
2
+ "name": "@code-yeongyu/codex-ulw-execute-continuation",
3
+ "version": "5.0.0-beta.71",
4
+ "description": "Codex Stop hook continuation injector for omo-codex ulw-execute plans.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
7
7
  "license": "MIT",
8
- "homepage": "https://github.com/code-yeongyu/codex-start-work-continuation",
8
+ "homepage": "https://github.com/code-yeongyu/codex-ulw-execute-continuation",
9
9
  "repository": {
10
10
  "type": "git",
11
- "url": "git+https://github.com/code-yeongyu/codex-start-work-continuation.git"
11
+ "url": "git+https://github.com/code-yeongyu/codex-ulw-execute-continuation.git"
12
12
  },
13
13
  "bugs": {
14
- "url": "https://github.com/code-yeongyu/codex-start-work-continuation/issues"
14
+ "url": "https://github.com/code-yeongyu/codex-ulw-execute-continuation/issues"
15
15
  },
16
16
  "keywords": [
17
17
  "codex",
18
18
  "codex-plugin",
19
- "start-work",
19
+ "ulw-execute",
20
20
  "continuation",
21
21
  "hooks",
22
22
  "boulder"
23
23
  ],
24
24
  "bin": {
25
- "omo-start-work-continuation": "./dist/cli.js"
25
+ "omo-ulw-execute-continuation": "./dist/cli.js"
26
26
  },
27
27
  "scripts": {
28
28
  "build": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && bun build src/cli.ts --target node --format esm --outfile dist/cli.js",
@@ -42,10 +42,10 @@
42
42
  "NOTICE"
43
43
  ],
44
44
  "devDependencies": {
45
- "@biomejs/biome": "2.4.16",
46
- "@types/node": "^25.9.3",
47
- "typescript": "^6.0.3",
48
- "vitest": "^4.1.8"
45
+ "@biomejs/biome": "2.5.9",
46
+ "@types/node": "^26.2.0",
47
+ "typescript": "^7.0.2",
48
+ "vitest": "^4.1.11"
49
49
  },
50
50
  "engines": {
51
51
  "node": ">=20.0.0"
@@ -50,7 +50,7 @@ export function readContinuationState(cwd: string, sessionId: string): Continuat
50
50
  planName: work.planName,
51
51
  planPath,
52
52
  boulderPath,
53
- ledgerPath: join(cwd, ".omo", "start-work", "ledger.jsonl"),
53
+ ledgerPath: join(cwd, ".omo", "ulw-execute", "ledger.jsonl"),
54
54
  worktreePath: work.worktreePath ?? null,
55
55
  checklist,
56
56
  };
@@ -17,7 +17,7 @@ const subcommand = process.argv[3];
17
17
  if (command === "hook" && (subcommand === "stop" || subcommand === "subagent-stop")) {
18
18
  await runHookCli();
19
19
  } else {
20
- process.stderr.write("Usage: omo-start-work-continuation hook <stop|subagent-stop>\n");
20
+ process.stderr.write("Usage: omo-ulw-execute-continuation hook <stop|subagent-stop>\n");
21
21
  process.exitCode = 1;
22
22
  }
23
23
 
@@ -1,6 +1,6 @@
1
1
  import type { ContinuationState } from "./boulder-reader.js";
2
2
  import { readContinuationState } from "./boulder-reader.js";
3
- import { START_WORK_CONTINUATION_DIRECTIVE } from "./directive.js";
3
+ import { ULW_EXECUTE_CONTINUATION_DIRECTIVE } from "./directive.js";
4
4
  import type { ReadonlyFileSystem, StopHookEventName, StopHookOutput, StopInput } from "./types.js";
5
5
 
6
6
  export function runStopHook(input: unknown, fs: ReadonlyFileSystem): string {
@@ -33,14 +33,14 @@ function renderDirective(state: ContinuationState, sessionId: string): string {
33
33
  LEDGER_PATH: state.ledgerPath,
34
34
  SESSION_ID: sessionId,
35
35
  } as const;
36
- let rendered = START_WORK_CONTINUATION_DIRECTIVE;
36
+ let rendered = ULW_EXECUTE_CONTINUATION_DIRECTIVE;
37
37
  for (const [placeholder, value] of Object.entries(replacements)) {
38
38
  rendered = rendered.replaceAll(`{{${placeholder}}}`, value);
39
39
  }
40
40
  return rendered;
41
41
  }
42
42
 
43
- const EXTERNAL_BLOCKER_MARKER = "<start-work-blocked-external>";
43
+ const EXTERNAL_BLOCKER_MARKER = "<ulw-execute-blocked-external>";
44
44
  const ULTRAWORK_OPENER = "ULTRAWORK MODE ENABLED!";
45
45
 
46
46
  // The marker alone is not enough to end the turn. `directive.md` requires the exact blocker and
@@ -96,7 +96,7 @@ function isStopInput(value: unknown): value is StopInput {
96
96
  }
97
97
 
98
98
  function isStopHookEventName(value: unknown): value is StopHookEventName {
99
- return value === "Stop" || value === "SubagentStop";
99
+ return value === "Stop";
100
100
  }
101
101
 
102
102
  function optionalString(value: unknown): boolean {
@@ -1,6 +1,6 @@
1
1
  import { readFileSync } from "node:fs";
2
2
 
3
- export const START_WORK_CONTINUATION_DIRECTIVE: string = readFileSync(
3
+ export const ULW_EXECUTE_CONTINUATION_DIRECTIVE: string = readFileSync(
4
4
  new URL("../directive.md", import.meta.url),
5
5
  "utf8",
6
6
  );
@@ -1,5 +1,5 @@
1
1
  export type { ContinuationState, PlanChecklist } from "./boulder-reader.js";
2
2
  export { readContinuationState } from "./boulder-reader.js";
3
3
  export { runStopHook } from "./codex-hook.js";
4
- export { START_WORK_CONTINUATION_DIRECTIVE } from "./directive.js";
4
+ export { ULW_EXECUTE_CONTINUATION_DIRECTIVE } from "./directive.js";
5
5
  export type { ReadonlyFileSystem, StopHookEventName, StopHookOutput, StopInput } from "./types.js";
@@ -1,4 +1,4 @@
1
- export const STOP_HOOK_EVENTS = ["Stop", "SubagentStop"] as const;
1
+ export const STOP_HOOK_EVENTS = ["Stop"] as const;
2
2
  export type StopHookEventName = (typeof STOP_HOOK_EVENTS)[number];
3
3
 
4
4
  export type StopInput = {
@@ -11,7 +11,7 @@ afterEach(() => {
11
11
  for (const root of cleanupRoots.splice(0)) rmSync(root, { recursive: true, force: true });
12
12
  });
13
13
 
14
- describe("start-work plan checklist consumption", () => {
14
+ describe("ulw-execute plan checklist consumption", () => {
15
15
  it("#given scaffold headings and canonical numbered rows #when parsed #then structured totals and next label match", () => {
16
16
  // given
17
17
  const planPath = createPlan(SCAFFOLD_PLAN_MARKDOWN);
@@ -242,7 +242,7 @@ describe("start-work plan checklist consumption", () => {
242
242
  });
243
243
  });
244
244
 
245
- describe("start-work boulder state reader", () => {
245
+ describe("ulw-execute boulder state reader", () => {
246
246
  it("#given active codex work with remaining checklist #when state is read #then continuation fields match baseline", () => {
247
247
  // given
248
248
  const workspace = createWorkspace({
@@ -258,7 +258,7 @@ describe("start-work boulder state reader", () => {
258
258
  planName: "launch-plan",
259
259
  planPath: join(workspace, ".omo", "plans", "plan.md"),
260
260
  boulderPath: join(workspace, ".omo", "boulder.json"),
261
- ledgerPath: join(workspace, ".omo", "start-work", "ledger.jsonl"),
261
+ ledgerPath: join(workspace, ".omo", "ulw-execute", "ledger.jsonl"),
262
262
  worktreePath: null,
263
263
  checklist: {
264
264
  completed: 2,
@@ -12,7 +12,7 @@ afterEach(() => {
12
12
  for (const root of cleanupRoots.splice(0)) rmSync(root, { recursive: true, force: true });
13
13
  });
14
14
 
15
- describe("start-work continuation CLI", () => {
15
+ describe("ulw-execute continuation CLI", () => {
16
16
  it("#given valid Stop stdin #when CLI runs #then stdout contains block JSON", () => {
17
17
  // given
18
18
  const cwd = createWorkspace(["codex:s1"]);
@@ -26,12 +26,9 @@ describe("start-work continuation CLI", () => {
26
26
  expect(result.status).toBe(0);
27
27
  const output = parseStopHookOutput(result.stdout);
28
28
  expect(output.decision).toBe("block");
29
- expect(output.reason).toContain("Remaining top-level checkboxes: `2` of `4`");
30
- expect(output.reason).toContain("Next incomplete task: `1. Implement checklist parser parity`");
31
- expect(output.reason).toContain("Your session id in boulder.json: `codex:s1`");
32
29
  });
33
30
 
34
- it("#given valid SubagentStop stdin #when CLI runs #then stdout contains block JSON", () => {
31
+ it("#given valid SubagentStop stdin #when CLI runs #then stdout is empty", () => {
35
32
  // given
36
33
  const cwd = createWorkspace(["codex:s1"]);
37
34
  const payload = JSON.stringify(makePayload(cwd, false, "SubagentStop"));
@@ -42,7 +39,7 @@ describe("start-work continuation CLI", () => {
42
39
  // then
43
40
  if (result.error !== undefined) throw result.error;
44
41
  expect(result.status).toBe(0);
45
- expect(result.stdout).toContain('"decision":"block"');
42
+ expect(result.stdout).toBe("");
46
43
  });
47
44
 
48
45
  it("#given active stop hook stdin #when CLI runs #then stdout is empty and exit is zero", () => {
@@ -122,11 +119,7 @@ function createWorkspace(sessionIds: readonly string[]): string {
122
119
  return root;
123
120
  }
124
121
 
125
- function makePayload(
126
- cwd: string,
127
- stopHookActive: boolean,
128
- eventName: "Stop" | "SubagentStop",
129
- ): Record<string, string | boolean> {
122
+ function makePayload(cwd: string, stopHookActive: boolean, eventName: string): Record<string, string | boolean> {
130
123
  return {
131
124
  session_id: "s1",
132
125
  turn_id: "t1",
@@ -14,7 +14,7 @@ afterEach(() => {
14
14
  for (const root of cleanupRoots.splice(0)) rmSync(root, { recursive: true, force: true });
15
15
  });
16
16
 
17
- describe("start-work Stop hook", () => {
17
+ describe("ulw-execute Stop hook", () => {
18
18
  it("#given stop hook is already active #when hook runs #then returns empty output", () => {
19
19
  // given
20
20
  const fs = createMemoryFs();
@@ -58,16 +58,23 @@ describe("start-work Stop hook", () => {
58
58
  const output = runStopHook(createStopInput(workspace), fs);
59
59
 
60
60
  // then
61
- const parsed = parseBlockOutput(output);
62
- expect(parsed.decision).toBe("block");
63
- expect(parsed.reason).toContain("- Plan: `launch-plan`");
64
- expect(parsed.reason).toContain(`- Plan file: \`${join(workspace, ".omo", "plans", "plan.md")}\``);
65
- expect(parsed.reason).toContain(`- Boulder state: \`${join(workspace, ".omo", "boulder.json")}\``);
66
- expect(parsed.reason).toContain("- Remaining top-level checkboxes: `2` of `4`");
67
- expect(parsed.reason).toContain("- Next incomplete task: `1. Implement checklist parser parity`");
68
- expect(parsed.reason).toContain("- Worktree: `/tmp/worktree`");
69
- expect(parsed.reason).toContain(`- Ledger: \`${join(workspace, ".omo", "start-work", "ledger.jsonl")}\``);
70
- expect(parsed.reason).toContain("- Your session id in boulder.json: `codex:sess_abc`");
61
+ expect(parseBlockOutput(output).decision).toBe("block");
62
+ });
63
+
64
+ it("#given active Boulder work and a SubagentStop event #when hook runs #then returns empty output", () => {
65
+ // given
66
+ const workspace = createWorkspace({
67
+ boulderJson: createBoulderJson({ sessionIds: ["codex:sess_abc"], status: "active" }),
68
+ planMarkdown: SCAFFOLD_PLAN_MARKDOWN,
69
+ });
70
+ const fs = createMemoryFs();
71
+ const input = { ...createStopInput(workspace), hook_event_name: "SubagentStop" as const };
72
+
73
+ // when
74
+ const output = runStopHook(input, fs);
75
+
76
+ // then
77
+ expect(output).toBe("");
71
78
  });
72
79
 
73
80
  it("#given active codex work and an external-blocker marker #when hook runs #then returns empty output", () => {
@@ -80,7 +87,7 @@ describe("start-work Stop hook", () => {
80
87
  const input = {
81
88
  ...createStopInput(workspace),
82
89
  last_assistant_message: [
83
- "<start-work-blocked-external>",
90
+ "<ulw-execute-blocked-external>",
84
91
  "Blocker: the staging deploy credential is missing.",
85
92
  "Resume when a valid credential is provisioned.",
86
93
  ].join("\n"),
@@ -104,7 +111,7 @@ describe("start-work Stop hook", () => {
104
111
  ...createStopInput(workspace),
105
112
  last_assistant_message: [
106
113
  "ULTRAWORK MODE ENABLED!",
107
- "<start-work-blocked-external>",
114
+ "<ulw-execute-blocked-external>",
108
115
  "Blocker: the staging deploy credential is missing.",
109
116
  ].join("\n"),
110
117
  };
@@ -127,7 +134,7 @@ describe("start-work Stop hook", () => {
127
134
  const fs = createMemoryFs();
128
135
  const input = {
129
136
  ...createStopInput(workspace),
130
- last_assistant_message: "<start-work-blocked-external>",
137
+ last_assistant_message: "<ulw-execute-blocked-external>",
131
138
  };
132
139
 
133
140
  // when
@@ -146,7 +153,7 @@ describe("start-work Stop hook", () => {
146
153
  const fs = createMemoryFs();
147
154
  const input = {
148
155
  ...createStopInput(workspace),
149
- last_assistant_message: ["ULTRAWORK MODE ENABLED!", "<start-work-blocked-external>", " "].join("\n"),
156
+ last_assistant_message: ["ULTRAWORK MODE ENABLED!", "<ulw-execute-blocked-external>", " "].join("\n"),
150
157
  };
151
158
 
152
159
  // when
@@ -165,7 +172,7 @@ describe("start-work Stop hook", () => {
165
172
  const fs = createMemoryFs();
166
173
  const input = {
167
174
  ...createStopInput(workspace),
168
- last_assistant_message: ["Next turn I may need to emit", "<start-work-blocked-external>"].join("\n"),
175
+ last_assistant_message: ["Next turn I may need to emit", "<ulw-execute-blocked-external>"].join("\n"),
169
176
  };
170
177
 
171
178
  // when
@@ -187,12 +194,7 @@ describe("start-work Stop hook", () => {
187
194
  const output = runStopHook(createStopInput(workspace), fs);
188
195
 
189
196
  // then
190
- const parsed = parseBlockOutput(output);
191
- expect(parsed.decision).toBe("block");
192
- expect(parsed.reason).toContain("- Remaining top-level checkboxes: `0` of `1`");
193
- expect(parsed.reason).toContain("- Next incomplete task: `none (final gate pending)`");
194
- expect(parsed.reason).toContain("When the remaining count is `0`, skip checkbox execution");
195
- expect(parsed.reason).toContain("re-read the ledger record and verify the exact lane/SHA pair");
197
+ expect(parseBlockOutput(output).decision).toBe("block");
196
198
  });
197
199
 
198
200
  it("#given context-window pressure in transcript #when hook runs #then it does not inject continuation text", () => {
@@ -42,7 +42,26 @@ Conventions for human contributors and AI agents working on this repository.
42
42
  - CLI commands use the `omo-agent-toolkit ulw-loop` form.
43
43
  - Do not use any alternate legacy CLI alias anywhere.
44
44
 
45
+ ## Layout
46
+
47
+ - `src/cli.ts`: bin entry (`omo-ulw-loop`, `ulw`, `ulw-loop` all map to `dist/cli.js`); documented invocation form `omo-agent-toolkit ulw-loop <subcommand>`.
48
+ - `src/cli-commands.ts`: subcommand dispatch (`ULW_LOOP_SUBCOMMANDS`, `ulwLoopCommand`, flag/value readers).
49
+ - `src/plan-io.ts`: plan persistence, append-only `ledger.jsonl`, `withUlwLoopMutationLock`.
50
+ - `src/quality-gate.ts` (188 LOC), `src/checkpoint.ts` (247), `src/steering.ts` (203): state-transition hotspots (evidence containment, checkpoint reconciliation, steering mutations).
51
+ - `src/quality-gate-artifacts.ts`: artifact-ref / surface-kind primitives shared by the gate validator; `src/quality-gate-aggregate.ts`: non-throwing defect pre-pass that aggregates every gate defect into one error.
52
+ - `src/codex-hook.ts`: UserPromptSubmit steering injection + `create_goal` budget guard.
53
+ - `src/spawn-guard.ts`, `src/stop-resume-hook.ts`: spawn guards, Stop auto-resume.
54
+ - `src/surface.ts`: toolkit surface + reviewer-identity resolution (`lazycodex` default; staged `surface.json` marker or `OMO_AGENT_TOOLKIT_SURFACE` selects `omo-senpi`).
55
+ - `src/ultrawork-skill-pointer.ts`: byte-identical mirror of ultrawork's pointer (pinned by `plugin/test/ultrawork-skill-pointer.test.mjs`).
56
+ - `directive.md`: runtime-read directive (never inlined into TypeScript). GENERATED from the canonical `packages/prompts-core/prompts/ultrawork/codex.md` by `components/ultrawork/scripts/sync-directive.mjs` and checked in, because this package is published standalone with no prompts-core dependency. Do not hand-edit; byte identity is pinned by `test/ultrawork-directive.test.ts`.
57
+
45
58
  ## Build and Hooks
46
59
 
47
60
  - Build output goes to `dist/`.
48
61
  - `hooks/hooks.json` wires `hook user-prompt-submit --with-ultrawork` (UserPromptSubmit), `hook pre-tool-use` (create_goal budget), `hook pre-tool-use-spawn` (spawn guards), and `hook stop` (auto-resume).
62
+
63
+ ## Commands
64
+
65
+ - `npm test` (vitest --run) / `npm run test:watch`; focused: `bunx vitest run test/<file>.test.ts`
66
+ - `npm run typecheck` / `npm run lint` / `npm run build` (`tsc -p tsconfig.build.json`) / `npm run check`
67
+ - These stay npm even though the repo root is bun-driven: `.github/workflows/ci.yml` runs this component as `npm --prefix "$component" run check` (the loop selects every component whose `package.json` declares `scripts.check`, which includes this one), `scripts.check` itself shells `npm run build`, and the surrounding plugin tree is installed with `npm --prefix packages/omo-codex/plugin ci` in both `ci.yml` and `publish.yml`. Run the bun equivalents (`bun run test`, `bunx tsc -p tsconfig.build.json`, `bunx biome check .`) locally if you prefer, but do not rewrite this section to bun-only while CI invokes npm here.
@@ -2,9 +2,25 @@
2
2
 
3
3
  ## [0.1.0] - unreleased
4
4
 
5
+ - **Fix:** a `goals.json` written outside the commit log (the removed `omo_agent_toolkit` tool path rewrote it wholesale, never stamping `revision`) no longer loses to an older `revisions/` snapshot when it holds goals that snapshot lacks; the cache wins, is stamped with the snapshot's revision, and the next publish folds it into revision N+1 instead of colliding on an existing record. Raw `ledger.jsonl` lines appended after a published revision are attributed to that revision rather than to the pre-store past a later `ledgerResetRevision` discards. Locked reads and every commit now refuse to rewrite `goals.json` while the reconciled ledger names a `goal_added` goal the projection lacks (`ULW_LOOP_PROJECTION_TRUNCATED`, `details.missingGoalIds`) instead of silently truncating the plan (code-yeongyu/oh-my-openagent#8328).
6
+ - Status nextActions and missing-plan recovery now follow the calling surface: omo-senpi teaches the eval SDK methods and current attempt directory without asking for a driver snapshot; LazyCodex retains its existing CLI guidance byte-for-byte.
7
+
8
+ - Async `.state.lock` holders now keep their file descriptor open and refresh a 30-second lease through it. An expired lease can be reclaimed even while its process remains alive; sync hooks and older lease-less records retain dead-pid-only ownership. Windows filesystems that refuse unlinking an open lock fail closed. Interrupted kernels can recover after lease expiry without deleting a live owner's lock.
9
+ - Plan and audit mutations publish one immutable `revisions/<revision>.json` record using create-only hard links. Published revision paths are never deleted or reused.
10
+ - `ULW_LOOP_PUBLISH_CONFLICT` retries the complete mutation once while its lock token remains owned.
11
+ - A displaced writer receives `ULW_LOOP_LOCK_LOST` instead of overwriting its successor's state.
12
+ - Filesystems without atomic hard links fail closed with `ULW_LOOP_PUBLISH_UNSUPPORTED_FS` (no copy fallback).
13
+ - Additive plan fields `revision`, `brief`, and `ledgerResetRevision`, plus ledger `revision` and `id`, remain optional on legacy reads. The first mutation hydrates a legacy brief, and objective migration is folded into that mutation rather than committed by a read. Force recreation advances the revision and filters older audit entries instead of truncating the ledger.
14
+ - `goals.json`, `ledger.jsonl`, and `brief.md` are complete-file, temp-and-rename derived views. Shared readers reconcile committed records after a crash, including audit-only steering and idempotency, and locked reads repair lagging views. Logical audit order is revision/sequence, not completion order. Older CLIs see complete but possibly lagging or transiently regressed caches; after force recreation they may see pre-reset entries until views are replaced. Hook budget counters remain separate from plan/audit state. Reconciliation now materializes the logical ledger in memory, replacing the earlier streaming-only dedup implementation.
15
+ - Reconciling a plan reads only the newest commit record (newest revision first, stopping at the first valid one) instead of parsing every record in `revisions/`, so a status probe stays independent of how many revisions a session has committed. The full scan remains where the audit trail needs every record.
16
+
17
+ - SDK contexts now reject session IDs that normalize to null with `ULW_LOOP_SESSION_ID_INVALID`, before any session state directory is created.
18
+
19
+ - LazyCodex native spawns now require an explicit bundled role before plan, budget, or artifact checks. Unknown and unnamed roles fail loudly; Senpi admission is unchanged. Guidance follows the actual spawn schema, including V2 `agent_type` when exposed. Installer/bootstrap provide an opt-out-able, ownership-checked medium-worker `default` for unnamed non-forks. An unnamed full-history fork still skips role application inside Codex: configuration cannot repair that upstream gap, and enforcement depends on Codex invoking the trusted hook. Legacy schemas without `agent_type` retain message-carried instructions but are rejected by the schema-blind guard rather than silently falling through.
20
+
5
21
  - Bundled `directive.md` picks up the ultrawork test-proportionality change: the execution-loop PIN step asks for characterization pins only when refactoring behavior whose regressions the change could hide. Stays byte-identical to `prompts-core/ultrawork/codex.md` and the ultrawork component's `directive.md`.
6
22
 
7
- - **Hooks:** new `Stop` hook auto-resumes a turn that died with unfinished goals (defers to start-work-continuation while its plan has remaining tasks, bails under context pressure, and caps at two resumes without ledger movement via a separate `.stuck` marker). New `PreToolUse` spawn guard adds a per-session fan-out cap (`OMO_SPAWN_FANOUT_LIMIT`, default 60) and denies final gate-reviewer spawns while the reviewer artifacts the gate audits are missing.
23
+ - **Hooks:** new `Stop` hook auto-resumes a turn that died with unfinished goals (defers to ulw-execute-continuation while its plan has remaining tasks, bails under context pressure, and caps at two resumes without ledger movement via a separate `.stuck` marker). New `PreToolUse` spawn guard adds a per-session fan-out cap (`OMO_SPAWN_FANOUT_LIMIT`, default 60) and denies final gate-reviewer spawns while the reviewer artifacts the gate audits are missing.
8
24
 
9
25
  - **Memory:** steering ledger entries no longer embed the full plan four times (`before`/`after` at both the audit and entry level). Accepted steers now record a compact `UlwLoopSteeringPlanSnapshot` (plan counters + only the goals the mutation touched), shrinking a measured real-world entry from 189KB to 7.8KB (~24x) and ending quadratic `ledger.jsonl` growth over long runs.
10
26
  - **Memory:** steering dedup (`--idempotency-key` / `promptSignature`) streams the ledger line-by-line with a substring pre-filter instead of `JSON.parse`-ing every entry into memory; dedup returns strip legacy full-plan `before`/`after` payloads from re-surfaced audits. `readSteeringLedgerEntries` streams too.