oh-my-opencode 5.0.0-beta.4 → 5.0.0-beta.40

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 (868) hide show
  1. package/.agents/command/publish.md +44 -16
  2. package/.agents/skills/codex-qa/scripts/lsp-e2e.sh +1 -3
  3. package/.agents/skills/opencode-qa/scripts/lsp-e2e.sh +1 -1
  4. package/.agents/skills/publish/SKILL.md +44 -16
  5. package/.agents/skills/senpi-qa/SKILL.md +80 -0
  6. package/.agents/skills/senpi-qa/scripts/resolve-evidence-dir.mjs +65 -0
  7. package/.agents/skills/senpi-qa/scripts/resolve-evidence-dir.test.mjs +171 -0
  8. package/.agents/skills/tech-debt-audit/SKILL.md +6 -76
  9. package/.agents/skills/work-with-pr/SKILL.md +37 -23
  10. package/.opencode/command/publish.md +44 -16
  11. package/.opencode/skills/work-with-pr/SKILL.md +37 -23
  12. package/README.ja.md +25 -21
  13. package/README.ko.md +25 -21
  14. package/README.md +38 -23
  15. package/README.ru.md +24 -20
  16. package/README.zh-cn.md +25 -21
  17. package/THIRD-PARTY-NOTICES.md +27 -99
  18. package/dist/agents/atlas/agent.d.ts +0 -1
  19. package/dist/agents/sisyphus/grok-4.d.ts +20 -0
  20. package/dist/agents/sisyphus/index.d.ts +2 -0
  21. package/dist/agents/sisyphus-agent-config.d.ts +6 -0
  22. package/dist/agents/sisyphus-agent-factory.d.ts +1 -1
  23. package/dist/agents/sisyphus-runtime-prompt-reconciler.d.ts +15 -4
  24. package/dist/agents/types.d.ts +2 -2
  25. package/dist/cli/config-manager/parse-opencode-config-file.d.ts +2 -1
  26. package/dist/cli/doctor/checks/system-plugin.d.ts +4 -3
  27. package/dist/cli/fallback-lane-policy.d.ts +1 -0
  28. package/dist/cli/index.js +66932 -64746
  29. package/dist/cli/install-codex/install-codex-test-fixtures.d.ts +1 -1
  30. package/dist/cli/run/on-complete-hook.d.ts +2 -0
  31. package/dist/cli/runtime-commands.d.ts +1 -1
  32. package/dist/cli/worktree-sweep/classify.d.ts +16 -0
  33. package/dist/cli/worktree-sweep/format.d.ts +8 -0
  34. package/dist/cli/worktree-sweep/git.d.ts +19 -0
  35. package/dist/cli/worktree-sweep/index.d.ts +7 -0
  36. package/dist/cli/worktree-sweep/options.d.ts +2 -0
  37. package/dist/cli/worktree-sweep/parse-worktree-list.d.ts +8 -0
  38. package/dist/cli/worktree-sweep/sweep.d.ts +2 -0
  39. package/dist/cli/worktree-sweep/types.d.ts +65 -0
  40. package/dist/cli/worktree-sweep/worktree-sweep.d.ts +2 -0
  41. package/dist/cli-node/index.js +66795 -64586
  42. package/dist/config/index.d.ts +1 -1
  43. package/dist/config/schema/background-task.d.ts +1 -0
  44. package/dist/config/schema/commands.d.ts +1 -1
  45. package/dist/config/schema/hooks.d.ts +1 -2
  46. package/dist/config/schema/oh-my-opencode-config.d.ts +5 -11
  47. package/dist/config/schema/ulw-execute.d.ts +5 -0
  48. package/dist/config/schema.d.ts +0 -1
  49. package/dist/config/validate.d.ts +2 -0
  50. package/dist/create-hooks.d.ts +3 -2
  51. package/dist/features/background-agent/compaction-aware-message-resolver.d.ts +1 -0
  52. package/dist/features/background-agent/constants.d.ts +0 -7
  53. package/dist/features/background-agent/manager.d.ts +2 -1
  54. package/dist/features/background-agent/parent-wake-dispatched-tracker.d.ts +0 -1
  55. package/dist/features/background-agent/parent-wake-notifier-types.d.ts +1 -1
  56. package/dist/features/background-agent/parent-wake-prompt-dispatch.d.ts +1 -1
  57. package/dist/features/background-agent/parent-wake-session-inspector.d.ts +1 -1
  58. package/dist/features/background-agent/subagent-spawn-limits.d.ts +8 -0
  59. package/dist/features/btw-side/btw-command-draft.d.ts +7 -0
  60. package/dist/features/btw-side/context-injector.d.ts +15 -0
  61. package/dist/features/btw-side/index.d.ts +8 -0
  62. package/dist/features/btw-side/metadata.d.ts +15 -0
  63. package/dist/features/btw-side/parent-context-budget.d.ts +9 -0
  64. package/dist/features/btw-side/server-session-registry.d.ts +8 -0
  65. package/dist/features/btw-side/tui-adoption-cache.d.ts +13 -0
  66. package/dist/features/btw-side/tui-adoption-guard.d.ts +5 -0
  67. package/dist/features/btw-side/tui-controller-types.d.ts +68 -0
  68. package/dist/features/btw-side/tui-controller.d.ts +19 -0
  69. package/dist/features/btw-side/tui-escape-return.d.ts +12 -0
  70. package/dist/features/btw-side/tui-keymap.d.ts +17 -0
  71. package/dist/features/btw-side/tui-parent-validator.d.ts +6 -0
  72. package/dist/features/btw-side/tui-picker-options.d.ts +20 -0
  73. package/dist/features/btw-side/tui-picker.d.ts +9 -0
  74. package/dist/features/btw-side/tui-prompt-queue.d.ts +8 -0
  75. package/dist/features/btw-side/tui-session-bridge.d.ts +11 -0
  76. package/dist/features/btw-side/tui-session-catalog.d.ts +35 -0
  77. package/dist/features/btw-side/tui-side-removal.d.ts +11 -0
  78. package/dist/features/btw-side/tui-side-start.d.ts +9 -0
  79. package/dist/features/btw-side/tui-wiring.d.ts +8 -0
  80. package/dist/features/builtin-commands/templates/ulw-execute.d.ts +1 -0
  81. package/dist/features/builtin-commands/types.d.ts +1 -1
  82. package/dist/features/monitor/manager-internals.d.ts +1 -1
  83. package/dist/features/monitor/output-injector-types.d.ts +1 -1
  84. package/dist/features/opengateway-provider/index.d.ts +13 -0
  85. package/dist/features/task-toast-manager/manager.d.ts +0 -24
  86. package/dist/features/team-mode/tools/messaging-fallback-wake.d.ts +15 -0
  87. package/dist/features/team-mode/tools/messaging-live-delivery-recipient.d.ts +1 -0
  88. package/dist/features/team-mode/tools/messaging-runtime.d.ts +1 -0
  89. package/dist/hooks/anthropic-context-window-limit-recovery/message-storage-directory.d.ts +0 -3
  90. package/dist/hooks/anthropic-context-window-limit-recovery/state.d.ts +1 -0
  91. package/dist/hooks/anthropic-context-window-limit-recovery/storage/empty-messages.d.ts +0 -1
  92. package/dist/hooks/anthropic-context-window-limit-recovery/tool-result-storage.d.ts +11 -0
  93. package/dist/hooks/atlas/atlas-hook.d.ts +1 -0
  94. package/dist/hooks/atlas/atlas-lifecycle-store.d.ts +50 -0
  95. package/dist/hooks/atlas/event-handler.d.ts +1 -0
  96. package/dist/hooks/atlas/final-wave-approval-gate.test-support.d.ts +50 -0
  97. package/dist/hooks/atlas/system-reminder-templates.d.ts +0 -1
  98. package/dist/hooks/atlas/tool-execute-before.d.ts +3 -0
  99. package/dist/hooks/atlas/types.d.ts +1 -0
  100. package/dist/hooks/claude-code-hooks/session-hook-state.d.ts +1 -0
  101. package/dist/hooks/claude-code-hooks/stop.d.ts +2 -0
  102. package/dist/hooks/claude-code-hooks/todo.d.ts +0 -1
  103. package/dist/hooks/claude-code-hooks/transcript.d.ts +2 -0
  104. package/dist/hooks/compaction-context-injector/validated-model.d.ts +2 -0
  105. package/dist/hooks/fsync-skip-warning/index.d.ts +4 -0
  106. package/dist/hooks/hashline-edit-diff-enhancer/hook.d.ts +1 -0
  107. package/dist/hooks/hashline-edit-diff-enhancer/pending-captures.d.ts +13 -0
  108. package/dist/hooks/index.d.ts +1 -2
  109. package/dist/hooks/keyword-detector/hook.d.ts +7 -0
  110. package/dist/hooks/keyword-detector/ultrawork/source-detector.d.ts +0 -1
  111. package/dist/hooks/model-fallback/hook.d.ts +1 -1
  112. package/dist/hooks/prometheus-md-only/agent-resolution.d.ts +2 -2
  113. package/dist/hooks/runtime-fallback/chat-message-handler.d.ts +2 -0
  114. package/dist/hooks/runtime-fallback/retry-model-payload.d.ts +1 -0
  115. package/dist/hooks/runtime-fallback/runtime-model-settings.d.ts +6 -0
  116. package/dist/hooks/runtime-fallback/session-status-handler.d.ts +1 -1
  117. package/dist/hooks/runtime-fallback/types.d.ts +3 -1
  118. package/dist/hooks/sisyphus-junior-notepad/constants.d.ts +1 -1
  119. package/dist/hooks/todo-continuation-enforcer/types.d.ts +1 -0
  120. package/dist/hooks/{start-work → ulw-execute}/context-info-builder.d.ts +1 -1
  121. package/dist/hooks/{start-work → ulw-execute}/index.d.ts +1 -1
  122. package/dist/hooks/ulw-execute/ulw-execute-hook.d.ts +23 -0
  123. package/dist/index.js +24669 -20705
  124. package/dist/mcp/index.d.ts +0 -4
  125. package/dist/mcp/types.d.ts +0 -1
  126. package/dist/oh-my-opencode.schema.json +21 -47
  127. package/dist/plugin/chat-message/types.d.ts +3 -3
  128. package/dist/plugin/chat-message/ulw-execute-message.d.ts +5 -0
  129. package/dist/plugin/event-session-lifecycle.d.ts +1 -0
  130. package/dist/plugin/hooks/create-core-hooks.d.ts +2 -2
  131. package/dist/plugin/hooks/create-session-hooks.d.ts +2 -3
  132. package/dist/plugin/hooks/create-transform-hooks.d.ts +2 -0
  133. package/dist/plugin/messages-transform.d.ts +1 -0
  134. package/dist/plugin-dispose.d.ts +3 -0
  135. package/dist/shared/agent-tool-restrictions.d.ts +0 -1
  136. package/dist/shared/compaction-agent-config-checkpoint.d.ts +1 -0
  137. package/dist/shared/index.d.ts +2 -0
  138. package/dist/shared/legacy-plugin-warning.d.ts +2 -1
  139. package/dist/shared/normalize-sdk-response.d.ts +1 -0
  140. package/dist/shared/omo-process-sweep.d.ts +2 -4
  141. package/dist/shared/plugin-entry-migrator.d.ts +4 -3
  142. package/dist/shared/plugin-entry-shape.d.ts +6 -0
  143. package/dist/shared/runtime-fallback-retry-marker.d.ts +16 -0
  144. package/dist/shared/shell-env.d.ts +1 -1
  145. package/dist/skills/ast-grep/AGENTS.md +51 -0
  146. package/dist/skills/coding-agent-sessions/AGENTS.md +62 -0
  147. package/dist/skills/coding-agent-sessions/SKILL.md +3 -2
  148. package/dist/skills/coding-agent-sessions/references/all-platforms.md +1 -1
  149. package/dist/skills/coding-agent-sessions/references/senpi.md +4 -4
  150. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
  151. package/dist/skills/data-scientist/SKILL.md +99 -239
  152. package/dist/skills/data-scientist/references/execution-surfaces.md +91 -0
  153. package/dist/skills/data-scientist/references/placement.md +74 -0
  154. package/dist/skills/data-scientist/references/polars-lane.md +95 -0
  155. package/dist/skills/data-scientist/references/uv-setup.md +1 -1
  156. package/dist/skills/data-scientist/references/visualization.md +64 -0
  157. package/dist/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
  158. package/dist/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
  159. package/dist/skills/debugging/SKILL.md +2 -0
  160. package/dist/skills/debugging/references/methodology/00-setup.md +12 -0
  161. package/dist/skills/debugging/references/methodology/02-investigate.md +21 -0
  162. package/dist/skills/debugging/references/runtimes/go.md +15 -1
  163. package/dist/skills/debugging/references/runtimes/native-binary.md +38 -0
  164. package/dist/skills/debugging/references/runtimes/node.md +25 -0
  165. package/dist/skills/debugging/references/runtimes/python.md +13 -0
  166. package/dist/skills/debugging/references/runtimes/rust.md +41 -0
  167. package/dist/skills/debugging/references/scripts/dap.mjs +267 -0
  168. package/dist/skills/debugging/references/scripts/dap.test.ts +86 -0
  169. package/dist/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  170. package/dist/skills/debugging/references/tools/dap.md +103 -0
  171. package/dist/skills/debugging/references/tools/frida.md +193 -0
  172. package/dist/skills/frontend/SKILL.md +11 -7
  173. package/dist/skills/frontend/references/design/_INDEX.md +1 -0
  174. package/dist/skills/frontend/references/design/print-paged-media.md +76 -0
  175. package/dist/skills/frontend/references/design/stylegallery.md +80 -0
  176. package/dist/skills/frontend/references/designpowers/README.md +1 -1
  177. package/dist/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  178. package/dist/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  179. package/dist/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  180. package/dist/skills/frontend/references/designpowers/orchestration.md +1 -1
  181. package/dist/skills/frontend/references/designpowers/routing.md +5 -5
  182. package/dist/skills/init-deep/SKILL.md +13 -13
  183. package/dist/skills/review-work/SKILL.md +3 -3
  184. package/dist/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
  185. package/dist/skills/ultimate-browsing/SKILL.md +2 -0
  186. package/dist/skills/ultimate-browsing/engine/AGENTS.md +110 -0
  187. package/dist/skills/ultimate-browsing/engine/templates/package.json +1 -1
  188. package/dist/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
  189. package/dist/skills/ultimate-browsing/references/insane-search/README.md +9 -2
  190. package/dist/skills/{start-work → ulw-execute}/SKILL.md +17 -16
  191. package/dist/skills/ulw-plan/SKILL.md +6 -7
  192. package/dist/skills/ulw-plan/references/full-workflow.md +31 -7
  193. package/dist/skills/ulw-plan/references/intent-clear.md +2 -1
  194. package/dist/skills/ulw-plan/references/intent-unclear.md +5 -5
  195. package/dist/skills/ulw-research/SKILL.md +4 -2
  196. package/dist/skills/visual-qa/AGENTS.md +58 -0
  197. package/dist/skills/visual-qa/SKILL.md +3 -2
  198. package/dist/tools/delegate-task/builtin-categories.d.ts +1 -0
  199. package/dist/tools/delegate-task/builtin-category-definition.d.ts +1 -0
  200. package/dist/tools/delegate-task/sync-session-cleanup.d.ts +3 -0
  201. package/dist/tools/delegate-task/sync-session-poller.d.ts +1 -0
  202. package/dist/tools/delegate-task/tool-description.d.ts +3 -1
  203. package/dist/tools/delegate-task/types.d.ts +4 -0
  204. package/dist/tools/session-manager/directory-filter.d.ts +2 -0
  205. package/dist/tui.d.ts +12 -0
  206. package/dist/tui.js +49320 -49316
  207. package/package.json +41 -39
  208. package/packages/git-bash-mcp/dist/cli.js +6 -1
  209. package/packages/git-bash-mcp/package.json +1 -1
  210. package/packages/lsp-core/src/index.ts +1 -0
  211. package/packages/lsp-core/src/lsp/client-diagnostics-concurrency.integration.test.ts +44 -0
  212. package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +47 -47
  213. package/packages/lsp-core/src/lsp/client-diagnostics-pull-timeout.test.ts +64 -0
  214. package/packages/lsp-core/src/lsp/client-wrapper-outside-cwd.test.ts +78 -0
  215. package/packages/lsp-core/src/lsp/client-wrapper.test.ts +163 -13
  216. package/packages/lsp-core/src/lsp/client-wrapper.ts +110 -23
  217. package/packages/lsp-core/src/lsp/client.ts +32 -3
  218. package/packages/lsp-core/src/lsp/connection.ts +16 -0
  219. package/packages/lsp-core/src/lsp/constants.ts +6 -0
  220. package/packages/lsp-core/src/lsp/controlled-clock-test-support.ts +61 -0
  221. package/packages/lsp-core/src/lsp/errors.ts +15 -0
  222. package/packages/lsp-core/src/lsp/fixtures/workspace-edit-server.mjs +10 -3
  223. package/packages/lsp-core/src/lsp/format-document.test.ts +143 -0
  224. package/packages/lsp-core/src/lsp/format-document.ts +90 -0
  225. package/packages/lsp-core/src/lsp/manager-lifecycle.test.ts +262 -0
  226. package/packages/lsp-core/src/lsp/manager-max-clients.test.ts +151 -0
  227. package/packages/lsp-core/src/lsp/manager.ts +138 -12
  228. package/packages/lsp-core/src/lsp/outside-context-workspace.ts +33 -0
  229. package/packages/lsp-core/src/lsp/server-definitions.ts +29 -0
  230. package/packages/lsp-core/src/lsp/server-installation.test.ts +376 -0
  231. package/packages/lsp-core/src/lsp/server-installation.ts +200 -27
  232. package/packages/lsp-core/src/lsp/server-resolution-local-binary.test.ts +170 -0
  233. package/packages/lsp-core/src/lsp/server-resolution.ts +18 -5
  234. package/packages/lsp-core/src/lsp/timer-provider.ts +13 -0
  235. package/packages/lsp-core/src/lsp/transport-request-timeout.test.ts +73 -0
  236. package/packages/lsp-core/src/lsp/transport.ts +16 -2
  237. package/packages/lsp-core/src/lsp/types.ts +8 -0
  238. package/packages/lsp-core/src/lsp/workspace-document-state.test.ts +84 -1
  239. package/packages/lsp-core/src/lsp/workspace-document-state.ts +30 -11
  240. package/packages/lsp-core/src/lsp/workspace-edit-adversarial.test.ts +20 -1
  241. package/packages/lsp-core/src/lsp/workspace-markers.ts +18 -0
  242. package/packages/lsp-core/src/mcp.ts +3 -0
  243. package/packages/lsp-core/src/request-context.test.ts +29 -0
  244. package/packages/lsp-core/src/request-context.ts +1 -1
  245. package/packages/lsp-core/src/tool-surface.test.ts +13 -1
  246. package/packages/lsp-core/src/tools/definitions.ts +14 -0
  247. package/packages/lsp-core/src/tools/diagnostics.ts +3 -3
  248. package/packages/lsp-core/src/tools/format.test.ts +56 -0
  249. package/packages/lsp-core/src/tools/format.ts +56 -0
  250. package/packages/lsp-core/src/tools/index.ts +1 -0
  251. package/packages/lsp-core/src/tools/navigation.ts +4 -2
  252. package/packages/lsp-core/src/tools/parameters.test.ts +51 -0
  253. package/packages/lsp-core/src/tools/rename.ts +4 -2
  254. package/packages/lsp-core/src/tools/symbols.ts +1 -1
  255. package/packages/lsp-core/src/tools/types.ts +10 -0
  256. package/packages/lsp-daemon/dist/cli.js +793 -323
  257. package/packages/lsp-daemon/dist/client.d.ts +10 -0
  258. package/packages/lsp-daemon/dist/client.js +753 -280
  259. package/packages/lsp-daemon/dist/daemon-client.d.ts +1 -0
  260. package/packages/lsp-daemon/dist/daemon-client.js +3 -0
  261. package/packages/lsp-daemon/dist/ensure-daemon.js +1 -0
  262. package/packages/lsp-daemon/dist/index.js +757 -289
  263. package/packages/lsp-daemon/dist/proxy.js +3 -0
  264. package/packages/lsp-daemon/dist/version-reap.js +1 -1
  265. package/packages/lsp-daemon/package.json +1 -1
  266. package/packages/lsp-tools-mcp/dist/cli.js +712 -244
  267. package/packages/lsp-tools-mcp/dist/lsp/manager.js +248 -119
  268. package/packages/lsp-tools-mcp/dist/mcp.js +714 -246
  269. package/packages/lsp-tools-mcp/dist/request-context.js +12 -13
  270. package/packages/lsp-tools-mcp/dist/tools.js +718 -254
  271. package/packages/lsp-tools-mcp/package.json +1 -1
  272. package/packages/omo-codex/THIRD-PARTY-NOTICES.md +4 -21
  273. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +4 -6
  274. package/packages/omo-codex/plugin/.mcp.json +0 -6
  275. package/packages/omo-codex/plugin/AGENTS.md +47 -0
  276. package/packages/omo-codex/plugin/README.md +2 -2
  277. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +45 -49
  278. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  279. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  280. package/packages/omo-codex/plugin/components/bootstrap/src/hook.ts +1 -0
  281. package/packages/omo-codex/plugin/components/comment-checker/AGENTS.md +9 -0
  282. package/packages/omo-codex/plugin/components/comment-checker/biome.json +2 -2
  283. package/packages/omo-codex/plugin/components/comment-checker/dist/cli.js +2 -1
  284. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  285. package/packages/omo-codex/plugin/components/comment-checker/package.json +5 -5
  286. package/packages/omo-codex/plugin/components/comment-checker/src/apply-patch.ts +2 -8
  287. package/packages/omo-codex/plugin/components/comment-checker/src/core.ts +1 -2
  288. package/packages/omo-codex/plugin/components/comment-checker/src/request-extractor.ts +1 -1
  289. package/packages/omo-codex/plugin/components/comment-checker/src/runner.ts +1 -0
  290. package/packages/omo-codex/plugin/components/git-bash/AGENTS.md +1 -1
  291. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  292. package/packages/omo-codex/plugin/components/git-bash/package.json +3 -4
  293. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/biome.json +2 -2
  294. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/cli.js +1 -5
  295. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/codex-hook.js +1 -5
  296. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  297. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +5 -5
  298. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/src/codex-hook.ts +1 -5
  299. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/codex-hook.test.ts +4 -21
  300. package/packages/omo-codex/plugin/components/lcx/skills/lcx-doctor/SKILL.md +1 -1
  301. package/packages/omo-codex/plugin/components/lsp/AGENTS.md +30 -15
  302. package/packages/omo-codex/plugin/components/lsp/biome.json +2 -2
  303. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +4 -4
  304. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +741 -294
  305. package/packages/omo-codex/plugin/components/lsp/dist/daemon-cli-path.js +1 -1
  306. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  307. package/packages/omo-codex/plugin/components/lsp/package.json +5 -5
  308. package/packages/omo-codex/plugin/components/lsp/src/cli.ts +1 -1
  309. package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +1 -1
  310. package/packages/omo-codex/plugin/components/lsp/src/daemon-cli-path.ts +1 -5
  311. package/packages/omo-codex/plugin/components/lsp/test/codex-hook-unavailable.test.ts +6 -7
  312. package/packages/omo-codex/plugin/components/lsp/test/codex-hook.test.ts +1 -2
  313. package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +11 -1
  314. package/packages/omo-codex/plugin/components/rules/AGENTS.md +12 -0
  315. package/packages/omo-codex/plugin/components/rules/biome.json +2 -2
  316. package/packages/omo-codex/plugin/components/rules/dist/cli.js +60 -45
  317. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  318. package/packages/omo-codex/plugin/components/rules/package.json +7 -7
  319. package/packages/omo-codex/plugin/components/rules/src/config.ts +1 -2
  320. package/packages/omo-codex/plugin/components/rules/src/persistent-cache.ts +1 -2
  321. package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +9 -5
  322. package/packages/omo-codex/plugin/components/rules/src/rules-engine-factory.ts +1 -4
  323. package/packages/omo-codex/plugin/components/rules/src/static-injection.ts +4 -9
  324. package/packages/omo-codex/plugin/components/rules/test/bundled-rules-priority.test.ts +11 -16
  325. package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +17 -25
  326. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +9 -7
  327. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +0 -6
  328. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-dedup.test.ts +6 -4
  329. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-directive.test.ts +12 -9
  330. package/packages/omo-codex/plugin/components/rules/test/codex-hook.test.ts +28 -37
  331. package/packages/omo-codex/plugin/components/rules/test/dynamic-target-fingerprints.test.ts +1 -2
  332. package/packages/omo-codex/plugin/components/rules/test/engine.test.ts +7 -4
  333. package/packages/omo-codex/plugin/components/rules/test/finder.test.ts +2 -3
  334. package/packages/omo-codex/plugin/components/rules/test/formatter.test.ts +39 -72
  335. package/packages/omo-codex/plugin/components/rules/test/hephaestus-model-variant.test.ts +1 -2
  336. package/packages/omo-codex/plugin/components/rules/test/hook-output.test.ts +2 -3
  337. package/packages/omo-codex/plugin/components/rules/test/matcher.test.ts +2 -3
  338. package/packages/omo-codex/plugin/components/rules/test/package-smoke.test.ts +1 -1
  339. package/packages/omo-codex/plugin/components/rules/test/parser.test.ts +1 -2
  340. package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +5 -6
  341. package/packages/omo-codex/plugin/components/rules/test/rules-engine-consumption.test.ts +3 -6
  342. package/packages/omo-codex/plugin/components/rules/test/scanner.test.ts +1 -2
  343. package/packages/omo-codex/plugin/components/rules/test/sources.test.ts +2 -5
  344. package/packages/omo-codex/plugin/components/rules/test/windows-git-bash-bundled-rule.test.ts +2 -17
  345. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  346. package/packages/omo-codex/plugin/components/teammode/package.json +5 -5
  347. package/packages/omo-codex/plugin/components/teammode/test/thread-title-hook.test.ts +4 -10
  348. package/packages/omo-codex/plugin/components/telemetry/AGENTS.md +8 -0
  349. package/packages/omo-codex/plugin/components/telemetry/biome.json +2 -2
  350. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +2463 -437
  351. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +2467 -441
  352. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  353. package/packages/omo-codex/plugin/components/telemetry/package.json +5 -5
  354. package/packages/omo-codex/plugin/components/telemetry/src/codex-hook.ts +1 -4
  355. package/packages/omo-codex/plugin/components/telemetry/src/posthog.ts +4 -14
  356. package/packages/omo-codex/plugin/components/telemetry/src/product-identity.ts +1 -1
  357. package/packages/omo-codex/plugin/components/telemetry/test/diagnostics.test.ts +2 -5
  358. package/packages/omo-codex/plugin/components/ultrawork/AGENTS.md +10 -4
  359. package/packages/omo-codex/plugin/components/ultrawork/biome.json +2 -2
  360. package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +489 -4
  361. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  362. package/packages/omo-codex/plugin/components/ultrawork/package.json +5 -6
  363. package/packages/omo-codex/plugin/components/ultrawork/scripts/sync-directive.mjs +30 -14
  364. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +6 -7
  365. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +31 -7
  366. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +2 -1
  367. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +5 -5
  368. package/packages/omo-codex/plugin/components/ultrawork/src/directive-content.ts +4 -0
  369. package/packages/omo-codex/plugin/components/ultrawork/src/directive.ts +5 -2
  370. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook-trigger-policy.test.ts +9 -1
  371. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +0 -136
  372. package/packages/omo-codex/plugin/components/ultrawork/test/directive-source.test.ts +14 -8
  373. package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +12 -1
  374. package/packages/omo-codex/plugin/components/ultrawork/test/skill-pointer.test.ts +0 -2
  375. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/AGENTS.md +2 -2
  376. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/NOTICE +1 -1
  377. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/README.md +5 -5
  378. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/biome.json +2 -2
  379. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/directive.md +6 -6
  380. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/dist/cli.js +12 -12
  381. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +28 -0
  382. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/package.json +12 -12
  383. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/boulder-reader.ts +1 -1
  384. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/cli.ts +1 -1
  385. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/codex-hook.ts +3 -3
  386. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/directive.ts +1 -1
  387. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/index.ts +1 -1
  388. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/boulder-reader.test.ts +3 -3
  389. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/cli.test.ts +1 -4
  390. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/codex-hook.test.ts +8 -22
  391. package/packages/omo-codex/plugin/components/ulw-loop/AGENTS.md +19 -0
  392. package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +1 -1
  393. package/packages/omo-codex/plugin/components/ulw-loop/README.md +12 -1
  394. package/packages/omo-codex/plugin/components/ulw-loop/biome.json +2 -2
  395. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +15 -3
  396. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.d.ts +12 -0
  397. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.js +45 -0
  398. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-continuation.js +9 -0
  399. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.d.ts +15 -0
  400. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.js +15 -1
  401. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-template.d.ts +8 -0
  402. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-template.js +120 -0
  403. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +40 -39
  404. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-commands.js +7 -2
  405. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.d.ts +2 -1
  406. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.js +12 -1
  407. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-subcommands.js +2 -0
  408. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +958 -342
  409. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.d.ts +2 -0
  410. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +27 -6
  411. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.d.ts +13 -0
  412. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.js +15 -1
  413. package/packages/omo-codex/plugin/components/ulw-loop/dist/domain-types.d.ts +17 -9
  414. package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.js +1 -1
  415. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.js +17 -2
  416. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-missing-recovery.d.ts +13 -0
  417. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-missing-recovery.js +19 -0
  418. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-aggregate.d.ts +7 -0
  419. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-aggregate.js +9 -0
  420. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-artifacts.d.ts +12 -0
  421. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-artifacts.js +104 -0
  422. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-fields.d.ts +13 -1
  423. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-fields.js +65 -9
  424. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-verdicts.js +5 -1
  425. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.d.ts +4 -2
  426. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.js +69 -111
  427. package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.js +4 -2
  428. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.js +185 -14
  429. package/packages/omo-codex/plugin/components/ulw-loop/dist/status-next-actions.d.ts +6 -0
  430. package/packages/omo-codex/plugin/components/ulw-loop/dist/status-next-actions.js +33 -0
  431. package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +3 -3
  432. package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.d.ts +18 -0
  433. package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.js +65 -0
  434. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  435. package/packages/omo-codex/plugin/components/ulw-loop/package.json +5 -5
  436. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +3 -2
  437. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +108 -0
  438. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +22 -1
  439. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-codex-validation.ts +81 -0
  440. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-continuation.ts +7 -0
  441. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-reconciliation.ts +31 -1
  442. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-template.ts +134 -0
  443. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +38 -71
  444. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-commands.ts +7 -2
  445. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-output.ts +14 -1
  446. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-subcommands.ts +2 -0
  447. package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +3 -5
  448. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +34 -5
  449. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-snapshot.ts +26 -1
  450. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +3 -1
  451. package/packages/omo-codex/plugin/components/ulw-loop/src/domain-types.ts +19 -9
  452. package/packages/omo-codex/plugin/components/ulw-loop/src/paths.ts +1 -1
  453. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-io.ts +18 -3
  454. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-missing-recovery.ts +27 -0
  455. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-aggregate.ts +11 -0
  456. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-artifacts.ts +123 -0
  457. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-fields.ts +68 -15
  458. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-verdicts.ts +6 -1
  459. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate.ts +82 -131
  460. package/packages/omo-codex/plugin/components/ulw-loop/src/review-blockers.ts +4 -2
  461. package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-guard.ts +187 -12
  462. package/packages/omo-codex/plugin/components/ulw-loop/src/status-next-actions.ts +36 -0
  463. package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +3 -3
  464. package/packages/omo-codex/plugin/components/ulw-loop/src/surface.ts +95 -0
  465. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-continuation.test.ts +0 -1
  466. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-final.test.ts +133 -1
  467. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-template.test.ts +137 -0
  468. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-create-goals.test.ts +25 -0
  469. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-entrypoint.test.ts +26 -2
  470. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-status-next-actions.test.ts +183 -0
  471. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +37 -2
  472. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-snapshot.test.ts +18 -0
  473. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +0 -3
  474. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/quality-gate-builder.ts +7 -3
  475. package/packages/omo-codex/plugin/components/ulw-loop/test/guided-recovery.test.ts +105 -0
  476. package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +5 -37
  477. package/packages/omo-codex/plugin/components/ulw-loop/test/paths.test.ts +9 -0
  478. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-aggregate-basics.test.ts +258 -0
  479. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-cap-and-dedupe.test.ts +22 -0
  480. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-poisoning-cascades.test.ts +97 -0
  481. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-roles.test.ts +46 -2
  482. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-senpi-surface.test.ts +131 -0
  483. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-single-report.test.ts +241 -0
  484. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate.test.ts +48 -3
  485. package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-guard.test.ts +318 -1
  486. package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +8 -5
  487. package/packages/omo-codex/plugin/components/ulw-loop/test/stop-resume-hook.test.ts +1 -1
  488. package/packages/omo-codex/plugin/components/ulw-loop/test/surface.test.ts +74 -0
  489. package/packages/omo-codex/plugin/components/ulw-loop/test/ultrawork-directive.test.ts +13 -8
  490. package/packages/omo-codex/plugin/components/ulw-loop/vitest.config.ts +1 -0
  491. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  492. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  493. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  494. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  495. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  496. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  497. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  498. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  499. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  500. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  501. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  502. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  503. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  504. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  505. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +17 -0
  506. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  507. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-ulw-execute-continuation.json +17 -0
  508. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  509. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  510. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  511. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  512. package/packages/omo-codex/plugin/model-catalog.json +3 -3
  513. package/packages/omo-codex/plugin/package-lock.json +676 -524
  514. package/packages/omo-codex/plugin/package.json +2 -3
  515. package/packages/omo-codex/plugin/scripts/AGENTS.md +39 -0
  516. package/packages/omo-codex/plugin/scripts/auto-update-plan.mjs +1 -2
  517. package/packages/omo-codex/plugin/scripts/auto-update.mjs +0 -9
  518. package/packages/omo-codex/plugin/scripts/canonical-ultrawork-directive.mjs +17 -0
  519. package/packages/omo-codex/plugin/scripts/hook-status-message.mjs +0 -1
  520. package/packages/omo-codex/plugin/scripts/migrate-codex-config/catalog.mjs +3 -3
  521. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +36 -13
  522. package/packages/omo-codex/plugin/shared/package.json +3 -4
  523. package/packages/omo-codex/plugin/shared/src/config-loader.ts +2 -102
  524. package/packages/omo-codex/plugin/shared/src/config-migration.ts +0 -1
  525. package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +41 -130
  526. package/packages/omo-codex/plugin/skills/ast-grep/AGENTS.md +51 -0
  527. package/packages/omo-codex/plugin/skills/coding-agent-sessions/AGENTS.md +62 -0
  528. package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +3 -2
  529. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +1 -1
  530. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/senpi.md +4 -4
  531. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
  532. package/packages/omo-codex/plugin/skills/data-scientist/SKILL.md +99 -239
  533. package/packages/omo-codex/plugin/skills/data-scientist/references/execution-surfaces.md +91 -0
  534. package/packages/omo-codex/plugin/skills/data-scientist/references/placement.md +74 -0
  535. package/packages/omo-codex/plugin/skills/data-scientist/references/polars-lane.md +95 -0
  536. package/packages/omo-codex/plugin/skills/data-scientist/references/uv-setup.md +1 -1
  537. package/packages/omo-codex/plugin/skills/data-scientist/references/visualization.md +64 -0
  538. package/packages/omo-codex/plugin/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
  539. package/packages/omo-codex/plugin/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
  540. package/packages/omo-codex/plugin/skills/debugging/SKILL.md +2 -0
  541. package/packages/omo-codex/plugin/skills/debugging/references/methodology/00-setup.md +12 -0
  542. package/packages/omo-codex/plugin/skills/debugging/references/methodology/02-investigate.md +21 -0
  543. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/go.md +15 -1
  544. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/native-binary.md +38 -0
  545. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/node.md +25 -0
  546. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/python.md +13 -0
  547. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/rust.md +41 -0
  548. package/packages/omo-codex/plugin/skills/debugging/references/scripts/dap.mjs +267 -0
  549. package/packages/omo-codex/plugin/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  550. package/packages/omo-codex/plugin/skills/debugging/references/tools/dap.md +103 -0
  551. package/packages/omo-codex/plugin/skills/debugging/references/tools/frida.md +193 -0
  552. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +11 -7
  553. package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +1 -0
  554. package/packages/omo-codex/plugin/skills/frontend/references/design/print-paged-media.md +76 -0
  555. package/packages/omo-codex/plugin/skills/frontend/references/design/stylegallery.md +80 -0
  556. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/README.md +1 -1
  557. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  558. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  559. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  560. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/orchestration.md +1 -1
  561. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/routing.md +5 -5
  562. package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +13 -13
  563. package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +1 -1
  564. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +4 -4
  565. package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
  566. package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +2 -0
  567. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +110 -0
  568. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +1 -1
  569. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
  570. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +9 -2
  571. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +15 -3
  572. package/packages/omo-codex/plugin/skills/{start-work → ulw-execute}/SKILL.md +19 -26
  573. package/packages/omo-codex/plugin/skills/ulw-execute/agents/openai.yaml +2 -0
  574. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +3 -2
  575. package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +108 -0
  576. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +22 -1
  577. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +6 -7
  578. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +31 -7
  579. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +2 -1
  580. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +5 -5
  581. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +4 -2
  582. package/packages/omo-codex/plugin/skills/visual-qa/AGENTS.md +58 -0
  583. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +3 -2
  584. package/packages/omo-codex/plugin/test/AGENTS.md +47 -0
  585. package/packages/omo-codex/plugin/test/aggregate-agents.test.mjs +19 -173
  586. package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +9 -48
  587. package/packages/omo-codex/plugin/test/aggregate-manifest.test.mjs +2 -3
  588. package/packages/omo-codex/plugin/test/aggregate-mcp.test.mjs +2 -7
  589. package/packages/omo-codex/plugin/test/aggregate-model-catalog.test.mjs +1 -1
  590. package/packages/omo-codex/plugin/test/aggregate-plugin-fixture.mjs +175 -13
  591. package/packages/omo-codex/plugin/test/aggregate.test.mjs +78 -2
  592. package/packages/omo-codex/plugin/test/auto-update-release-notes.test.mjs +19 -33
  593. package/packages/omo-codex/plugin/test/auto-update.test.mjs +2 -27
  594. package/packages/omo-codex/plugin/test/bootstrap-setup.test.mjs +0 -31
  595. package/packages/omo-codex/plugin/test/canonical-ultrawork-directive.test.mjs +53 -0
  596. package/packages/omo-codex/plugin/test/component-bin-names.test.mjs +2 -2
  597. package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +1 -51
  598. package/packages/omo-codex/plugin/test/component-hook-contract-cases.mjs +2 -2
  599. package/packages/omo-codex/plugin/test/hook-status-message.test.mjs +4 -5
  600. package/packages/omo-codex/plugin/test/lcx-contribute-bug-fix-template.test.mjs +21 -27
  601. package/packages/omo-codex/plugin/test/mcp-research-servers.test.mjs +1 -3
  602. package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +8 -8
  603. package/packages/omo-codex/plugin/test/scaffold-plan.test.mjs +0 -36
  604. package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +101 -0
  605. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +23 -13
  606. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +14 -119
  607. package/packages/omo-codex/plugin/test/teammode-archive-ambiguity.test.mjs +0 -40
  608. package/packages/omo-codex/plugin/test/teammode-communication.test.mjs +6 -62
  609. package/packages/omo-codex/plugin/test/teammode-thread-links.test.mjs +3 -36
  610. package/packages/omo-codex/plugin/test/teammode-transport.test.mjs +0 -44
  611. package/packages/omo-codex/plugin/test/teammode-worktree.test.mjs +2 -6
  612. package/packages/omo-codex/plugin/test/ultrawork-skill-pointer.test.mjs +5 -5
  613. package/packages/omo-codex/plugin/test/ulw-plan-review-state-contract.test.mjs +0 -3
  614. package/packages/omo-codex/scripts/AGENTS.md +36 -0
  615. package/packages/omo-codex/scripts/install-cache-copy.test.mjs +27 -1
  616. package/packages/omo-codex/scripts/install-config-autonomous-features.test.mjs +1 -1
  617. package/packages/omo-codex/scripts/install-config-autonomous.test.mjs +2 -1
  618. package/packages/omo-codex/scripts/install-config-git-bash.test.mjs +0 -23
  619. package/packages/omo-codex/scripts/install-config-reasoning.test.mjs +2 -2
  620. package/packages/omo-codex/scripts/install-dist/install-local.mjs +2817 -913
  621. package/packages/omo-codex/scripts/install-git-bash-mcp-env.test.mjs +1 -25
  622. package/packages/omo-codex/scripts/install-lazycodex-version-stamp.test.mjs +7 -2
  623. package/packages/omo-codex/scripts/install-mcp-runtime.test.mjs +0 -36
  624. package/packages/shared-skills/skills/ast-grep/AGENTS.md +51 -0
  625. package/packages/shared-skills/skills/coding-agent-sessions/AGENTS.md +62 -0
  626. package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +3 -2
  627. package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +1 -1
  628. package/packages/shared-skills/skills/coding-agent-sessions/references/senpi.md +4 -4
  629. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
  630. package/packages/shared-skills/skills/data-scientist/SKILL.md +99 -239
  631. package/packages/shared-skills/skills/data-scientist/references/execution-surfaces.md +91 -0
  632. package/packages/shared-skills/skills/data-scientist/references/placement.md +74 -0
  633. package/packages/shared-skills/skills/data-scientist/references/polars-lane.md +95 -0
  634. package/packages/shared-skills/skills/data-scientist/references/uv-setup.md +1 -1
  635. package/packages/shared-skills/skills/data-scientist/references/visualization.md +64 -0
  636. package/packages/shared-skills/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
  637. package/packages/shared-skills/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
  638. package/packages/shared-skills/skills/debugging/SKILL.md +2 -0
  639. package/packages/shared-skills/skills/debugging/references/methodology/00-setup.md +12 -0
  640. package/packages/shared-skills/skills/debugging/references/methodology/02-investigate.md +21 -0
  641. package/packages/shared-skills/skills/debugging/references/runtimes/go.md +15 -1
  642. package/packages/shared-skills/skills/debugging/references/runtimes/native-binary.md +38 -0
  643. package/packages/shared-skills/skills/debugging/references/runtimes/node.md +25 -0
  644. package/packages/shared-skills/skills/debugging/references/runtimes/python.md +13 -0
  645. package/packages/shared-skills/skills/debugging/references/runtimes/rust.md +41 -0
  646. package/packages/shared-skills/skills/debugging/references/scripts/dap.mjs +267 -0
  647. package/packages/shared-skills/skills/debugging/references/scripts/dap.test.ts +86 -0
  648. package/packages/shared-skills/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  649. package/packages/shared-skills/skills/debugging/references/tools/dap.md +103 -0
  650. package/packages/shared-skills/skills/debugging/references/tools/frida.md +193 -0
  651. package/packages/shared-skills/skills/frontend/SKILL.md +11 -7
  652. package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +1 -0
  653. package/packages/shared-skills/skills/frontend/references/design/print-paged-media.md +76 -0
  654. package/packages/shared-skills/skills/frontend/references/design/stylegallery.md +80 -0
  655. package/packages/shared-skills/skills/frontend/references/designpowers/README.md +1 -1
  656. package/packages/shared-skills/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  657. package/packages/shared-skills/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  658. package/packages/shared-skills/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  659. package/packages/shared-skills/skills/frontend/references/designpowers/orchestration.md +1 -1
  660. package/packages/shared-skills/skills/frontend/references/designpowers/routing.md +5 -5
  661. package/packages/shared-skills/skills/init-deep/SKILL.md +13 -13
  662. package/packages/shared-skills/skills/review-work/SKILL.md +3 -3
  663. package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
  664. package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +2 -0
  665. package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +110 -0
  666. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +1 -1
  667. package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
  668. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +9 -2
  669. package/packages/shared-skills/skills/{start-work → ulw-execute}/SKILL.md +17 -16
  670. package/packages/shared-skills/skills/ulw-plan/SKILL.md +6 -7
  671. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +31 -7
  672. package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +2 -1
  673. package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +5 -5
  674. package/packages/shared-skills/skills/ulw-research/SKILL.md +4 -2
  675. package/packages/shared-skills/skills/visual-qa/AGENTS.md +58 -0
  676. package/packages/shared-skills/skills/visual-qa/SKILL.md +3 -2
  677. package/script/qa/web-terminal-visual-qa.mjs +2 -0
  678. package/script/qa/xterm-live-terminal.mjs +18 -2
  679. package/dist/config/schema/codegraph.d.ts +0 -12
  680. package/dist/config/schema/start-work.d.ts +0 -5
  681. package/dist/features/builtin-commands/templates/start-work.d.ts +0 -1
  682. package/dist/features/builtin-skills/index.d.ts +0 -1
  683. package/dist/features/builtin-skills/skill-file-loader.d.ts +0 -1
  684. package/dist/features/builtin-skills/skills/agent-browser-skill.d.ts +0 -1
  685. package/dist/features/builtin-skills/skills/agent-browser-template.d.ts +0 -1
  686. package/dist/features/builtin-skills/skills/debugging.d.ts +0 -1
  687. package/dist/features/builtin-skills/skills/dev-browser.d.ts +0 -1
  688. package/dist/features/builtin-skills/skills/frontend.d.ts +0 -1
  689. package/dist/features/builtin-skills/skills/git-master-sections/commit-atomic-planning.d.ts +0 -1
  690. package/dist/features/builtin-skills/skills/git-master-sections/commit-context-analysis.d.ts +0 -1
  691. package/dist/features/builtin-skills/skills/git-master-sections/commit-execution-verification.d.ts +0 -1
  692. package/dist/features/builtin-skills/skills/git-master-sections/commit-workflow.d.ts +0 -1
  693. package/dist/features/builtin-skills/skills/git-master-sections/history-search-workflow.d.ts +0 -1
  694. package/dist/features/builtin-skills/skills/git-master-sections/overview.d.ts +0 -1
  695. package/dist/features/builtin-skills/skills/git-master-sections/quick-reference.d.ts +0 -1
  696. package/dist/features/builtin-skills/skills/git-master-sections/rebase-workflow.d.ts +0 -1
  697. package/dist/features/builtin-skills/skills/git-master-skill-metadata.d.ts +0 -1
  698. package/dist/features/builtin-skills/skills/git-master.d.ts +0 -1
  699. package/dist/features/builtin-skills/skills/index.d.ts +0 -1
  700. package/dist/features/builtin-skills/skills/init-deep.d.ts +0 -1
  701. package/dist/features/builtin-skills/skills/playwright-cli.d.ts +0 -1
  702. package/dist/features/builtin-skills/skills/playwright-mcp-skill.d.ts +0 -1
  703. package/dist/features/builtin-skills/skills/playwright.d.ts +0 -1
  704. package/dist/features/builtin-skills/skills/remove-ai-slops.d.ts +0 -1
  705. package/dist/features/builtin-skills/skills/review-work.d.ts +0 -1
  706. package/dist/features/builtin-skills/skills/security-research.d.ts +0 -1
  707. package/dist/features/builtin-skills/skills/security-review.d.ts +0 -1
  708. package/dist/features/builtin-skills/skills/team-mode.d.ts +0 -1
  709. package/dist/features/builtin-skills/skills/visual-qa.d.ts +0 -1
  710. package/dist/features/builtin-skills/skills.d.ts +0 -1
  711. package/dist/features/builtin-skills/types.d.ts +0 -1
  712. package/dist/features/claude-code-plugin-loader/agent-loader.d.ts +0 -1
  713. package/dist/features/claude-code-plugin-loader/command-loader.d.ts +0 -1
  714. package/dist/features/claude-code-plugin-loader/discovery-core.d.ts +0 -1
  715. package/dist/features/claude-code-plugin-loader/discovery-paths.d.ts +0 -1
  716. package/dist/features/claude-code-plugin-loader/discovery.d.ts +0 -1
  717. package/dist/features/claude-code-plugin-loader/hook-loader.d.ts +0 -1
  718. package/dist/features/claude-code-plugin-loader/index.d.ts +0 -1
  719. package/dist/features/claude-code-plugin-loader/install-path-resolver.d.ts +0 -1
  720. package/dist/features/claude-code-plugin-loader/installed-plugin-database.d.ts +0 -1
  721. package/dist/features/claude-code-plugin-loader/loaded-plugin.d.ts +0 -1
  722. package/dist/features/claude-code-plugin-loader/loader.d.ts +0 -1
  723. package/dist/features/claude-code-plugin-loader/mcp-server-loader.d.ts +0 -1
  724. package/dist/features/claude-code-plugin-loader/plugin-key.d.ts +0 -1
  725. package/dist/features/claude-code-plugin-loader/plugin-manifest.d.ts +0 -1
  726. package/dist/features/claude-code-plugin-loader/plugin-path-resolver.d.ts +0 -1
  727. package/dist/features/claude-code-plugin-loader/plugin-settings.d.ts +0 -1
  728. package/dist/features/claude-code-plugin-loader/scope-filter.d.ts +0 -1
  729. package/dist/features/claude-code-plugin-loader/skill-loader.d.ts +0 -1
  730. package/dist/features/claude-code-plugin-loader/types.d.ts +0 -1
  731. package/dist/hooks/codegraph-bootstrap/command-runner.d.ts +0 -17
  732. package/dist/hooks/codegraph-bootstrap/hook.d.ts +0 -35
  733. package/dist/hooks/codegraph-bootstrap/index.d.ts +0 -1
  734. package/dist/hooks/codegraph-bootstrap/project-root.d.ts +0 -1
  735. package/dist/hooks/codegraph-bootstrap/status.d.ts +0 -11
  736. package/dist/hooks/ralph-loop/completion-promise-detector-test-input.d.ts +0 -11
  737. package/dist/hooks/ralph-loop/loop-session-recovery.d.ts +0 -7
  738. package/dist/hooks/start-work/start-work-hook.d.ts +0 -23
  739. package/dist/mcp/codegraph.d.ts +0 -16
  740. package/dist/plugin/chat-message/start-work-message.d.ts +0 -5
  741. package/dist/shared/prompt-async-gate/message-inspection-error.d.ts +0 -1
  742. package/dist/shared/prompt-async-gate/pending-tool-turn.d.ts +0 -1
  743. package/dist/shared/prompt-async-gate/prompt-message-state.d.ts +0 -1
  744. package/dist/shared/prompt-async-gate/queue.d.ts +0 -1
  745. package/dist/shared/prompt-async-gate/recent-dispatches.d.ts +0 -1
  746. package/dist/shared/prompt-async-gate/reservations.d.ts +0 -1
  747. package/dist/shared/prompt-async-gate/semantic-dedupe.d.ts +0 -1
  748. package/dist/shared/prompt-async-gate/session-idle-dispatch.d.ts +0 -1
  749. package/dist/shared/prompt-async-gate/timing.d.ts +0 -1
  750. package/dist/shared/prompt-async-gate/types.d.ts +0 -1
  751. package/dist/skills/data-scientist/references/common-scenarios.md +0 -176
  752. package/dist/skills/data-scientist/references/execution-templates.md +0 -197
  753. package/dist/skills/data-scientist/references/integration-patterns.md +0 -153
  754. package/dist/skills/data-scientist/references/performance-benchmarks.md +0 -37
  755. package/dist/tools/call-omo-agent/background-agent-executor.d.ts +0 -5
  756. package/dist/tools/call-omo-agent/message-storage-directory.d.ts +0 -1
  757. package/dist/tools/delegate-task/model-string-parser.d.ts +0 -1
  758. package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.d.ts +0 -1
  759. package/packages/lsp-tools-mcp/dist/lsp/constants.d.ts +0 -1
  760. package/packages/lsp-tools-mcp/dist/lsp/language-mappings.d.ts +0 -1
  761. package/packages/lsp-tools-mcp/dist/lsp/process-signal-cleanup.d.ts +0 -1
  762. package/packages/lsp-tools-mcp/dist/missing-dependency-result.d.ts +0 -1
  763. package/packages/omo-codex/plugin/components/codegraph/AGENTS.md +0 -58
  764. package/packages/omo-codex/plugin/components/codegraph/NODE-RUNTIME-LICENSES.md +0 -2951
  765. package/packages/omo-codex/plugin/components/codegraph/NOTICE +0 -16
  766. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +0 -12136
  767. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +0 -9734
  768. package/packages/omo-codex/plugin/components/codegraph/package.json +0 -33
  769. package/packages/omo-codex/plugin/components/codegraph/src/cache-gc.ts +0 -29
  770. package/packages/omo-codex/plugin/components/codegraph/src/cli.ts +0 -79
  771. package/packages/omo-codex/plugin/components/codegraph/src/hook-input.ts +0 -33
  772. package/packages/omo-codex/plugin/components/codegraph/src/hook-sweep.ts +0 -25
  773. package/packages/omo-codex/plugin/components/codegraph/src/hook-types.ts +0 -131
  774. package/packages/omo-codex/plugin/components/codegraph/src/hook.ts +0 -258
  775. package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +0 -309
  776. package/packages/omo-codex/plugin/components/codegraph/src/mcp-unavailable.ts +0 -80
  777. package/packages/omo-codex/plugin/components/codegraph/src/post-tool-use-hook.ts +0 -34
  778. package/packages/omo-codex/plugin/components/codegraph/src/serve-invocation.ts +0 -29
  779. package/packages/omo-codex/plugin/components/codegraph/src/serve.ts +0 -263
  780. package/packages/omo-codex/plugin/components/codegraph/src/session-start-command.ts +0 -106
  781. package/packages/omo-codex/plugin/components/codegraph/src/session-start-cooldown.ts +0 -145
  782. package/packages/omo-codex/plugin/components/codegraph/src/session-start-hook-runtime.ts +0 -21
  783. package/packages/omo-codex/plugin/components/codegraph/src/session-start-lock.ts +0 -139
  784. package/packages/omo-codex/plugin/components/codegraph/src/session-start-outcome.ts +0 -15
  785. package/packages/omo-codex/plugin/components/codegraph/src/session-start-paths.ts +0 -32
  786. package/packages/omo-codex/plugin/components/codegraph/src/session-start-project.ts +0 -109
  787. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker-result.ts +0 -148
  788. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker.ts +0 -175
  789. package/packages/omo-codex/plugin/components/codegraph/src/sweep-cli.ts +0 -81
  790. package/packages/omo-codex/plugin/components/codegraph/test/cache-gc.test.ts +0 -34
  791. package/packages/omo-codex/plugin/components/codegraph/test/hook-exclusion.test.ts +0 -112
  792. package/packages/omo-codex/plugin/components/codegraph/test/hook-registration.test.ts +0 -26
  793. package/packages/omo-codex/plugin/components/codegraph/test/hook-session-start-guard.test.ts +0 -160
  794. package/packages/omo-codex/plugin/components/codegraph/test/hook-store-upgrade.test.ts +0 -50
  795. package/packages/omo-codex/plugin/components/codegraph/test/hook-sweep.test.ts +0 -29
  796. package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +0 -320
  797. package/packages/omo-codex/plugin/components/codegraph/test/mcp-bridge-fixtures.ts +0 -172
  798. package/packages/omo-codex/plugin/components/codegraph/test/package-runtime.test.ts +0 -91
  799. package/packages/omo-codex/plugin/components/codegraph/test/provisioned-node-guard.test.ts +0 -100
  800. package/packages/omo-codex/plugin/components/codegraph/test/serve-built-wrapper.test.ts +0 -76
  801. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge-lifecycle.test.ts +0 -133
  802. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge.test.ts +0 -245
  803. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-facade.test.ts +0 -69
  804. package/packages/omo-codex/plugin/components/codegraph/test/serve-node-support.test.ts +0 -43
  805. package/packages/omo-codex/plugin/components/codegraph/test/serve-provision.test.ts +0 -147
  806. package/packages/omo-codex/plugin/components/codegraph/test/serve-unavailable.test.ts +0 -175
  807. package/packages/omo-codex/plugin/components/codegraph/test/serve.test.ts +0 -385
  808. package/packages/omo-codex/plugin/components/codegraph/test/session-start-node-support.test.ts +0 -206
  809. package/packages/omo-codex/plugin/components/codegraph/test/session-start-project.test.ts +0 -58
  810. package/packages/omo-codex/plugin/components/codegraph/test/session-start-state.test.ts +0 -104
  811. package/packages/omo-codex/plugin/components/codegraph/test/session-start-trust-boundary.test.ts +0 -65
  812. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-availability.test.ts +0 -106
  813. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-cooldown.test.ts +0 -116
  814. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-flow.test.ts +0 -258
  815. package/packages/omo-codex/plugin/components/codegraph/test/sweep-cli.test.ts +0 -56
  816. package/packages/omo-codex/plugin/components/codegraph/tsconfig.build.json +0 -13
  817. package/packages/omo-codex/plugin/components/codegraph/tsconfig.json +0 -25
  818. package/packages/omo-codex/plugin/components/start-work-continuation/LICENSE +0 -21
  819. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +0 -28
  820. package/packages/omo-codex/plugin/components/ultrawork/directive.md +0 -471
  821. package/packages/omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md +0 -478
  822. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +0 -18
  823. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +0 -17
  824. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +0 -17
  825. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +0 -17
  826. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/editor.mjs +0 -125
  827. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/jsonc.mjs +0 -43
  828. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/scaffold.mjs +0 -29
  829. package/packages/omo-codex/plugin/scripts/migrate-omo-sot.mjs +0 -121
  830. package/packages/omo-codex/plugin/skills/data-scientist/references/common-scenarios.md +0 -176
  831. package/packages/omo-codex/plugin/skills/data-scientist/references/execution-templates.md +0 -197
  832. package/packages/omo-codex/plugin/skills/data-scientist/references/integration-patterns.md +0 -153
  833. package/packages/omo-codex/plugin/skills/data-scientist/references/performance-benchmarks.md +0 -37
  834. package/packages/omo-codex/plugin/skills/start-work/agents/openai.yaml +0 -2
  835. package/packages/omo-codex/plugin/test/aggregate-skills.test.mjs +0 -92
  836. package/packages/omo-codex/plugin/test/component-codegraph-mcp-smoke.test.mjs +0 -76
  837. package/packages/omo-codex/plugin/test/migrate-omo-sot.test.mjs +0 -179
  838. package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +0 -314
  839. package/packages/omo-codex/plugin/test/ulw-plan-scope-contract.test.mjs +0 -24
  840. package/packages/shared-skills/skills/data-scientist/references/common-scenarios.md +0 -176
  841. package/packages/shared-skills/skills/data-scientist/references/execution-templates.md +0 -197
  842. package/packages/shared-skills/skills/data-scientist/references/integration-patterns.md +0 -153
  843. package/packages/shared-skills/skills/data-scientist/references/performance-benchmarks.md +0 -37
  844. /package/dist/hooks/{start-work → ulw-execute}/context-info-formatters.d.ts +0 -0
  845. /package/dist/hooks/{start-work → ulw-execute}/explicit-plan-context.d.ts +0 -0
  846. /package/dist/hooks/{start-work → ulw-execute}/notepad-scaffold.d.ts +0 -0
  847. /package/dist/hooks/{start-work → ulw-execute}/parse-user-request.d.ts +0 -0
  848. /package/dist/hooks/{start-work → ulw-execute}/plan-discovery-context.d.ts +0 -0
  849. /package/dist/hooks/{start-work → ulw-execute}/plan-selection.d.ts +0 -0
  850. /package/dist/hooks/{start-work → ulw-execute}/session-plan-affinity.d.ts +0 -0
  851. /package/dist/hooks/{start-work → ulw-execute}/work-initializer.d.ts +0 -0
  852. /package/dist/hooks/{start-work → ulw-execute}/worktree-block.d.ts +0 -0
  853. /package/dist/hooks/{start-work → ulw-execute}/worktree-detector.d.ts +0 -0
  854. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/.gitattributes +0 -0
  855. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/CHANGELOG.md +0 -0
  856. /package/packages/omo-codex/plugin/components/{codegraph → ulw-execute-continuation}/LICENSE +0 -0
  857. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/plan-checklist.ts +0 -0
  858. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/types.ts +0 -0
  859. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-completed.json +0 -0
  860. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-mixed-platforms.json +0 -0
  861. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-single-codex-work.json +0 -0
  862. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-all-done.md +0 -0
  863. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-scaffold.md +0 -0
  864. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-nested-checkboxes.md +0 -0
  865. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-unchecked.md +0 -0
  866. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.build.json +0 -0
  867. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.json +0 -0
  868. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/vitest.config.ts +0 -0
