oh-my-opencode 4.19.2 → 4.19.4

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 (241) hide show
  1. package/.agents/command/get-unpublished-changes.md +2 -0
  2. package/.agents/command/omomomo.md +1 -1
  3. package/.agents/command/publish.md +102 -28
  4. package/.agents/skills/get-unpublished-changes/SKILL.md +2 -0
  5. package/.agents/skills/hyperplan/SKILL.md +3 -3
  6. package/.agents/skills/omomomo/SKILL.md +1 -1
  7. package/.agents/skills/publish/SKILL.md +27 -6
  8. package/.opencode/command/get-unpublished-changes.md +2 -0
  9. package/.opencode/command/omomomo.md +1 -1
  10. package/.opencode/command/publish.md +102 -28
  11. package/.opencode/skills/hyperplan/SKILL.md +3 -3
  12. package/THIRD-PARTY-NOTICES.md +7 -7
  13. package/dist/agents/sisyphus-junior/agent.d.ts +1 -1
  14. package/dist/agents/sisyphus-runtime-prompt-reconciler.d.ts +1 -1
  15. package/dist/cli/config-migrate.d.ts +8 -0
  16. package/dist/cli/doctor/checks/deprecated-reasoning-keys.d.ts +2 -0
  17. package/dist/cli/doctor/checks/legacy-config-leftovers.d.ts +10 -0
  18. package/dist/cli/doctor/checks/model-resolution-config.d.ts +1 -1
  19. package/dist/cli/doctor/checks/tools-lsp.d.ts +1 -1
  20. package/dist/cli/doctor/framework/constants.d.ts +1 -1
  21. package/dist/cli/index.js +95684 -92814
  22. package/dist/cli-node/index.js +95650 -92780
  23. package/dist/config/schema/agent-overrides.d.ts +800 -0
  24. package/dist/config/schema/categories.d.ts +132 -0
  25. package/dist/config/schema/fallback-models.d.ts +50 -0
  26. package/dist/config/schema/oh-my-opencode-config.d.ts +818 -2
  27. package/dist/config/validate.d.ts +2 -1
  28. package/dist/config-migration/deep-diff.d.ts +1 -0
  29. package/dist/config-migration/discovery-paths.d.ts +11 -0
  30. package/dist/config-migration/discovery-roots.d.ts +7 -0
  31. package/dist/config-migration/discovery.d.ts +4 -0
  32. package/dist/config-migration/index.d.ts +10 -0
  33. package/dist/config-migration/legacy-history.d.ts +3 -0
  34. package/dist/config-migration/migration-executor.d.ts +4 -0
  35. package/dist/config-migration/migration-plans.d.ts +15 -0
  36. package/dist/config-migration/reasoning-unification.d.ts +3 -0
  37. package/dist/config-migration/record-values.d.ts +4 -0
  38. package/dist/config-migration/schema-url.d.ts +1 -0
  39. package/dist/config-migration/transform-config-jsonc.d.ts +2 -0
  40. package/dist/config-migration/transform-opencode.d.ts +2 -0
  41. package/dist/config-migration/transform-types.d.ts +24 -0
  42. package/dist/config-migration/types.d.ts +39 -0
  43. package/dist/features/builtin-commands/templates/hyperplan.d.ts +1 -1
  44. package/dist/features/team-mode/tools/lifecycle-test-fixture.d.ts +2 -0
  45. package/dist/hooks/auto-update-checker/constants.d.ts +3 -3
  46. package/dist/hooks/codegraph-bootstrap/command-runner.d.ts +1 -0
  47. package/dist/hooks/model-fallback/next-fallback.d.ts +1 -0
  48. package/dist/hooks/runtime-fallback/constants.d.ts +1 -1
  49. package/dist/index.js +12368 -9788
  50. package/dist/oh-my-opencode.schema.json +1672 -8
  51. package/dist/plugin-config/omo-config-chain.d.ts +14 -0
  52. package/dist/plugin-config/unknown-key-diagnostics.d.ts +5 -0
  53. package/dist/plugin-config.d.ts +2 -2
  54. package/dist/plugin-handlers/prometheus-agent-config-builder.d.ts +1 -0
  55. package/dist/shared/agent-display-names.d.ts +1 -1
  56. package/dist/shared/agent-variant.d.ts +11 -0
  57. package/dist/shared/jsonc-parser.d.ts +1 -1
  58. package/dist/shared/migration.d.ts +5 -1
  59. package/dist/shared/opencode-config-dir-types.d.ts +0 -1
  60. package/dist/shared/plugin-identity.d.ts +6 -8
  61. package/dist/shared/project-discovery-dirs.d.ts +0 -1
  62. package/dist/shared/session-prompt-params-helpers.d.ts +6 -1
  63. package/dist/skills/coding-agent-sessions/SKILL.md +4 -3
  64. package/dist/skills/coding-agent-sessions/references/all-platforms.md +3 -1
  65. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/aside_scanner.py +140 -0
  66. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +3 -0
  67. package/dist/skills/data-scientist/SKILL.md +243 -0
  68. package/dist/skills/data-scientist/references/common-scenarios.md +176 -0
  69. package/dist/skills/data-scientist/references/execution-templates.md +197 -0
  70. package/dist/skills/data-scientist/references/integration-patterns.md +153 -0
  71. package/dist/skills/data-scientist/references/performance-benchmarks.md +37 -0
  72. package/dist/skills/data-scientist/references/uv-setup.md +78 -0
  73. package/dist/skills/data-scientist/scripts/quick-query.py +111 -0
  74. package/dist/skills/data-scientist/scripts/setup-uv.ps1 +53 -0
  75. package/dist/skills/data-scientist/scripts/setup-uv.sh +60 -0
  76. package/dist/skills/debugging/SKILL.md +1 -1
  77. package/dist/skills/frontend/ATTRIBUTION.md +7 -0
  78. package/dist/skills/frontend/SKILL.md +4 -1
  79. package/dist/skills/frontend/references/design/README.md +8 -0
  80. package/dist/skills/frontend/references/design/_INDEX.md +14 -1
  81. package/dist/skills/frontend/references/design/interaction-skill.md +144 -0
  82. package/dist/skills/programming/SKILL.md +1 -2
  83. package/dist/skills/ulw-plan/SKILL.md +1 -1
  84. package/dist/skills/ulw-research/SKILL.md +122 -11
  85. package/dist/startup-migration.d.ts +28 -0
  86. package/dist/testing/create-plugin-module.d.ts +4 -0
  87. package/dist/tools/delegate-task/builtin-categories.d.ts +1 -0
  88. package/dist/tools/delegate-task/builtin-category-definition.d.ts +1 -0
  89. package/dist/tools/delegate-task/constants.d.ts +1 -1
  90. package/dist/tui.js +6040 -5443
  91. package/package.json +13 -13
  92. package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +21 -5
  93. package/packages/lsp-core/src/lsp/fixtures/workspace-edit-server.mjs +11 -2
  94. package/packages/omo-codex/THIRD-PARTY-NOTICES.md +2 -2
  95. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  96. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +21 -3
  97. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  98. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  99. package/packages/omo-codex/plugin/components/codegraph/AGENTS.md +11 -5
  100. package/packages/omo-codex/plugin/components/codegraph/NOTICE +1 -1
  101. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +10373 -2570
  102. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +7502 -574
  103. package/packages/omo-codex/plugin/components/codegraph/package.json +2 -2
  104. package/packages/omo-codex/plugin/components/codegraph/src/hook-input.ts +33 -0
  105. package/packages/omo-codex/plugin/components/codegraph/src/hook-types.ts +36 -10
  106. package/packages/omo-codex/plugin/components/codegraph/src/hook.ts +164 -159
  107. package/packages/omo-codex/plugin/components/codegraph/src/post-tool-use-hook.ts +34 -0
  108. package/packages/omo-codex/plugin/components/codegraph/src/serve.ts +20 -2
  109. package/packages/omo-codex/plugin/components/codegraph/src/session-start-command.ts +106 -0
  110. package/packages/omo-codex/plugin/components/codegraph/src/session-start-cooldown.ts +145 -0
  111. package/packages/omo-codex/plugin/components/codegraph/src/session-start-hook-runtime.ts +21 -0
  112. package/packages/omo-codex/plugin/components/codegraph/src/session-start-lock.ts +139 -0
  113. package/packages/omo-codex/plugin/components/codegraph/src/session-start-outcome.ts +15 -0
  114. package/packages/omo-codex/plugin/components/codegraph/src/session-start-paths.ts +32 -0
  115. package/packages/omo-codex/plugin/components/codegraph/src/session-start-project.ts +109 -0
  116. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker-result.ts +148 -0
  117. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker.ts +126 -175
  118. package/packages/omo-codex/plugin/components/codegraph/test/hook-exclusion.test.ts +4 -4
  119. package/packages/omo-codex/plugin/components/codegraph/test/hook-session-start-guard.test.ts +160 -0
  120. package/packages/omo-codex/plugin/components/codegraph/test/hook-store-upgrade.test.ts +12 -138
  121. package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +34 -24
  122. package/packages/omo-codex/plugin/components/codegraph/test/mcp-bridge-fixtures.ts +3 -3
  123. package/packages/omo-codex/plugin/components/codegraph/test/package-runtime.test.ts +2 -2
  124. package/packages/omo-codex/plugin/components/codegraph/test/provisioned-node-guard.test.ts +5 -5
  125. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge.test.ts +3 -3
  126. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-facade.test.ts +1 -1
  127. package/packages/omo-codex/plugin/components/codegraph/test/serve-provision.test.ts +45 -0
  128. package/packages/omo-codex/plugin/components/codegraph/test/serve-unavailable.test.ts +2 -2
  129. package/packages/omo-codex/plugin/components/codegraph/test/session-start-node-support.test.ts +70 -13
  130. package/packages/omo-codex/plugin/components/codegraph/test/session-start-project.test.ts +58 -0
  131. package/packages/omo-codex/plugin/components/codegraph/test/session-start-state.test.ts +104 -0
  132. package/packages/omo-codex/plugin/components/codegraph/test/session-start-trust-boundary.test.ts +4 -2
  133. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-cooldown.test.ts +116 -0
  134. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-flow.test.ts +58 -57
  135. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  136. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  137. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  138. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  139. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  140. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  141. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  142. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  143. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  144. package/packages/omo-codex/plugin/components/rules/dist/cli.js +32 -15
  145. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  146. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  147. package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +1 -1
  148. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
  149. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
  150. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  151. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  152. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  153. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  154. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  155. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  156. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +1 -1
  157. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  158. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  159. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +17 -0
  160. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  161. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  162. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  163. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
  164. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  165. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  166. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  167. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  168. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  169. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  170. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  171. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  172. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  173. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
  174. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  175. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  176. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
  177. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  178. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
  179. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  180. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  181. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  182. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  183. package/packages/omo-codex/plugin/package-lock.json +42 -41
  184. package/packages/omo-codex/plugin/package.json +1 -1
  185. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +6 -0
  186. package/packages/omo-codex/plugin/shared/src/config-loader.ts +165 -16
  187. package/packages/omo-codex/plugin/shared/src/config-migration.ts +162 -0
  188. package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +186 -9
  189. package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +4 -3
  190. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +3 -1
  191. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/aside_scanner.py +140 -0
  192. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +3 -0
  193. package/packages/omo-codex/plugin/skills/data-scientist/SKILL.md +243 -0
  194. package/packages/omo-codex/plugin/skills/data-scientist/agents/openai.yaml +2 -0
  195. package/packages/omo-codex/plugin/skills/data-scientist/references/common-scenarios.md +176 -0
  196. package/packages/omo-codex/plugin/skills/data-scientist/references/execution-templates.md +197 -0
  197. package/packages/omo-codex/plugin/skills/data-scientist/references/integration-patterns.md +153 -0
  198. package/packages/omo-codex/plugin/skills/data-scientist/references/performance-benchmarks.md +37 -0
  199. package/packages/omo-codex/plugin/skills/data-scientist/references/uv-setup.md +78 -0
  200. package/packages/omo-codex/plugin/skills/data-scientist/scripts/quick-query.py +111 -0
  201. package/packages/omo-codex/plugin/skills/data-scientist/scripts/setup-uv.ps1 +53 -0
  202. package/packages/omo-codex/plugin/skills/data-scientist/scripts/setup-uv.sh +60 -0
  203. package/packages/omo-codex/plugin/skills/debugging/SKILL.md +1 -1
  204. package/packages/omo-codex/plugin/skills/frontend/ATTRIBUTION.md +7 -0
  205. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +4 -1
  206. package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +8 -0
  207. package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +14 -1
  208. package/packages/omo-codex/plugin/skills/frontend/references/design/interaction-skill.md +144 -0
  209. package/packages/omo-codex/plugin/skills/programming/SKILL.md +1 -2
  210. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +17 -0
  211. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +1 -1
  212. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +121 -11
  213. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +7 -0
  214. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +12 -0
  215. package/packages/omo-codex/scripts/install-dist/install-local.mjs +24 -5
  216. package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +4 -3
  217. package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +3 -1
  218. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/aside_scanner.py +140 -0
  219. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +3 -0
  220. package/packages/shared-skills/skills/data-scientist/SKILL.md +243 -0
  221. package/packages/shared-skills/skills/data-scientist/references/common-scenarios.md +176 -0
  222. package/packages/shared-skills/skills/data-scientist/references/execution-templates.md +197 -0
  223. package/packages/shared-skills/skills/data-scientist/references/integration-patterns.md +153 -0
  224. package/packages/shared-skills/skills/data-scientist/references/performance-benchmarks.md +37 -0
  225. package/packages/shared-skills/skills/data-scientist/references/uv-setup.md +78 -0
  226. package/packages/shared-skills/skills/data-scientist/scripts/quick-query.py +111 -0
  227. package/packages/shared-skills/skills/data-scientist/scripts/setup-uv.ps1 +53 -0
  228. package/packages/shared-skills/skills/data-scientist/scripts/setup-uv.sh +60 -0
  229. package/packages/shared-skills/skills/debugging/SKILL.md +1 -1
  230. package/packages/shared-skills/skills/frontend/ATTRIBUTION.md +7 -0
  231. package/packages/shared-skills/skills/frontend/SKILL.md +4 -1
  232. package/packages/shared-skills/skills/frontend/references/design/README.md +8 -0
  233. package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +14 -1
  234. package/packages/shared-skills/skills/frontend/references/design/interaction-skill.md +144 -0
  235. package/packages/shared-skills/skills/programming/SKILL.md +1 -2
  236. package/packages/shared-skills/skills/ulw-plan/SKILL.md +1 -1
  237. package/packages/shared-skills/skills/ulw-research/SKILL.md +122 -11
  238. package/dist/plugin-config/layered-config-loader.d.ts +0 -2
  239. package/dist/plugin-config/single-config-loader.d.ts +0 -4
  240. package/dist/shared/migrate-legacy-config-file.d.ts +0 -1
  241. package/dist/shared/migration/config-migration.d.ts +0 -1
