oh-my-opencode 4.13.0 → 4.14.1

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 (516) hide show
  1. package/.agents/skills/codex-qa/SKILL.md +15 -0
  2. package/.agents/skills/codex-qa/references/isolation.md +1 -1
  3. package/.agents/skills/codex-qa/references/logging-debug.md +12 -0
  4. package/.agents/skills/opencode-qa/SKILL.md +17 -0
  5. package/.agents/skills/opencode-qa/references/tui-tmux.md +17 -0
  6. package/.agents/skills/work-with-pr/SKILL.md +18 -10
  7. package/.opencode/skills/work-with-pr/SKILL.md +18 -10
  8. package/README.md +3 -3
  9. package/dist/cli/doctor/checks/telemetry.d.ts +2 -0
  10. package/dist/cli/doctor/framework/constants.d.ts +1 -0
  11. package/dist/cli/doctor/framework/doctor-target.d.ts +1 -1
  12. package/dist/cli/doctor/framework/types.d.ts +2 -0
  13. package/dist/cli/index.js +24779 -17857
  14. package/dist/cli-node/index.js +24779 -17857
  15. package/dist/config/schema/oh-my-opencode-config.d.ts +1 -0
  16. package/dist/features/team-mode/test-support/async-test-helpers.d.ts +19 -0
  17. package/dist/hooks/atlas/final-wave-approval-gate.d.ts +1 -0
  18. package/dist/hooks/atlas/subagent-completion-reminder.d.ts +30 -0
  19. package/dist/hooks/atlas/types.d.ts +2 -0
  20. package/dist/hooks/atlas/verification-reminders.d.ts +3 -0
  21. package/dist/hooks/team-session-events/team-idle-wake-hint.d.ts +1 -0
  22. package/dist/index.d.ts +1 -0
  23. package/dist/index.js +43845 -26631
  24. package/dist/mcp/context7.d.ts +9 -8
  25. package/dist/oh-my-opencode.schema.json +4 -0
  26. package/dist/plugin/native-skills.d.ts +9 -0
  27. package/dist/plugin/system-transform.d.ts +1 -1
  28. package/dist/shared/posthog.d.ts +17 -10
  29. package/dist/shared/telemetry-product-identity.d.ts +2 -0
  30. package/dist/skills/coding-agent-sessions/SKILL.md +128 -0
  31. package/dist/skills/coding-agent-sessions/agents/openai.yaml +4 -0
  32. package/dist/skills/coding-agent-sessions/references/all-platforms.md +71 -0
  33. package/dist/skills/coding-agent-sessions/references/claude.md +32 -0
  34. package/dist/skills/coding-agent-sessions/references/codex.md +30 -0
  35. package/dist/skills/coding-agent-sessions/references/opencode.md +43 -0
  36. package/dist/skills/coding-agent-sessions/references/senpi.md +17 -0
  37. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/__init__.py +1 -0
  38. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/claude.py +66 -0
  39. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/cli.py +283 -0
  40. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/codex.py +105 -0
  41. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/file_scanners.py +275 -0
  42. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/jsonio.py +55 -0
  43. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/kiro_scanner.py +91 -0
  44. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/opencode.py +289 -0
  45. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +92 -0
  46. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_optional_scanners.py +203 -0
  47. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_scanners.py +177 -0
  48. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/timeparse.py +51 -0
  49. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/transcript.py +149 -0
  50. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/types.py +57 -0
  51. package/dist/skills/coding-agent-sessions/scripts/find-agent-sessions.py +19 -0
  52. package/dist/skills/frontend/ATTRIBUTION.md +52 -8
  53. package/dist/skills/frontend/SKILL.md +29 -8
  54. package/dist/skills/frontend/references/design/README.md +29 -12
  55. package/dist/skills/frontend/references/design/_INDEX.md +3 -3
  56. package/dist/skills/frontend/references/design/design-system-architecture.md +22 -19
  57. package/dist/skills/frontend/references/designpowers/EVIDENCE.md +89 -0
  58. package/dist/skills/frontend/references/designpowers/README.md +48 -0
  59. package/dist/skills/frontend/references/designpowers/UPSTREAM.md +80 -0
  60. package/dist/skills/frontend/references/designpowers/lane-a-direction.md +64 -0
  61. package/dist/skills/frontend/references/designpowers/lane-b-execution.md +65 -0
  62. package/dist/skills/frontend/references/designpowers/lane-c-review.md +65 -0
  63. package/dist/skills/frontend/references/designpowers/lane-d-memory.md +83 -0
  64. package/dist/skills/frontend/references/designpowers/orchestration.md +80 -0
  65. package/dist/skills/frontend/references/designpowers/routing.md +79 -0
  66. package/dist/skills/frontend/references/designpowers/vendor/LICENSE +21 -0
  67. package/dist/skills/frontend/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
  68. package/dist/skills/frontend/references/designpowers/vendor/agents/content-writer.md +132 -0
  69. package/dist/skills/frontend/references/designpowers/vendor/agents/design-builder.md +109 -0
  70. package/dist/skills/frontend/references/designpowers/vendor/agents/design-critic.md +89 -0
  71. package/dist/skills/frontend/references/designpowers/vendor/agents/design-lead.md +113 -0
  72. package/dist/skills/frontend/references/designpowers/vendor/agents/design-scout.md +78 -0
  73. package/dist/skills/frontend/references/designpowers/vendor/agents/design-strategist.md +121 -0
  74. package/dist/skills/frontend/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
  75. package/dist/skills/frontend/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
  76. package/dist/skills/frontend/references/designpowers/vendor/agents/motion-designer.md +120 -0
  77. package/dist/skills/frontend/references/designpowers/vendor/skills/accessible-content/SKILL.md +101 -0
  78. package/dist/skills/frontend/references/designpowers/vendor/skills/adaptive-interfaces/SKILL.md +109 -0
  79. package/dist/skills/frontend/references/designpowers/vendor/skills/cognitive-accessibility/SKILL.md +107 -0
  80. package/dist/skills/frontend/references/designpowers/vendor/skills/design-debate/SKILL.md +199 -0
  81. package/dist/skills/frontend/references/designpowers/vendor/skills/design-debt-tracker/SKILL.md +174 -0
  82. package/dist/skills/frontend/references/designpowers/vendor/skills/design-handoff/SKILL.md +125 -0
  83. package/dist/skills/frontend/references/designpowers/vendor/skills/design-md/SKILL.md +106 -0
  84. package/dist/skills/frontend/references/designpowers/vendor/skills/design-retrospective/SKILL.md +266 -0
  85. package/dist/skills/frontend/references/designpowers/vendor/skills/design-review/SKILL.md +123 -0
  86. package/dist/skills/frontend/references/designpowers/vendor/skills/design-system-alignment/SKILL.md +120 -0
  87. package/dist/skills/frontend/references/designpowers/vendor/skills/designpowers-critique/SKILL.md +164 -0
  88. package/dist/skills/frontend/references/designpowers/vendor/skills/heuristic-evaluation/SKILL.md +85 -0
  89. package/dist/skills/frontend/references/designpowers/vendor/skills/inclusive-personas/SKILL.md +98 -0
  90. package/dist/skills/frontend/references/designpowers/vendor/skills/inspiration-scouting/SKILL.md +165 -0
  91. package/dist/skills/frontend/references/designpowers/vendor/skills/interaction-design/SKILL.md +122 -0
  92. package/dist/skills/frontend/references/designpowers/vendor/skills/motion-choreography/SKILL.md +81 -0
  93. package/dist/skills/frontend/references/designpowers/vendor/skills/research-planning/SKILL.md +96 -0
  94. package/dist/skills/frontend/references/designpowers/vendor/skills/responsive-patterns/SKILL.md +77 -0
  95. package/dist/skills/frontend/references/designpowers/vendor/skills/synthetic-user-testing/SKILL.md +192 -0
  96. package/dist/skills/frontend/references/designpowers/vendor/skills/taste-feedback/SKILL.md +165 -0
  97. package/dist/skills/frontend/references/designpowers/vendor/skills/taste-report/SKILL.md +78 -0
  98. package/dist/skills/frontend/references/designpowers/vendor/skills/token-architecture/SKILL.md +75 -0
  99. package/dist/skills/frontend/references/designpowers/vendor/skills/ui-composition/SKILL.md +117 -0
  100. package/dist/skills/frontend/references/designpowers/vendor/skills/usability-testing/SKILL.md +78 -0
  101. package/dist/skills/frontend/references/designpowers/vendor/skills/verification-before-shipping/SKILL.md +125 -0
  102. package/dist/skills/frontend/references/designpowers/vendor/skills/voice-and-tone/SKILL.md +79 -0
  103. package/dist/skills/frontend/references/designpowers/vendor/skills/writing-design-plans/SKILL.md +119 -0
  104. package/dist/skills/frontend/references/ui-ux-db/scripts/core.py +0 -0
  105. package/dist/skills/git-master/SKILL.md +4 -0
  106. package/dist/skills/lcx-contribute-bug-fix/SKILL.md +44 -13
  107. package/dist/skills/lcx-contribute-bug-fix/agents/openai.yaml +1 -1
  108. package/dist/skills/lcx-doctor/SKILL.md +48 -13
  109. package/dist/skills/lcx-doctor/agents/openai.yaml +1 -1
  110. package/dist/skills/lcx-report-bug/SKILL.md +44 -13
  111. package/dist/skills/lcx-report-bug/agents/openai.yaml +1 -1
  112. package/dist/skills/review-work/SKILL.md +3 -3
  113. package/dist/skills/start-work/SKILL.md +7 -5
  114. package/dist/skills/ultraresearch/SKILL.md +4 -252
  115. package/dist/skills/ulw-plan/SKILL.md +8 -6
  116. package/dist/skills/ulw-plan/references/full-workflow.md +11 -6
  117. package/dist/skills/ulw-plan/references/intent-clear.md +3 -3
  118. package/dist/skills/ulw-plan/references/intent-unclear.md +1 -1
  119. package/{packages/shared-skills/skills/ultraresearch → dist/skills/ulw-research}/ATTRIBUTION.md +1 -1
  120. package/dist/skills/ulw-research/SKILL.md +260 -0
  121. package/dist/skills/visual-qa/SKILL.md +109 -18
  122. package/dist/skills/visual-qa/references/agent-browser-setup.md +5 -4
  123. package/dist/skills/visual-qa/scripts/cli.test.ts +7 -2
  124. package/dist/skills/visual-qa/scripts/skill-prompt-contract.test.ts +130 -3
  125. package/dist/skills/visual-qa/scripts/visual-qa.mjs +530 -0
  126. package/dist/testing/create-plugin-module.d.ts +2 -0
  127. package/dist/tools/delegate-task/skill-resolver.d.ts +1 -0
  128. package/dist/tools/delegate-task/types.d.ts +2 -0
  129. package/dist/tools/skill/types.d.ts +1 -0
  130. package/dist/tui.js +23917 -16117
  131. package/docs/reference/github-attachment-upload.md +51 -0
  132. package/docs/reference/web-terminal-visual-qa.md +81 -0
  133. package/package.json +33 -14
  134. package/packages/git-bash-mcp/dist/cli.js +2 -0
  135. package/packages/lsp-core/src/lsp/process.ts +4 -1
  136. package/packages/lsp-core/src/mcp.ts +1 -0
  137. package/packages/lsp-daemon/dist/cli.js +20 -5
  138. package/packages/lsp-daemon/dist/ensure-daemon.d.ts +1 -0
  139. package/packages/lsp-daemon/dist/ensure-daemon.js +9 -3
  140. package/packages/lsp-daemon/dist/index.js +20 -5
  141. package/packages/lsp-daemon/dist/paths.d.ts +1 -0
  142. package/packages/lsp-daemon/dist/paths.js +6 -1
  143. package/packages/lsp-daemon/dist/proxy.js +1 -0
  144. package/packages/lsp-tools-mcp/dist/cli.js +5 -1
  145. package/packages/lsp-tools-mcp/dist/lsp/manager.js +4 -1
  146. package/packages/lsp-tools-mcp/dist/mcp.js +5 -1
  147. package/packages/lsp-tools-mcp/dist/tools.js +4 -1
  148. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  149. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +327 -69
  150. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  151. package/packages/omo-codex/plugin/components/bootstrap/scripts/bootstrap.ps1 +37 -68
  152. package/packages/omo-codex/plugin/components/bootstrap/scripts/node-dispatch.ps1 +75 -0
  153. package/packages/omo-codex/plugin/components/bootstrap/src/cli.ts +1 -1
  154. package/packages/omo-codex/plugin/components/bootstrap/src/setup.ts +3 -19
  155. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +688 -334
  156. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +317 -39
  157. package/packages/omo-codex/plugin/components/codegraph/package.json +2 -2
  158. package/packages/omo-codex/plugin/components/codegraph/src/hook-types.ts +7 -1
  159. package/packages/omo-codex/plugin/components/codegraph/src/hook.ts +103 -3
  160. package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +231 -0
  161. package/packages/omo-codex/plugin/components/codegraph/src/serve-invocation.ts +29 -0
  162. package/packages/omo-codex/plugin/components/codegraph/src/serve.ts +31 -57
  163. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker.ts +7 -4
  164. package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +43 -9
  165. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge.test.ts +287 -0
  166. package/packages/omo-codex/plugin/components/codegraph/test/serve.test.ts +12 -7
  167. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-flow.test.ts +71 -1
  168. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  169. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  170. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  171. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +94 -26
  172. package/packages/omo-codex/plugin/components/lsp/dist/codex-hook.js +2 -0
  173. package/packages/omo-codex/plugin/components/lsp/dist/daemon-cli-path.d.ts +2 -0
  174. package/packages/omo-codex/plugin/components/lsp/dist/daemon-cli-path.js +56 -0
  175. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  176. package/packages/omo-codex/plugin/components/lsp/src/cli.ts +2 -5
  177. package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +2 -0
  178. package/packages/omo-codex/plugin/components/lsp/src/daemon-cli-path.ts +65 -0
  179. package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +6 -1
  180. package/packages/omo-codex/plugin/components/rules/dist/cli.js +8 -106
  181. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  182. package/packages/omo-codex/plugin/components/rules/src/static-injection.ts +4 -17
  183. package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +6 -6
  184. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
  185. package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +23 -0
  186. package/packages/omo-codex/plugin/components/teammode/dist/cli.js +22 -4
  187. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  188. package/packages/omo-codex/plugin/components/teammode/skills/teammode/SKILL.md +57 -7
  189. package/packages/omo-codex/plugin/components/teammode/skills/teammode/scripts/team-guide.mjs +32 -5
  190. package/packages/omo-codex/plugin/components/teammode/skills/teammode/scripts/team-state.mjs +63 -1
  191. package/packages/omo-codex/plugin/components/teammode/skills/teammode/scripts/team.mjs +87 -53
  192. package/packages/omo-codex/plugin/components/teammode/src/codex-hook.ts +19 -4
  193. package/packages/omo-codex/plugin/components/teammode/test/thread-title-hook.test.ts +32 -2
  194. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  195. package/packages/omo-codex/plugin/components/ultrawork/README.md +1 -1
  196. package/packages/omo-codex/plugin/components/ultrawork/agents/explorer.toml +1 -1
  197. package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +2 -2
  198. package/packages/omo-codex/plugin/components/ultrawork/directive.md +18 -10
  199. package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +1 -1
  200. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  201. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +6 -4
  202. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +11 -6
  203. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +3 -3
  204. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +1 -1
  205. package/packages/omo-codex/plugin/components/ultrawork/src/codex-hook.ts +1 -1
  206. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook-trigger-policy.test.ts +24 -0
  207. package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +7 -28
  208. package/packages/omo-codex/plugin/components/ulw-loop/AGENTS.md +1 -1
  209. package/packages/omo-codex/plugin/components/ulw-loop/README.md +25 -21
  210. package/packages/omo-codex/plugin/components/ulw-loop/biome.json +1 -1
  211. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +373 -0
  212. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-steering.js +14 -1
  213. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +145 -14
  214. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-hook.d.ts +6 -3
  215. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-hook.js +16 -6
  216. package/packages/omo-codex/plugin/components/ulw-loop/dist/ultrawork-directive.d.ts +5 -0
  217. package/packages/omo-codex/plugin/components/ulw-loop/dist/ultrawork-directive.js +104 -0
  218. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +1 -1
  219. package/packages/omo-codex/plugin/components/ulw-loop/package.json +5 -2
  220. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +1 -1
  221. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +22 -14
  222. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-steering.ts +14 -1
  223. package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +4 -2
  224. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +28 -6
  225. package/packages/omo-codex/plugin/components/ulw-loop/src/ultrawork-directive.ts +113 -0
  226. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-entrypoint.test.ts +33 -2
  227. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-steering-kind-guidance.test.ts +31 -0
  228. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +13 -0
  229. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/sample-quality-gate.json +7 -7
  230. package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +39 -1
  231. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-doc.test.ts +2 -2
  232. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate.test.ts +7 -6
  233. package/packages/omo-codex/plugin/components/ulw-loop/test/skill-contract.test.ts +12 -0
  234. package/packages/omo-codex/plugin/components/ulw-loop/test/ultrawork-directive.test.ts +64 -0
  235. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +2 -1
  236. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +2 -1
  237. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +2 -1
  238. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +2 -1
  239. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +2 -1
  240. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +2 -1
  241. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +2 -1
  242. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +2 -1
  243. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +2 -1
  244. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +2 -1
  245. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +2 -1
  246. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +2 -1
  247. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +2 -1
  248. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +2 -1
  249. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +2 -1
  250. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +2 -1
  251. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +2 -1
  252. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +2 -1
  253. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +2 -1
  254. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +2 -1
  255. package/packages/omo-codex/plugin/package-lock.json +16 -56
  256. package/packages/omo-codex/plugin/package.json +1 -1
  257. package/packages/omo-codex/plugin/scripts/auto-update.mjs +9 -5
  258. package/packages/omo-codex/plugin/scripts/materialize-shared-upstreams.mjs +1 -0
  259. package/packages/omo-codex/plugin/scripts/migrate-codex-config/context7-placeholder-guard.mjs +131 -0
  260. package/packages/omo-codex/plugin/scripts/migrate-codex-config/multi-agent-mode-guard.mjs +60 -0
  261. package/packages/omo-codex/plugin/scripts/migrate-codex-config/multi-agent-v2-guard.mjs +3 -10
  262. package/packages/omo-codex/plugin/scripts/migrate-codex-config/root-settings.mjs +31 -1
  263. package/packages/omo-codex/plugin/scripts/migrate-codex-config/subagent-limit-guard.mjs +73 -0
  264. package/packages/omo-codex/plugin/scripts/migrate-codex-config.mjs +20 -3
  265. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +30 -8
  266. package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +128 -0
  267. package/packages/omo-codex/plugin/skills/coding-agent-sessions/agents/openai.yaml +4 -0
  268. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +71 -0
  269. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/claude.md +32 -0
  270. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/codex.md +30 -0
  271. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/opencode.md +43 -0
  272. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/senpi.md +17 -0
  273. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/__init__.py +1 -0
  274. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/claude.py +66 -0
  275. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/cli.py +283 -0
  276. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/codex.py +105 -0
  277. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/file_scanners.py +275 -0
  278. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/jsonio.py +55 -0
  279. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/kiro_scanner.py +91 -0
  280. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/opencode.py +289 -0
  281. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +92 -0
  282. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_optional_scanners.py +203 -0
  283. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_scanners.py +177 -0
  284. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/timeparse.py +51 -0
  285. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/transcript.py +149 -0
  286. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/types.py +57 -0
  287. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/find-agent-sessions.py +19 -0
  288. package/packages/omo-codex/plugin/skills/frontend/ATTRIBUTION.md +52 -8
  289. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +29 -8
  290. package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +29 -12
  291. package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +3 -3
  292. package/packages/omo-codex/plugin/skills/frontend/references/design/design-system-architecture.md +22 -19
  293. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/EVIDENCE.md +89 -0
  294. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/README.md +48 -0
  295. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/UPSTREAM.md +80 -0
  296. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-a-direction.md +64 -0
  297. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-b-execution.md +65 -0
  298. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-c-review.md +65 -0
  299. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-d-memory.md +83 -0
  300. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/orchestration.md +80 -0
  301. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/routing.md +79 -0
  302. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/LICENSE +21 -0
  303. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
  304. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/content-writer.md +132 -0
  305. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/design-builder.md +109 -0
  306. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/design-critic.md +89 -0
  307. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/design-lead.md +113 -0
  308. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/design-scout.md +78 -0
  309. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/design-strategist.md +121 -0
  310. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
  311. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
  312. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/motion-designer.md +120 -0
  313. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/accessible-content/SKILL.md +101 -0
  314. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/adaptive-interfaces/SKILL.md +109 -0
  315. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/cognitive-accessibility/SKILL.md +107 -0
  316. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-debate/SKILL.md +199 -0
  317. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-debt-tracker/SKILL.md +174 -0
  318. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-handoff/SKILL.md +125 -0
  319. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-md/SKILL.md +106 -0
  320. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-retrospective/SKILL.md +266 -0
  321. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-review/SKILL.md +123 -0
  322. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-system-alignment/SKILL.md +120 -0
  323. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/designpowers-critique/SKILL.md +164 -0
  324. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/heuristic-evaluation/SKILL.md +85 -0
  325. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/inclusive-personas/SKILL.md +98 -0
  326. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/inspiration-scouting/SKILL.md +165 -0
  327. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/interaction-design/SKILL.md +122 -0
  328. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/motion-choreography/SKILL.md +81 -0
  329. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/research-planning/SKILL.md +96 -0
  330. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/responsive-patterns/SKILL.md +77 -0
  331. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/synthetic-user-testing/SKILL.md +192 -0
  332. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/taste-feedback/SKILL.md +165 -0
  333. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/taste-report/SKILL.md +78 -0
  334. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/token-architecture/SKILL.md +75 -0
  335. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/ui-composition/SKILL.md +117 -0
  336. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/usability-testing/SKILL.md +78 -0
  337. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/verification-before-shipping/SKILL.md +125 -0
  338. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/voice-and-tone/SKILL.md +79 -0
  339. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/writing-design-plans/SKILL.md +119 -0
  340. package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/scripts/core.py +0 -0
  341. package/packages/omo-codex/plugin/skills/git-master/SKILL.md +4 -0
  342. package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +4 -0
  343. package/packages/omo-codex/plugin/skills/lcx-contribute-bug-fix/SKILL.md +44 -13
  344. package/packages/omo-codex/plugin/skills/lcx-contribute-bug-fix/agents/openai.yaml +1 -1
  345. package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +48 -13
  346. package/packages/omo-codex/plugin/skills/lcx-doctor/agents/openai.yaml +1 -1
  347. package/packages/omo-codex/plugin/skills/lcx-report-bug/SKILL.md +44 -13
  348. package/packages/omo-codex/plugin/skills/lcx-report-bug/agents/openai.yaml +1 -1
  349. package/packages/omo-codex/plugin/skills/refactor/SKILL.md +4 -0
  350. package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +4 -0
  351. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +12 -4
  352. package/packages/omo-codex/plugin/skills/start-work/SKILL.md +14 -8
  353. package/packages/omo-codex/plugin/skills/teammode/SKILL.md +57 -7
  354. package/packages/omo-codex/plugin/skills/teammode/scripts/team-guide.mjs +32 -5
  355. package/packages/omo-codex/plugin/skills/teammode/scripts/team-state.mjs +63 -1
  356. package/packages/omo-codex/plugin/skills/teammode/scripts/team.mjs +87 -53
  357. package/packages/omo-codex/plugin/skills/ultraresearch/SKILL.md +4 -250
  358. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +1 -1
  359. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +22 -14
  360. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +6 -4
  361. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +11 -6
  362. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +3 -3
  363. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +1 -1
  364. package/{dist/skills/ultraresearch → packages/omo-codex/plugin/skills/ulw-research}/ATTRIBUTION.md +1 -1
  365. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +262 -0
  366. package/packages/omo-codex/plugin/skills/ulw-research/agents/openai.yaml +2 -0
  367. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +113 -18
  368. package/packages/omo-codex/plugin/skills/visual-qa/references/agent-browser-setup.md +5 -4
  369. package/packages/omo-codex/plugin/skills/visual-qa/scripts/visual-qa.mjs +530 -0
  370. package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +23 -0
  371. package/packages/omo-codex/plugin/test/aggregate-manifest.test.mjs +1 -0
  372. package/packages/omo-codex/plugin/test/auto-update-release-notes.test.mjs +1 -0
  373. package/packages/omo-codex/plugin/test/auto-update-restart-notice.test.mjs +24 -1
  374. package/packages/omo-codex/plugin/test/bootstrap-binlinks.test.mjs +61 -7
  375. package/packages/omo-codex/plugin/test/bootstrap-hooks.test.mjs +38 -0
  376. package/packages/omo-codex/plugin/test/bootstrap-ps-guard.test.mjs +25 -0
  377. package/packages/omo-codex/plugin/test/bootstrap-setup.test.mjs +1 -7
  378. package/packages/omo-codex/plugin/test/component-bin-names.test.mjs +12 -11
  379. package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +99 -1
  380. package/packages/omo-codex/plugin/test/lcx-bug-skills.test.mjs +62 -8
  381. package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +206 -6
  382. package/packages/omo-codex/plugin/test/node-install-surface.test.mjs +1 -0
  383. package/packages/omo-codex/plugin/test/subagent-limit-migration.test.mjs +44 -0
  384. package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +50 -1
  385. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +10 -7
  386. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +28 -2
  387. package/packages/omo-codex/plugin/test/teammode-archive-ambiguity.test.mjs +102 -0
  388. package/packages/omo-codex/plugin/test/teammode-communication.test.mjs +20 -0
  389. package/packages/omo-codex/plugin/test/teammode-safety-fixture.mjs +41 -1
  390. package/packages/omo-codex/plugin/test/teammode-safety.test.mjs +93 -0
  391. package/packages/omo-codex/plugin/test/teammode-thread-links.test.mjs +117 -0
  392. package/packages/omo-codex/plugin/test/teammode-worktree.test.mjs +5 -2
  393. package/packages/omo-codex/plugin/test/ulw-research-skill-contract.test.mjs +285 -0
  394. package/packages/omo-codex/scripts/install-bin-links.test.mjs +12 -1
  395. package/packages/omo-codex/scripts/install-cache-copy.test.mjs +79 -0
  396. package/packages/omo-codex/scripts/install-config-autonomous-features.test.mjs +43 -3
  397. package/packages/omo-codex/scripts/install-config.test.mjs +198 -17
  398. package/packages/omo-codex/scripts/install-delegated-command.test.mjs +93 -0
  399. package/packages/omo-codex/scripts/install-dist/install-local.mjs +803 -309
  400. package/packages/omo-codex/scripts/install-local-entrypoint.test.mjs +21 -2
  401. package/packages/omo-codex/scripts/install-local-git-bash-preflight.test.mjs +24 -15
  402. package/packages/omo-codex/scripts/install-local.test.mjs +5 -2
  403. package/packages/omo-codex/scripts/install-mcp-context7-runtime.test.mjs +84 -0
  404. package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +128 -0
  405. package/packages/shared-skills/skills/coding-agent-sessions/agents/openai.yaml +4 -0
  406. package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +71 -0
  407. package/packages/shared-skills/skills/coding-agent-sessions/references/claude.md +32 -0
  408. package/packages/shared-skills/skills/coding-agent-sessions/references/codex.md +30 -0
  409. package/packages/shared-skills/skills/coding-agent-sessions/references/opencode.md +43 -0
  410. package/packages/shared-skills/skills/coding-agent-sessions/references/senpi.md +17 -0
  411. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/__init__.py +1 -0
  412. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/claude.py +66 -0
  413. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/cli.py +283 -0
  414. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/codex.py +105 -0
  415. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/file_scanners.py +275 -0
  416. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/jsonio.py +55 -0
  417. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/kiro_scanner.py +91 -0
  418. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/opencode.py +289 -0
  419. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +92 -0
  420. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_optional_scanners.py +203 -0
  421. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_scanners.py +177 -0
  422. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/timeparse.py +51 -0
  423. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/transcript.py +149 -0
  424. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/types.py +57 -0
  425. package/packages/shared-skills/skills/coding-agent-sessions/scripts/find-agent-sessions.py +19 -0
  426. package/packages/shared-skills/skills/frontend/ATTRIBUTION.md +52 -8
  427. package/packages/shared-skills/skills/frontend/SKILL.md +29 -8
  428. package/packages/shared-skills/skills/frontend/references/design/README.md +29 -12
  429. package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +3 -3
  430. package/packages/shared-skills/skills/frontend/references/design/design-system-architecture.md +22 -19
  431. package/packages/shared-skills/skills/frontend/references/designpowers/EVIDENCE.md +89 -0
  432. package/packages/shared-skills/skills/frontend/references/designpowers/README.md +48 -0
  433. package/packages/shared-skills/skills/frontend/references/designpowers/UPSTREAM.md +80 -0
  434. package/packages/shared-skills/skills/frontend/references/designpowers/lane-a-direction.md +64 -0
  435. package/packages/shared-skills/skills/frontend/references/designpowers/lane-b-execution.md +65 -0
  436. package/packages/shared-skills/skills/frontend/references/designpowers/lane-c-review.md +65 -0
  437. package/packages/shared-skills/skills/frontend/references/designpowers/lane-d-memory.md +83 -0
  438. package/packages/shared-skills/skills/frontend/references/designpowers/orchestration.md +80 -0
  439. package/packages/shared-skills/skills/frontend/references/designpowers/routing.md +79 -0
  440. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/LICENSE +21 -0
  441. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
  442. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/content-writer.md +132 -0
  443. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/design-builder.md +109 -0
  444. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/design-critic.md +89 -0
  445. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/design-lead.md +113 -0
  446. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/design-scout.md +78 -0
  447. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/design-strategist.md +121 -0
  448. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
  449. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
  450. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/motion-designer.md +120 -0
  451. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/accessible-content/SKILL.md +101 -0
  452. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/adaptive-interfaces/SKILL.md +109 -0
  453. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/cognitive-accessibility/SKILL.md +107 -0
  454. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-debate/SKILL.md +199 -0
  455. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-debt-tracker/SKILL.md +174 -0
  456. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-handoff/SKILL.md +125 -0
  457. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-md/SKILL.md +106 -0
  458. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-retrospective/SKILL.md +266 -0
  459. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-review/SKILL.md +123 -0
  460. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-system-alignment/SKILL.md +120 -0
  461. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/designpowers-critique/SKILL.md +164 -0
  462. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/heuristic-evaluation/SKILL.md +85 -0
  463. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/inclusive-personas/SKILL.md +98 -0
  464. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/inspiration-scouting/SKILL.md +165 -0
  465. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/interaction-design/SKILL.md +122 -0
  466. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/motion-choreography/SKILL.md +81 -0
  467. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/research-planning/SKILL.md +96 -0
  468. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/responsive-patterns/SKILL.md +77 -0
  469. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/synthetic-user-testing/SKILL.md +192 -0
  470. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/taste-feedback/SKILL.md +165 -0
  471. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/taste-report/SKILL.md +78 -0
  472. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/token-architecture/SKILL.md +75 -0
  473. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/ui-composition/SKILL.md +117 -0
  474. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/usability-testing/SKILL.md +78 -0
  475. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/verification-before-shipping/SKILL.md +125 -0
  476. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/voice-and-tone/SKILL.md +79 -0
  477. package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/writing-design-plans/SKILL.md +119 -0
  478. package/packages/shared-skills/skills/frontend/references/ui-ux-db/scripts/core.py +0 -0
  479. package/packages/shared-skills/skills/git-master/SKILL.md +4 -0
  480. package/packages/shared-skills/skills/lcx-contribute-bug-fix/SKILL.md +44 -13
  481. package/packages/shared-skills/skills/lcx-contribute-bug-fix/agents/openai.yaml +1 -1
  482. package/packages/shared-skills/skills/lcx-doctor/SKILL.md +48 -13
  483. package/packages/shared-skills/skills/lcx-doctor/agents/openai.yaml +1 -1
  484. package/packages/shared-skills/skills/lcx-report-bug/SKILL.md +44 -13
  485. package/packages/shared-skills/skills/lcx-report-bug/agents/openai.yaml +1 -1
  486. package/packages/shared-skills/skills/review-work/SKILL.md +3 -3
  487. package/packages/shared-skills/skills/start-work/SKILL.md +7 -5
  488. package/packages/shared-skills/skills/ultraresearch/SKILL.md +4 -252
  489. package/packages/shared-skills/skills/ulw-plan/SKILL.md +8 -6
  490. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +11 -6
  491. package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +3 -3
  492. package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +1 -1
  493. package/packages/{omo-codex/plugin/skills/ultraresearch → shared-skills/skills/ulw-research}/ATTRIBUTION.md +1 -1
  494. package/packages/shared-skills/skills/ulw-research/SKILL.md +260 -0
  495. package/packages/shared-skills/skills/visual-qa/SKILL.md +109 -18
  496. package/packages/shared-skills/skills/visual-qa/references/agent-browser-setup.md +5 -4
  497. package/packages/shared-skills/skills/visual-qa/scripts/cli.test.ts +7 -2
  498. package/packages/shared-skills/skills/visual-qa/scripts/skill-prompt-contract.test.ts +130 -3
  499. package/packages/shared-skills/skills/visual-qa/scripts/visual-qa.mjs +530 -0
  500. package/script/qa/web-terminal-redaction.d.mts +13 -0
  501. package/script/qa/web-terminal-redaction.mjs +43 -0
  502. package/script/qa/web-terminal-renderer.mjs +218 -0
  503. package/script/qa/web-terminal-visual-qa.mjs +264 -0
  504. package/dist/cli/sparkshell-appserver-websocket.d.ts +0 -4
  505. package/dist/cli/sparkshell-appserver.d.ts +0 -16
  506. package/dist/cli/sparkshell-condense.d.ts +0 -10
  507. package/dist/cli/sparkshell-parse.d.ts +0 -24
  508. package/dist/cli/sparkshell-session-context.d.ts +0 -20
  509. package/dist/cli/sparkshell-spark.d.ts +0 -23
  510. package/dist/cli/sparkshell.d.ts +0 -33
  511. package/dist/shared/sparkshell-awareness.d.ts +0 -5
  512. package/packages/omo-codex/plugin/components/rules/src/sparkshell-awareness.ts +0 -106
  513. package/packages/omo-codex/plugin/components/rules/test/sparkshell-awareness.test.ts +0 -346
  514. package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/tests/test_cookie_domain_filter.py +0 -110
  515. package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/tests/test_extract_cookies.py +0 -245
  516. package/packages/omo-codex/plugin/test/ultraresearch-skill-contract.test.mjs +0 -204