@@ -3,22 +3,11 @@ import { existsSync, statSync } from "node:fs";
3
3
  import { readFile } from "node:fs/promises";
4
4
  import { resolve } from "node:path";
5
5
  import {
6
- buildTaskScopedAggregateReconciliationHint,
7
- canReconcileActiveFinalTaskScopedAggregateSnapshot,
8
- canReconcileCompletedTaskScopedAggregateSnapshot,
9
- } from "./checkpoint-reconciliation.js";
10
- import {
11
- formatCodexGoalReconciliation,
12
- readCodexGoalSnapshotInput,
13
- reconcileCodexGoalSnapshot,
14
- } from "./codex-goal-snapshot.js";
6
+ combineCheckpointValidationErrors,
7
+ validateCheckpointCodexGoal,
8
+ } from "./checkpoint-codex-validation.js";
15
9
  import { requireAllCriteriaPass, requireAllPlanCriteriaPass, requireEssentialCriteriaPass } from "./evidence.js";
16
- import {
17
- codexGoalMode,
18
- compatibleCodexObjectives,
19
- expectedCodexObjective,
20
- isFinalRunCompletionCandidate,
21
- } from "./goal-status.js";
10
+ import { codexGoalMode, isFinalRunCompletionCandidate } from "./goal-status.js";
22
11
  import type { UlwLoopScope } from "./paths.js";