@@ -6,6 +6,11 @@ import { join } from "node:path";
6
6
  import { CODEGRAPH_PINNED_VERSION } from "../../../../../utils/src/codegraph/manifest.ts";
7
7
  import { resolveCodegraphCommandInvocation, runCodegraphSessionStartWorker } from "../src/hook.ts";
8
8
 
9
+ function writeProjectDatabase(workspace: string): void {
10
+ mkdirSync(join(workspace, ".codegraph"), { recursive: true });
11
+ writeFileSync(join(workspace, ".codegraph", "codegraph.db"), "fixture");
12
+ }
13
+
9
14
  describe("CodeGraph SessionStart worker flow", () => {
10
15
  it("#given install_dir has the pinned platform binary #when worker resolves provisioned CodeGraph #then it uses that launcher", async () => {
11
16
  // given
@@ -47,9 +52,11 @@ describe("CodeGraph SessionStart worker flow", () => {
47
52
  const provisioned = options?.provisioned?.() ?? null;
48
53
  return { argsPrefix: [], command: provisioned ?? "missing-codegraph", exists: provisioned !== null, source: provisioned === null ? "path" : "provisioned" };
49
54
  },
55
+ resolveManagedBin: () => binPath,
50
56
  runCommand: (_projectRoot, command, args, options) => {
51
57
  calls.push({ args, command, env: options.env });
52
- return Promise.resolve({ exitCode: 0, stdout: calls.length === 1 ? '{"initialized":false}' : "", timedOut: false });
58
+ writeProjectDatabase(workspace);
59
+ return Promise.resolve({ exitCode: 0, stdout: "", timedOut: false });
53
60
  },
54
61
  },
55
62
  });
@@ -57,7 +64,6 @@ describe("CodeGraph SessionStart worker flow", () => {
57
64
  // then
58
65
  expect(result).toEqual({ action: "initialized" });
59
66
  expect(calls.map((call) => ({ args: [...call.args], command: call.command }))).toEqual([
60
- { args: ["status", "--json"], command: binPath },
61
67
  { args: ["init"], command: binPath },
62
68
  ]);
63
69
  expect(calls[0]?.env["CODEGRAPH_INSTALL_DIR"]).toBe(installDir);
@@ -74,11 +80,11 @@ describe("CodeGraph SessionStart worker flow", () => {
74
80
  const command = "C:\\Users\\test\\.omo\\codegraph\\bin\\codegraph.cmd";
75
81
 
76
82
  // when
77
- const invocation = resolveCodegraphCommandInvocation(command, ["status", "--json"], "win32");
83
+ const invocation = resolveCodegraphCommandInvocation(command, ["init"], "win32");
78
84
 
79
85
  // then
80
86
  expect(invocation).toEqual({
81
- args: ["/d", "/s", "/c", command, "status", "--json"],
87
+ args: ["/d", "/s", "/c", command, "init"],
82
88
  command: "cmd.exe",
83
89
  });
84
90
  });
@@ -88,11 +94,11 @@ describe("CodeGraph SessionStart worker flow", () => {
88
94
  const command = "C:\\Users\\test\\.omo\\codegraph\\bin\\codegraph.cjs";
89
95
 
90
96
  // when
91
- const invocation = resolveCodegraphCommandInvocation(command, ["status", "--json"], "win32");
97
+ const invocation = resolveCodegraphCommandInvocation(command, ["init"], "win32");
92
98
 
93
99
  // then
94
100
  expect(invocation).toEqual({
95
- args: [command, "status", "--json"],
101
+ args: [command, "init"],
96
102
  command: process.execPath,
97
103
  });
98
104
  });
@@ -108,51 +114,47 @@ describe("CodeGraph SessionStart worker flow", () => {
108
114
  expect(invocation).toEqual({ args: ["sync"], command });
109
115
  });
110
116
 
111
- it("#given resolved CodeGraph status #when worker runs #then it runs status before init or sync", async () => {
112
- for (const scenario of [
113
- { action: "initialized", args: [["status", "--json"], ["init"]], stdout: '{"initialized":false}' },
114
- { action: "synced", args: [["status", "--json"], ["sync"]], stdout: '{"initialized":true}' },
115
- ] as const) {
116
- // given
117
- const workspace = mkdtempSync(join(tmpdir(), "omo-codegraph-status-"));
118
- const homeDir = mkdtempSync(join(tmpdir(), "omo-codegraph-status-home-"));
119
- const calls: { readonly args: readonly string[]; readonly command: string; readonly env: Record<string, string> }[] = [];
120
- const outcomes: unknown[] = [];
121
- try {
122
- // when
123
- const result = await runCodegraphSessionStartWorker({
124
- config: { codegraph: { enabled: true, install_dir: "/tmp/codegraph-install" }, sources: [], trustedCodegraphInstallDir: "/tmp/codegraph-install", warnings: [] },
125
- nodeVersion: "22.14.0",
126
- cwd: workspace,
127
- env: { HOME: homeDir },
128
- logOutcome: (outcome) => outcomes.push(outcome),
129
- deps: {
130
- ensureGitignored: () => true,
131
- ensureProvisioned: () => Promise.resolve({ binPath: "/tmp/codegraph", provisioned: true }),
132
- prepareWorkspace: () => ({
133
- dataDir: join(homeDir, ".omo/codegraph/projects/test"),
134
- dataRoot: join(homeDir, ".omo/codegraph"),
135
- linked: true,
136
- mode: "global-linked",
137
- projectLink: join(workspace, ".codegraph"),
138
- }),
139
- resolveCommand: () => ({ argsPrefix: [], command: "/tmp/codegraph", exists: true, source: "path" }),
140
- runCommand: (_projectRoot, command, args, options) => {
141
- calls.push({ args, command, env: options.env });
142
- return Promise.resolve({ exitCode: 0, stdout: calls.length === 1 ? scenario.stdout : "", timedOut: false });
143
- },
117
+ it("#given an uninitialized exact project #when worker runs #then it invokes init directly without a status command", async () => {
118
+ // given
119
+ const workspace = mkdtempSync(join(tmpdir(), "omo-codegraph-init-direct-"));
120
+ const homeDir = mkdtempSync(join(tmpdir(), "omo-codegraph-init-direct-home-"));
121
+ const calls: { readonly args: readonly string[]; readonly env: Record<string, string> }[] = [];
122
+ const outcomes: unknown[] = [];
123
+ try {
124
+ // when
125
+ const result = await runCodegraphSessionStartWorker({
126
+ config: { codegraph: { enabled: true, install_dir: "/tmp/codegraph-install" }, sources: [], trustedCodegraphInstallDir: "/tmp/codegraph-install", warnings: [] },
127
+ nodeVersion: "22.14.0",
128
+ cwd: workspace,
129
+ env: { HOME: homeDir },
130
+ logOutcome: (outcome) => outcomes.push(outcome),
131
+ deps: {
132
+ ensureGitignored: () => true,
133
+ ensureProvisioned: () => Promise.resolve({ binPath: "/tmp/codegraph", provisioned: true }),
134
+ prepareWorkspace: () => ({
135
+ dataDir: join(homeDir, ".omo/codegraph/projects/test"),
136
+ dataRoot: join(homeDir, ".omo/codegraph"),
137
+ linked: true,
138
+ mode: "global-linked",
139
+ projectLink: join(workspace, ".codegraph"),
140
+ }),
141
+ resolveCommand: () => ({ argsPrefix: [], command: "/tmp/codegraph", exists: true, source: "path" }),
142
+ runCommand: (_projectRoot, _command, args, options) => {
143
+ calls.push({ args, env: options.env });
144
+ writeProjectDatabase(workspace);
145
+ return Promise.resolve({ exitCode: 0, stdout: "", timedOut: false });
144
146
  },
145
- });
147
+ },
148
+ });
146
149
 
147
- // then
148
- expect(result).toEqual({ action: scenario.action });
149
- expect(calls.map((call) => [...call.args])).toEqual(scenario.args.map((args) => [...args]));
150
- expect(calls[0]?.env["CODEGRAPH_INSTALL_DIR"]).toBe("/tmp/codegraph-install");
151
- expect(outcomes).toEqual([{ action: scenario.action, exitCode: 0, projectRoot: workspace, source: "path", timedOut: false }]);
152
- } finally {
153
- rmSync(workspace, { recursive: true, force: true });
154
- rmSync(homeDir, { recursive: true, force: true });
155
- }
150
+ // then
151
+ expect(result).toEqual({ action: "initialized" });
152
+ expect(calls.map((call) => [...call.args])).toEqual([["init"]]);
153
+ expect(calls[0]?.env["CODEGRAPH_INSTALL_DIR"]).toBe("/tmp/codegraph-install");
154
+ expect(outcomes).toEqual([{ action: "initialized", exitCode: 0, projectRoot: workspace, source: "path", timedOut: false }]);
155
+ } finally {
156
+ rmSync(workspace, { recursive: true, force: true });
157
+ rmSync(homeDir, { recursive: true, force: true });
156
158
  }
157
159
  });
158
160
 
@@ -182,13 +184,14 @@ describe("CodeGraph SessionStart worker flow", () => {
182
184
  resolveCommand: () => ({ argsPrefix: [], command: "/tmp/codegraph", exists: true, source: "path" }),
183
185
  runCommand: (_projectRoot, command, args, options) => {
184
186
  calls.push({ args, command, env: options.env });
185
- return Promise.resolve({ exitCode: 0, stdout: calls.length === 1 ? '{"initialized":true}' : "", timedOut: false });
187
+ writeProjectDatabase(workspace);
188
+ return Promise.resolve({ exitCode: 0, stdout: "", timedOut: false });
186
189
  },
187
190
  },
188
191
  });
189
192
 
190
193
  // then
191
- expect(result).toEqual({ action: "synced" });
194
+ expect(result).toEqual({ action: "initialized" });
192
195
  expect(calls.length).toBeGreaterThan(0);
193
196
  for (const call of calls) {
194
197
  expect(call.env["CODEGRAPH_NO_DAEMON"]).toBe("1");
@@ -211,7 +214,8 @@ describe("CodeGraph SessionStart worker flow", () => {
211
214
  const fakeCodegraphScript = [
212
215
  "const fs = require('node:fs');",
213
216
  `fs.appendFileSync(${JSON.stringify(logPath)}, JSON.stringify({install:process.env.CODEGRAPH_INSTALL_DIR,openai:process.env.OPENAI_API_KEY}) + '\\n');`,
214
- "process.stdout.write('{\"initialized\":true}');",
217
+ "fs.mkdirSync('.codegraph', { recursive: true });",
218
+ "fs.writeFileSync('.codegraph/codegraph.db', 'fixture');",
215
219
  ].join("");
216
220
 
217
221
  // when
@@ -238,15 +242,12 @@ describe("CodeGraph SessionStart worker flow", () => {
238
242
  });
239
243
 
240
244
  // then
241
- expect(result).toEqual({ action: "synced" });
245
+ expect(result).toEqual({ action: "initialized" });
242
246
  const captured = readFileSync(logPath, "utf8")
243
247
  .trim()
244
248
  .split("\n")
245
249
  .map((line) => JSON.parse(line));
246
- expect(captured).toEqual([
247
- { install: join(homeDir, ".omo", "codegraph") },
248
- { install: join(homeDir, ".omo", "codegraph") },
249
- ]);
250
+ expect(captured).toEqual([{ install: join(homeDir, ".omo", "codegraph") }]);
250
251
  } finally {
251
252
  if (originalOpenAiKey === undefined) delete process.env["OPENAI_API_KEY"];
252
253
  else process.env["OPENAI_API_KEY"] = originalOpenAiKey;
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 30,
11
- "statusMessage": "(OmO 4.19.2) Checking Comments"
11
+ "statusMessage": "(OmO 4.19.4) Checking Comments"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-comment-checker",
3
- "version": "4.19.2",
3
+ "version": "4.19.4",
4
4
  "description": "Codex plugin that runs comment-checker after edit-like PostToolUse hooks.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
10
10
  "timeout": 5,
11
- "statusMessage": "(OmO 4.19.2) Recommending Git Bash MCP"
11
+ "statusMessage": "(OmO 4.19.4) Recommending Git Bash MCP"
12
12
  }
13
13
  ]
14
14
  }
@@ -20,7 +20,7 @@
20
20
  "type": "command",
21
21
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
22
22
  "timeout": 5,
23
- "statusMessage": "(OmO 4.19.2) Resetting Git Bash MCP Reminder"
23
+ "statusMessage": "(OmO 4.19.4) Resetting Git Bash MCP Reminder"
24
24
  }
25
25
  ]
26
26
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-git-bash-hook",
3
- "version": "4.19.2",
3
+ "version": "4.19.4",
4
4
  "description": "Codex hook component that reminds Windows sessions to prefer the OMO git_bash MCP.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/components/lazycodex-executor-verify/dist/cli.js\" hook subagent-stop",
10
10
  "timeout": 10,
11
- "statusMessage": "(OmO 4.19.2) Verifying LazyCodex Executor Evidence"
11
+ "statusMessage": "(OmO 4.19.4) Verifying LazyCodex Executor Evidence"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-lazycodex-executor-verify",
3
- "version": "4.19.2",
3
+ "version": "4.19.4",
4
4
  "description": "Codex SubagentStop evidence verifier for LazyCodex executor completions.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "version": "4.19.2",
4
- "inputDigest": "sha256:e3b790af9754f934c7eeebe6a7d023ac12cdff1e9f8f519e30fbcb53ada9ac14",
3
+ "version": "4.19.4",
4
+ "inputDigest": "sha256:a327f51e89b7da87ac4e114b07551b3345e45ad919c6ca2ebed067aaa954b004",
5
5
  "outputs": [
6
6
  {
7
7
  "path": "cli.d.ts",
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 60,
11
- "statusMessage": "(OmO 4.19.2) Checking LSP Diagnostics"
11
+ "statusMessage": "(OmO 4.19.4) Checking LSP Diagnostics"
12
12
  }
13
13
  ]
14
14
  }
@@ -21,7 +21,7 @@
21
21
  "type": "command",
22
22
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
23
23
  "timeout": 5,
24
- "statusMessage": "(OmO 4.19.2) Resetting LSP Diagnostics Cache"
24
+ "statusMessage": "(OmO 4.19.4) Resetting LSP Diagnostics Cache"
25
25
  }
26
26
  ]
27
27
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-lsp",
3
- "version": "4.19.2",
3
+ "version": "4.19.4",
4
4
  "description": "Codex plugin that exposes Language Server Protocol tools and post-edit diagnostics.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -31,7 +31,7 @@ var __toESM = (mod, isNodeMode, target) => {
31
31
  };
32
32
  var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
33
33
 
34
- // ../../../node_modules/.bun/picomatch@4.0.4/node_modules/picomatch/lib/constants.js
34
+ // ../../../node_modules/.bun/picomatch@4.0.5/node_modules/picomatch/lib/constants.js
35
35
  var require_constants = __commonJS((exports, module) => {
36
36
  var WIN_SLASH = "\\\\/";
37
37
  var WIN_NO_SLASH = `[^${WIN_SLASH}]`;
@@ -176,7 +176,7 @@ var require_constants = __commonJS((exports, module) => {
176
176
  };
177
177
  });
178
178
 
179
- // ../../../node_modules/.bun/picomatch@4.0.4/node_modules/picomatch/lib/utils.js
179
+ // ../../../node_modules/.bun/picomatch@4.0.5/node_modules/picomatch/lib/utils.js
180
180
  var require_utils = __commonJS((exports) => {
181
181
  var {
182
182
  REGEX_BACKSLASH,
@@ -239,7 +239,7 @@ var require_utils = __commonJS((exports) => {
239
239
  };
240
240
  });
241
241
 
242
- // ../../../node_modules/.bun/picomatch@4.0.4/node_modules/picomatch/lib/scan.js
242
+ // ../../../node_modules/.bun/picomatch@4.0.5/node_modules/picomatch/lib/scan.js
243
243
  var require_scan = __commonJS((exports, module) => {
244
244
  var utils = require_utils();
245
245
  var {
@@ -554,7 +554,7 @@ var require_scan = __commonJS((exports, module) => {
554
554
  module.exports = scan;
555
555
  });
556
556
 
557
- // ../../../node_modules/.bun/picomatch@4.0.4/node_modules/picomatch/lib/parse.js
557
+ // ../../../node_modules/.bun/picomatch@4.0.5/node_modules/picomatch/lib/parse.js
558
558
  var require_parse = __commonJS((exports, module) => {
559
559
  var constants = require_constants();
560
560
  var utils = require_utils();
@@ -730,7 +730,11 @@ var require_parse = __commonJS((exports, module) => {
730
730
  }
731
731
  }
732
732
  };
733
- var getStarExtglobSequenceOutput = (pattern) => {
733
+ var buildCharClassStar = (chars) => {
734
+ const source = chars.length === 1 ? utils.escapeRegex(chars[0]) : `[${chars.map((ch) => utils.escapeRegex(ch)).join("")}]`;
735
+ return `${source}*`;
736
+ };
737
+ var getStarExtglobSequenceChars = (pattern) => {
734
738
  let index = 0;
735
739
  const chars = [];
736
740
  while (index < pattern.length) {
@@ -752,8 +756,7 @@ var require_parse = __commonJS((exports, module) => {
752
756
  if (chars.length < 1) {
753
757
  return;
754
758
  }
755
- const source = chars.length === 1 ? utils.escapeRegex(chars[0]) : `[${chars.map((ch) => utils.escapeRegex(ch)).join("")}]`;
756
- return `${source}*`;
759
+ return chars;
757
760
  };
758
761
  var repeatedExtglobRecursion = (pattern) => {
759
762
  let depth = 0;
@@ -777,15 +780,29 @@ var require_parse = __commonJS((exports, module) => {
777
780
  return { risky: true };
778
781
  }
779
782
  }
783
+ const safeChars = [];
784
+ let sawStarSequence = false;
785
+ let combinable = true;
780
786
  for (const branch of branches) {
781
- const safeOutput = getStarExtglobSequenceOutput(branch);
782
- if (safeOutput) {
783
- return { risky: true, safeOutput };
787
+ const chars = getStarExtglobSequenceChars(branch);
788
+ if (chars) {
789
+ sawStarSequence = true;
790
+ safeChars.push(...chars);
791
+ continue;
792
+ }
793
+ const literal = normalizeSimpleBranch(branch);
794
+ if (literal && literal.length === 1) {
795
+ safeChars.push(literal);
796
+ continue;
784
797
  }
798
+ combinable = false;
785
799
  if (repeatedExtglobRecursion(branch) > max) {
786
800
  return { risky: true };
787
801
  }
788
802
  }
803
+ if (sawStarSequence) {
804
+ return combinable ? { risky: true, safeOutput: buildCharClassStar([...new Set(safeChars)]) } : { risky: true };
805
+ }
789
806
  return { risky: false };
790
807
  };
791
808
  var parse = (input, options) => {
@@ -1556,7 +1573,7 @@ var require_parse = __commonJS((exports, module) => {
1556
1573
  module.exports = parse;
1557
1574
  });
1558
1575
 
1559
- // ../../../node_modules/.bun/picomatch@4.0.4/node_modules/picomatch/lib/picomatch.js
1576
+ // ../../../node_modules/.bun/picomatch@4.0.5/node_modules/picomatch/lib/picomatch.js
1560
1577
  var require_picomatch = __commonJS((exports, module) => {
1561
1578
  var scan = require_scan();
1562
1579
  var parse = require_parse();
@@ -1641,9 +1658,9 @@ var require_picomatch = __commonJS((exports, module) => {
1641
1658
  }
1642
1659
  return { isMatch: Boolean(match), match, output };
1643
1660
  };
1644
- picomatch.matchBase = (input, glob, options) => {
1661
+ picomatch.matchBase = (input, glob, options, posix = options && options.windows) => {
1645
1662
  const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);
1646
- return regex.test(utils.basename(input));
1663
+ return regex.test(utils.basename(input, { windows: posix }));
1647
1664
  };
1648
1665
  picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);
1649
1666
  picomatch.parse = (pattern, options) => {
@@ -1696,7 +1713,7 @@ var require_picomatch = __commonJS((exports, module) => {
1696
1713
  module.exports = picomatch;
1697
1714
  });
1698
1715
 
1699
- // ../../../node_modules/.bun/picomatch@4.0.4/node_modules/picomatch/index.js
1716
+ // ../../../node_modules/.bun/picomatch@4.0.5/node_modules/picomatch/index.js
1700
1717
  var require_picomatch2 = __commonJS((exports, module) => {
1701
1718
  var pico = require_picomatch();
1702
1719
  var utils = require_utils();
@@ -3866,7 +3883,7 @@ var MODEL_CONTEXT_BUDGETS = [
3866
3883
  effectivePercent: DEFAULT_EFFECTIVE_CONTEXT_WINDOW_PERCENT
3867
3884
  },
3868
3885
  { slug: "gpt-5.5", contextWindowTokens: 272000, effectivePercent: DEFAULT_EFFECTIVE_CONTEXT_WINDOW_PERCENT },
3869
- { slug: "gpt-5.4-mini", contextWindowTokens: 272000, effectivePercent: DEFAULT_EFFECTIVE_CONTEXT_WINDOW_PERCENT },
3886
+ { slug: "gpt-5.6-luna-fast", contextWindowTokens: 272000, effectivePercent: DEFAULT_EFFECTIVE_CONTEXT_WINDOW_PERCENT },
3870
3887
  {
3871
3888
  slug: "codex-auto-review",
3872
3889
  contextWindowTokens: 272000,
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook session-start",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 4.19.2) Loading Project Rules"
10
+ "statusMessage": "(OmO 4.19.4) Loading Project Rules"
11
11
  }
12
12
  ]
13
13
  }
@@ -19,7 +19,7 @@
19
19
  "type": "command",
20
20
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
21
21
  "timeout": 10,
22
- "statusMessage": "(OmO 4.19.2) Loading Project Rules"
22
+ "statusMessage": "(OmO 4.19.4) Loading Project Rules"
23
23
  }
24
24
  ]
25
25
  }
@@ -32,7 +32,7 @@
32
32
  "type": "command",
33
33
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
34
34
  "timeout": 10,
35
- "statusMessage": "(OmO 4.19.2) Matching Project Rules"
35
+ "statusMessage": "(OmO 4.19.4) Matching Project Rules"
36
36
  }
37
37
  ]
38
38
  }
@@ -45,7 +45,7 @@
45
45
  "type": "command",
46
46
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
47
47
  "timeout": 10,
48
- "statusMessage": "(OmO 4.19.2) Resetting Project Rule Cache"
48
+ "statusMessage": "(OmO 4.19.4) Resetting Project Rule Cache"
49
49
  }
50
50
  ]
51
51
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-rules",
3
- "version": "4.19.2",
3
+ "version": "4.19.4",
4
4
  "description": "Codex plugin that injects project rule files into model context through lifecycle hooks.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -33,7 +33,7 @@ const MODEL_CONTEXT_BUDGETS: readonly ModelContextBudget[] = [
33
33
  effectivePercent: DEFAULT_EFFECTIVE_CONTEXT_WINDOW_PERCENT,
34
34
  },
35
35
  { slug: "gpt-5.5", contextWindowTokens: 272_000, effectivePercent: DEFAULT_EFFECTIVE_CONTEXT_WINDOW_PERCENT },
36
- { slug: "gpt-5.4-mini", contextWindowTokens: 272_000, effectivePercent: DEFAULT_EFFECTIVE_CONTEXT_WINDOW_PERCENT },
36
+ { slug: "gpt-5.6-luna-fast", contextWindowTokens: 272_000, effectivePercent: DEFAULT_EFFECTIVE_CONTEXT_WINDOW_PERCENT },
37
37
  {
38
38
  slug: "codex-auto-review",
39
39
  contextWindowTokens: 272_000,
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/start-work-continuation/dist/cli.js\" hook stop",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 4.19.2) Checking Start-Work Continuation"
10
+ "statusMessage": "(OmO 4.19.4) Checking Start-Work Continuation"
11
11
  }
12
12
  ]
13
13
  }
@@ -19,7 +19,7 @@
19
19
  "type": "command",
20
20
  "command": "node \"${PLUGIN_ROOT}/components/start-work-continuation/dist/cli.js\" hook subagent-stop",
21
21
  "timeout": 10,
22
- "statusMessage": "(OmO 4.19.2) Checking Start-Work Continuation"
22
+ "statusMessage": "(OmO 4.19.4) Checking Start-Work Continuation"
23
23
  }
24
24
  ]
25
25
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-start-work-continuation",
3
- "version": "4.19.2",
3
+ "version": "4.19.4",
4
4
  "description": "Codex Stop hook continuation injector for omo-codex start-work plans.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 10,
11
- "statusMessage": "(OmO 4.19.2) Checking Thread Title Hygiene"
11
+ "statusMessage": "(OmO 4.19.4) Checking Thread Title Hygiene"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-teammode",
3
- "version": "4.19.2",
3
+ "version": "4.19.4",
4
4
  "description": "Codex team-mode hook component that keeps background thread titles descriptive after create_thread.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook session-start",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 4.19.2) Recording Session Telemetry"
10
+ "statusMessage": "(OmO 4.19.4) Recording Session Telemetry"
11
11
  }