@@ -861,10 +861,8 @@ async function defaultVersionProbe2(binaryPath) {
861
861
  }
862
862
 
863
863
  // components/bootstrap/src/setup.ts
864
- import { execFile as execFile2 } from "node:child_process";
865
864
  import { copyFile as copyFile2, mkdir as mkdir7, readdir as readdir3, rm as rm9, stat as stat4 } from "node:fs/promises";
866
865
  import { join as join18 } from "node:path";
867
- import { promisify as promisify2 } from "node:util";
868
866
 
869
867
  // ../src/install/link-cached-plugin-agents.ts
870
868
  import { copyFile, lstat as lstat2, mkdir as mkdir4, readFile as readFile5, readdir, rm as rm6, writeFile as writeFile3 } from "node:fs/promises";
@@ -1174,6 +1172,44 @@ import { basename as basename4, isAbsolute as isAbsolute2, join as join12, relat
1174
1172
 
1175
1173
  // ../src/install/codex-cache-command-shim.ts
1176
1174
  var COMMAND_SHIM_MARKER = ":: generated by oh-my-openagent Codex installer";
1175
+ function windowsNodeDiscoveryLines() {
1176
+ return [
1177
+ "setlocal EnableExtensions EnableDelayedExpansion",
1178
+ 'set "OMO_NODE_BINARY="',
1179
+ 'set "OMO_NODE_REPL_NODE_PATH=%NODE_REPL_NODE_PATH%"',
1180
+ 'if exist "%CODEX_HOME%\\config.toml" (',
1181
+ ` for /f "tokens=1,* delims==" %%A in ('findstr /R /C:"NODE_REPL_NODE_PATH[ ]*=" "%CODEX_HOME%\\config.toml" 2^>nul') do (`,
1182
+ ' set "OMO_NODE_REPL_NODE_PATH=%%B"',
1183
+ " )",
1184
+ ")",
1185
+ "if defined OMO_NODE_REPL_NODE_PATH (",
1186
+ ' set "OMO_NODE_BINARY=!OMO_NODE_REPL_NODE_PATH!"',
1187
+ ' for /f "tokens=* delims= " %%N in ("!OMO_NODE_BINARY!") do set "OMO_NODE_BINARY=%%N"',
1188
+ ` if "!OMO_NODE_BINARY:~0,1!"=="'" set "OMO_NODE_BINARY=!OMO_NODE_BINARY:~1!"`,
1189
+ ` if "!OMO_NODE_BINARY:~-1!"=="'" set "OMO_NODE_BINARY=!OMO_NODE_BINARY:~0,-1!"`,
1190
+ ' if "!OMO_NODE_BINARY:~0,1!"=="^"" set "OMO_NODE_BINARY=!OMO_NODE_BINARY:~1!"',
1191
+ ' if "!OMO_NODE_BINARY:~-1!"=="^"" set "OMO_NODE_BINARY=!OMO_NODE_BINARY:~0,-1!"',
1192
+ ' if defined OMO_NODE_BINARY if not exist "!OMO_NODE_BINARY!" set "OMO_NODE_BINARY="',
1193
+ ")",
1194
+ 'if not defined OMO_NODE_BINARY where node >nul 2>nul && set "OMO_NODE_BINARY=node"'
1195
+ ];
1196
+ }
1197
+ function windowsCommandShim(targetPath) {
1198
+ return [
1199
+ "@echo off",
1200
+ COMMAND_SHIM_MARKER,
1201
+ 'if not defined CODEX_HOME set "CODEX_HOME=%USERPROFILE%\\.codex"',
1202
+ ...windowsNodeDiscoveryLines(),
1203
+ "if not defined OMO_NODE_BINARY (",
1204
+ " echo omo: no Node runtime was discovered from NODE_REPL_NODE_PATH or PATH; rerun LazyCodex install from Codex Desktop 1>&2",
1205
+ " exit /b 127",
1206
+ ")",
1207
+ `"%OMO_NODE_BINARY%" "${targetPath}" %*`,
1208
+ "exit /b %ERRORLEVEL%",
1209
+ ""
1210
+ ].join(`\r
1211
+ `);
1212
+ }
1177
1213
 
1178
1214
  // ../src/install/codex-cache-fs.ts
1179
1215
  import { lstat as lstat3 } from "node:fs/promises";
@@ -1271,10 +1307,9 @@ function posixRuntimeWrapper(cliPath, codexHome, binDir, nodeCliPath) {
1271
1307
  "#!/bin/sh",
1272
1308
  `# ${RUNTIME_WRAPPER_MARKER}`,
1273
1309
  `export CODEX_HOME="\${CODEX_HOME:-${escapedCodexHome}}"`,
1274
- 'export OMO_SPARKSHELL_APP_SERVER_SOCKET="${OMO_SPARKSHELL_APP_SERVER_SOCKET:-$CODEX_HOME/app-server-control/app-server-control.sock}"',
1275
1310
  'if [ "$1" = "ulw-loop" ] && [ -x "' + escapedUlwLoopBin + '" ]; then',
1276
1311
  " shift",
1277
- ' exec "' + escapedUlwLoopBin + '" "$@"',
1312
+ ' exec "' + escapedUlwLoopBin + '" ulw-loop "$@"',
1278
1313
  "fi",
1279
1314
  `if [ "\${OMO_RUNTIME:-}" = "node" ] && [ -f "${nodeCli}" ]; then`,
1280
1315
  ` exec node "${nodeCli}" "$@"`,
@@ -1313,24 +1348,24 @@ function windowsRuntimeWrapper(cliPath, codexHome, binDir, nodeCliPath) {
1313
1348
  "@echo off",
1314
1349
  `rem ${RUNTIME_WRAPPER_MARKER}`,
1315
1350
  `if not defined CODEX_HOME set "CODEX_HOME=${codexHome}"`,
1316
- 'if not defined OMO_SPARKSHELL_APP_SERVER_SOCKET set "OMO_SPARKSHELL_APP_SERVER_SOCKET=%CODEX_HOME%\\app-server-control\\app-server-control.sock"',
1351
+ ...windowsNodeDiscoveryLines(),
1317
1352
  `if "%~1"=="ulw-loop" if exist "${ulwLoopBin}" (`,
1318
1353
  " shift /1",
1319
- ` "${ulwLoopBin}" %*`,
1354
+ ` "${ulwLoopBin}" ulw-loop %*`,
1320
1355
  " exit /b %ERRORLEVEL%",
1321
1356
  ")",
1322
- `if "%OMO_RUNTIME%"=="node" if exist "${nodeCliPath}" (`,
1323
- ` node "${nodeCliPath}" %*`,
1357
+ `if "%OMO_RUNTIME%"=="node" if defined OMO_NODE_BINARY if exist "${nodeCliPath}" (`,
1358
+ ` "%OMO_NODE_BINARY%" "${nodeCliPath}" %*`,
1324
1359
  " exit /b %ERRORLEVEL%",
1325
1360
  ")",
1326
1361
  'if not defined BUN_BINARY where bun >nul 2>nul && set "BUN_BINARY=bun"',
1327
1362
  'if not defined BUN_BINARY if exist "%USERPROFILE%\\.bun\\bin\\bun.exe" set "BUN_BINARY=%USERPROFILE%\\.bun\\bin\\bun.exe"',
1328
1363
  "if not defined BUN_BINARY (",
1329
- ` if exist "${nodeCliPath}" (`,
1330
- ` node "${nodeCliPath}" %*`,
1364
+ ` if defined OMO_NODE_BINARY if exist "${nodeCliPath}" (`,
1365
+ ` "%OMO_NODE_BINARY%" "${nodeCliPath}" %*`,
1331
1366
  " exit /b %ERRORLEVEL%",
1332
1367
  " )",
1333
- ` echo omo: bun runtime not found and the node fallback CLI is missing at ${nodeCliPath}; install bun from https://bun.sh or reinstall omo and force OMO_RUNTIME=node 1>&2`,
1368
+ ` echo omo: bun runtime not found, no Node runtime was discovered from NODE_REPL_NODE_PATH or PATH, or the node fallback CLI is missing at ${nodeCliPath}; install bun from https://bun.sh or rerun LazyCodex install from Codex Desktop 1>&2`,
1334
1369
  " exit /b 127",
1335
1370
  ")",
1336
1371
  `if not exist "${cliPath}" (`,
@@ -1473,10 +1508,7 @@ async function replaceSymlink(linkPath, targetPath) {
1473
1508
  async function replaceCommandShim(linkPath, targetPath) {
1474
1509
  if (await existingNonShim(linkPath))
1475
1510
  throw new Error(`${linkPath} already exists and is not a command shim`);
1476
- await writeFile4(linkPath, `@echo off\r
1477
- ${COMMAND_SHIM_MARKER}\r
1478
- node "${targetPath}" %*\r
1479
- `);
1511
+ await writeFile4(linkPath, windowsCommandShim(targetPath));
1480
1512
  }
1481
1513
  async function replaceRuntimeWrapper(linkPath, content) {
1482
1514
  if (await existingNonRuntimeWrapper(linkPath))
@@ -1546,7 +1578,7 @@ function findTomlSection(config, header) {
1546
1578
  if (start === -1) {
1547
1579
  if (tomlTableHeaderMatches(trimmed, headerLine, targetHeaderPath))
1548
1580
  start = offset;
1549
- } else if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
1581
+ } else if (isTomlTableHeaderLine(line)) {
1550
1582
  return { start, end: offset, text: config.slice(start, offset) };
1551
1583
  }
1552
1584
  offset += line.length;
@@ -1556,12 +1588,12 @@ function findTomlSection(config, header) {
1556
1588
  return { start, end: config.length, text: config.slice(start) };
1557
1589
  }
1558
1590
  function replaceOrInsertSetting(config, section, key, value) {
1559
- const linePattern = new RegExp(`^${escapeRegExp(key)}\\s*=.*$`, "m");
1591
+ const linePattern = new RegExp(`^[ \\t]*${escapeRegExp(key)}[ \\t]*=.*$`, "m");
1560
1592
  const replacement = linePattern.test(section.text) ? section.text.replace(linePattern, `${key} = ${value}`) : insertSetting(section.text, key, value);
1561
1593
  return config.slice(0, section.start) + replacement + config.slice(section.end);
1562
1594
  }
1563
1595
  function removeSetting(config, section, key) {
1564
- const linePattern = new RegExp(`^\\s*${escapeRegExp(key)}\\s*=.*(?:\\n|$)`, "m");
1596
+ const linePattern = new RegExp(`^[ \\t]*${escapeRegExp(key)}[ \\t]*=.*(?:\\n|$)`, "m");
1565
1597
  const replacement = section.text.replace(linePattern, "");
1566
1598
  return config.slice(0, section.start) + replacement + config.slice(section.end);
1567
1599
  }
@@ -1569,7 +1601,7 @@ function replaceOrInsertRootSetting(config, key, value) {
1569
1601
  const sectionStart = findFirstTableStart(config);
1570
1602
  const root = config.slice(0, sectionStart);
1571
1603
  const suffix = config.slice(sectionStart);
1572
- const linePattern = new RegExp(`^${escapeRegExp(key)}\\s*=.*$`, "m");
1604
+ const linePattern = new RegExp(`^[ \\t]*${escapeRegExp(key)}[ \\t]*=.*$`, "m");
1573
1605
  const replacement = linePattern.test(root) ? root.replace(linePattern, `${key} = ${value}`) : `${root.trimEnd()}${root.trimEnd().length > 0 ? `
1574
1606
  ` : ""}${key} = ${value}
1575
1607
  `;
@@ -1587,8 +1619,16 @@ function appendBlock(config, block) {
1587
1619
  `;
1588
1620
  }
1589
1621
  function findFirstTableStart(config) {
1590
- const match = config.match(/^[[].*$/m);
1591
- return match?.index ?? config.length;
1622
+ const lines = config.match(/[^\n]*\n?|$/g) ?? [];
1623
+ let offset = 0;
1624
+ for (const line of lines) {
1625
+ if (line.length === 0)
1626
+ break;
1627
+ if (isTomlTableHeaderLine(line))
1628
+ return offset;
1629
+ offset += line.length;
1630
+ }
1631
+ return config.length;
1592
1632
  }
1593
1633
  function insertSetting(sectionText, key, value) {
1594
1634
  const lines = sectionText.split(`
@@ -1601,19 +1641,57 @@ function escapeRegExp(value) {
1601
1641
  return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1602
1642
  }
1603
1643
  function tomlTableHeaderMatches(line, headerLine, targetHeaderPath) {
1604
- if (line === headerLine)
1644
+ const normalizedLine = stripUnquotedInlineComment(line).trim();
1645
+ if (normalizedLine === headerLine)
1605
1646
  return true;
1606
1647
  if (!targetHeaderPath)
1607
1648
  return false;
1608
- const candidateHeaderPath = parseTomlTableHeader(line);
1649
+ const candidateHeaderPath = parseTomlTableHeader(normalizedLine);
1609
1650
  if (!candidateHeaderPath || candidateHeaderPath.length !== targetHeaderPath.length)
1610
1651
  return false;
1611
1652
  return candidateHeaderPath.every((part, index) => part === targetHeaderPath[index]);
1612
1653
  }
1613
1654
  function parseTomlTableHeader(line) {
1614
- if (!line.startsWith("[") || !line.endsWith("]") || line.startsWith("[["))
1655
+ const normalizedLine = stripUnquotedInlineComment(line).trim();
1656
+ if (!normalizedLine.startsWith("[") || !normalizedLine.endsWith("]") || normalizedLine.startsWith("[["))
1615
1657
  return null;
1616
- return parseTomlDottedKey(line.slice(1, -1).trim());
1658
+ return parseTomlDottedKey(normalizedLine.slice(1, -1).trim());
1659
+ }
1660
+ function isTomlTableHeaderLine(line) {
1661
+ const normalizedLine = stripUnquotedInlineComment(line).trim();
1662
+ return normalizedLine.startsWith("[") && normalizedLine.endsWith("]");
1663
+ }
1664
+ function stripUnquotedInlineComment(line) {
1665
+ let quote = null;
1666
+ let index = 0;
1667
+ while (index < line.length) {
1668
+ const char = line[index];
1669
+ if (quote === '"') {
1670
+ if (char === "\\") {
1671
+ index += 2;
1672
+ continue;
1673
+ }
1674
+ if (char === '"')
1675
+ quote = null;
1676
+ index += 1;
1677
+ continue;
1678
+ }
1679
+ if (quote === "'") {
1680
+ if (char === "'")
1681
+ quote = null;
1682
+ index += 1;
1683
+ continue;
1684
+ }
1685
+ if (char === '"' || char === "'") {
1686
+ quote = char;
1687
+ index += 1;
1688
+ continue;
1689
+ }
1690
+ if (char === "#")
1691
+ return line.slice(0, index);
1692
+ index += 1;
1693
+ }
1694
+ return line;
1617
1695
  }
1618
1696
  function parseTomlDottedKey(input) {
1619
1697
  const parts = [];
@@ -1724,7 +1802,7 @@ function skipWhitespace(input, startIndex) {
1724
1802
 
1725
1803
  // ../src/install/codex-config-toml-sections.ts
1726
1804
  function removeTomlSections(config, shouldRemove) {
1727
- return splitTomlSections(config).filter((section) => section.header === null || !shouldRemove(section.header)).map((section) => section.text).join("").replace(/\n{3,}/g, `
1805
+ return splitTomlSections(config).filter((section) => section.header === null || !shouldRemove(section.header, section)).map((section) => section.text).join("").replace(/\n{3,}/g, `
1728
1806
 
1729
1807
  `);
1730
1808
  }
@@ -1763,11 +1841,43 @@ function parseHookStateHeaderKey(header) {
1763
1841
  return path[2] ?? null;
1764
1842
  }
1765
1843
  function parseTomlHeader2(line) {
1766
- const trimmed = line.trim();
1844
+ const trimmed = stripTomlLineComment(line).trim();
1767
1845
  if (!trimmed.startsWith("[") || !trimmed.endsWith("]") || trimmed.startsWith("[["))
1768
1846
  return null;
1769
1847
  return trimmed.slice(1, -1);
1770
1848
  }
1849
+ function stripTomlLineComment(line) {
1850
+ let quote = null;
1851
+ let index = 0;
1852
+ while (index < line.length) {
1853
+ const char = line[index];
1854
+ if (quote === '"') {
1855
+ if (char === "\\") {
1856
+ index += 2;
1857
+ continue;
1858
+ }
1859
+ if (char === '"')
1860
+ quote = null;
1861
+ index += 1;
1862
+ continue;
1863
+ }
1864
+ if (quote === "'") {
1865
+ if (char === "'")
1866
+ quote = null;
1867
+ index += 1;
1868
+ continue;
1869
+ }
1870
+ if (char === '"' || char === "'") {
1871
+ quote = char;
1872
+ index += 1;
1873
+ continue;
1874
+ }
1875
+ if (char === "#")
1876
+ return line.slice(0, index);
1877
+ index += 1;
1878
+ }
1879
+ return line;
1880
+ }
1771
1881
 
1772
1882
  // ../src/install/codex-config-agents.ts
1773
1883
  var LEGACY_MANAGED_CODEX_AGENT_NAMES_TO_PURGE = ["codex-ultrawork-reviewer"];
@@ -1938,7 +2048,7 @@ function ensureMarketplaceBlock(config, marketplaceName, source) {
1938
2048
  }
1939
2049
 
1940
2050
  // ../src/install/codex-config-permissions.ts
1941
- var AUTONOMOUS_FEATURES = ["multi_agent", "child_agents_md", "unified_exec", "goals"];
2051
+ var AUTONOMOUS_FEATURES = ["multi_agent", "unified_exec", "goals"];
1942
2052
  function ensureAutonomousPermissions(config) {
1943
2053
  let next = replaceOrInsertRootSetting(config, "approval_policy", JSON.stringify("never"));
1944
2054
  next = replaceOrInsertRootSetting(next, "sandbox_mode", JSON.stringify("danger-full-access"));
@@ -1991,7 +2101,8 @@ function ensureOmoBuiltinMcpPolicies(config, input) {
1991
2101
  return config;
1992
2102
  const codegraphEnabled = input.codegraphMcpEnabled ?? true;
1993
2103
  const gitBashEnabled = (input.platform ?? process.platform) === "win32" && input.gitBashEnabled === true;
1994
- let nextConfig = ensurePluginMcpEnabled(config, "omo@sisyphuslabs", "context7", true);
2104
+ let nextConfig = removeStaleContext7PlaceholderMcp(config);
2105
+ nextConfig = ensurePluginMcpEnabled(nextConfig, "omo@sisyphuslabs", "context7", true);
1995
2106
  nextConfig = ensurePluginMcpEnabled(nextConfig, "omo@sisyphuslabs", "codegraph", codegraphEnabled);
1996
2107
  nextConfig = ensurePluginMcpEnabled(nextConfig, "omo@sisyphuslabs", "git_bash", gitBashEnabled);
1997
2108
  return nextConfig;
@@ -2015,6 +2126,107 @@ enabled = ${enabledValue}
2015
2126
  `);
2016
2127
  return replaceOrInsertSetting(config, section, "enabled", enabledValue);
2017
2128
  }
2129
+ function removeStaleContext7PlaceholderMcp(config) {
2130
+ return removeTomlSections(config, (header, section) => header === "mcp_servers.context7" && isContext7PlaceholderSection(section.text));
2131
+ }
2132
+ function isContext7PlaceholderSection(sectionText) {
2133
+ const args = readStringArraySetting(sectionText, "args");
2134
+ if (args === null || !args.includes("@upstash/context7-mcp"))
2135
+ return false;
2136
+ const apiKey = valueAfter(args, "--api-key");
2137
+ return apiKey !== null && isPlaceholderApiKey(apiKey);
2138
+ }
2139
+ function valueAfter(values, key) {
2140
+ const index = values.indexOf(key);
2141
+ return index >= 0 ? values[index + 1] ?? null : null;
2142
+ }
2143
+ function isPlaceholderApiKey(value) {
2144
+ return /^your[-_ ]?api[-_ ]?key$/i.test(value);
2145
+ }
2146
+ function readStringArraySetting(sectionText, key) {
2147
+ for (const line of sectionText.split(`
2148
+ `)) {
2149
+ if (!new RegExp(`^\\s*${key}\\s*=`).test(line))
2150
+ continue;
2151
+ const assignmentIndex = line.indexOf("=");
2152
+ if (assignmentIndex === -1)
2153
+ return null;
2154
+ return parseTomlStringArray(stripUnquotedInlineComment2(line.slice(assignmentIndex + 1)).trim());
2155
+ }
2156
+ return null;
2157
+ }
2158
+ function parseTomlStringArray(value) {
2159
+ if (!value.startsWith("[") || !value.endsWith("]"))
2160
+ return null;
2161
+ const items = [];
2162
+ let index = 1;
2163
+ while (index < value.length - 1) {
2164
+ const char = value[index];
2165
+ if (char === '"' || char === "'") {
2166
+ const parsed = parseTomlString(value, index);
2167
+ if (parsed === null)
2168
+ return null;
2169
+ items.push(parsed.value);
2170
+ index = parsed.nextIndex;
2171
+ continue;
2172
+ }
2173
+ index += 1;
2174
+ }
2175
+ return items;
2176
+ }
2177
+ function parseTomlString(input, startIndex) {
2178
+ const quote = input[startIndex];
2179
+ let value = "";
2180
+ let index = startIndex + 1;
2181
+ while (index < input.length) {
2182
+ const char = input[index];
2183
+ if (quote === '"' && char === "\\") {
2184
+ const next = input[index + 1];
2185
+ if (next === undefined)
2186
+ return null;
2187
+ value += next;
2188
+ index += 2;
2189
+ continue;
2190
+ }
2191
+ if (char === quote)
2192
+ return { value, nextIndex: index + 1 };
2193
+ value += char;
2194
+ index += 1;
2195
+ }
2196
+ return null;
2197
+ }
2198
+ function stripUnquotedInlineComment2(line) {
2199
+ let quote = null;
2200
+ let index = 0;
2201
+ while (index < line.length) {
2202
+ const char = line[index];
2203
+ if (quote === '"') {
2204
+ if (char === "\\") {
2205
+ index += 2;
2206
+ continue;
2207
+ }
2208
+ if (char === '"')
2209
+ quote = null;
2210
+ index += 1;
2211
+ continue;
2212
+ }
2213
+ if (quote === "'") {
2214
+ if (char === "'")
2215
+ quote = null;
2216
+ index += 1;
2217
+ continue;
2218
+ }
2219
+ if (char === '"' || char === "'") {
2220
+ quote = char;
2221
+ index += 1;
2222
+ continue;
2223
+ }
2224
+ if (char === "#")
2225
+ return line.slice(0, index);
2226
+ index += 1;
2227
+ }
2228
+ return line;
2229
+ }
2018
2230
 
2019
2231
  // ../src/install/codex-config-reasoning.ts
2020
2232
  var MANAGED_KEYS = ["model", "model_context_window", "model_reasoning_effort", "plan_mode_reasoning_effort"];
@@ -2155,31 +2367,87 @@ function parseProfileMatch(match) {
2155
2367
  return profile;
2156
2368
  }
2157
2369
 
2370
+ // ../src/install/codex-multi-agent-mode-config.ts
2371
+ var CODEX_MULTI_AGENT_MODE_KEY = "multi_agent_mode";
2372
+ function removeUnsupportedCodexMultiAgentModeConfig(config) {
2373
+ const lines = config.split(/\n/);
2374
+ const output = [];
2375
+ let inRoot = true;
2376
+ let changed = false;
2377
+ for (const line of lines) {
2378
+ const sectionHeader = isSectionHeader3(line);
2379
+ if (inRoot && isRootSetting2(line, CODEX_MULTI_AGENT_MODE_KEY)) {
2380
+ changed = true;
2381
+ continue;
2382
+ }
2383
+ output.push(line);
2384
+ if (sectionHeader)
2385
+ inRoot = false;
2386
+ }
2387
+ return changed ? output.join(`
2388
+ `) : config;
2389
+ }
2390
+ function isSectionHeader3(line) {
2391
+ return isTomlTableHeaderLine(line);
2392
+ }
2393
+ function isRootSetting2(line, key) {
2394
+ const trimmed = line.trimStart();
2395
+ if (trimmed.startsWith("#") || trimmed.startsWith("["))
2396
+ return false;
2397
+ const match = trimmed.match(/^([A-Za-z_][A-Za-z0-9_]*)\s*=/);
2398
+ return match?.[1] === key;
2399
+ }
2400
+
2158
2401
  // ../src/install/codex-multi-agent-v2-config.ts
2402
+ var CODEX_AGENTS_HEADER = "agents";
2159
2403
  var CODEX_MULTI_AGENT_V2_HEADER = "features.multi_agent_v2";
2160
- var CODEX_MULTI_AGENT_V2_MAX_CONCURRENT_THREADS_PER_SESSION = 1e4;
2404
+ var CODEX_SUBAGENT_THREAD_LIMIT = 1000;
2161
2405
  function ensureCodexMultiAgentV2Config(config) {
2162
- const normalizedConfig = removeLegacyAgentsMaxThreadsSetting(removeFeatureFlagSetting(config, "multi_agent_v2"));
2163
- const section = findTomlSection(normalizedConfig, CODEX_MULTI_AGENT_V2_HEADER);
2164
- const maxThreadsValue = CODEX_MULTI_AGENT_V2_MAX_CONCURRENT_THREADS_PER_SESSION.toString();
2406
+ const featureFlag = removeFeatureFlagSetting(config, "multi_agent_v2");
2407
+ const agentsConfig = ensureAgentsMaxThreads(featureFlag.config);
2408
+ const section = findTomlSection(agentsConfig, CODEX_MULTI_AGENT_V2_HEADER);
2409
+ const maxThreadsValue = CODEX_SUBAGENT_THREAD_LIMIT.toString();
2165
2410
  if (!section) {
2166
- return appendBlock(normalizedConfig, `[${CODEX_MULTI_AGENT_V2_HEADER}]
2411
+ const enabledSetting = featureFlag.value === false ? `enabled = false
2412
+ ` : "";
2413
+ return appendBlock(agentsConfig, `[${CODEX_MULTI_AGENT_V2_HEADER}]
2414
+ ${enabledSetting}max_concurrent_threads_per_session = ${maxThreadsValue}
2415
+ `);
2416
+ }
2417
+ const withPreservedDisable = featureFlag.value === false ? replaceOrInsertSetting(agentsConfig, section, "enabled", "false") : agentsConfig;
2418
+ const updatedSection = featureFlag.value === false ? findTomlSection(withPreservedDisable, CODEX_MULTI_AGENT_V2_HEADER) : section;
2419
+ if (!updatedSection) {
2420
+ return appendBlock(withPreservedDisable, `[${CODEX_MULTI_AGENT_V2_HEADER}]
2421
+ enabled = false
2167
2422
  max_concurrent_threads_per_session = ${maxThreadsValue}
2168
2423
  `);
2169
2424
  }
2170
- return replaceOrInsertSetting(normalizedConfig, section, "max_concurrent_threads_per_session", maxThreadsValue);
2425
+ return replaceOrInsertSetting(withPreservedDisable, updatedSection, "max_concurrent_threads_per_session", maxThreadsValue);
2171
2426
  }
2172
2427
  function removeFeatureFlagSetting(config, featureName) {
2173
2428
  const section = findTomlSection(config, "features");
2174
2429
  if (!section)
2175
- return config;
2176
- return removeSetting(config, section, featureName);
2430
+ return { config, value: null };
2431
+ return {
2432
+ config: removeSetting(config, section, featureName),
2433
+ value: readBooleanSetting(section.text, featureName)
2434
+ };
2177
2435
  }
2178
- function removeLegacyAgentsMaxThreadsSetting(config) {
2179
- const section = findTomlSection(config, "agents");
2180
- if (!section)
2181
- return config;
2182
- return removeSetting(config, section, "max_threads");
2436
+ function ensureAgentsMaxThreads(config) {
2437
+ const maxThreadsValue = CODEX_SUBAGENT_THREAD_LIMIT.toString();
2438
+ const section = findTomlSection(config, CODEX_AGENTS_HEADER);
2439
+ if (!section) {
2440
+ return appendBlock(config, `[${CODEX_AGENTS_HEADER}]
2441
+ max_threads = ${maxThreadsValue}
2442
+ `);
2443
+ }
2444
+ return replaceOrInsertSetting(config, section, "max_threads", maxThreadsValue);
2445
+ }
2446
+ function readBooleanSetting(sectionText, key) {
2447
+ const match = new RegExp(`^\\s*${escapeRegExp(key)}\\s*=\\s*(true|false)\\s*(?:#.*)?$`, "m").exec(sectionText);
2448
+ if (!match)
2449
+ return null;
2450
+ return match[1] === "true";
2183
2451
  }
2184
2452
 
2185
2453
  // ../src/install/codex-config-toml.ts
@@ -2200,7 +2468,7 @@ async function updateCodexConfig(input) {
2200
2468
  config = ensureFeatureEnabled(config, "plugins");
2201
2469
  config = ensureFeatureEnabled(config, "plugin_hooks");
2202
2470
  config = ensureFeatureEnabled(config, "multi_agent");
2203
- config = ensureFeatureEnabled(config, "child_agents_md");
2471
+ config = removeUnsupportedCodexMultiAgentModeConfig(config);
2204
2472
  config = ensureCodexReasoningConfig(config, await readCodexModelCatalog(input.repoRoot));
2205
2473
  config = ensureCodexMultiAgentV2Config(config);
2206
2474
  if (input.autonomousPermissions === true)
@@ -2308,7 +2576,8 @@ async function trustedHookStatesForPlugin(input) {
2308
2576
  continue;
2309
2577
  states.push(...trustedHookStatesForHooksFile({
2310
2578
  keySource: `${input.pluginName}@${input.marketplaceName}:${hookPath}`,
2311
- hooks: parsed.hooks
2579
+ hooks: parsed.hooks,
2580
+ platform: input.platform ?? process.platform
2312
2581
  }));
2313
2582
  }
2314
2583
  return states;
@@ -2336,20 +2605,28 @@ function trustedHookStatesForHooksFile(input) {
2336
2605
  continue;
2337
2606
  if (handler.async === true)
2338
2607
  continue;
2339
- if (typeof handler.command !== "string" || handler.command.trim() === "")
2608
+ const command = commandForPlatform(handler, input.platform);
2609
+ if (command === undefined || command.trim() === "")
2340
2610
  continue;
2341
2611
  const key = `${input.keySource}:${eventLabel}:${groupIndex}:${handlerIndex}`;
2342
- states.push({ key, trustedHash: commandHookHash(eventLabel, group.matcher, handler) });
2612
+ states.push({ key, trustedHash: commandHookHash(eventLabel, group.matcher, handler, command) });
2343
2613
  }
2344
2614
  }
2345
2615
  }
2346
2616
  return states;
2347
2617
  }
2348
- function commandHookHash(eventName, matcher, handler) {
2618
+ function commandForPlatform(handler, platform) {
2619
+ if (typeof handler.command !== "string")
2620
+ return;
2621
+ if (platform === "win32" && typeof handler.commandWindows === "string")
2622
+ return handler.commandWindows;
2623
+ return handler.command;
2624
+ }
2625
+ function commandHookHash(eventName, matcher, handler, command) {
2349
2626
  const timeout = Math.max(Number(handler.timeout ?? 600), 1);
2350
2627
  const normalizedHandler = {
2351
2628
  type: "command",
2352
- command: handler.command,
2629
+ command,
2353
2630
  timeout,
2354
2631
  async: false
2355
2632
  };
@@ -2404,7 +2681,6 @@ function resolveCodexInstallerBinDir(input) {
2404
2681
  import { execFileSync as execFileSync2 } from "node:child_process";
2405
2682
  import { existsSync as existsSync2 } from "node:fs";
2406
2683
  var GIT_BASH_ENV_KEY2 = "OMO_CODEX_GIT_BASH_PATH";
2407
- var WINGET_INSTALL_ARGS = ["install", "--id", "Git.Git", "-e", "--source", "winget"];
2408
2684
  var PROGRAM_FILES_GIT_BASH = "C:\\Program Files\\Git\\bin\\bash.exe";
2409
2685
  var PROGRAM_FILES_X86_GIT_BASH = "C:\\Program Files (x86)\\Git\\bin\\bash.exe";
2410
2686
  var NON_GIT_BASH_LAUNCHER_DIR_SEGMENTS = ["\\windows\\system32\\", "\\microsoft\\windowsapps\\"];
@@ -2484,25 +2760,13 @@ function whereCommand(command) {
2484
2760
  }
2485
2761
  }
2486
2762
  // ../src/install/git-bash.ts
2487
- var SKIP_GIT_BASH_AUTO_INSTALL_ENV_KEY = "OMO_CODEX_SKIP_GIT_BASH_AUTO_INSTALL";
2488
2763
  var resolveGitBashForCurrentProcess2 = (input = {}) => {
2489
2764
  return toCodexResolution(resolveGitBashForCurrentProcess(input));
2490
2765
  };
2491
2766
  async function prepareGitBashForInstall(input) {
2492
2767
  const resolve6 = input.resolveGitBash ?? (() => resolveGitBashForCurrentProcess2({ platform: input.platform, env: input.env }));
2493
2768
  const initialResolution = resolve6();
2494
- if (input.platform !== "win32" || initialResolution.found)
2495
- return initialResolution;
2496
- if (input.env[SKIP_GIT_BASH_AUTO_INSTALL_ENV_KEY] === "1")
2497
- return initialResolution;
2498
- try {
2499
- await input.runCommand("winget", WINGET_INSTALL_ARGS, { cwd: input.cwd });
2500
- } catch (error) {
2501
- if (!(error instanceof Error))
2502
- throw error;
2503
- return initialResolution;
2504
- }
2505
- return resolve6();
2769
+ return initialResolution;
2506
2770
  }
2507
2771
  function toCodexResolution(resolution) {
2508
2772
  if (resolution.found) {
@@ -2543,10 +2807,8 @@ async function resolveGitBashStep(options, degraded) {
2543
2807
  return false;
2544
2808
  try {
2545
2809
  const resolution = await prepareGitBashForInstall({
2546
- cwd: options.pluginRoot,
2547
2810
  env: options.env,
2548
2811
  platform: options.platform,
2549
- runCommand: options.runCommand ?? defaultRunCommand,
2550
2812
  ...options.resolveGitBash === undefined ? {} : { resolveGitBash: options.resolveGitBash }
2551
2813
  });
2552
2814
  if (resolution.found)
@@ -2682,7 +2944,7 @@ async function linkRuntimeWrapperStep(options, binDir, degraded) {
2682
2944
  reason: "marketplace payload has no dist/cli"
2683
2945
  });
2684
2946
  await appendBootstrapLog(options.pluginData, options.now ?? Date.now(), "omo-cli-degraded", {
2685
- warning: `Warning: skipped the omo runtime wrapper because ${cliPath} is missing; omo sparkshell/ulw-loop commands will be unavailable until a package shipping dist/cli is installed`
2947
+ warning: `Warning: skipped the omo runtime wrapper because ${cliPath} is missing; omo ulw-loop commands will be unavailable until a package shipping dist/cli is installed`
2686
2948
  });
2687
2949
  } catch (error) {
2688
2950
  degraded.push({
@@ -2703,10 +2965,6 @@ async function stampGitBashEnvStep(options, degraded) {
2703
2965
  });
2704
2966
  }
2705
2967
  }
2706
- var execFileAsync2 = promisify2(execFile2);
2707
- async function defaultRunCommand(command, args, options) {
2708
- return execFileAsync2(command, [...args], { cwd: options.cwd });
2709
- }
2710
2968
  async function directoryNames(root) {
2711
2969
  return entryNames(root, (entry) => entry.isDirectory());
2712
2970
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-bootstrap",
3
- "version": "4.13.0",
3
+ "version": "4.14.1",
4
4
  "description": "Codex SessionStart bootstrap component that provisions LazyCodex runtime dependencies from a detached worker.",
5
5
  "type": "module",
6
6
  "private": true,