23
12
  import { ulwLoopAttemptEvidenceDir } from "./paths.js";
24
13
  import { appendLedger, readUlwLoopPlan, withUlwLoopMutationLock, writePlan } from "./plan-io.js";
@@ -28,6 +17,7 @@ import {
28
17
  sameBlockerOccurrences,
29
18
  validateQualityGate,
30
19
  } from "./quality-gate.js";
20
+ import { resolveToolkitSurface } from "./surface.js";
31
21
  import type {
32
22
  UlwLoopAggregateCompletion,
33
23
  UlwLoopItem,
@@ -57,9 +47,6 @@ const QUALITY_GATE_FS = { existsSync, statSync } as const;
57
47
  function ulwLoopFail(message: string, code: string): never {
58
48
  throw new UlwLoopError(message, code);
59
49
  }
60
- function normalizeObjective(value: string): string {
61
- return value.replace(/\s+/g, " ").trim();
62
- }
63
50
  function nonEmptyEvidence(value: string): string {
64
51
  const trimmed = value.trim();
65
52
  return trimmed || ulwLoopFail("Evidence must be a non-empty string.", "ulw_loop_evidence_required");
@@ -139,13 +126,16 @@ function buildLedger(
139
126
  codexGoal: unknown,
140
127
  aggregateCompletion: UlwLoopAggregateCompletion | undefined,
141
128
  ): UlwLoopLedgerEntry {
142
- const watch = qualityGate?.codeReview.codeQualityStatus === "WATCH";
129
+ const watch = qualityGate?.surface === "lazycodex" && qualityGate.codeReview.codeQualityStatus === "WATCH";
143
130
  const entry: UlwLoopLedgerEntry = {
144
131
  at: now,
145
132
  kind: ledgerKind(args.status, goal, aggregateCompletion),
146
133
  goalId: goal.id,
147
134
  status: goal.status,
148
- evidence: watch ? `${args.evidence} | codeQuality=WATCH: ${qualityGate.codeReview.evidence}` : args.evidence,
135
+ evidence:
136
+ watch && qualityGate.surface === "lazycodex"
137
+ ? `${args.evidence} | codeQuality=WATCH: ${qualityGate.codeReview.evidence}`
138
+ : args.evidence,
149
139
  };
150
140
  if (codexGoal !== undefined) entry.codexGoal = codexGoal;
151
141
  if (qualityGate !== undefined) entry.qualityGate = qualityGate;
@@ -178,64 +168,41 @@ export async function checkpointUlwLoop(
178
168
  requireAllValidationBatchesClosed(plan, goal.id);
179
169
  } else if (aggregate) requireEssentialCriteriaPass(goal);
180
170
  else requireAllCriteriaPass(goal);
181
- const snapshot = await readCodexGoalSnapshotInput(args.codexGoalJson, repoRoot);
182
- const reconciliation = reconcileCodexGoalSnapshot(snapshot, {
183
- expectedObjective: expectedCodexObjective(plan, goal),
184
- ...(aggregate ? { acceptedObjectives: compatibleCodexObjectives(plan) } : {}),
185
- allowedStatuses: aggregate ? (final ? ["complete"] : ["active"]) : ["complete"],
186
- requireSnapshot: true,
187
- requireComplete: !aggregate || final,
188
- });
189
- codexGoal = reconciliation.snapshot.raw;
190
- if (!reconciliation.ok) {
191
- const objective = snapshot?.objective;
192
- const mismatchedTaskObjective =
193
- snapshot?.available === true &&
194
- objective !== undefined &&
195
- normalizeObjective(objective) !== normalizeObjective(expectedCodexObjective(plan, goal));
196
- const completedTaskScoped =
197
- mismatchedTaskObjective &&
198
- snapshot.status === "complete" &&
199
- (await canReconcileCompletedTaskScopedAggregateSnapshot(
200
- repoRoot,
201
- plan,
202
- goal,
203
- objective,
204
- evidence,
205
- scope,
206
- ));
207
- const activeFinalTaskScoped =
208
- mismatchedTaskObjective &&
209
- snapshot.status === "active" &&
210
- (await canReconcileActiveFinalTaskScopedAggregateSnapshot(
211
- repoRoot,
212
- plan,
213
- goal,
214
- objective,
215
- evidence,
216
- scope,
217
- ));
218
- const taskScoped = completedTaskScoped || activeFinalTaskScoped;
219
- if (!taskScoped)
220
- throw new UlwLoopError(
221
- `${formatCodexGoalReconciliation(reconciliation)}${aggregate && snapshot?.status === "complete" && objective !== undefined ? buildTaskScopedAggregateReconciliationHint(goal, final) : ""}`,
222
- "ulw_loop_codex_snapshot_mismatch",
223
- );
171
+ let codexValidationError: UlwLoopError | undefined;
172
+ try {
173
+ codexGoal = await validateCheckpointCodexGoal({
174
+ repoRoot,
175
+ plan,
176
+ goal,
177
+ raw: args.codexGoalJson,
178
+ evidence,
179
+ ...(scope === undefined ? {} : { scope }),
180
+ });
181
+ } catch (error) {
182
+ if (!(error instanceof UlwLoopError)) throw error;
183
+ codexValidationError = error;
224
184
  }
225
185
  if (closesBatch) requireBatchFinalReady(plan, goal);
226
186
  if (closesBatch && args.qualityGateJson === undefined)
227
187
  throw new UlwLoopError("Validation batch final checkpoint requires --quality-gate-json.", "ULW_LOOP_VALIDATION_BATCH_GATE_REQUIRED");
228
188
  if (final) aggregateCompletion = makeAggregateCompletion(now, evidence, codexGoal);
229
189
  if (final || aggregateCompletion !== undefined || closesBatch) {
230
- qualityGate = validateQualityGate(await readJsonInput(args.qualityGateJson, repoRoot), {
231
- repoRoot,
232
- fs: QUALITY_GATE_FS,
233
- ...(plan.evidenceLayoutVersion === 2
234
- ? { currentAttemptDir: ulwLoopAttemptEvidenceDir(goal.id, goal.attempt, scope) }
235
- : {}),
236
- });
237
- requireBatchGate(plan, goal, qualityGate);
190
+ try {
191
+ qualityGate = validateQualityGate(await readJsonInput(args.qualityGateJson, repoRoot), {
192
+ repoRoot,
193
+ fs: QUALITY_GATE_FS,
194
+ reviewerSurface: resolveToolkitSurface(),
195
+ ...(plan.evidenceLayoutVersion === 2
196
+ ? { currentAttemptDir: ulwLoopAttemptEvidenceDir(goal.id, goal.attempt, scope) }
197
+ : {}),
198
+ });
199
+ requireBatchGate(plan, goal, qualityGate);
200
+ } catch (error) {
201
+ if (!(error instanceof UlwLoopError) || codexValidationError === undefined) throw error;
202
+ throw combineCheckpointValidationErrors(codexValidationError, error);
203
+ }
238
204
  }
205
+ if (codexValidationError !== undefined) throw codexValidationError;
239
206
  goal.status = "complete";
240
207
  goal.completedAt = now;
241
208
  goal.evidence = evidence;
@@ -1,6 +1,6 @@
1
1
  import { checkpoint } from "./checkpoint-continuation.js";
2
2
  import { hasFlag, readValue } from "./cli-arg-parser.js";
3
- import { printJsonError, ULW_LOOP_HELP } from "./cli-output.js";
3
+ import { printJsonError, subcommandHelp, ULW_LOOP_HELP } from "./cli-output.js";
4
4
  import {
5
5
  addGoal,
6
6
  captureEvidence,
@@ -12,6 +12,7 @@ import {
12
12
  steer,
13
13
  } from "./cli-subcommands.js";
14
14
  import { resolveUlwLoopSessionIdFromEnv, type UlwLoopScope } from "./paths.js";
15
+ import { sessionIdRequiredMessage } from "./plan-missing-recovery.js";
15
16
  import { UlwLoopError } from "./types.js";
16
17
 
17
18
  export const ULW_LOOP_SUBCOMMANDS = [
@@ -53,6 +54,10 @@ export async function ulwLoopCommand(argv: readonly string[]): Promise<number> {
53
54
  process.stdout.write(`${ULW_LOOP_HELP}\n`);
54
55
  return 1;
55
56
  }
57
+ if (command !== "help" && (hasFlag(rest, "--help") || hasFlag(rest, "-h"))) {
58
+ process.stdout.write(`${subcommandHelp(command)}\n`);
59
+ return 0;
60
+ }
56
61
  switch (command) {
57
62
  case "help":
58
63
  process.stdout.write(`${ULW_LOOP_HELP}\n`);
@@ -104,7 +109,7 @@ function commandScope(argv: readonly string[]): UlwLoopScope | undefined {
104
109
  if (sessionIdFlagPresent(argv)) {
105
110
  const sessionId = readValue(argv, SESSION_ID_FLAG)?.trim();
106
111
  if (!sessionId) {
107
- throw new UlwLoopError(`${SESSION_ID_FLAG} requires a non-empty value.`, "ULW_LOOP_SESSION_ID_REQUIRED", {
112
+ throw new UlwLoopError(sessionIdRequiredMessage(SESSION_ID_FLAG), "ULW_LOOP_SESSION_ID_REQUIRED", {
108
113
  details: { flag: SESSION_ID_FLAG },
109
114
  });
110
115
  }
@@ -2,17 +2,30 @@ import type { UlwLoopCodexGoalMode, UlwLoopItem, UlwLoopPlan } from "./types.js"
2
2
  import { UlwLoopError } from "./types.js";
3
3
 
4
4
  export const ULW_LOOP_HELP = `Usage:
5
+ omo-agent-toolkit hook user-prompt-submit [--with-ultrawork] (Codex UserPromptSubmit hook)
6
+ omo-agent-toolkit help | --help | -h (this message)
7
+ omo-agent-toolkit ulw-loop help
5
8
  omo-agent-toolkit ulw-loop create-goals --brief "..." [--brief-file <path>] [--from-stdin] [--codex-goal-mode aggregate|per_story] [--validation-batch-json <json-or-path>] [--force] [--json]
6
9
  omo-agent-toolkit ulw-loop status [--json]
7
10
  omo-agent-toolkit ulw-loop complete-goals [--retry-failed] [--json]
8
11
  omo-agent-toolkit ulw-loop criteria --goal-id <id> [--json]
9
12
  omo-agent-toolkit ulw-loop record-evidence --goal-id <id> --criterion-id <id> --status pass|fail|blocked --evidence "..." [--notes "..."] [--json]
13
+ omo-agent-toolkit ulw-loop checkpoint --print-template [--goal-id <id>] [--json]
10
14
  omo-agent-toolkit ulw-loop checkpoint --goal-id <id> --status complete|failed|blocked --evidence "..." --codex-goal-json <...> [--quality-gate-json <...>] [--no-advance] [--json]
11
15
  omo-agent-toolkit ulw-loop steer --kind <kind> ... --evidence "..." --rationale "..." [--proposals-json <json-or-path>] [--json]
12
16
  omo-agent-toolkit ulw-loop add-goal --title "..." --objective "..." [--json]
13
17
  omo-agent-toolkit ulw-loop record-review-blockers --goal-id <id> --title "..." --objective "..." --evidence "..." --codex-goal-json <...> [--json]
14
18
 
15
- All subcommands accept [--session-id <id>] to isolate state under .omo/ulw-loop/<id>/; without it, Codex session env is used when present.`;
19
+ All subcommands accept [--session-id <id>] to isolate state under .omo/ulw-loop/<id>/; without it, Codex session env is used when present.
20
+ Every subcommand accepts --help | -h to print its own usage line.`;
21
+
22
+ export function subcommandHelp(subcommand: string): string {
23
+ const lines = ULW_LOOP_HELP.split("\n").filter((line) =>
24
+ line.trimStart().startsWith(`omo-agent-toolkit ulw-loop ${subcommand}`),
25
+ );
26
+ if (lines.length === 0) return ULW_LOOP_HELP;
27
+ return ["Usage:", ...lines].join("\n");
28
+ }
16
29
 
17
30
  type CriteriaCounts = { readonly pass: number; readonly total: number };
18
31
 
@@ -17,6 +17,7 @@ import { type UlwLoopScope, ulwLoopAttemptEvidenceDir } from "./paths.js";
17
17
  import { addUlwLoopGoal, createUlwLoopPlan, startNextUlwLoop, summarizeUlwLoopPlan } from "./plan-crud.js";
18
18
  import { readUlwLoopPlan } from "./plan-io.js";
19
19
  import { recordFinalReviewBlockers } from "./review-blockers.js";
20
+ import { statusNextActions } from "./status-next-actions.js";
20
21
  import { steerUlwLoop } from "./steering.js";
21
22
  import { steerUlwLoopBatch } from "./steering-batch.js";
22
23
  import type { UlwLoopItem } from "./types.js";
@@ -73,6 +74,7 @@ export async function status(repoRoot: string, json: boolean, scope?: UlwLoopSco
73
74
  plan,
74
75
  summary: summarizeUlwLoopPlan(plan),
75
76
  ...(currentAttemptDir === undefined ? {} : { currentAttemptDir }),
77
+ nextActions: statusNextActions(plan),
76
78
  });
77
79
  } else printStatus(plan);
78
80
  return 0;
@@ -1,17 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import { isUlwLoopSubcommand, ulwLoopCommand } from "./cli-commands.js";
3
+ import { ULW_LOOP_HELP } from "./cli-output.js";
3
4
  import { runPreToolUseGoalBudgetGuardCli, runUlwLoopHookCli } from "./codex-hook.js";
4
5
  import { runSpawnGuardCli } from "./spawn-guard.js";
5
6
  import { runStopResumeHookCli } from "./stop-resume-hook.js";
6
7
 
7
- const TOP_LEVEL_HELP =
8
- "Usage:\n omo-agent-toolkit ulw-loop <subcommand> [args]\n omo-agent-toolkit hook user-prompt-submit [--with-ultrawork] (Codex UserPromptSubmit hook)\n omo-agent-toolkit help | --help | -h (this message)\n\nRun `omo-agent-toolkit ulw-loop help` for ulw-loop subcommands.\n";
9
-
10
8
  async function main(): Promise<number> {
11
9
  const argv = process.argv.slice(2);
12
10
  const command = argv[0];
13
11
  if (command === undefined || command === "help" || command === "--help" || command === "-h") {
14
- process.stdout.write(TOP_LEVEL_HELP);
12
+ process.stdout.write(`${ULW_LOOP_HELP}\n`);
15
13
  return 0;
16
14
  }
17
15
  if (command === "ulw-loop") return ulwLoopCommand(argv.slice(1));
@@ -39,7 +37,7 @@ async function main(): Promise<number> {
39
37
  return 1;
40
38
  }
41
39
  if (isUlwLoopSubcommand(command)) return ulwLoopCommand(argv);
42
- process.stderr.write(`[omo] unknown command: ${command}\n${TOP_LEVEL_HELP}`);
40
+ process.stderr.write(`[omo] unknown command: ${command}\n${ULW_LOOP_HELP}\n`);
43
41
  return 1;
44
42
  }
45
43
 
@@ -5,6 +5,7 @@ import {
5
5
  isEssentialCriterion,
6
6
  isFinalRunCompletionCandidate,
7
7
  } from "./goal-status.js";
8
+ import { resolveToolkitSurface, reviewerRolesFor, type UlwLoopToolkitSurface } from "./surface.js";
8
9
  import type { UlwLoopCodexGoalMode, UlwLoopItem, UlwLoopPlan, UlwLoopSuccessCriterion } from "./types.js";
9
10
 
10
11
  export interface CodexCreateGoalPayload {
@@ -20,11 +21,13 @@ export function buildCodexGoalInstruction(args: {
20
21
  readonly plan: UlwLoopPlan;
21
22
  readonly goal: UlwLoopItem;
22
23
  readonly isFinal?: boolean;
24
+ readonly surface?: UlwLoopToolkitSurface;
23
25
  }): UlwLoopGoalInstruction {
24
26
  const mode = codexGoalMode(args.plan);
25
27
  const createGoal = buildCreateGoalPayload(args.plan, args.goal);
26
28
  const isFinal = args.isFinal ?? isFinalRunCompletionCandidate(args.plan, args.goal);
27
- return { text: buildText(mode, args.plan, args.goal, createGoal, isFinal), json: createGoal };
29
+ const surface = args.surface ?? resolveToolkitSurface();
30
+ return { text: buildText(mode, args.plan, args.goal, createGoal, isFinal, surface), json: createGoal };
28
31
  }
29
32
 
30
33
  function buildCreateGoalPayload(plan: UlwLoopPlan, goal: UlwLoopItem): CodexCreateGoalPayload {
@@ -37,6 +40,7 @@ function buildText(
37
40
  goal: UlwLoopItem,
38
41
  createGoal: CodexCreateGoalPayload,
39
42
  isFinal: boolean,
43
+ surface: UlwLoopToolkitSurface,
40
44
  ): string {
41
45
  return joinLines([
42
46
  mode === "aggregate" ? "UlwLoop aggregate-goal handoff" : "UlwLoop active-goal handoff",
@@ -54,7 +58,7 @@ function buildText(
54
58
  "- Goals are unlimited. Do not add numeric limits.",
55
59
  ...modeConstraintLines(mode, isFinal),
56
60
  ...evidenceLayoutLines(plan),
57
- finalSection(plan, goal, isFinal, mode === "aggregate"),
61
+ finalSection(plan, goal, isFinal, mode === "aggregate", surface),
58
62
  ...checkpointLines(plan, mode),
59
63
  "",
60
64
  "create_goal payload:",
@@ -112,18 +116,26 @@ function evidenceLayoutLines(plan: UlwLoopPlan): string[] {
112
116
  ];
113
117
  }
114
118
 
115
- function finalSection(plan: UlwLoopPlan, goal: UlwLoopItem, isFinal: boolean, aggregate: boolean): string {
119
+ function finalSection(
120
+ plan: UlwLoopPlan,
121
+ goal: UlwLoopItem,
122
+ isFinal: boolean,
123
+ aggregate: boolean,
124
+ surface: UlwLoopToolkitSurface,
125
+ ): string {
126
+ const roles = reviewerRolesFor(surface);
116
127
  if (!isFinal)
117
128
  return "- This is not the final ulw-loop story; do not run the final reviewer/manual-QA/gate-review quality gate yet.";
118
129
  const option = sessionOption(plan);
130
+ if (surface === "omo-senpi") return senpiFinalSection(plan, goal, aggregate);
119
131
  const blockerCommand = `omo-agent-toolkit ulw-loop record-review-blockers${option} --goal-id ${goal.id} --title "Resolve final code-review blockers" --objective "<blocker-resolution objective>" --evidence "<review findings>" --codex-goal-json "<active get_goal JSON or path>"`;
120
132
  const checkpointCommand = `omo-agent-toolkit ulw-loop checkpoint${option} --goal-id ${goal.id} --status complete --evidence "<targeted verification/manualQa/gateReview evidence>" --codex-goal-json "<fresh complete get_goal JSON or path>" --quality-gate-json "<quality gate JSON or path>"`;
121
133
  return joinLines([
122
134
  "Final story — run mandatory quality gate before update_goal:",
123
135
  "- Run targeted verification for changed behavior.",
124
136
  "- Confirm every manualQa artifact path exists and has non-zero size.",
125
- "- First spawn lazycodex-code-reviewer and lazycodex-qa-executor in parallel (fork_context: false on the v1 surface; fork_turns: \"none\" on v2). Include the original brief, goal objectives, desired user-visible outcome, diff, and evidence; wait for BOTH to return and confirm their report artifacts exist on disk (code-review report + manualQa matrix).",
126
- "- Only then spawn lazycodex-gate-reviewer (same fork settings), passing those artifact paths.",
137
+ `- First spawn ${roles.codeReview} and ${roles.manualQa} in parallel (fork_context: false on the v1 surface; fork_turns: "none" on v2). Include the original brief, goal objectives, desired user-visible outcome, diff, and evidence; wait for BOTH to return and confirm their report artifacts exist on disk (code-review report + manualQa matrix).`,
138
+ `- Only then spawn ${roles.gateReview} (same fork settings), passing those artifact paths.`,
127
139
  "- Require clean codeReview, manualQa, gateReview, iteration, and criteriaCoverage. criteriaCoverage must summarize originalIntent, desiredOutcome, and userOutcomeReview; counts alone are not approval.",
128
140
  "- On a reviewer REJECT, fix only the cited blockers, rerun the affected verification/Manual-QA, and re-review the delta at most TWICE; if blockers remain, record them and surface to the user.",
129
141
  "- If codeQualityStatus is WATCH, include the WATCH notes verbatim in your final user-facing message.",
@@ -136,6 +148,23 @@ function finalSection(plan: UlwLoopPlan, goal: UlwLoopItem, isFinal: boolean, ag
136
148
  ]);
137
149
  }
138
150
 
151
+ function senpiFinalSection(plan: UlwLoopPlan, goal: UlwLoopItem, aggregate: boolean): string {
152
+ const option = sessionOption(plan);
153
+ const checkpointCommand = `omo-agent-toolkit ulw-loop checkpoint${option} --goal-id ${goal.id} --status complete --evidence "<manualQa/gateReview evidence>" --codex-goal-json "<fresh complete get_goal JSON or path>" --quality-gate-json "$(omo-agent-toolkit ulw-loop checkpoint${option} --print-template)"`;
154
+ return joinLines([
155
+ "Final story — run the single-reviewer quality gate before update_goal:",
156
+ "- Run manual QA yourself and write the non-empty artifact under currentAttemptDir; set manualQa.by to \"main-session\".",
157
+ '- Spawn exactly one gate reviewer with task(category: "deep").',
158
+ "- If that task fails with any model_unavailable failure, retry with category:unspecified-high, then category:unspecified-low.",
159
+ '- Set gateReview.by to the exact category:<name> literal used for the successful task.',
160
+ '- Build the gate JSON with omo-agent-toolkit ulw-loop checkpoint --print-template, then fill manualQa, gateReview, iteration, and criteriaCoverage.',
161
+ '- Require passed manualQa, approved gateReview, passed iteration, and complete criteriaCoverage before update_goal({status: "complete"}).',
162
+ aggregate
163
+ ? `- If the gate is clean, call update_goal({status: "complete"}), call get_goal again, then checkpoint the aggregate story: ${checkpointCommand}`
164
+ : `- If the gate is clean, call update_goal({status: "complete"}), call get_goal again, then checkpoint: ${checkpointCommand}`,
165
+ ]);
166
+ }
167
+
139
168
  function sessionOption(plan: UlwLoopPlan): string {
140
169
  const prefix = ".omo/ulw-loop/";
141
170
  const suffix = "/goals.json";
@@ -56,7 +56,9 @@ export function parseCodexGoalSnapshot(value: unknown): CodexGoalSnapshot {
56
56
  }
57
57
 
58
58
  const goal = safeObject(goalValue);
59
- const objective = safeString(goal["objective"] ?? goal["goal"] ?? goal["description"] ?? root["objective"]);
59
+ const objective = safeString(
60
+ goal["objective"] ?? goal["goal"] ?? goal["description"] ?? goal["title"] ?? root["objective"] ?? root["title"],
61
+ );
60
62
  const status = normalizeStatus(goal["status"] ?? root["status"]);
61
63
 
62
64
  return {
@@ -137,3 +139,26 @@ export function formatCodexGoalReconciliation(reconciliation: CodexGoalReconcili
137
139
  const parts = [...reconciliation.errors, ...reconciliation.warnings];
138
140
  return parts.join(" ");
139
141
  }
142
+
143
+ export interface CodexGoalMismatchRecovery {
144
+ readonly message: string;
145
+ readonly details: { readonly expectedObjective: string; readonly receivedObjective: string };
146
+ }
147
+
148
+ /**
149
+ * The reconciliation errors normalize whitespace for comparison, which makes the
150
+ * quoted objective unusable as a copy source. Recovery therefore carries the
151
+ * plan's `codexObjective` verbatim so the agent can paste it into `update_goal`.
152
+ */
153
+ export function codexGoalMismatchRecovery(
154
+ expectedObjective: string,
155
+ snapshot: CodexGoalSnapshot | null | undefined,
156
+ ): CodexGoalMismatchRecovery {
157
+ const receivedObjective = snapshot?.objective ?? "";
158
+ const message = [
159
+ "Recovery: the Codex goal objective must equal the plan's codexObjective exactly — copy the expected value below into update_goal and re-run get_goal.",
160
+ `expected codexObjective: ${expectedObjective}`,
161
+ `received objective: ${receivedObjective || "(none)"}`,
162
+ ].join("\n");
163
+ return { message, details: { expectedObjective, receivedObjective } };
164
+ }
@@ -95,7 +95,9 @@ export async function applyUserPromptUlwLoopSteering(
95
95
  }
96
96
 
97
97
  function hasSteeringDirectiveMarker(prompt: string): boolean {
98
- return /(?:^|\s)(?:OMO_ULW_LOOP_STEER|omo\.ulw-loop\.steer|omo ulw-loop steer|omo-agent-toolkit ulw-loop steer):/u.test(prompt);
98
+ return /(?:^|\s)(?:OMO_ULW_LOOP_STEER|omo\.ulw-loop\.steer|omo ulw-loop steer|omo-agent-toolkit ulw-loop steer):/u.test(
99
+ prompt,
100
+ );
99
101
  }
100
102
 
101
103
  function payloadScope(payload: UserPromptSubmitPayload): UlwLoopScope {
@@ -107,15 +107,7 @@ export interface UlwLoopManualQaAdversarialCase {
107
107
  readonly artifactRefs: readonly string[];
108
108
  }
109
109
 
110
- export interface UlwLoopQualityGate {
111
- readonly codeReview: {
112
- readonly by: string;
113
- readonly recommendation: "APPROVE";
114
- readonly codeQualityStatus: "CLEAR" | "WATCH";
115
- readonly reportPath: string;
116
- readonly evidence: string;
117
- readonly blockers: readonly [];
118
- };
110
+ interface UlwLoopQualityGateCommon {
119
111
  readonly manualQa: {
120
112
  readonly by: string;
121
113
  readonly status: "passed";
@@ -147,6 +139,24 @@ export interface UlwLoopQualityGate {
147
139
  };
148
140
  }
149
141
 
142
+ export interface UlwLoopQualityGateLazycodex extends UlwLoopQualityGateCommon {
143
+ readonly surface: "lazycodex";
144
+ readonly codeReview: {
145
+ readonly by: string;
146
+ readonly recommendation: "APPROVE";
147
+ readonly codeQualityStatus: "CLEAR" | "WATCH";
148
+ readonly reportPath: string;
149
+ readonly evidence: string;
150
+ readonly blockers: readonly [];
151
+ };
152
+ }
153
+
154
+ export interface UlwLoopQualityGateSenpi extends UlwLoopQualityGateCommon {
155
+ readonly surface: "omo-senpi";
156
+ }
157
+
158
+ export type UlwLoopQualityGate = UlwLoopQualityGateLazycodex | UlwLoopQualityGateSenpi;
159
+
150
160
  export interface UlwLoopLedgerEntry {
151
161
  at: string;
152
162
  kind: UlwLoopLedgerEventKind;
@@ -5,7 +5,7 @@ export interface UlwLoopScope {
5
5
  readonly sessionId?: string | null;
6
6
  }
7
7
 
8
- const SESSION_ENV_KEYS = ["OMO_ULW_LOOP_SESSION_ID", "CODEX_SESSION_ID", "CODEX_THREAD_ID"] as const;
8
+ const SESSION_ENV_KEYS = ["OMO_ULW_LOOP_SESSION_ID", "CODEX_SESSION_ID", "CODEX_THREAD_ID", "PI_SESSION_ID"] as const;
9
9
  type EnvMap = Readonly<Record<string, string | undefined>>;
10
10
 
11
11
  export function normalizeUlwLoopSessionId(sessionId: string | null | undefined): string | null {
@@ -1,4 +1,4 @@
1
- import { createReadStream } from "node:fs";
1
+ import { createReadStream, readdirSync } from "node:fs";
2
2
  import { appendFile, mkdir, readFile, rename, writeFile } from "node:fs/promises";
3
3
  import { createInterface } from "node:readline";
4
4
 
@@ -11,6 +11,7 @@ import {
11
11
  ulwLoopLedgerPath,
12
12
  ulwLoopRelativeDir,
13
13
  } from "./paths.js";
14
+ import { planMissingRecovery } from "./plan-missing-recovery.js";
14
15
  import type { UlwLoopLedgerEntry, UlwLoopPlan } from "./types.js";
15
16
  import { iso, ULW_LOOP_DIR, ULW_LOOP_GOALS, ULW_LOOP_LEDGER, UlwLoopError } from "./types.js";
16
17
 
@@ -73,10 +74,11 @@ export async function readUlwLoopPlan(repoRoot: string, scope?: UlwLoopScope): P
73
74
  raw = await readFile(path, "utf8");
74
75
  } catch (error) {
75
76
  if (!hasCode(error, "ENOENT")) throw error;
77
+ const recovery = planMissingRecovery(readSessionDirs(repoRoot));
76
78
  throw new UlwLoopError(
77
- `No ulw-loop plan found at ${repoRelative(path, repoRoot)}. Run \`omo-agent-toolkit ulw-loop create-goals ...\` first.`,
79
+ `No ulw-loop plan found at ${repoRelative(path, repoRoot)}.\n${recovery.message}`,
78
80
  "ULW_LOOP_PLAN_MISSING",
79
- { cause: error },
81
+ { cause: error, ...(recovery.details === undefined ? {} : { details: recovery.details }) },
80
82
  );
81
83
  }
82
84
  const parsed: UlwLoopPlan = JSON.parse(raw);
@@ -108,6 +110,19 @@ export async function readUlwLoopPlan(repoRoot: string, scope?: UlwLoopScope): P
108
110
  return parsed;
109
111
  }
110
112
 
113
+ // Session dirs are the only recovery hint that matters when a plan is missing: the
114
+ // caller is almost always scoped to a session whose sibling actually holds the plan.
115
+ function readSessionDirs(repoRoot: string): readonly string[] {
116
+ try {
117
+ return readdirSync(ulwLoopDir(repoRoot), { withFileTypes: true })
118
+ .filter((entry) => entry.isDirectory())
119
+ .map((entry) => entry.name)
120
+ .sort();
121
+ } catch {
122
+ return [];
123
+ }
124
+ }
125
+
111
126
  export async function writePlan(repoRoot: string, plan: UlwLoopPlan, scope?: UlwLoopScope): Promise<void> {
112
127
  await mkdir(ulwLoopDir(repoRoot, scope), { recursive: true });
113
128
  const path = ulwLoopGoalsPath(repoRoot, scope);
@@ -0,0 +1,27 @@
1
+ export const ULW_LOOP_CREATE_GOALS_COMMAND = 'omo-agent-toolkit ulw-loop create-goals --brief "<brief>" --json';
2
+
3
+ export interface PlanMissingRecovery {
4
+ readonly message: string;
5
+ readonly details?: { readonly existingSessionIds: readonly string[] };
6
+ }
7
+
8
+ /**
9
+ * A missing plan is either "never bootstrapped" or "bootstrapped under a different
10
+ * session id"; the recovery text has to answer both without the caller guessing.
11
+ */
12
+ export function planMissingRecovery(existingSessionIds: readonly string[]): PlanMissingRecovery {
13
+ const lines = [`Recovery: bootstrap the plan with \`${ULW_LOOP_CREATE_GOALS_COMMAND}\`.`];
14
+ if (existingSessionIds.length === 0) return { message: lines.join("\n") };
15
+ lines.push(
16
+ `Existing ulw-loop session ids under .omo/ulw-loop/: ${existingSessionIds.join(", ")}. Re-run with \`--session-id <id>\` to target one of them.`,
17
+ );
18
+ return { message: lines.join("\n"), details: { existingSessionIds } };
19
+ }
20
+
21
+ export function sessionIdRequiredMessage(flag: string): string {
22
+ return [
23
+ `${flag} requires a non-empty value.`,
24
+ "Recovery: subprocess, eval, and hook contexts do not inherit the ulw-loop session env (OMO_ULW_LOOP_SESSION_ID / CODEX_SESSION_ID / CODEX_THREAD_ID / PI_SESSION_ID),",
25
+ `so pass the scope explicitly: \`${flag} <id>\` (for example \`${flag} 01a05b8a-6763-7780-834f-319423b071ce\`).`,
26
+ ].join("\n");
27
+ }
@@ -0,0 +1,11 @@
1
+ import type { ValidateQualityGateOptions } from "./quality-gate.js";
2
+ import { validateQualityGate } from "./quality-gate.js";
3
+
4
+ /**
5
+ * Compatibility entry point for callers that used the former pre-pass API.
6
+ * Validation is performed by the real parser, which collects defects across
7
+ * every nested field before throwing one aggregate error.
8
+ */
9
+ export function aggregateQualityGateDefects(input: unknown, opts: ValidateQualityGateOptions | undefined): void {
10
+ validateQualityGate(input, opts);
11
+ }