12
12
  ]
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-telemetry",
3
- "version": "4.19.2",
3
+ "version": "4.19.4",
4
4
  "description": "Codex plugin component that emits omo-codex anonymous daily-active telemetry on SessionStart.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 4.19.2) Checking Ultrawork Trigger"
10
+ "statusMessage": "(OmO 4.19.4) Checking Ultrawork Trigger"
11
11
  }
12
12
  ]
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-ultrawork",
3
- "version": "4.19.2",
3
+ "version": "4.19.4",
4
4
  "description": "Codex plugin that injects the ultrawork orchestration directive and ships LazyCodex planning, review, QA, and gate agent roles.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ulw-plan
3
- description: "MUST USE for planning before coding when design uncertainty remains after discovery: ambiguous scope, competing decompositions, unclear boundaries, uncertain dependency ordering, architecture decisions, a vague 'just make it good / figure out what to build' brief, or any request to plan, interview, or break work down. Explore-first planning consultant (Prometheus) that grounds in the codebase, asks only the forks exploration cannot resolve - or researches them to best practice when the intent is fuzzy - waits for explicit approval, then writes ONE decision-complete work plan a worker executes with zero further interview. Triggers: ulw-plan, plan this, make a plan, plan before coding, interview me, break this down, start planning, plan mode, just make it good, figure out what to build."
3
+ description: "ACTIVATES ONLY on an explicit user request for the ulw-plan workflow: the user themselves saying ulw-plan, ulw plan, /skill:ulw-plan, or asking in their own words for a work plan before coding. NEVER self-activates: a bare ulw/ultrawork run, an agent-side routing decision, or reading this file is not a request, and the plan-gated reviewers (metis/momus) stay locked without a user request plus a written .omo/plans plan file. Explore-first planning consultant (Prometheus) that grounds in the codebase, asks only the forks exploration cannot resolve - or researches them to best practice when the intent is fuzzy - waits for explicit approval, then writes ONE decision-complete work plan a worker executes with zero further interview. Triggers: ulw-plan, ulw plan, plan this, make a plan, plan before coding, interview me, break this down, start planning, plan mode."
4
4
  metadata:
