lazycodex-ai 5.0.0-beta.3 → 5.0.0-beta.31

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 (412) hide show
  1. package/README.ja.md +25 -21
  2. package/README.ko.md +25 -21
  3. package/README.md +38 -23
  4. package/README.ru.md +24 -20
  5. package/README.zh-cn.md +25 -21
  6. package/dist/cli/config-manager/parse-opencode-config-file.d.ts +2 -1
  7. package/dist/cli/doctor/checks/system-plugin.d.ts +4 -3
  8. package/dist/cli/fallback-lane-policy.d.ts +1 -0
  9. package/dist/cli/index.js +22601 -20302
  10. package/dist/cli/install-codex/install-codex-test-fixtures.d.ts +1 -1
  11. package/dist/cli/run/on-complete-hook.d.ts +2 -0
  12. package/dist/cli/runtime-commands.d.ts +1 -1
  13. package/dist/cli/worktree-sweep/classify.d.ts +16 -0
  14. package/dist/cli/worktree-sweep/format.d.ts +8 -0
  15. package/dist/cli/worktree-sweep/git.d.ts +19 -0
  16. package/dist/cli/worktree-sweep/index.d.ts +7 -0
  17. package/dist/cli/worktree-sweep/options.d.ts +2 -0
  18. package/dist/cli/worktree-sweep/parse-worktree-list.d.ts +8 -0
  19. package/dist/cli/worktree-sweep/sweep.d.ts +2 -0
  20. package/dist/cli/worktree-sweep/types.d.ts +65 -0
  21. package/dist/cli/worktree-sweep/worktree-sweep.d.ts +2 -0
  22. package/dist/cli-node/index.js +22219 -19897
  23. package/package.json +11 -7
  24. package/packages/git-bash-mcp/dist/cli.js +6 -1
  25. package/packages/lsp-daemon/dist/cli.js +752 -307
  26. package/packages/lsp-daemon/dist/client.d.ts +10 -0
  27. package/packages/lsp-daemon/dist/client.js +712 -264
  28. package/packages/lsp-daemon/dist/daemon-client.d.ts +1 -0
  29. package/packages/lsp-daemon/dist/daemon-client.js +3 -0
  30. package/packages/lsp-daemon/dist/ensure-daemon.js +1 -0
  31. package/packages/lsp-daemon/dist/index.js +716 -273
  32. package/packages/lsp-daemon/dist/proxy.js +3 -0
  33. package/packages/lsp-daemon/dist/version-reap.js +1 -1
  34. package/packages/lsp-daemon/package.json +1 -1
  35. package/packages/lsp-tools-mcp/dist/cli.js +671 -228
  36. package/packages/lsp-tools-mcp/dist/lsp/manager.js +207 -103
  37. package/packages/lsp-tools-mcp/dist/mcp.js +673 -230
  38. package/packages/lsp-tools-mcp/dist/request-context.js +12 -13
  39. package/packages/lsp-tools-mcp/dist/tools.js +677 -238
  40. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +4 -4
  41. package/packages/omo-codex/plugin/AGENTS.md +47 -0
  42. package/packages/omo-codex/plugin/README.md +1 -1
  43. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +34 -33
  44. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  45. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  46. package/packages/omo-codex/plugin/components/bootstrap/src/hook.ts +1 -0
  47. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +323 -117
  48. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +275 -85
  49. package/packages/omo-codex/plugin/components/codegraph/package.json +4 -4
  50. package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +1 -0
  51. package/packages/omo-codex/plugin/components/codegraph/src/mcp-unavailable.ts +12 -0
  52. package/packages/omo-codex/plugin/components/codegraph/src/session-start-hook-runtime.ts +1 -0
  53. package/packages/omo-codex/plugin/components/codegraph/test/serve-unavailable-idle.test.ts +47 -0
  54. package/packages/omo-codex/plugin/components/comment-checker/AGENTS.md +9 -0
  55. package/packages/omo-codex/plugin/components/comment-checker/biome.json +2 -2
  56. package/packages/omo-codex/plugin/components/comment-checker/dist/cli.js +2 -1
  57. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  58. package/packages/omo-codex/plugin/components/comment-checker/package.json +5 -5
  59. package/packages/omo-codex/plugin/components/comment-checker/src/apply-patch.ts +2 -8
  60. package/packages/omo-codex/plugin/components/comment-checker/src/core.ts +1 -2
  61. package/packages/omo-codex/plugin/components/comment-checker/src/request-extractor.ts +1 -1
  62. package/packages/omo-codex/plugin/components/comment-checker/src/runner.ts +1 -0
  63. package/packages/omo-codex/plugin/components/git-bash/AGENTS.md +1 -1
  64. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  65. package/packages/omo-codex/plugin/components/git-bash/package.json +3 -4
  66. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/biome.json +2 -2
  67. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/cli.js +1 -5
  68. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/codex-hook.js +1 -5
  69. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  70. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +5 -5
  71. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/src/codex-hook.ts +1 -5
  72. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/codex-hook.test.ts +4 -21
  73. package/packages/omo-codex/plugin/components/lsp/AGENTS.md +30 -15
  74. package/packages/omo-codex/plugin/components/lsp/biome.json +2 -2
  75. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +4 -4
  76. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +702 -278
  77. package/packages/omo-codex/plugin/components/lsp/dist/daemon-cli-path.js +1 -1
  78. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  79. package/packages/omo-codex/plugin/components/lsp/package.json +5 -5
  80. package/packages/omo-codex/plugin/components/lsp/src/cli.ts +1 -1
  81. package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +1 -1
  82. package/packages/omo-codex/plugin/components/lsp/src/daemon-cli-path.ts +1 -5
  83. package/packages/omo-codex/plugin/components/lsp/test/codex-hook-unavailable.test.ts +6 -7
  84. package/packages/omo-codex/plugin/components/lsp/test/codex-hook.test.ts +1 -2
  85. package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +11 -1
  86. package/packages/omo-codex/plugin/components/rules/AGENTS.md +12 -0
  87. package/packages/omo-codex/plugin/components/rules/biome.json +2 -2
  88. package/packages/omo-codex/plugin/components/rules/dist/cli.js +60 -45
  89. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  90. package/packages/omo-codex/plugin/components/rules/package.json +7 -7
  91. package/packages/omo-codex/plugin/components/rules/src/config.ts +1 -2
  92. package/packages/omo-codex/plugin/components/rules/src/persistent-cache.ts +1 -2
  93. package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +9 -5
  94. package/packages/omo-codex/plugin/components/rules/src/rules-engine-factory.ts +1 -4
  95. package/packages/omo-codex/plugin/components/rules/src/static-injection.ts +4 -9
  96. package/packages/omo-codex/plugin/components/rules/test/bundled-rules-priority.test.ts +11 -16
  97. package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +17 -25
  98. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +9 -7
  99. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +0 -6
  100. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-dedup.test.ts +6 -4
  101. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-directive.test.ts +12 -9
  102. package/packages/omo-codex/plugin/components/rules/test/codex-hook.test.ts +28 -37
  103. package/packages/omo-codex/plugin/components/rules/test/dynamic-target-fingerprints.test.ts +1 -2
  104. package/packages/omo-codex/plugin/components/rules/test/engine.test.ts +7 -4
  105. package/packages/omo-codex/plugin/components/rules/test/finder.test.ts +2 -3
  106. package/packages/omo-codex/plugin/components/rules/test/formatter.test.ts +39 -72
  107. package/packages/omo-codex/plugin/components/rules/test/hephaestus-model-variant.test.ts +1 -2
  108. package/packages/omo-codex/plugin/components/rules/test/hook-output.test.ts +2 -3
  109. package/packages/omo-codex/plugin/components/rules/test/matcher.test.ts +2 -3
  110. package/packages/omo-codex/plugin/components/rules/test/package-smoke.test.ts +1 -1
  111. package/packages/omo-codex/plugin/components/rules/test/parser.test.ts +1 -2
  112. package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +5 -6
  113. package/packages/omo-codex/plugin/components/rules/test/rules-engine-consumption.test.ts +3 -6
  114. package/packages/omo-codex/plugin/components/rules/test/scanner.test.ts +1 -2
  115. package/packages/omo-codex/plugin/components/rules/test/sources.test.ts +2 -5
  116. package/packages/omo-codex/plugin/components/rules/test/windows-git-bash-bundled-rule.test.ts +2 -17
  117. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  118. package/packages/omo-codex/plugin/components/teammode/package.json +5 -5
  119. package/packages/omo-codex/plugin/components/teammode/test/thread-title-hook.test.ts +3 -9
  120. package/packages/omo-codex/plugin/components/telemetry/AGENTS.md +8 -0
  121. package/packages/omo-codex/plugin/components/telemetry/biome.json +2 -2
  122. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +2463 -437
  123. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +2467 -441
  124. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  125. package/packages/omo-codex/plugin/components/telemetry/package.json +5 -5
  126. package/packages/omo-codex/plugin/components/telemetry/src/codex-hook.ts +1 -4
  127. package/packages/omo-codex/plugin/components/telemetry/src/posthog.ts +4 -14
  128. package/packages/omo-codex/plugin/components/telemetry/src/product-identity.ts +1 -1
  129. package/packages/omo-codex/plugin/components/telemetry/test/diagnostics.test.ts +2 -5
  130. package/packages/omo-codex/plugin/components/ultrawork/AGENTS.md +5 -0
  131. package/packages/omo-codex/plugin/components/ultrawork/biome.json +2 -2
  132. package/packages/omo-codex/plugin/components/ultrawork/directive.md +13 -1
  133. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  134. package/packages/omo-codex/plugin/components/ultrawork/package.json +5 -5
  135. package/packages/omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md +13 -1
  136. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +6 -6
  137. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +31 -7
  138. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +2 -1
  139. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +5 -5
  140. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook-trigger-policy.test.ts +9 -1
  141. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +0 -136
  142. package/packages/omo-codex/plugin/components/ultrawork/test/skill-pointer.test.ts +0 -2
  143. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/AGENTS.md +5 -4
  144. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/NOTICE +1 -1
  145. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/README.md +5 -5
  146. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/biome.json +2 -2
  147. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/directive.md +6 -6
  148. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/dist/cli.js +12 -12
  149. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +28 -0
  150. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/package.json +12 -12
  151. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/boulder-reader.ts +1 -1
  152. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/cli.ts +1 -1
  153. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/codex-hook.ts +3 -3
  154. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/directive.ts +1 -1
  155. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/index.ts +1 -1
  156. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/boulder-reader.test.ts +3 -3
  157. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/cli.test.ts +1 -4
  158. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/codex-hook.test.ts +8 -22
  159. package/packages/omo-codex/plugin/components/ulw-loop/AGENTS.md +17 -0
  160. package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +1 -1
  161. package/packages/omo-codex/plugin/components/ulw-loop/biome.json +2 -2
  162. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +13 -1
  163. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +2 -0
  164. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-commands.js +5 -1
  165. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.d.ts +2 -1
  166. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.js +11 -1
  167. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +124 -68
  168. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.d.ts +2 -0
  169. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +9 -6
  170. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.js +1 -1
  171. package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.js +1 -1
  172. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.d.ts +4 -2
  173. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.js +7 -10
  174. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.js +3 -2
  175. package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +3 -3
  176. package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.d.ts +15 -0
  177. package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.js +50 -0
  178. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  179. package/packages/omo-codex/plugin/components/ulw-loop/package.json +5 -5
  180. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +3 -2
  181. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +108 -0
  182. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +1 -0
  183. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +2 -0
  184. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-commands.ts +5 -1
  185. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-output.ts +13 -1
  186. package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +3 -5
  187. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +16 -5
  188. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-snapshot.ts +3 -1
  189. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +3 -1
  190. package/packages/omo-codex/plugin/components/ulw-loop/src/paths.ts +1 -1
  191. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate.ts +11 -14
  192. package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-guard.ts +3 -2
  193. package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +3 -3
  194. package/packages/omo-codex/plugin/components/ulw-loop/src/surface.ts +73 -0
  195. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-continuation.test.ts +0 -1
  196. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-final.test.ts +44 -1
  197. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-create-goals.test.ts +25 -0
  198. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-entrypoint.test.ts +26 -2
  199. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +27 -2
  200. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-snapshot.test.ts +18 -0
  201. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +0 -3
  202. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/quality-gate-builder.ts +7 -3
  203. package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +5 -37
  204. package/packages/omo-codex/plugin/components/ulw-loop/test/paths.test.ts +9 -0
  205. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-roles.test.ts +45 -2
  206. package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-guard.test.ts +20 -0
  207. package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +8 -5
  208. package/packages/omo-codex/plugin/components/ulw-loop/test/stop-resume-hook.test.ts +1 -1
  209. package/packages/omo-codex/plugin/components/ulw-loop/test/surface.test.ts +74 -0
  210. package/packages/omo-codex/plugin/components/ulw-loop/test/ultrawork-directive.test.ts +4 -5
  211. package/packages/omo-codex/plugin/components/ulw-loop/vitest.config.ts +1 -0
  212. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  213. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  214. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  215. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
  216. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  217. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  218. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  219. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  220. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  221. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  222. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  223. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  224. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  225. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
  226. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  227. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  228. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +17 -0
  229. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  230. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-ulw-execute-continuation.json +17 -0
  231. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  232. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  233. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  234. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  235. package/packages/omo-codex/plugin/model-catalog.json +3 -3
  236. package/packages/omo-codex/plugin/package-lock.json +681 -395
  237. package/packages/omo-codex/plugin/package.json +2 -2
  238. package/packages/omo-codex/plugin/scripts/AGENTS.md +40 -0
  239. package/packages/omo-codex/plugin/scripts/auto-update-plan.mjs +1 -1
  240. package/packages/omo-codex/plugin/scripts/migrate-codex-config/catalog.mjs +3 -3
  241. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +11 -11
  242. package/packages/omo-codex/plugin/shared/package.json +3 -4
  243. package/packages/omo-codex/plugin/skills/ast-grep/AGENTS.md +51 -0
  244. package/packages/omo-codex/plugin/skills/coding-agent-sessions/AGENTS.md +62 -0
  245. package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +3 -2
  246. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +1 -1
  247. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/senpi.md +4 -4
  248. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
  249. package/packages/omo-codex/plugin/skills/data-scientist/SKILL.md +99 -239
  250. package/packages/omo-codex/plugin/skills/data-scientist/references/execution-surfaces.md +91 -0
  251. package/packages/omo-codex/plugin/skills/data-scientist/references/placement.md +74 -0
  252. package/packages/omo-codex/plugin/skills/data-scientist/references/polars-lane.md +95 -0
  253. package/packages/omo-codex/plugin/skills/data-scientist/references/uv-setup.md +1 -1
  254. package/packages/omo-codex/plugin/skills/data-scientist/references/visualization.md +64 -0
  255. package/packages/omo-codex/plugin/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
  256. package/packages/omo-codex/plugin/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
  257. package/packages/omo-codex/plugin/skills/debugging/SKILL.md +2 -0
  258. package/packages/omo-codex/plugin/skills/debugging/references/methodology/00-setup.md +12 -0
  259. package/packages/omo-codex/plugin/skills/debugging/references/methodology/02-investigate.md +21 -0
  260. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/go.md +15 -1
  261. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/native-binary.md +38 -0
  262. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/node.md +25 -0
  263. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/python.md +13 -0
  264. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/rust.md +41 -0
  265. package/packages/omo-codex/plugin/skills/debugging/references/scripts/dap.mjs +267 -0
  266. package/packages/omo-codex/plugin/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  267. package/packages/omo-codex/plugin/skills/debugging/references/tools/dap.md +103 -0
  268. package/packages/omo-codex/plugin/skills/debugging/references/tools/frida.md +193 -0
  269. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +11 -7
  270. package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +1 -0
  271. package/packages/omo-codex/plugin/skills/frontend/references/design/print-paged-media.md +76 -0
  272. package/packages/omo-codex/plugin/skills/frontend/references/design/stylegallery.md +80 -0
  273. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/README.md +1 -1
  274. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  275. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  276. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  277. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/orchestration.md +1 -1
  278. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/routing.md +5 -5
  279. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +4 -4
  280. package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
  281. package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +2 -0
  282. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +179 -0
  283. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +1 -1
  284. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
  285. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +13 -1
  286. package/packages/omo-codex/plugin/skills/{start-work → ulw-execute}/SKILL.md +12 -11
  287. package/packages/omo-codex/plugin/skills/ulw-execute/agents/openai.yaml +2 -0
  288. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +3 -2
  289. package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +108 -0
  290. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +1 -0
  291. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +6 -6
  292. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +31 -7
  293. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +2 -1
  294. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +5 -5
  295. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +4 -2
  296. package/packages/omo-codex/plugin/skills/visual-qa/AGENTS.md +58 -0
  297. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +3 -2
  298. package/packages/omo-codex/plugin/test/AGENTS.md +47 -0
  299. package/packages/omo-codex/plugin/test/aggregate-agents.test.mjs +19 -173
  300. package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +8 -28
  301. package/packages/omo-codex/plugin/test/aggregate-manifest.test.mjs +1 -1
  302. package/packages/omo-codex/plugin/test/aggregate-model-catalog.test.mjs +1 -1
  303. package/packages/omo-codex/plugin/test/aggregate-plugin-fixture.mjs +175 -13
  304. package/packages/omo-codex/plugin/test/aggregate.test.mjs +78 -2
  305. package/packages/omo-codex/plugin/test/auto-update-release-notes.test.mjs +19 -33
  306. package/packages/omo-codex/plugin/test/auto-update.test.mjs +2 -2
  307. package/packages/omo-codex/plugin/test/component-bin-names.test.mjs +2 -2
  308. package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +1 -1
  309. package/packages/omo-codex/plugin/test/component-hook-contract-cases.mjs +2 -2
  310. package/packages/omo-codex/plugin/test/hook-status-message.test.mjs +4 -4
  311. package/packages/omo-codex/plugin/test/lcx-contribute-bug-fix-template.test.mjs +21 -27
  312. package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +8 -8
  313. package/packages/omo-codex/plugin/test/scaffold-plan.test.mjs +0 -36
  314. package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +101 -0
  315. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +12 -12
  316. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +1 -119
  317. package/packages/omo-codex/plugin/test/teammode-archive-ambiguity.test.mjs +0 -40
  318. package/packages/omo-codex/plugin/test/teammode-communication.test.mjs +6 -62
  319. package/packages/omo-codex/plugin/test/teammode-thread-links.test.mjs +3 -36
  320. package/packages/omo-codex/plugin/test/teammode-transport.test.mjs +0 -44
  321. package/packages/omo-codex/plugin/test/teammode-worktree.test.mjs +2 -6
  322. package/packages/omo-codex/plugin/test/ultrawork-skill-pointer.test.mjs +0 -3
  323. package/packages/omo-codex/plugin/test/ulw-plan-review-state-contract.test.mjs +0 -3
  324. package/packages/omo-codex/scripts/install-dist/install-local.mjs +2637 -549
  325. package/packages/shared-skills/skills/ast-grep/AGENTS.md +51 -0
  326. package/packages/shared-skills/skills/coding-agent-sessions/AGENTS.md +62 -0
  327. package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +3 -2
  328. package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +1 -1
  329. package/packages/shared-skills/skills/coding-agent-sessions/references/senpi.md +4 -4
  330. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
  331. package/packages/shared-skills/skills/data-scientist/SKILL.md +99 -239
  332. package/packages/shared-skills/skills/data-scientist/references/execution-surfaces.md +91 -0
  333. package/packages/shared-skills/skills/data-scientist/references/placement.md +74 -0
  334. package/packages/shared-skills/skills/data-scientist/references/polars-lane.md +95 -0
  335. package/packages/shared-skills/skills/data-scientist/references/uv-setup.md +1 -1
  336. package/packages/shared-skills/skills/data-scientist/references/visualization.md +64 -0
  337. package/packages/shared-skills/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
  338. package/packages/shared-skills/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
  339. package/packages/shared-skills/skills/debugging/SKILL.md +2 -0
  340. package/packages/shared-skills/skills/debugging/references/methodology/00-setup.md +12 -0
  341. package/packages/shared-skills/skills/debugging/references/methodology/02-investigate.md +21 -0
  342. package/packages/shared-skills/skills/debugging/references/runtimes/go.md +15 -1
  343. package/packages/shared-skills/skills/debugging/references/runtimes/native-binary.md +38 -0
  344. package/packages/shared-skills/skills/debugging/references/runtimes/node.md +25 -0
  345. package/packages/shared-skills/skills/debugging/references/runtimes/python.md +13 -0
  346. package/packages/shared-skills/skills/debugging/references/runtimes/rust.md +41 -0
  347. package/packages/shared-skills/skills/debugging/references/scripts/dap.mjs +267 -0
  348. package/packages/shared-skills/skills/debugging/references/scripts/dap.test.ts +86 -0
  349. package/packages/shared-skills/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  350. package/packages/shared-skills/skills/debugging/references/tools/dap.md +103 -0
  351. package/packages/shared-skills/skills/debugging/references/tools/frida.md +193 -0
  352. package/packages/shared-skills/skills/frontend/SKILL.md +11 -7
  353. package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +1 -0
  354. package/packages/shared-skills/skills/frontend/references/design/print-paged-media.md +76 -0
  355. package/packages/shared-skills/skills/frontend/references/design/stylegallery.md +80 -0
  356. package/packages/shared-skills/skills/frontend/references/designpowers/README.md +1 -1
  357. package/packages/shared-skills/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  358. package/packages/shared-skills/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  359. package/packages/shared-skills/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  360. package/packages/shared-skills/skills/frontend/references/designpowers/orchestration.md +1 -1
  361. package/packages/shared-skills/skills/frontend/references/designpowers/routing.md +5 -5
  362. package/packages/shared-skills/skills/review-work/SKILL.md +3 -3
  363. package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
  364. package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +2 -0
  365. package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +179 -0
  366. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +1 -1
  367. package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
  368. package/packages/shared-skills/skills/{start-work → ulw-execute}/SKILL.md +9 -8
  369. package/packages/shared-skills/skills/ulw-plan/SKILL.md +6 -6
  370. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +31 -7
  371. package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +2 -1
  372. package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +5 -5
  373. package/packages/shared-skills/skills/ulw-research/SKILL.md +4 -2
  374. package/packages/shared-skills/skills/visual-qa/AGENTS.md +58 -0
  375. package/packages/shared-skills/skills/visual-qa/SKILL.md +3 -2
  376. package/script/qa/web-terminal-visual-qa.mjs +2 -0
  377. package/script/qa/xterm-live-terminal.mjs +18 -2
  378. package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.d.ts +0 -1
  379. package/packages/lsp-tools-mcp/dist/lsp/constants.d.ts +0 -1
  380. package/packages/lsp-tools-mcp/dist/lsp/language-mappings.d.ts +0 -1
  381. package/packages/lsp-tools-mcp/dist/lsp/process-signal-cleanup.d.ts +0 -1
  382. package/packages/lsp-tools-mcp/dist/missing-dependency-result.d.ts +0 -1
  383. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +0 -28
  384. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +0 -17
  385. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +0 -17
  386. package/packages/omo-codex/plugin/skills/data-scientist/references/common-scenarios.md +0 -176
  387. package/packages/omo-codex/plugin/skills/data-scientist/references/execution-templates.md +0 -197
  388. package/packages/omo-codex/plugin/skills/data-scientist/references/integration-patterns.md +0 -153
  389. package/packages/omo-codex/plugin/skills/data-scientist/references/performance-benchmarks.md +0 -37
  390. package/packages/omo-codex/plugin/skills/start-work/agents/openai.yaml +0 -2
  391. package/packages/omo-codex/plugin/test/aggregate-skills.test.mjs +0 -92
  392. package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +0 -314
  393. package/packages/omo-codex/plugin/test/ulw-plan-scope-contract.test.mjs +0 -24
  394. package/packages/shared-skills/skills/data-scientist/references/common-scenarios.md +0 -176
  395. package/packages/shared-skills/skills/data-scientist/references/execution-templates.md +0 -197
  396. package/packages/shared-skills/skills/data-scientist/references/integration-patterns.md +0 -153
  397. package/packages/shared-skills/skills/data-scientist/references/performance-benchmarks.md +0 -37
  398. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/.gitattributes +0 -0
  399. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/CHANGELOG.md +0 -0
  400. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/LICENSE +0 -0
  401. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/plan-checklist.ts +0 -0
  402. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/types.ts +0 -0
  403. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-completed.json +0 -0
  404. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-mixed-platforms.json +0 -0
  405. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-single-codex-work.json +0 -0
  406. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-all-done.md +0 -0
  407. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-scaffold.md +0 -0
  408. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-nested-checkboxes.md +0 -0
  409. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-unchecked.md +0 -0
  410. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.build.json +0 -0
  411. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.json +0 -0
  412. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/vitest.config.ts +0 -0
