lazycodex-ai 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 (538) 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 +66932 -64746
  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 +66795 -64586
  23. package/package.json +9 -9
  24. package/packages/git-bash-mcp/dist/cli.js +6 -1
  25. package/packages/lsp-daemon/dist/cli.js +793 -323
  26. package/packages/lsp-daemon/dist/client.d.ts +10 -0
  27. package/packages/lsp-daemon/dist/client.js +753 -280
  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 +757 -289
  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 +712 -244
  36. package/packages/lsp-tools-mcp/dist/lsp/manager.js +248 -119
  37. package/packages/lsp-tools-mcp/dist/mcp.js +714 -246
  38. package/packages/lsp-tools-mcp/dist/request-context.js +12 -13
  39. package/packages/lsp-tools-mcp/dist/tools.js +718 -254
  40. package/packages/lsp-tools-mcp/package.json +1 -1
  41. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +4 -6
  42. package/packages/omo-codex/plugin/.mcp.json +0 -6
  43. package/packages/omo-codex/plugin/AGENTS.md +47 -0
  44. package/packages/omo-codex/plugin/README.md +2 -2
  45. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +45 -49
  46. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  47. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  48. package/packages/omo-codex/plugin/components/bootstrap/src/hook.ts +1 -0
  49. package/packages/omo-codex/plugin/components/comment-checker/AGENTS.md +9 -0
  50. package/packages/omo-codex/plugin/components/comment-checker/biome.json +2 -2
  51. package/packages/omo-codex/plugin/components/comment-checker/dist/cli.js +2 -1
  52. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  53. package/packages/omo-codex/plugin/components/comment-checker/package.json +5 -5
  54. package/packages/omo-codex/plugin/components/comment-checker/src/apply-patch.ts +2 -8
  55. package/packages/omo-codex/plugin/components/comment-checker/src/core.ts +1 -2
  56. package/packages/omo-codex/plugin/components/comment-checker/src/request-extractor.ts +1 -1
  57. package/packages/omo-codex/plugin/components/comment-checker/src/runner.ts +1 -0
  58. package/packages/omo-codex/plugin/components/git-bash/AGENTS.md +1 -1
  59. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  60. package/packages/omo-codex/plugin/components/git-bash/package.json +3 -4
  61. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/biome.json +2 -2
  62. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/cli.js +1 -5
  63. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/codex-hook.js +1 -5
  64. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  65. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +5 -5
  66. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/src/codex-hook.ts +1 -5
  67. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/codex-hook.test.ts +4 -21
  68. package/packages/omo-codex/plugin/components/lcx/skills/lcx-doctor/SKILL.md +1 -1
  69. package/packages/omo-codex/plugin/components/lsp/AGENTS.md +30 -15
  70. package/packages/omo-codex/plugin/components/lsp/biome.json +2 -2
  71. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +4 -4
  72. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +741 -294
  73. package/packages/omo-codex/plugin/components/lsp/dist/daemon-cli-path.js +1 -1
  74. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  75. package/packages/omo-codex/plugin/components/lsp/package.json +5 -5
  76. package/packages/omo-codex/plugin/components/lsp/src/cli.ts +1 -1
  77. package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +1 -1
  78. package/packages/omo-codex/plugin/components/lsp/src/daemon-cli-path.ts +1 -5
  79. package/packages/omo-codex/plugin/components/lsp/test/codex-hook-unavailable.test.ts +6 -7
  80. package/packages/omo-codex/plugin/components/lsp/test/codex-hook.test.ts +1 -2
  81. package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +11 -1
  82. package/packages/omo-codex/plugin/components/rules/AGENTS.md +12 -0
  83. package/packages/omo-codex/plugin/components/rules/biome.json +2 -2
  84. package/packages/omo-codex/plugin/components/rules/dist/cli.js +60 -45
  85. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  86. package/packages/omo-codex/plugin/components/rules/package.json +7 -7
  87. package/packages/omo-codex/plugin/components/rules/src/config.ts +1 -2
  88. package/packages/omo-codex/plugin/components/rules/src/persistent-cache.ts +1 -2
  89. package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +9 -5
  90. package/packages/omo-codex/plugin/components/rules/src/rules-engine-factory.ts +1 -4
  91. package/packages/omo-codex/plugin/components/rules/src/static-injection.ts +4 -9
  92. package/packages/omo-codex/plugin/components/rules/test/bundled-rules-priority.test.ts +11 -16
  93. package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +17 -25
  94. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +9 -7
  95. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +0 -6
  96. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-dedup.test.ts +6 -4
  97. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-directive.test.ts +12 -9
  98. package/packages/omo-codex/plugin/components/rules/test/codex-hook.test.ts +28 -37
  99. package/packages/omo-codex/plugin/components/rules/test/dynamic-target-fingerprints.test.ts +1 -2
  100. package/packages/omo-codex/plugin/components/rules/test/engine.test.ts +7 -4
  101. package/packages/omo-codex/plugin/components/rules/test/finder.test.ts +2 -3
  102. package/packages/omo-codex/plugin/components/rules/test/formatter.test.ts +39 -72
  103. package/packages/omo-codex/plugin/components/rules/test/hephaestus-model-variant.test.ts +1 -2
  104. package/packages/omo-codex/plugin/components/rules/test/hook-output.test.ts +2 -3
  105. package/packages/omo-codex/plugin/components/rules/test/matcher.test.ts +2 -3
  106. package/packages/omo-codex/plugin/components/rules/test/package-smoke.test.ts +1 -1
  107. package/packages/omo-codex/plugin/components/rules/test/parser.test.ts +1 -2
  108. package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +5 -6
  109. package/packages/omo-codex/plugin/components/rules/test/rules-engine-consumption.test.ts +3 -6
  110. package/packages/omo-codex/plugin/components/rules/test/scanner.test.ts +1 -2
  111. package/packages/omo-codex/plugin/components/rules/test/sources.test.ts +2 -5
  112. package/packages/omo-codex/plugin/components/rules/test/windows-git-bash-bundled-rule.test.ts +2 -17
  113. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  114. package/packages/omo-codex/plugin/components/teammode/package.json +5 -5
  115. package/packages/omo-codex/plugin/components/teammode/test/thread-title-hook.test.ts +4 -10
  116. package/packages/omo-codex/plugin/components/telemetry/AGENTS.md +8 -0
  117. package/packages/omo-codex/plugin/components/telemetry/biome.json +2 -2
  118. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +2463 -437
  119. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +2467 -441
  120. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  121. package/packages/omo-codex/plugin/components/telemetry/package.json +5 -5
  122. package/packages/omo-codex/plugin/components/telemetry/src/codex-hook.ts +1 -4
  123. package/packages/omo-codex/plugin/components/telemetry/src/posthog.ts +4 -14
  124. package/packages/omo-codex/plugin/components/telemetry/src/product-identity.ts +1 -1
  125. package/packages/omo-codex/plugin/components/telemetry/test/diagnostics.test.ts +2 -5
  126. package/packages/omo-codex/plugin/components/ultrawork/AGENTS.md +10 -4
  127. package/packages/omo-codex/plugin/components/ultrawork/biome.json +2 -2
  128. package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +489 -4
  129. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  130. package/packages/omo-codex/plugin/components/ultrawork/package.json +5 -6
  131. package/packages/omo-codex/plugin/components/ultrawork/scripts/sync-directive.mjs +30 -14
  132. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +6 -7
  133. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +31 -7
  134. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +2 -1
  135. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +5 -5
  136. package/packages/omo-codex/plugin/components/ultrawork/src/directive-content.ts +4 -0
  137. package/packages/omo-codex/plugin/components/ultrawork/src/directive.ts +5 -2
  138. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook-trigger-policy.test.ts +9 -1
  139. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +0 -136
  140. package/packages/omo-codex/plugin/components/ultrawork/test/directive-source.test.ts +14 -8
  141. package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +12 -1
  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 +2 -2
  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 +19 -0
  160. package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +1 -1
  161. package/packages/omo-codex/plugin/components/ulw-loop/README.md +12 -1
  162. package/packages/omo-codex/plugin/components/ulw-loop/biome.json +2 -2
  163. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +15 -3
  164. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.d.ts +12 -0
  165. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.js +45 -0
  166. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-continuation.js +9 -0
  167. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.d.ts +15 -0
  168. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.js +15 -1
  169. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-template.d.ts +8 -0
  170. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-template.js +120 -0
  171. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +40 -39
  172. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-commands.js +7 -2
  173. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.d.ts +2 -1
  174. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.js +12 -1
  175. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-subcommands.js +2 -0
  176. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +958 -342
  177. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.d.ts +2 -0
  178. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +27 -6
  179. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.d.ts +13 -0
  180. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.js +15 -1
  181. package/packages/omo-codex/plugin/components/ulw-loop/dist/domain-types.d.ts +17 -9
  182. package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.js +1 -1
  183. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.js +17 -2
  184. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-missing-recovery.d.ts +13 -0
  185. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-missing-recovery.js +19 -0
  186. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-aggregate.d.ts +7 -0
  187. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-aggregate.js +9 -0
  188. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-artifacts.d.ts +12 -0
  189. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-artifacts.js +104 -0
  190. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-fields.d.ts +13 -1
  191. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-fields.js +65 -9
  192. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-verdicts.js +5 -1
  193. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.d.ts +4 -2
  194. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.js +69 -111
  195. package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.js +4 -2
  196. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.js +185 -14
  197. package/packages/omo-codex/plugin/components/ulw-loop/dist/status-next-actions.d.ts +6 -0
  198. package/packages/omo-codex/plugin/components/ulw-loop/dist/status-next-actions.js +33 -0
  199. package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +3 -3
  200. package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.d.ts +18 -0
  201. package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.js +65 -0
  202. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  203. package/packages/omo-codex/plugin/components/ulw-loop/package.json +5 -5
  204. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +3 -2
  205. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +108 -0
  206. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +22 -1
  207. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-codex-validation.ts +81 -0
  208. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-continuation.ts +7 -0
  209. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-reconciliation.ts +31 -1
  210. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-template.ts +134 -0
  211. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +38 -71
  212. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-commands.ts +7 -2
  213. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-output.ts +14 -1
  214. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-subcommands.ts +2 -0
  215. package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +3 -5
  216. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +34 -5
  217. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-snapshot.ts +26 -1
  218. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +3 -1
  219. package/packages/omo-codex/plugin/components/ulw-loop/src/domain-types.ts +19 -9
  220. package/packages/omo-codex/plugin/components/ulw-loop/src/paths.ts +1 -1
  221. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-io.ts +18 -3
  222. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-missing-recovery.ts +27 -0
  223. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-aggregate.ts +11 -0
  224. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-artifacts.ts +123 -0
  225. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-fields.ts +68 -15
  226. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-verdicts.ts +6 -1
  227. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate.ts +82 -131
  228. package/packages/omo-codex/plugin/components/ulw-loop/src/review-blockers.ts +4 -2
  229. package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-guard.ts +187 -12
  230. package/packages/omo-codex/plugin/components/ulw-loop/src/status-next-actions.ts +36 -0
  231. package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +3 -3
  232. package/packages/omo-codex/plugin/components/ulw-loop/src/surface.ts +95 -0
  233. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-continuation.test.ts +0 -1
  234. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-final.test.ts +133 -1
  235. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-template.test.ts +137 -0
  236. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-create-goals.test.ts +25 -0
  237. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-entrypoint.test.ts +26 -2
  238. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-status-next-actions.test.ts +183 -0
  239. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +37 -2
  240. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-snapshot.test.ts +18 -0
  241. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +0 -3
  242. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/quality-gate-builder.ts +7 -3
  243. package/packages/omo-codex/plugin/components/ulw-loop/test/guided-recovery.test.ts +105 -0
  244. package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +5 -37
  245. package/packages/omo-codex/plugin/components/ulw-loop/test/paths.test.ts +9 -0
  246. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-aggregate-basics.test.ts +258 -0
  247. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-cap-and-dedupe.test.ts +22 -0
  248. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-poisoning-cascades.test.ts +97 -0
  249. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-roles.test.ts +46 -2
  250. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-senpi-surface.test.ts +131 -0
  251. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-single-report.test.ts +241 -0
  252. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate.test.ts +48 -3
  253. package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-guard.test.ts +318 -1
  254. package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +8 -5
  255. package/packages/omo-codex/plugin/components/ulw-loop/test/stop-resume-hook.test.ts +1 -1
  256. package/packages/omo-codex/plugin/components/ulw-loop/test/surface.test.ts +74 -0
  257. package/packages/omo-codex/plugin/components/ulw-loop/test/ultrawork-directive.test.ts +13 -8
  258. package/packages/omo-codex/plugin/components/ulw-loop/vitest.config.ts +1 -0
  259. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  260. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  261. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  262. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  263. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  264. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  265. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  266. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  267. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  268. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  269. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  270. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  271. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  272. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  273. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +17 -0
  274. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  275. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-ulw-execute-continuation.json +17 -0
  276. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  277. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  278. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  279. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  280. package/packages/omo-codex/plugin/model-catalog.json +3 -3
  281. package/packages/omo-codex/plugin/package-lock.json +676 -524
  282. package/packages/omo-codex/plugin/package.json +2 -3
  283. package/packages/omo-codex/plugin/scripts/AGENTS.md +39 -0
  284. package/packages/omo-codex/plugin/scripts/auto-update-plan.mjs +1 -2
  285. package/packages/omo-codex/plugin/scripts/auto-update.mjs +0 -9
  286. package/packages/omo-codex/plugin/scripts/canonical-ultrawork-directive.mjs +17 -0
  287. package/packages/omo-codex/plugin/scripts/hook-status-message.mjs +0 -1
  288. package/packages/omo-codex/plugin/scripts/migrate-codex-config/catalog.mjs +3 -3
  289. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +36 -13
  290. package/packages/omo-codex/plugin/shared/package.json +3 -4
  291. package/packages/omo-codex/plugin/shared/src/config-loader.ts +2 -102
  292. package/packages/omo-codex/plugin/shared/src/config-migration.ts +0 -1
  293. package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +41 -130
  294. package/packages/omo-codex/plugin/skills/ast-grep/AGENTS.md +51 -0
  295. package/packages/omo-codex/plugin/skills/coding-agent-sessions/AGENTS.md +62 -0
  296. package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +3 -2
  297. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +1 -1
  298. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/senpi.md +4 -4
  299. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
  300. package/packages/omo-codex/plugin/skills/data-scientist/SKILL.md +99 -239
  301. package/packages/omo-codex/plugin/skills/data-scientist/references/execution-surfaces.md +91 -0
  302. package/packages/omo-codex/plugin/skills/data-scientist/references/placement.md +74 -0
  303. package/packages/omo-codex/plugin/skills/data-scientist/references/polars-lane.md +95 -0
  304. package/packages/omo-codex/plugin/skills/data-scientist/references/uv-setup.md +1 -1
  305. package/packages/omo-codex/plugin/skills/data-scientist/references/visualization.md +64 -0
  306. package/packages/omo-codex/plugin/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
  307. package/packages/omo-codex/plugin/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
  308. package/packages/omo-codex/plugin/skills/debugging/SKILL.md +2 -0
  309. package/packages/omo-codex/plugin/skills/debugging/references/methodology/00-setup.md +12 -0
  310. package/packages/omo-codex/plugin/skills/debugging/references/methodology/02-investigate.md +21 -0
  311. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/go.md +15 -1
  312. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/native-binary.md +38 -0
  313. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/node.md +25 -0
  314. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/python.md +13 -0
  315. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/rust.md +41 -0
  316. package/packages/omo-codex/plugin/skills/debugging/references/scripts/dap.mjs +267 -0
  317. package/packages/omo-codex/plugin/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  318. package/packages/omo-codex/plugin/skills/debugging/references/tools/dap.md +103 -0
  319. package/packages/omo-codex/plugin/skills/debugging/references/tools/frida.md +193 -0
  320. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +11 -7
  321. package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +1 -0
  322. package/packages/omo-codex/plugin/skills/frontend/references/design/print-paged-media.md +76 -0
  323. package/packages/omo-codex/plugin/skills/frontend/references/design/stylegallery.md +80 -0
  324. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/README.md +1 -1
  325. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  326. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  327. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  328. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/orchestration.md +1 -1
  329. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/routing.md +5 -5
  330. package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +13 -13
  331. package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +1 -1
  332. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +4 -4
  333. package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
  334. package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +2 -0
  335. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +110 -0
  336. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +1 -1
  337. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
  338. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +9 -2
  339. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +15 -3
  340. package/packages/omo-codex/plugin/skills/{start-work → ulw-execute}/SKILL.md +19 -26
  341. package/packages/omo-codex/plugin/skills/ulw-execute/agents/openai.yaml +2 -0
  342. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +3 -2
  343. package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +108 -0
  344. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +22 -1
  345. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +6 -7
  346. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +31 -7
  347. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +2 -1
  348. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +5 -5
  349. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +4 -2
  350. package/packages/omo-codex/plugin/skills/visual-qa/AGENTS.md +58 -0
  351. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +3 -2
  352. package/packages/omo-codex/plugin/test/AGENTS.md +47 -0
  353. package/packages/omo-codex/plugin/test/aggregate-agents.test.mjs +19 -173
  354. package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +9 -48
  355. package/packages/omo-codex/plugin/test/aggregate-manifest.test.mjs +2 -3
  356. package/packages/omo-codex/plugin/test/aggregate-mcp.test.mjs +2 -7
  357. package/packages/omo-codex/plugin/test/aggregate-model-catalog.test.mjs +1 -1
  358. package/packages/omo-codex/plugin/test/aggregate-plugin-fixture.mjs +175 -13
  359. package/packages/omo-codex/plugin/test/aggregate.test.mjs +78 -2
  360. package/packages/omo-codex/plugin/test/auto-update-release-notes.test.mjs +19 -33
  361. package/packages/omo-codex/plugin/test/auto-update.test.mjs +2 -27
  362. package/packages/omo-codex/plugin/test/bootstrap-setup.test.mjs +0 -31
  363. package/packages/omo-codex/plugin/test/canonical-ultrawork-directive.test.mjs +53 -0
  364. package/packages/omo-codex/plugin/test/component-bin-names.test.mjs +2 -2
  365. package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +1 -51
  366. package/packages/omo-codex/plugin/test/component-hook-contract-cases.mjs +2 -2
  367. package/packages/omo-codex/plugin/test/hook-status-message.test.mjs +4 -5
  368. package/packages/omo-codex/plugin/test/lcx-contribute-bug-fix-template.test.mjs +21 -27
  369. package/packages/omo-codex/plugin/test/mcp-research-servers.test.mjs +1 -3
  370. package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +8 -8
  371. package/packages/omo-codex/plugin/test/scaffold-plan.test.mjs +0 -36
  372. package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +101 -0
  373. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +23 -13
  374. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +14 -119
  375. package/packages/omo-codex/plugin/test/teammode-archive-ambiguity.test.mjs +0 -40
  376. package/packages/omo-codex/plugin/test/teammode-communication.test.mjs +6 -62
  377. package/packages/omo-codex/plugin/test/teammode-thread-links.test.mjs +3 -36
  378. package/packages/omo-codex/plugin/test/teammode-transport.test.mjs +0 -44
  379. package/packages/omo-codex/plugin/test/teammode-worktree.test.mjs +2 -6
  380. package/packages/omo-codex/plugin/test/ultrawork-skill-pointer.test.mjs +5 -5
  381. package/packages/omo-codex/plugin/test/ulw-plan-review-state-contract.test.mjs +0 -3
  382. package/packages/omo-codex/scripts/install-dist/install-local.mjs +2817 -913
  383. package/packages/{omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md → prompts-core/prompts/ultrawork/codex.md} +15 -10
  384. package/packages/shared-skills/skills/ast-grep/AGENTS.md +51 -0
  385. package/packages/shared-skills/skills/coding-agent-sessions/AGENTS.md +62 -0
  386. package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +3 -2
  387. package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +1 -1
  388. package/packages/shared-skills/skills/coding-agent-sessions/references/senpi.md +4 -4
  389. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
  390. package/packages/shared-skills/skills/data-scientist/SKILL.md +99 -239
  391. package/packages/shared-skills/skills/data-scientist/references/execution-surfaces.md +91 -0
  392. package/packages/shared-skills/skills/data-scientist/references/placement.md +74 -0
  393. package/packages/shared-skills/skills/data-scientist/references/polars-lane.md +95 -0
  394. package/packages/shared-skills/skills/data-scientist/references/uv-setup.md +1 -1
  395. package/packages/shared-skills/skills/data-scientist/references/visualization.md +64 -0
  396. package/packages/shared-skills/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
  397. package/packages/shared-skills/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
  398. package/packages/shared-skills/skills/debugging/SKILL.md +2 -0
  399. package/packages/shared-skills/skills/debugging/references/methodology/00-setup.md +12 -0
  400. package/packages/shared-skills/skills/debugging/references/methodology/02-investigate.md +21 -0
  401. package/packages/shared-skills/skills/debugging/references/runtimes/go.md +15 -1
  402. package/packages/shared-skills/skills/debugging/references/runtimes/native-binary.md +38 -0
  403. package/packages/shared-skills/skills/debugging/references/runtimes/node.md +25 -0
  404. package/packages/shared-skills/skills/debugging/references/runtimes/python.md +13 -0
  405. package/packages/shared-skills/skills/debugging/references/runtimes/rust.md +41 -0
  406. package/packages/shared-skills/skills/debugging/references/scripts/dap.mjs +267 -0
  407. package/packages/shared-skills/skills/debugging/references/scripts/dap.test.ts +86 -0
  408. package/packages/shared-skills/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  409. package/packages/shared-skills/skills/debugging/references/tools/dap.md +103 -0
  410. package/packages/shared-skills/skills/debugging/references/tools/frida.md +193 -0
  411. package/packages/shared-skills/skills/frontend/SKILL.md +11 -7
  412. package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +1 -0
  413. package/packages/shared-skills/skills/frontend/references/design/print-paged-media.md +76 -0
  414. package/packages/shared-skills/skills/frontend/references/design/stylegallery.md +80 -0
  415. package/packages/shared-skills/skills/frontend/references/designpowers/README.md +1 -1
  416. package/packages/shared-skills/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  417. package/packages/shared-skills/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  418. package/packages/shared-skills/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  419. package/packages/shared-skills/skills/frontend/references/designpowers/orchestration.md +1 -1
  420. package/packages/shared-skills/skills/frontend/references/designpowers/routing.md +5 -5
  421. package/packages/shared-skills/skills/init-deep/SKILL.md +13 -13
  422. package/packages/shared-skills/skills/review-work/SKILL.md +3 -3
  423. package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
  424. package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +2 -0
  425. package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +110 -0
  426. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +1 -1
  427. package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
  428. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +9 -2
  429. package/packages/shared-skills/skills/{start-work → ulw-execute}/SKILL.md +17 -16
  430. package/packages/shared-skills/skills/ulw-plan/SKILL.md +6 -7
  431. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +31 -7
  432. package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +2 -1
  433. package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +5 -5
  434. package/packages/shared-skills/skills/ulw-research/SKILL.md +4 -2
  435. package/packages/shared-skills/skills/visual-qa/AGENTS.md +58 -0
  436. package/packages/shared-skills/skills/visual-qa/SKILL.md +3 -2
  437. package/script/qa/web-terminal-visual-qa.mjs +2 -0
  438. package/script/qa/xterm-live-terminal.mjs +18 -2
  439. package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.d.ts +0 -1
  440. package/packages/lsp-tools-mcp/dist/lsp/constants.d.ts +0 -1
  441. package/packages/lsp-tools-mcp/dist/lsp/language-mappings.d.ts +0 -1
  442. package/packages/lsp-tools-mcp/dist/lsp/process-signal-cleanup.d.ts +0 -1
  443. package/packages/lsp-tools-mcp/dist/missing-dependency-result.d.ts +0 -1
  444. package/packages/omo-codex/plugin/components/codegraph/AGENTS.md +0 -58
  445. package/packages/omo-codex/plugin/components/codegraph/NODE-RUNTIME-LICENSES.md +0 -2951
  446. package/packages/omo-codex/plugin/components/codegraph/NOTICE +0 -16
  447. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +0 -12136
  448. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +0 -9734
  449. package/packages/omo-codex/plugin/components/codegraph/package.json +0 -33
  450. package/packages/omo-codex/plugin/components/codegraph/src/cache-gc.ts +0 -29
  451. package/packages/omo-codex/plugin/components/codegraph/src/cli.ts +0 -79
  452. package/packages/omo-codex/plugin/components/codegraph/src/hook-input.ts +0 -33
  453. package/packages/omo-codex/plugin/components/codegraph/src/hook-sweep.ts +0 -25
  454. package/packages/omo-codex/plugin/components/codegraph/src/hook-types.ts +0 -131
  455. package/packages/omo-codex/plugin/components/codegraph/src/hook.ts +0 -258
  456. package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +0 -309
  457. package/packages/omo-codex/plugin/components/codegraph/src/mcp-unavailable.ts +0 -80
  458. package/packages/omo-codex/plugin/components/codegraph/src/post-tool-use-hook.ts +0 -34
  459. package/packages/omo-codex/plugin/components/codegraph/src/serve-invocation.ts +0 -29
  460. package/packages/omo-codex/plugin/components/codegraph/src/serve.ts +0 -263
  461. package/packages/omo-codex/plugin/components/codegraph/src/session-start-command.ts +0 -106
  462. package/packages/omo-codex/plugin/components/codegraph/src/session-start-cooldown.ts +0 -145
  463. package/packages/omo-codex/plugin/components/codegraph/src/session-start-hook-runtime.ts +0 -21
  464. package/packages/omo-codex/plugin/components/codegraph/src/session-start-lock.ts +0 -139
  465. package/packages/omo-codex/plugin/components/codegraph/src/session-start-outcome.ts +0 -15
  466. package/packages/omo-codex/plugin/components/codegraph/src/session-start-paths.ts +0 -32
  467. package/packages/omo-codex/plugin/components/codegraph/src/session-start-project.ts +0 -109
  468. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker-result.ts +0 -148
  469. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker.ts +0 -175
  470. package/packages/omo-codex/plugin/components/codegraph/src/sweep-cli.ts +0 -81
  471. package/packages/omo-codex/plugin/components/codegraph/test/cache-gc.test.ts +0 -34
  472. package/packages/omo-codex/plugin/components/codegraph/test/hook-exclusion.test.ts +0 -112
  473. package/packages/omo-codex/plugin/components/codegraph/test/hook-registration.test.ts +0 -26
  474. package/packages/omo-codex/plugin/components/codegraph/test/hook-session-start-guard.test.ts +0 -160
  475. package/packages/omo-codex/plugin/components/codegraph/test/hook-store-upgrade.test.ts +0 -50
  476. package/packages/omo-codex/plugin/components/codegraph/test/hook-sweep.test.ts +0 -29
  477. package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +0 -320
  478. package/packages/omo-codex/plugin/components/codegraph/test/mcp-bridge-fixtures.ts +0 -172
  479. package/packages/omo-codex/plugin/components/codegraph/test/package-runtime.test.ts +0 -91
  480. package/packages/omo-codex/plugin/components/codegraph/test/provisioned-node-guard.test.ts +0 -100
  481. package/packages/omo-codex/plugin/components/codegraph/test/serve-built-wrapper.test.ts +0 -76
  482. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge-lifecycle.test.ts +0 -133
  483. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge.test.ts +0 -245
  484. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-facade.test.ts +0 -69
  485. package/packages/omo-codex/plugin/components/codegraph/test/serve-node-support.test.ts +0 -43
  486. package/packages/omo-codex/plugin/components/codegraph/test/serve-provision.test.ts +0 -147
  487. package/packages/omo-codex/plugin/components/codegraph/test/serve-unavailable.test.ts +0 -175
  488. package/packages/omo-codex/plugin/components/codegraph/test/serve.test.ts +0 -385
  489. package/packages/omo-codex/plugin/components/codegraph/test/session-start-node-support.test.ts +0 -206
  490. package/packages/omo-codex/plugin/components/codegraph/test/session-start-project.test.ts +0 -58
  491. package/packages/omo-codex/plugin/components/codegraph/test/session-start-state.test.ts +0 -104
  492. package/packages/omo-codex/plugin/components/codegraph/test/session-start-trust-boundary.test.ts +0 -65
  493. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-availability.test.ts +0 -106
  494. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-cooldown.test.ts +0 -116
  495. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-flow.test.ts +0 -258
  496. package/packages/omo-codex/plugin/components/codegraph/test/sweep-cli.test.ts +0 -56
  497. package/packages/omo-codex/plugin/components/codegraph/tsconfig.build.json +0 -13
  498. package/packages/omo-codex/plugin/components/codegraph/tsconfig.json +0 -25
  499. package/packages/omo-codex/plugin/components/start-work-continuation/LICENSE +0 -21
  500. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +0 -28
  501. package/packages/omo-codex/plugin/components/ultrawork/directive.md +0 -471
  502. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +0 -18
  503. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +0 -17
  504. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +0 -17
  505. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +0 -17
  506. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/editor.mjs +0 -125
  507. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/jsonc.mjs +0 -43
  508. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/scaffold.mjs +0 -29
  509. package/packages/omo-codex/plugin/scripts/migrate-omo-sot.mjs +0 -121
  510. package/packages/omo-codex/plugin/skills/data-scientist/references/common-scenarios.md +0 -176
  511. package/packages/omo-codex/plugin/skills/data-scientist/references/execution-templates.md +0 -197
  512. package/packages/omo-codex/plugin/skills/data-scientist/references/integration-patterns.md +0 -153
  513. package/packages/omo-codex/plugin/skills/data-scientist/references/performance-benchmarks.md +0 -37
  514. package/packages/omo-codex/plugin/skills/start-work/agents/openai.yaml +0 -2
  515. package/packages/omo-codex/plugin/test/aggregate-skills.test.mjs +0 -92
  516. package/packages/omo-codex/plugin/test/component-codegraph-mcp-smoke.test.mjs +0 -76
  517. package/packages/omo-codex/plugin/test/migrate-omo-sot.test.mjs +0 -179
  518. package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +0 -314
  519. package/packages/omo-codex/plugin/test/ulw-plan-scope-contract.test.mjs +0 -24
  520. package/packages/shared-skills/skills/data-scientist/references/common-scenarios.md +0 -176
  521. package/packages/shared-skills/skills/data-scientist/references/execution-templates.md +0 -197
  522. package/packages/shared-skills/skills/data-scientist/references/integration-patterns.md +0 -153
  523. package/packages/shared-skills/skills/data-scientist/references/performance-benchmarks.md +0 -37
  524. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/.gitattributes +0 -0
  525. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/CHANGELOG.md +0 -0
  526. /package/packages/omo-codex/plugin/components/{codegraph → ulw-execute-continuation}/LICENSE +0 -0
  527. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/plan-checklist.ts +0 -0
  528. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/types.ts +0 -0
  529. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-completed.json +0 -0
  530. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-mixed-platforms.json +0 -0
  531. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-single-codex-work.json +0 -0
  532. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-all-done.md +0 -0
  533. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-scaffold.md +0 -0
  534. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-nested-checkboxes.md +0 -0
  535. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-unchecked.md +0 -0
  536. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.build.json +0 -0
  537. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.json +0 -0
  538. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/vitest.config.ts +0 -0