5
5
  short-description: Explore-first planning consultant that waits for your okay before planning
6
6
  ---
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit --with-ultrawork",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 4.19.2) Checking Ulw-Loop Steering"
10
+ "statusMessage": "(OmO 4.19.4) Checking Ulw-Loop Steering"
11
11
  }
12
12
  ]
13
13
  }
@@ -20,7 +20,7 @@
20
20
  "type": "command",
21
21
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
22
22
  "timeout": 5,
23
- "statusMessage": "(OmO 4.19.2) Enforcing Unlimited Ulw-Loop Budget"
23
+ "statusMessage": "(OmO 4.19.4) Enforcing Unlimited Ulw-Loop Budget"
24
24
  }
25
25
  ]
26
26
  },
@@ -31,7 +31,7 @@
31
31
  "type": "command",
32
32
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use-spawn",
33
33
  "timeout": 5,
34
- "statusMessage": "(OmO 4.19.2) Guarding Ulw-Loop Spawns"
34
+ "statusMessage": "(OmO 4.19.4) Guarding Ulw-Loop Spawns"
35
35
  }
36
36
  ]
37
37
  }
@@ -43,7 +43,7 @@
43
43
  "type": "command",
44
44
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook stop",
45
45
  "timeout": 10,
46
- "statusMessage": "(OmO 4.19.2) Checking Ulw-Loop Resume"
46
+ "statusMessage": "(OmO 4.19.4) Checking Ulw-Loop Resume"
47
47
  }
48
48
  ]
49
49
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-ulw-loop",
3
- "version": "4.19.2",
3
+ "version": "4.19.4",
4
4
  "description": "Codex plugin: durable repo-native multi-goal orchestration with embedded success criteria and observable evidence audit.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",