@@ -75,9 +75,9 @@ function gateWith(overrides: Record<string, unknown>): Record<string, unknown> {
75
75
  return { ...BASE_GATE, ...overrides };
76
76
  }
77
77
 
78
- function qualityGateError(input: unknown): UlwLoopError {
78
+ function qualityGateError(input: unknown, surface?: "lazycodex" | "omo-senpi"): UlwLoopError {
79
79
  try {
80
- validateQualityGate(input);
80
+ validateQualityGate(input, surface === undefined ? undefined : { reviewerSurface: surface });
81
81
  } catch (error) {
82
82
  if (error instanceof UlwLoopError) return error;
83
83
  throw error;
@@ -85,6 +85,20 @@ function qualityGateError(input: unknown): UlwLoopError {
85
85
  throw new Error("Expected UlwLoopError");
86
86
  }
87
87
 
88
+ function senpiGate(): Record<string, unknown> {
89
+ return gateWith({
90
+ codeReview: { ...BASE_GATE.codeReview, by: "omo-senpi-code-reviewer" },
91
+ manualQa: { ...BASE_GATE.manualQa, by: "omo-senpi-qa-executor" },
92
+ gateReview: { ...BASE_GATE.gateReview, by: "omo-senpi-gate-reviewer" },
93
+ criteriaCoverage: {
94
+ ...BASE_GATE.criteriaCoverage,
95
+ originalIntent: "User wanted the senpi surface to accept honest reviewer attribution.",
96
+ desiredOutcome: "A gate naming the omo-senpi reviewers validates on the omo-senpi surface.",
97
+ userOutcomeReview: "The senpi-surface gate passed with truthful reviewer identities.",
98
+ },
99
+ });
100
+ }
101
+
88
102
  describe("validateQualityGate reviewer roles", () => {
89
103
  it("#given arbitrary reviewer role names #when validated #then each role field is rejected", () => {
90
104
  const cases = [
@@ -106,6 +120,35 @@ describe("validateQualityGate reviewer roles", () => {
106
120
  }
107
121
  });
108
122
 
123
+ it("#given omo-senpi reviewer identities #when validated on the omo-senpi surface #then the gate is accepted", () => {
124
+ expect(() => validateQualityGate(senpiGate(), { reviewerSurface: "omo-senpi" })).not.toThrow();
125
+ });
126
+
127
+ it("#given lazycodex identities #when validated on the omo-senpi surface #then each role names the omo-senpi identity", () => {
128
+ const error = qualityGateError(gateWith({}), "omo-senpi");
129
+ expect(error.code).toBe("ULW_LOOP_QUALITY_GATE_INVALID");
130
+ expect(error.message).toContain("omo-senpi-code-reviewer");
131
+ });
132
+
133
+ it("#given omo-senpi identities #when validated on the default lazycodex surface #then the gate is rejected", () => {
134
+ const error = qualityGateError(senpiGate());
135
+ expect(error.code).toBe("ULW_LOOP_QUALITY_GATE_INVALID");
136
+ expect(error.message).toContain("lazycodex-code-reviewer");
137
+ });
138
+
139
+ it("#given swapped omo-senpi reviewer roles #when validated on the omo-senpi surface #then section-specific roles are enforced", () => {
140
+ const swapped = gateWith({
141
+ codeReview: { ...BASE_GATE.codeReview, by: "omo-senpi-qa-executor" },
142
+ manualQa: { ...BASE_GATE.manualQa, by: "omo-senpi-qa-executor" },
143
+ gateReview: { ...BASE_GATE.gateReview, by: "omo-senpi-gate-reviewer" },
144
+ });
145
+
146
+ const error = qualityGateError(swapped, "omo-senpi");
147
+
148
+ expect(error.code).toBe("ULW_LOOP_QUALITY_GATE_INVALID");
149
+ expect(error.message).toContain("codeReview.by");
150
+ });
151
+
109
152
  it("#given swapped LazyCodex reviewer roles #when validated #then section-specific roles are enforced", () => {
110
153
  const cases = [
111
154
  {
@@ -146,6 +146,26 @@ describe("applySpawnGuards gate-artifact guard", () => {
146
146
  expect(parsed.permissionDecisionReason).toContain("g1-code-review.md");
147
147
  });
148
148
 
149
+ it("#given an omo-senpi gate spawn by agent_type without artifacts #when guarded #then denies naming the missing path", () => {
150
+ writeGoals();
151
+
152
+ const output = applySpawnGuards(
153
+ payload("collaborationspawn_agent", { agent_type: "omo-senpi-gate-reviewer", message: "audit the artifacts" }),
154
+ );
155
+
156
+ const parsed = deny(output);
157
+ expect(parsed.permissionDecision).toBe("deny");
158
+ expect(parsed.permissionDecisionReason).toContain("g1-code-review.md");
159
+ });
160
+
161
+ it("#given an omo-senpi gate reviewer named in the message #when guarded #then still denies", () => {
162
+ writeGoals();
163
+
164
+ const output = applySpawnGuards(payload("spawn_agent", { message: "spawn omo-senpi-gate-reviewer now" }));
165
+
166
+ expect(deny(output).permissionDecision).toBe("deny");
167
+ });
168
+
149
169
  it("#given a gate spawn identified by message only #when guarded #then still denies", () => {
150
170
  writeGoals();
151
171
 
@@ -422,11 +422,14 @@ describe("steerUlwLoop", () => {
422
422
  });
423
423
 
424
424
  describe("parseUlwLoopSteeringDirective", () => {
425
- it.each(["OMO_ULW_LOOP_STEER", "omo.ulw-loop.steer", "omo ulw-loop steer", "omo-agent-toolkit ulw-loop steer"])("parses %s pattern", (marker) => {
426
- expect(parseUlwLoopSteeringDirective(`${marker}: ${JSON.stringify(steering())}`)).toMatchObject({
427
- kind: "add_subgoal",
428
- });
429
- });
425
+ it.each(["OMO_ULW_LOOP_STEER", "omo.ulw-loop.steer", "omo ulw-loop steer", "omo-agent-toolkit ulw-loop steer"])(
426
+ "parses %s pattern",
427
+ (marker) => {
428
+ expect(parseUlwLoopSteeringDirective(`${marker}: ${JSON.stringify(steering())}`)).toMatchObject({
429
+ kind: "add_subgoal",
430
+ });
431
+ },
432
+ );
430
433
 
431
434
  it("returns null when no marker", () => {
432
435
  expect(parseUlwLoopSteeringDirective(JSON.stringify(steering()))).toBeNull();
@@ -99,7 +99,7 @@ describe("runStopResumeHook", () => {
99
99
  expect(runStopResumeHook({ hook_event_name: "Stop" })).toBe("");
100
100
  });
101
101
 
102
- it("#given an active boulder work with remaining plan tasks #when the hook runs #then defers to start-work-continuation", () => {
102
+ it("#given an active boulder work with remaining plan tasks #when the hook runs #then defers to ulw-execute-continuation", () => {
103
103
  writeGoals([pendingGoal()]);
104
104
  const plan = writeBoulderPlan(true);
105
105
  writeFileSync(
@@ -0,0 +1,74 @@
1
+ import { mkdtemp, rm, writeFile } from "node:fs/promises";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { afterEach, beforeEach, describe, expect, it } from "vitest";
5
+
6
+ import { REVIEWER_ROLES_BY_SURFACE, resolveToolkitSurface, reviewerRolesFor } from "../src/surface.ts";
7
+
8
+ let markerDir: string;
9
+
10
+ beforeEach(async () => {
11
+ markerDir = await mkdtemp(join(tmpdir(), "ulw-surface-"));
12
+ });
13
+
14
+ afterEach(async () => {
15
+ await rm(markerDir, { recursive: true, force: true });
16
+ });
17
+
18
+ describe("resolveToolkitSurface", () => {
19
+ it("#given no marker and no env #when resolved #then defaults to lazycodex", () => {
20
+ expect(resolveToolkitSurface({ env: {}, entryDir: markerDir })).toBe("lazycodex");
21
+ });
22
+
23
+ it("#given a staged omo-senpi marker #when resolved #then returns omo-senpi", async () => {
24
+ await writeFile(join(markerDir, "surface.json"), '{"surface":"omo-senpi"}\n', "utf8");
25
+
26
+ expect(resolveToolkitSurface({ env: {}, entryDir: markerDir })).toBe("omo-senpi");
27
+ });
28
+
29
+ it("#given the env override #when a conflicting marker exists #then the env wins", async () => {
30
+ await writeFile(join(markerDir, "surface.json"), '{"surface":"omo-senpi"}\n', "utf8");
31
+
32
+ expect(resolveToolkitSurface({ env: { OMO_AGENT_TOOLKIT_SURFACE: "lazycodex" }, entryDir: markerDir })).toBe(
33
+ "lazycodex",
34
+ );
35
+ });
36
+
37
+ it("#given an omo-senpi env override without marker #when resolved #then returns omo-senpi", () => {
38
+ expect(resolveToolkitSurface({ env: { OMO_AGENT_TOOLKIT_SURFACE: "omo-senpi" }, entryDir: markerDir })).toBe(
39
+ "omo-senpi",
40
+ );
41
+ });
42
+
43
+ it("#given malformed or unknown markers #when resolved #then falls back to lazycodex", async () => {
44
+ await writeFile(join(markerDir, "surface.json"), "not json at all", "utf8");
45
+ expect(resolveToolkitSurface({ env: {}, entryDir: markerDir })).toBe("lazycodex");
46
+
47
+ await writeFile(join(markerDir, "surface.json"), '{"surface":"unknown-surface"}\n', "utf8");
48
+ expect(resolveToolkitSurface({ env: {}, entryDir: markerDir })).toBe("lazycodex");
49
+ });
50
+
51
+ it("#given an unknown env value #when a valid marker exists #then the marker still applies", async () => {
52
+ await writeFile(join(markerDir, "surface.json"), '{"surface":"omo-senpi"}\n', "utf8");
53
+
54
+ expect(resolveToolkitSurface({ env: { OMO_AGENT_TOOLKIT_SURFACE: "bogus" }, entryDir: markerDir })).toBe(
55
+ "omo-senpi",
56
+ );
57
+ });
58
+ });
59
+
60
+ describe("reviewerRolesFor", () => {
61
+ it("#given each surface #when resolving roles #then the identity namespaces match the surface", () => {
62
+ expect(reviewerRolesFor("lazycodex")).toEqual({
63
+ codeReview: "lazycodex-code-reviewer",
64
+ manualQa: "lazycodex-qa-executor",
65
+ gateReview: "lazycodex-gate-reviewer",
66
+ });
67
+ expect(reviewerRolesFor("omo-senpi")).toEqual({
68
+ codeReview: "omo-senpi-code-reviewer",
69
+ manualQa: "omo-senpi-qa-executor",
70
+ gateReview: "omo-senpi-gate-reviewer",
71
+ });
72
+ expect(Object.keys(REVIEWER_ROLES_BY_SURFACE).sort()).toEqual(["lazycodex", "omo-senpi"]);
73
+ });
74
+ });
@@ -5,6 +5,7 @@ import { join } from "node:path";
5
5
  import { describe, expect, it } from "vitest";
6
6
 
7
7
  import { applyUserPromptUlwLoopSteering, type UserPromptSubmitPayload } from "../src/codex-hook.js";
8
+ import { buildUltraworkSkillPointer } from "../src/ultrawork-skill-pointer.js";
8
9
 
9
10
  const DEFAULT_SESSION_ID = "s1";
10
11
 
@@ -76,10 +77,7 @@ describe("standalone ultrawork directive injection", () => {
76
77
  const parsed = JSON.parse(output);
77
78
  const context = parsed.hookSpecificOutput.additionalContext;
78
79
 
79
- expect(context).toMatch(/^<ultrawork-mode>/);
80
- expect(context).toContain(skillFilePath);
81
- expect(context).toContain("create_goal");
82
- expect(context).not.toContain("Tier triage");
80
+ expect(context).toBe(buildUltraworkSkillPointer(skillFilePath).trim());
83
81
  });
84
82
 
85
83
  it("#given a missing ultrawork skill file #when standalone injection runs #then falls back to the full directive", async () => {
@@ -90,8 +88,9 @@ describe("standalone ultrawork directive injection", () => {
90
88
  ultraworkSkillFilePath: missingSkillFilePath,
91
89
  });
92
90
  const parsed = JSON.parse(output);
91
+ const directive = await readFile(new URL("../directive.md", import.meta.url), "utf8");
93
92
 
94
- expect(parsed.hookSpecificOutput.additionalContext).toContain("Tier triage");
93
+ expect(parsed.hookSpecificOutput.additionalContext).toBe(directive.trim());
95
94
  });
96
95
 
97
96
  it("#given the ulw-loop pointer template #when compared to ultrawork #then the copy stays byte-identical", async () => {
@@ -6,5 +6,6 @@ export default defineConfig({
6
6
  environment: "node",
7
7
  pool: "threads",
8
8
  isolate: true,
9
+ env: { PI_SESSION_ID: "" },
9
10
  },
10
11
  });
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/git-bash/dist/cli.js\" hook post-compact",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.0.0-beta.3) Resetting Git Bash MCP Reminder",
10
+ "statusMessage": "(OmO 5.0.0-beta.31) Resetting Git Bash MCP Reminder",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\git-bash\\dist\\cli.js\" hook post-compact"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/lsp/dist/cli.js\" hook post-compact",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.0.0-beta.3) Resetting LSP Diagnostics Cache",
10
+ "statusMessage": "(OmO 5.0.0-beta.31) Resetting LSP Diagnostics Cache",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\lsp\\dist\\cli.js\" hook post-compact"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook post-compact",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.3) Resetting Project Rule Cache",
10
+ "statusMessage": "(OmO 5.0.0-beta.31) Resetting Project Rule Cache",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\rules\\dist\\cli.js\" hook post-compact"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/codegraph/dist/cli.js\" hook post-tool-use",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.0.0-beta.3) Checking CodeGraph Init Guidance",
10
+ "statusMessage": "(OmO 5.0.0-beta.31) Checking CodeGraph Init Guidance",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\codegraph\\dist\\cli.js\" hook post-tool-use"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/comment-checker/dist/cli.js\" hook post-tool-use",
9
9
  "timeout": 30,
10
- "statusMessage": "(OmO 5.0.0-beta.3) Checking Comments",
10
+ "statusMessage": "(OmO 5.0.0-beta.31) Checking Comments",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\comment-checker\\dist\\cli.js\" hook post-tool-use"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/lsp/dist/cli.js\" hook post-tool-use",
9
9
  "timeout": 60,
10
- "statusMessage": "(OmO 5.0.0-beta.3) Checking LSP Diagnostics",
10
+ "statusMessage": "(OmO 5.0.0-beta.31) Checking LSP Diagnostics",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\lsp\\dist\\cli.js\" hook post-tool-use"
12
12
  }
13
13
  ],
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/components/teammode/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 10,
11
- "statusMessage": "(OmO 5.0.0-beta.3) Checking Thread Title Hygiene",
11
+ "statusMessage": "(OmO 5.0.0-beta.31) Checking Thread Title Hygiene",
12
12
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\teammode\\dist\\cli.js\" hook post-tool-use"
13
13
  }
14
14
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook post-tool-use",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.3) Matching Project Rules",
10
+ "statusMessage": "(OmO 5.0.0-beta.31) Matching Project Rules",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\rules\\dist\\cli.js\" hook post-tool-use"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook pre-tool-use",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.0.0-beta.3) Enforcing Unlimited Goal Budget",
10
+ "statusMessage": "(OmO 5.0.0-beta.31) Enforcing Unlimited Goal Budget",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook pre-tool-use"
12
12
  }
13
13
  ],
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook pre-tool-use-spawn",
10
10
  "timeout": 5,
11
- "statusMessage": "(OmO 5.0.0-beta.3) Guarding Ulw-Loop Spawns",
11
+ "statusMessage": "(OmO 5.0.0-beta.31) Guarding Ulw-Loop Spawns",
12
12
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook pre-tool-use-spawn"
13
13
  }
14
14
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/git-bash/dist/cli.js\" hook pre-tool-use",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.0.0-beta.3) Recommending Git Bash MCP",
10
+ "statusMessage": "(OmO 5.0.0-beta.31) Recommending Git Bash MCP",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\git-bash\\dist\\cli.js\" hook pre-tool-use"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/scripts/auto-update.mjs\" hook session-start",
9
9
  "timeout": 15,
10
- "statusMessage": "(OmO 5.0.0-beta.3) Checking Auto Update",
10
+ "statusMessage": "(OmO 5.0.0-beta.31) Checking Auto Update",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\scripts\\auto-update.mjs\" hook session-start"
12
12
  }
13
13
  ],
@@ -8,7 +8,7 @@
8
8
  "command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
9
9
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
10
10
  "timeout": 30,
11
- "statusMessage": "(OmO 5.0.0-beta.3) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 5.0.0-beta.31) Checking Bootstrap Provisioning"
12
12
  }
13
13
  ]
14
14
  }
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/codegraph/dist/cli.js\" hook session-start",
9
9
  "timeout": 15,
10
- "statusMessage": "(OmO 5.0.0-beta.3) Checking CodeGraph Bootstrap",
10
+ "statusMessage": "(OmO 5.0.0-beta.31) Checking CodeGraph Bootstrap",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\codegraph\\dist\\cli.js\" hook session-start"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook session-start",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.3) Loading Project Rules",
10
+ "statusMessage": "(OmO 5.0.0-beta.31) Loading Project Rules",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\rules\\dist\\cli.js\" hook session-start"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/telemetry/dist/cli.js\" hook session-start",
9
9
  "timeout": 15,
10
- "statusMessage": "(OmO 5.0.0-beta.3) Recording Session Telemetry",
10
+ "statusMessage": "(OmO 5.0.0-beta.31) Recording Session Telemetry",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\telemetry\\dist\\cli.js\" hook session-start"
12
12
  }
13
13
  ]
@@ -0,0 +1,17 @@
1
+ {
2
+ "hooks": {
3
+ "Stop": [
4
+ {
5
+ "hooks": [
6
+ {
7
+ "type": "command",
8
+ "command": "node \"${PLUGIN_ROOT}/components/ulw-execute-continuation/dist/cli.js\" hook stop",
9
+ "timeout": 10,
10
+ "statusMessage": "(OmO 5.0.0-beta.31) Checking Ulw-Execute Continuation",
11
+ "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-execute-continuation\\dist\\cli.js\" hook stop"
12
+ }
13
+ ]
14
+ }
15
+ ]
16
+ }
17
+ }
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook stop",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.3) Checking Ulw-Loop Resume",
10
+ "statusMessage": "(OmO 5.0.0-beta.31) Checking Ulw-Loop Resume",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook stop"
12
12
  }
13
13
  ]
@@ -0,0 +1,17 @@
1
+ {
2
+ "hooks": {
3
+ "SubagentStop": [
4
+ {
5
+ "hooks": [
6
+ {
7
+ "type": "command",
8
+ "command": "node \"${PLUGIN_ROOT}/components/ulw-execute-continuation/dist/cli.js\" hook subagent-stop",
9
+ "timeout": 10,
10
+ "statusMessage": "(OmO 5.0.0-beta.31) Checking Ulw-Execute Continuation",
11
+ "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-execute-continuation\\dist\\cli.js\" hook subagent-stop"
12
+ }
13
+ ]
14
+ }
15
+ ]
16
+ }
17
+ }
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/lazycodex-executor-verify/dist/cli.js\" hook subagent-stop",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.3) Verifying LazyCodex Executor Evidence",
10
+ "statusMessage": "(OmO 5.0.0-beta.31) Verifying LazyCodex Executor Evidence",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\lazycodex-executor-verify\\dist\\cli.js\" hook subagent-stop"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/ultrawork/dist/cli.js\" hook user-prompt-submit",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.0.0-beta.3) Checking Ultrawork Trigger",
10
+ "statusMessage": "(OmO 5.0.0-beta.31) Checking Ultrawork Trigger",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ultrawork\\dist\\cli.js\" hook user-prompt-submit"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook user-prompt-submit",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.3) Checking Ulw-Loop Steering",
10
+ "statusMessage": "(OmO 5.0.0-beta.31) Checking Ulw-Loop Steering",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook user-prompt-submit"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook user-prompt-submit",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.3) Loading Project Rules",
10
+ "statusMessage": "(OmO 5.0.0-beta.31) Loading Project Rules",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\rules\\dist\\cli.js\" hook user-prompt-submit"
12
12
  }
13
13
  ]
@@ -1,15 +1,15 @@
1
1
  {
2
- "version": "2026-07-11.gpt-5.6-sol-372k-high",
2
+ "version": "2026-08-27.gpt-5.6-sol-650k-high",
3
3
  "current": {
4
4
  "model": "gpt-5.6-sol",
5
- "model_context_window": 372000,
5
+ "model_context_window": 650000,
6
6
  "model_reasoning_effort": "high",
7
7
  "plan_mode_reasoning_effort": "xhigh"
8
8
  },
9
9
  "roles": {
10
10
  "default": {
11
11
  "model": "gpt-5.6-sol",
12
- "model_context_window": 372000,
12
+ "model_context_window": 650000,
13
13
  "model_reasoning_effort": "high",
14
14
  "plan_mode_reasoning_effort": "xhigh"
15
15
  },