@@ -1,179 +0,0 @@
1
- import assert from "node:assert/strict";
2
- import { mkdir, mkdtemp, readFile, writeFile } from "node:fs/promises";
3
- import { tmpdir } from "node:os";
4
- import { join } from "node:path";
5
- import test from "node:test";
6
-
7
- import { migrateOmoSotConfig } from "../scripts/migrate-omo-sot.mjs";
8
-
9
- test("#given no OMO SOT #when seeding #then creates a parseable scaffold once", async () => {
10
- const home = await mkdtemp(join(tmpdir(), "omo-sot-seed-"));
11
-
12
- const first = await migrateOmoSotConfig({ env: { HOME: home }, seed: true });
13
- const before = await readFile(join(home, ".omo", "config.jsonc"), "utf8");
14
- const second = await migrateOmoSotConfig({ env: { HOME: home }, seed: true });
15
- const after = await readFile(join(home, ".omo", "config.jsonc"), "utf8");
16
-
17
- assert.equal(first.seeded, true);
18
- assert.equal(second.seeded, false);
19
- assert.equal(after, before);
20
- assert.equal(parseJsonc(after)["[codex]"].codegraph.enabled, undefined);
21
- assert.equal(parseJsonc(after).codegraph.enabled, undefined);
22
- assert.match(after, /"enabled"/);
23
- assert.match(after, /"\[opencode\]"/);
24
- });
25
-
26
- test("#given no OMO SOT and legacy CodeGraph env #when seeding #then creates scaffold with Codex scoped migration", async () => {
27
- const home = await mkdtemp(join(tmpdir(), "omo-sot-seed-env-"));
28
-
29
- await migrateOmoSotConfig({
30
- env: {
31
- HOME: home,
32
- CODEX_CODEGRAPH_AUTO_PROVISION: "yes",
33
- CODEX_CODEGRAPH_ENABLED: "1",
34
- OMO_CODEGRAPH_INSTALL_DIR: "/tmp/codegraph",
35
- OMO_CODEGRAPH_TELEMETRY: "false",
36
- },
37
- seed: true,
38
- });
39
-
40
- const content = await readFile(join(home, ".omo", "config.jsonc"), "utf8");
41
- const parsed = parseJsonc(content);
42
- assert.equal(parsed.codegraph.enabled, undefined);
43
- assert.deepEqual(parsed["[codex]"].codegraph, {
44
- auto_provision: true,
45
- enabled: true,
46
- install_dir: "/tmp/codegraph",
47
- telemetry: false,
48
- });
49
- assert.match(content, /Shared OMO settings/);
50
- assert.match(content, /"\[opencode\]"/);
51
- });
52
-
53
- test("#given legacy CodeGraph env #when migrating #then adds Codex scoped codegraph values", async () => {
54
- const home = await mkdtemp(join(tmpdir(), "omo-sot-env-"));
55
- await mkdir(join(home, ".omo"), { recursive: true });
56
- await writeFile(join(home, ".omo", "config.jsonc"), "{\n}\n");
57
-
58
- const result = await migrateOmoSotConfig({
59
- env: {
60
- HOME: home,
61
- CODEX_CODEGRAPH_AUTO_PROVISION: "0",
62
- CODEX_CODEGRAPH_ENABLED: "false",
63
- OMO_CODEGRAPH_INSTALL_DIR: "/tmp/codegraph",
64
- OMO_CODEGRAPH_TELEMETRY: "1",
65
- },
66
- seed: true,
67
- });
68
-
69
- const parsed = parseJsonc(await readFile(join(home, ".omo", "config.jsonc"), "utf8"));
70
- assert.equal(result.changed, true);
71
- assert.deepEqual(parsed["[codex]"].codegraph, {
72
- auto_provision: false,
73
- enabled: false,
74
- install_dir: "/tmp/codegraph",
75
- telemetry: true,
76
- });
77
- });
78
-
79
- test("#given existing user SOT #when migrating env #then preserves user values and comments", async () => {
80
- const home = await mkdtemp(join(tmpdir(), "omo-sot-preserve-"));
81
- const configPath = join(home, ".omo", "config.jsonc");
82
- await mkdir(join(home, ".omo"), { recursive: true });
83
- await writeFile(
84
- configPath,
85
- [
86
- "{",
87
- " // keep my debounce",
88
- ' "codegraph": {',
89
- " \"watch_debounce_ms\": 4242",
90
- " }",
91
- "}",
92
- "",
93
- ].join("\n"),
94
- );
95
-
96
- await migrateOmoSotConfig({ env: { HOME: home, CODEX_CODEGRAPH_ENABLED: "0" }, seed: true });
97
-
98
- const content = await readFile(configPath, "utf8");
99
- const parsed = parseJsonc(content);
100
- assert.match(content, /keep my debounce/);
101
- assert.equal(parsed.codegraph.watch_debounce_ms, 4242);
102
- assert.equal(parsed["[codex]"].codegraph.enabled, false);
103
- });
104
-
105
- test("#given existing Codex scoped SOT #when migrating env #then user value wins", async () => {
106
- const home = await mkdtemp(join(tmpdir(), "omo-sot-user-wins-"));
107
- const configPath = join(home, ".omo", "config.jsonc");
108
- await mkdir(join(home, ".omo"), { recursive: true });
109
- await writeFile(configPath, '{\n "[codex]": { "codegraph": { "enabled": true } }\n}\n');
110
-
111
- await migrateOmoSotConfig({ env: { HOME: home, CODEX_CODEGRAPH_ENABLED: "0" }, seed: true });
112
-
113
- const parsed = parseJsonc(await readFile(configPath, "utf8"));
114
- assert.equal(parsed["[codex]"].codegraph.enabled, true);
115
- });
116
-
117
- test("#given opencode scoped SOT #when migrating env #then opencode block is not changed", async () => {
118
- const home = await mkdtemp(join(tmpdir(), "omo-sot-opencode-"));
119
- const configPath = join(home, ".omo", "config.jsonc");
120
- await mkdir(join(home, ".omo"), { recursive: true });
121
- await writeFile(configPath, '{\n "[opencode]": { "codegraph": { "enabled": true } }\n}\n');
122
-
123
- await migrateOmoSotConfig({ env: { HOME: home, CODEX_CODEGRAPH_ENABLED: "0" }, seed: true });
124
-
125
- const parsed = parseJsonc(await readFile(configPath, "utf8"));
126
- assert.equal(parsed["[opencode]"].codegraph.enabled, true);
127
- assert.equal(parsed["[codex]"].codegraph.enabled, false);
128
- });
129
-
130
- test("#given malformed existing SOT #when migrating #then leaves it untouched and warns", async () => {
131
- const home = await mkdtemp(join(tmpdir(), "omo-sot-malformed-"));
132
- const configPath = join(home, ".omo", "config.jsonc");
133
- await mkdir(join(home, ".omo"), { recursive: true });
134
- await writeFile(configPath, '{ "codegraph":');
135
-
136
- const result = await migrateOmoSotConfig({ env: { HOME: home, CODEX_CODEGRAPH_ENABLED: "0" }, seed: true });
137
-
138
- assert.equal(await readFile(configPath, "utf8"), '{ "codegraph":');
139
- assert.equal(result.changed, false);
140
- assert.equal(result.seeded, false);
141
- assert.match(result.warnings.join("\n"), /Could not parse/);
142
- });
143
-
144
- function parseJsonc(content) {
145
- return JSON.parse(stripTrailingCommas(stripJsonComments(content)));
146
- }
147
-
148
- function stripJsonComments(content) {
149
- let result = "";
150
- let inString = false;
151
- let escape = false;
152
- for (let index = 0; index < content.length; index += 1) {
153
- const char = content[index];
154
- const next = content[index + 1];
155
- if (inString) {
156
- result += char;
157
- if (escape) escape = false;
158
- else if (char === "\\") escape = true;
159
- else if (char === "\"") inString = false;
160
- continue;
161
- }
162
- if (char === "\"") {
163
- inString = true;
164
- result += char;
165
- continue;
166
- }
167
- if (char === "/" && next === "/") {
168
- while (index < content.length && content[index] !== "\n") index += 1;
169
- result += "\n";
170
- continue;
171
- }
172
- result += char;
173
- }
174
- return result;
175
- }
176
-
177
- function stripTrailingCommas(content) {
178
- return content.replace(/,\s*([}\]])/g, "$1");
179
- }
@@ -1,314 +0,0 @@
1
- import assert from "node:assert/strict";
2
- import { readdir, readFile } from "node:fs/promises";
3
- import { dirname, join } from "node:path";
4
- import test from "node:test";
5
- import { fileURLToPath } from "node:url";
6
- import { codexHarnessToolCompatibility, insertCodexCompatibilityGuidance } from "../scripts/sync-skills.mjs";
7
-
8
- const root = dirname(dirname(fileURLToPath(import.meta.url)));
9
-
10
- async function listSkillNames() {
11
- const skillsRoot = join(root, "skills");
12
- const entries = await readdir(skillsRoot, { withFileTypes: true });
13
- return entries
14
- .filter((entry) => entry.isDirectory())
15
- .map((entry) => entry.name)
16
- .sort();
17
- }
18
-
19
- async function readSkill(skillName) {
20
- return readFile(join(root, "skills", skillName, "SKILL.md"), "utf8");
21
- }
22
-
23
- async function readSharedSkill(skillName) {
24
- return readFile(join(root, "../../shared-skills/skills", skillName, "SKILL.md"), "utf8");
25
- }
26
-
27
- function patternFromParts(parts, flags) {
28
- return new RegExp(parts.join(""), flags);
29
- }
30
-
31
- const multiAgentV2RoleGuidance =
32
- "If instead a flat `spawn_agent` with a required `task_name` exists (`multi_agent_v2`), rewrite every `multi_agent_v1.*` example:";
33
- const loadSkillsGuidance =
34
- "When translating `load_skills=[...]`, include the requested skill names in the spawned agent's `message`.";
35
-
36
- test("#given synced aggregate Codex skills #when they contain OpenCode orchestration examples #then Codex tool compatibility guidance is injected", async () => {
37
- // given
38
- const opencodeOnlyToolPattern = /\b(?:call_omo_agent|background_output|team_[a-z_]+|task)\s*\(/;
39
-
40
- // when / then
41
- for (const skillName of await listSkillNames()) {
42
- const content = await readSkill(skillName);
43
- if (!opencodeOnlyToolPattern.test(content)) continue;
44
-
45
- const compatibilityMatches = content.match(/## Codex Harness Tool Compatibility/g) ?? [];
46
- const compatibilityIndex = content.indexOf("## Codex Harness Tool Compatibility");
47
- assert.notEqual(compatibilityIndex, -1, `${skillName} is missing Codex compatibility guidance`);
48
- assert.equal(compatibilityMatches.length, 1, `${skillName} must not duplicate Codex compatibility guidance`);
49
- assert.ok(
50
- compatibilityIndex < content.search(opencodeOnlyToolPattern),
51
- `${skillName} must explain Codex tool translation before OpenCode-only examples`,
52
- );
53
- assert.ok(content.includes(multiAgentV2RoleGuidance), `${skillName} missing multi_agent_v2 role guidance`);
54
- assert.ok(content.includes(loadSkillsGuidance), `${skillName} missing load_skills guidance`);
55
- }
56
- });
57
-
58
- test("#given late variant Codex compatibility guidance #when adapting a skill #then it is moved without duplication", () => {
59
- // given
60
- const content = `---
61
- name: example
62
- ---
63
-
64
- # Example Skill
65
-
66
- call_omo_agent(subagent_type="explore", prompt="inspect")
67
-
68
- ## Codex Harness Tool Compatibility
69
-
70
- Older variant guidance.
71
-
72
- When translating \`load_skills=[...]\`, name the skills inside the spawned agent's \`message\`. If a code block below conflicts with this section, this section wins.
73
-
74
- ---
75
-
76
- ## Next Section
77
-
78
- task(category="quick", prompt="verify")
79
- `;
80
-
81
- // when
82
- const adapted = insertCodexCompatibilityGuidance(content);
83
-
84
- // then
85
- const compatibilityIndex = adapted.indexOf("## Codex Harness Tool Compatibility");
86
- const firstToolIndex = adapted.search(/\b(?:call_omo_agent|task)\s*\(/);
87
- assert.notEqual(compatibilityIndex, -1);
88
- assert.ok(compatibilityIndex < firstToolIndex);
89
- assert.equal(adapted.match(/## Codex Harness Tool Compatibility/g)?.length, 1);
90
- assert.doesNotMatch(adapted, /Older variant guidance/);
91
- assert.doesNotMatch(adapted, /name the skills inside the spawned agent's `message`/);
92
- assert.match(adapted, /\n---\n\n## Next Section/);
93
- });
94
-
95
- test("#given early custom Codex compatibility guidance #when adapting a skill #then it is preserved exactly", () => {
96
- // given
97
- const content = `---
98
- name: example
99
- ---
100
-
101
- ## Codex Harness Tool Compatibility
102
-
103
- Custom guidance for this skill, including \`dispatchInternalPrompt(...)\`.
104
-
105
- # Example Skill
106
-
107
- call_omo_agent(subagent_type="explore", prompt="inspect")
108
- `;
109
-
110
- // when
111
- const adapted = insertCodexCompatibilityGuidance(content);
112
-
113
- // then
114
- assert.equal(adapted, content);
115
- });
116
-
117
- test("#given early generated stale Codex compatibility guidance #when adapting a skill #then it is replaced", () => {
118
- // given
119
- const content = `---
120
- name: example
121
- ---
122
-
123
- ## Codex Harness Tool Compatibility
124
-
125
- This skill may include examples copied from the OpenCode harness. In Codex, do not call OpenCode-only tools such as \`call_omo_agent(...)\`, \`task(...)\`, \`background_output(...)\`, or \`team_*(...)\` literally. Translate those examples to Codex native tools:
126
-
127
- | OpenCode example | Codex tool to use |
128
- | --- | --- |
129
- | \`call_omo_agent(subagent_type="explore", ...)\` | \`spawn_agent({"task_name":"...","message":"TASK: act as an explorer. ..."})\` |
130
- | \`background_output(task_id="...")\` | \`wait_agent(...)\` for mailbox signals |
131
-
132
- Obsolete generated compatibility prose.
133
-
134
- More obsolete generated compatibility prose.
135
-
136
- When translating \`load_skills=[...]\`, include the requested skill names in the spawned agent's \`message\`. If a code block below conflicts with this section, this section wins.
137
-
138
- # Example Skill
139
-
140
- call_omo_agent(subagent_type="explore", prompt="inspect")
141
- `;
142
-
143
- // when
144
- const adapted = insertCodexCompatibilityGuidance(content);
145
-
146
- // then
147
- assert.match(adapted, /multi_agent_v1\.spawn_agent/);
148
- assert.match(adapted, /fork_context":false/);
149
- assert.match(adapted, /"agent_type":"explorer"/);
150
- assert.match(adapted, /multi_agent_v1\.wait_agent/);
151
- assert.match(adapted, /"task_name":"<lowercase_digits_underscores>"/);
152
- assert.match(adapted, /fork_turns/);
153
- assert.doesNotMatch(adapted, /\| `spawn_agent\({"task_name"/);
154
- assert.doesNotMatch(adapted, /Obsolete generated compatibility prose/);
155
- });
156
-
157
- test("#given generated Codex compatibility guidance #when adapting a skill #then multi-agent role and load_skills guidance are both present", () => {
158
- // given
159
- const content = `---
160
- name: example
161
- ---
162
-
163
- # Example Skill
164
-
165
- task(subagent_type="oracle", load_skills=["debugging"], prompt="verify")
166
- `;
167
-
168
- // when
169
- const adapted = insertCodexCompatibilityGuidance(content);
170
-
171
- // then
172
- assert.ok(adapted.includes(multiAgentV2RoleGuidance));
173
- assert.ok(adapted.includes(loadSkillsGuidance));
174
- });
175
-
176
- test("#given generated guidance before a template export #when adapting a skill #then the export wrapper is preserved", () => {
177
- // given
178
- const content = `---
179
- name: refactor
180
- ---
181
-
182
- ## Codex Harness Tool Compatibility
183
-
184
- Older variant guidance.
185
-
186
- When translating \`load_skills=[...]\`, name the skills inside the spawned agent's \`message\`. If a code block below conflicts with this section, this section wins.
187
-
188
- export const REFACTOR_TEMPLATE = \`# Refactor
189
-
190
- call_omo_agent(subagent_type="explore", prompt="inspect")
191
- \`
192
- `;
193
-
194
- // when
195
- const adapted = insertCodexCompatibilityGuidance(content);
196
-
197
- // then
198
- assert.match(adapted, /export const REFACTOR_TEMPLATE = `# Refactor/);
199
- assert.match(adapted, /multi_agent_v1\.spawn_agent/);
200
- assert.doesNotMatch(adapted, /Older variant guidance/);
201
- });
202
-
203
- test("#given synced aggregate Codex skills #when they describe background orchestration #then liveness is framed as progress rather than timeout failure", async () => {
204
- // given
205
- const orchestrationPattern = /\b(?:run_in_background|background_output|wait_agent)\b/;
206
- const requiredPatterns = [
207
- ["working progress message", /WORKING:/],
208
- ["blocked progress message", /BLOCKED:/],
209
- ["mailbox timeout framing", /timeout only means no new mailbox update arrived/],
210
- // Skills route by session tool surface: the namespaced V1 tool or the flat V2 tool both count.
211
- ["wait-agent tool ref", /multi_agent_v1\.wait_agent|`wait_agent`/],
212
- ["explicit fallback conditions", /Fallback only when|Mark a file for retry only when/],
213
- ];
214
- const bannedPatterns = [
215
- ["timeout as failure", patternFromParts(["fails or ", "times out"], "i")],
216
- ["failed or timed out", patternFromParts(["failed or ", "timed out"], "i")],
217
- ["two waits heuristic", patternFromParts(["After two ", "waits"])],
218
- ["unresponsive timeout framing", patternFromParts(["timeout", ".*", "un" + "responsive"], "i")],
219
- ["old status-tool warning", patternFromParts(["polling or ", "status tool"])],
220
- ["large status replay wording", patternFromParts(["large agent status", " and latest-message"])],
221
- ["old wait-agent aphorism", patternFromParts(["wait_agent", ".*", "signal, not ", "proof"], "i")],
222
- ];
223
-
224
- // when / then
225
- for (const skillName of await listSkillNames()) {
226
- const content = await readSkill(skillName);
227
- if (!orchestrationPattern.test(content)) continue;
228
-
229
- for (const [label, pattern] of requiredPatterns) {
230
- assert.match(content, pattern, `${skillName} missing ${label}`);
231
- }
232
- for (const [label, pattern] of bannedPatterns) {
233
- assert.doesNotMatch(content, pattern, `${skillName} still has ${label}`);
234
- }
235
- }
236
- });
237
-
238
- test("#given packaged start-work and ulw-plan skills #when inspected #then PR delivery options and the handoff explanation ship", async () => {
239
- // given
240
- const startWork = await readSkill("start-work");
241
- const workflow = await readFile(join(root, "skills", "ulw-plan", "references", "full-workflow.md"), "utf8");
242
-
243
- // when / then
244
- assert.match(startWork, /--make-pr/);
245
- assert.match(startWork, /--ship/);
246
- assert.match(startWork, /implies `--make-pr`/i);
247
- assert.match(startWork, /IMPLIES worktree mode/i);
248
- assert.match(startWork, /Goal and todo discipline/i);
249
- assert.match(startWork, /create_goal/);
250
- assert.match(startWork, /one todo per column-zero checkbox/i);
251
-
252
- assert.match(workflow, /Handoff explanation/i);
253
- assert.match(workflow, /Added beyond the request/i);
254
- assert.match(workflow, /\$start-work <plan-name>/);
255
- assert.match(workflow, /--make-pr/);
256
- assert.match(workflow, /--ship/);
257
- assert.match(workflow, /COUNT the rows/i);
258
- });
259
-
260
- test("#given start-work skill #when synced for Codex #then the difficulty-tier delegation guidance survives the overlay", async () => {
261
- const content = await readSkill("start-work");
262
-
263
- assert.match(content, /lazycodex-worker-medium/);
264
- assert.match(content, /Codex tier mapping for the delegation router/);
265
- assert.match(content, /Global Review and Debugging Gate/);
266
- assert.match(content, /full commit SHA/);
267
- assert.match(content, /re-read the ledger record/);
268
- assert.match(content, /exact lane\/SHA pair/);
269
- assert.doesNotMatch(content, /works the same on both surfaces/);
270
- });
271
-
272
- test("#given review-work skill #when some lanes do not finish #then aggregate result remains bounded", async () => {
273
- const content = await readSkill("review-work");
274
-
275
- assert.match(content, /pending\/PASS\/FAIL\/INCONCLUSIVE/);
276
- assert.match(content, /Preserve completed lane results immediately/);
277
- assert.match(content, /ALL 5 lanes have a terminal state/);
278
- assert.match(content, /REVIEW INCONCLUSIVE - not approved/);
279
- assert.match(content, /Overall Verdict: PASSED \/ FAILED \/ INCONCLUSIVE/);
280
- assert.match(content, /PASS\/FAIL\/INCONCLUSIVE \| HIGH\/MED\/LOW/);
281
- assert.match(content, /Do not spin in repeated/);
282
- assert.match(content, /bare REJECT\/FAIL token without findings is not a verdict/);
283
- assert.match(content, /cites the violated goal criterion/);
284
- assert.match(content, /append a durable task-evidence record/);
285
- assert.match(content, /full commit SHA/);
286
- assert.match(content, /re-read that record/);
287
- assert.match(content, /exact lane\/SHA pair/);
288
- assert.match(content, /Do not use `multi_agent_v1\.send_input` as an interrupt/);
289
- });
290
-
291
- test("#given PR and review skills #when synced for Codex #then worktree lifecycle is mandatory", async () => {
292
- const startWork = await readSkill("start-work");
293
- const reviewWork = await readSkill("review-work");
294
- const sharedStartWork = await readSharedSkill("start-work");
295
-
296
- assert.match(startWork, /PR creation, PR handoff, branch handoff, or merge/);
297
- assert.match(startWork, /Finish the PR\/branch lifecycle from its task-owned worktree/);
298
- assert.match(startWork, /merge by default unless explicitly opted out/);
299
- assert.match(startWork, /No PR\/branch implementation or review in the main worktree/);
300
-
301
- assert.match(sharedStartWork, /required for PR\/branch work/);
302
- assert.match(sharedStartWork, /No PR\/branch implementation, review, or merge in the main worktree/);
303
- assert.doesNotMatch(sharedStartWork, /If worktree mode was used/);
304
- assert.doesNotMatch(sharedStartWork, /merge or hand off exactly as requested/);
305
-
306
- assert.match(reviewWork, /dedicated review worktree attached to that branch/);
307
- assert.match(reviewWork, /Never\s+checkout, test, or edit the review branch in the main worktree/);
308
- });
309
-
310
- test("#given generated Codex compatibility guidance #when multi-agent lifecycle tools are mentioned #then optional tools are guarded by the active tools list", () => {
311
- assert.match(codexHarnessToolCompatibility, /when exposed in the active tools list/, "send_input/close_agent must be marked optional (lazycodex#116)");
312
- assert.match(codexHarnessToolCompatibility, /multi_agent_v1\.spawn_agent/);
313
- assert.match(codexHarnessToolCompatibility, /multi_agent_v1\.wait_agent/);
314
- });
@@ -1,24 +0,0 @@
1
- import assert from "node:assert/strict";
2
- import { readFile } from "node:fs/promises";
3
- import { dirname, join } from "node:path";
4
- import test from "node:test";
5
- import { fileURLToPath } from "node:url";
6
-
7
- const pluginRoot = dirname(dirname(fileURLToPath(import.meta.url)));
8
- const repositoryRoot = dirname(dirname(dirname(pluginRoot)));
9
- const componentReference = join(pluginRoot, "components", "ultrawork", "skills", "ulw-plan", "references", "intent-unclear.md");
10
- const sharedReference = join(repositoryRoot, "packages", "shared-skills", "skills", "ulw-plan", "references", "intent-unclear.md");
11
-
12
- test("#given an unclear auth-improvement request #when ulw-plan derives its full-scope components #then it preserves evidenced intent without inventing reduction or MFA expansion", async () => {
13
- const [component, shared] = await Promise.all([
14
- readFile(componentReference, "utf8"),
15
- readFile(sharedReference, "utf8"),
16
- ]);
17
-
18
- for (const reference of [component, shared]) {
19
- assert.match(reference, /components that refine the user's requested or evidence-backed intent/i);
20
- assert.match(reference, /neither collapse into an invented reduced subset nor expand into adjacent features/i);
21
- assert.match(reference, /MFA is an adjacent capability.*Scope OUT unless the user asks.*evidence establishes/i);
22
- assert.doesNotMatch(reference, /MFA - all four planned in full/i);
23
- }
24
- });
@@ -1,176 +0,0 @@
1
- # Common Scenarios with Tool Selection
2
-
3
- ## Scenario 1: Simple Calculation
4
-
5
- **Decision: Python (always)**
6
-
7
- ```python
8
- uv run --with numpy python -c "
9
- import numpy as np
10
- result = np.sum([1, 2, 3, 4, 5])
11
- print(f'Result: {result}')
12
- "
13
- ```
14
-
15
- ## Scenario 2: CSV Quick Analysis
16
-
17
- **Decision: DuckDB (direct query, no memory load)**
18
-
19
- ```python
20
- uv run --with numpy --with duckdb python -c "
21
- import duckdb
22
- result = duckdb.sql('''
23
- SELECT * FROM 'data.csv'
24
- LIMIT 10
25
- ''').pl()
26
- print(result)
27
- "
28
- ```
29
-
30
- ## Scenario 3: Filter + Sort on Large Dataset
31
-
32
- **Decision: Polars (128x faster filtering, 12x faster sorting)**
33
-
34
- ```python
35
- uv run --with numpy --with polars python -c "
36
- import polars as pl
37
- result = (
38
- pl.scan_csv('large.csv')
39
- .filter(pl.col('value') > 1000)
40
- .sort('value', descending=True)
41
- .head(100)
42
- .collect()
43
- )
44
- print(result)
45
- "
46
- ```
47
-
48
- ## Scenario 4: Multi-Table Join + Aggregation
49
-
50
- **Decision: DuckDB (best for joins and aggregations)**
51
-
52
- ```python
53
- uv run --with numpy --with duckdb python -c "
54
- import duckdb
55
- result = duckdb.sql('''
56
- SELECT
57
- a.category,
58
- COUNT(*) as count,
59
- SUM(b.amount) as total
60
- FROM 'table1.csv' a
61
- JOIN 'table2.csv' b ON a.id = b.id
62
- GROUP BY a.category
63
- ORDER BY total DESC
64
- ''').pl()
65
- print(result)
66
- "
67
- ```
68
-
69
- ## Scenario 5: Data Exploration
70
-
71
- **Decision: DuckDB for quick exploration**
72
-
73
- ```python
74
- uv run --with numpy --with duckdb python -c "
75
- import duckdb
76
-
77
- # Show first few rows
78
- print('**Sample Data**')
79
- print(duckdb.sql('SELECT * FROM \"data.csv\" LIMIT 5').pl())
80
-
81
- # Show summary statistics
82
- print('\\n**Summary Statistics**')
83
- print(duckdb.sql('DESCRIBE SELECT * FROM \"data.csv\"').pl())
84
-
85
- # Show row count
86
- print('\\n**Row Count**')
87
- print(duckdb.sql('SELECT COUNT(*) as total_rows FROM \"data.csv\"').pl())
88
- "
89
- ```
90
-
91
- ## Scenario 6: Time-Series Analysis
92
-
93
- **Decision: DuckDB for aggregation + matplotlib for visualization**
94
-
95
- ```python
96
- uv run --with numpy --with duckdb --with pyarrow --with matplotlib python -c "
97
- import duckdb
98
- import matplotlib.pyplot as plt
99
-
100
- # Aggregate by date
101
- result = duckdb.sql('''
102
- SELECT
103
- DATE_TRUNC('day', timestamp) as date,
104
- COUNT(*) as count,
105
- AVG(value) as avg_value
106
- FROM 'timeseries.csv'
107
- GROUP BY date
108
- ORDER BY date
109
- ''').pl()
110
-
111
- # Plot
112
- plt.figure(figsize=(12, 6))
113
- plt.subplot(2, 1, 1)
114
- plt.plot(result['date'], result['count'])
115
- plt.title('Daily Count')
116
-
117
- plt.subplot(2, 1, 2)
118
- plt.plot(result['date'], result['avg_value'])
119
- plt.title('Daily Average Value')
120
-
121
- plt.tight_layout()
122
- plt.savefig('timeseries.png')
123
- print('Saved to timeseries.png')
124
- "
125
- ```
126
-
127
- ## Scenario 7: Complex Transformation
128
-
129
- **Decision: Polars for efficient transformations**
130
-
131
- ```python
132
- uv run --with numpy --with polars python -c "
133
- import polars as pl
134
-
135
- result = (
136
- pl.scan_csv('data.csv')
137
- .with_columns([
138
- # Create new calculated columns
139
- (pl.col('price') * pl.col('quantity')).alias('total'),
140
- pl.col('date').str.strptime(pl.Date, '%Y-%m-%d').alias('parsed_date'),
141
- pl.col('name').str.to_uppercase().alias('upper_name'),
142
- ])
143
- .filter(pl.col('total') > 100)
144
- .select(['parsed_date', 'upper_name', 'total'])
145
- .collect()
146
- )
147
-
148
- print(result)
149
- "
150
- ```
151
-
152
- ## Scenario 8: Large File Processing
153
-
154
- **Decision: Polars streaming mode**
155
-
156
- ```python
157
- uv run --with numpy --with polars python -c "
158
- import polars as pl
159
-
160
- # Process file larger than RAM
161
- result = (
162
- pl.scan_csv('huge_file.csv')
163
- .filter(pl.col('active') == True)
164
- .groupby('category')
165
- .agg([
166
- pl.count().alias('count'),
167
- pl.sum('amount').alias('total'),
168
- pl.mean('amount').alias('average'),
169
- ])
170
- .collect(streaming=True) # Streaming mode
171
- )
172
-
173
- print(result)
174
- print(f'\\nProcessed {result[\"count\"].sum():,} rows')
175
- "
176
- ```