lazycodex-ai 5.1.5 → 5.1.7

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 (67) hide show
  1. package/dist/cli/index.js +41 -17
  2. package/dist/cli/run/runnable-agent-resolver.d.ts +3 -0
  3. package/dist/cli-node/index.js +41 -17
  4. package/package.json +1 -1
  5. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  6. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +7 -0
  7. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  8. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  9. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  10. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  11. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  12. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  13. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  14. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  15. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  16. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  17. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  18. package/packages/omo-codex/plugin/components/rules/README.md +0 -1
  19. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-5.5.md +1 -1
  20. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-5.6.md +1 -1
  21. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-6.md +1 -1
  22. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  23. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  24. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  25. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  26. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  27. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  28. package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +25 -18
  29. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  30. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  31. package/packages/omo-codex/plugin/components/ultrawork/src/directive-content.ts +1 -1
  32. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  33. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  34. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +25 -18
  35. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  36. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  37. package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-role-matrix.test.ts +16 -0
  38. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  39. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  40. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  41. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  42. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  43. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  44. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  45. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  46. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  47. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  48. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  49. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  50. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  51. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  52. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  53. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  54. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  55. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  56. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  57. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  58. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  59. package/packages/omo-codex/plugin/package-lock.json +12 -12
  60. package/packages/omo-codex/plugin/package.json +1 -1
  61. package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
  62. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +25 -18
  63. package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +1 -1
  64. package/packages/omo-codex/scripts/install-dist/install-local.mjs +9 -2
  65. package/packages/prompts-core/prompts/ultrawork/codex.md +25 -18
  66. package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
  67. package/packages/shared-skills/skills/ulw-execute/SKILL.md +1 -1
package/dist/cli/index.js CHANGED
@@ -64,7 +64,7 @@ var package_default;
64
64
  var init_package = __esm(() => {
65
65
  package_default = {
66
66
  name: "oh-my-opencode",
67
- version: "5.1.5",
67
+ version: "5.1.7",
68
68
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
69
69
  main: "./dist/index.js",
70
70
  types: "dist/index.d.ts",
@@ -241,7 +241,7 @@ var init_package = __esm(() => {
241
241
  },
242
242
  devDependencies: {
243
243
  "@clack/prompts": "^1.8.1",
244
- "@code-yeongyu/senpi": "2026.9.29-5",
244
+ "@code-yeongyu/senpi": "2026.9.30",
245
245
  "@modelcontextprotocol/sdk": "^1.30.0",
246
246
  "@oh-my-opencode/agents-md-core": "workspace:*",
247
247
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
@@ -299,18 +299,18 @@ var init_package = __esm(() => {
299
299
  typescript: "^7.0.2"
300
300
  },
301
301
  optionalDependencies: {
302
- "oh-my-opencode-darwin-arm64": "5.1.5",
303
- "oh-my-opencode-darwin-x64": "5.1.5",
304
- "oh-my-opencode-darwin-x64-baseline": "5.1.5",
305
- "oh-my-opencode-linux-arm64": "5.1.5",
306
- "oh-my-opencode-linux-arm64-musl": "5.1.5",
307
- "oh-my-opencode-linux-x64": "5.1.5",
308
- "oh-my-opencode-linux-x64-baseline": "5.1.5",
309
- "oh-my-opencode-linux-x64-musl": "5.1.5",
310
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.5",
311
- "oh-my-opencode-windows-arm64": "5.1.5",
312
- "oh-my-opencode-windows-x64": "5.1.5",
313
- "oh-my-opencode-windows-x64-baseline": "5.1.5"
302
+ "oh-my-opencode-darwin-arm64": "5.1.7",
303
+ "oh-my-opencode-darwin-x64": "5.1.7",
304
+ "oh-my-opencode-darwin-x64-baseline": "5.1.7",
305
+ "oh-my-opencode-linux-arm64": "5.1.7",
306
+ "oh-my-opencode-linux-arm64-musl": "5.1.7",
307
+ "oh-my-opencode-linux-x64": "5.1.7",
308
+ "oh-my-opencode-linux-x64-baseline": "5.1.7",
309
+ "oh-my-opencode-linux-x64-musl": "5.1.7",
310
+ "oh-my-opencode-linux-x64-musl-baseline": "5.1.7",
311
+ "oh-my-opencode-windows-arm64": "5.1.7",
312
+ "oh-my-opencode-windows-x64": "5.1.7",
313
+ "oh-my-opencode-windows-x64-baseline": "5.1.7"
314
314
  },
315
315
  overrides: {
316
316
  hono: "^4.13.8",
@@ -89377,7 +89377,7 @@ var package_default2;
89377
89377
  var init_package2 = __esm(() => {
89378
89378
  package_default2 = {
89379
89379
  name: "@oh-my-opencode/omo-codex",
89380
- version: "5.1.5",
89380
+ version: "5.1.7",
89381
89381
  type: "module",
89382
89382
  private: true,
89383
89383
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -95097,6 +95097,12 @@ ${featureName} = true
95097
95097
  }
95098
95098
  return replaceOrInsertSetting(config, section, featureName, "true");
95099
95099
  }
95100
+ function removeFeature(config, featureName) {
95101
+ const section = findTomlSection(config, "features");
95102
+ if (section !== null)
95103
+ return removeSetting(config, section, featureName);
95104
+ return removeRootSetting(config, `features.${featureName}`);
95105
+ }
95100
95106
 
95101
95107
  // packages/omo-codex/src/install/codex-config-marketplaces.ts
95102
95108
  var SISYPHUS_LEGACY_MARKETPLACES = ["lazycodex", "code-yeongyu-codex-plugins"];
@@ -95689,6 +95695,7 @@ async function updateCodexConfig(input) {
95689
95695
  config = ensureFeatureEnabled(config, "plugins");
95690
95696
  config = ensureFeatureEnabled(config, "plugin_hooks");
95691
95697
  config = ensureFeatureEnabled(config, "multi_agent");
95698
+ config = removeFeature(config, "child_agents_md");
95692
95699
  config = removeUnsupportedCodexMultiAgentModeConfig(config);
95693
95700
  config = ensureCodexReasoningConfig(config, applyReasoningOverride(await readCodexModelCatalog(input.repoRoot), input.reasoning));
95694
95701
  config = ensureCodexMultiAgentV2Config(config, {
@@ -105346,12 +105353,25 @@ async function resolveRunnableRunAgent(client, resolvedAgent, config = {}) {
105346
105353
  })?.name;
105347
105354
  if (configuredAgent)
105348
105355
  return configuredAgent;
105349
- return agents.find((agent) => {
105356
+ const matched = agents.find((agent) => {
105350
105357
  if (!agent.name)
105351
105358
  return false;
105352
105359
  return getAgentConfigKey(agent.name) === resolvedConfigKey;
105353
- })?.name ?? resolvedAgent;
105360
+ })?.name;
105361
+ if (matched)
105362
+ return matched;
105363
+ const registered = agents.map((agent) => agent.name).filter((name) => Boolean(name));
105364
+ const parsedCategory = BuiltinCategoryNameSchema.safeParse(resolvedConfigKey);
105365
+ if (parsedCategory.success) {
105366
+ throw new UnknownRunAgentError(`"${resolvedAgent}" is a task() category, not a CLI agent. Categories: ${BuiltinCategoryNameSchema.options.join(", ")}. Runnable agents: ${registered.join(", ") || "(none)"}.`);
105367
+ }
105368
+ if (registered.length > 0) {
105369
+ throw new UnknownRunAgentError(`Unknown agent "${resolvedAgent}". Runnable agents: ${registered.join(", ")}.`);
105370
+ }
105371
+ return resolvedAgent;
105354
105372
  } catch (error) {
105373
+ if (error instanceof UnknownRunAgentError)
105374
+ throw error;
105355
105375
  if (!(error instanceof Error)) {
105356
105376
  throw error;
105357
105377
  }
@@ -105359,6 +105379,10 @@ async function resolveRunnableRunAgent(client, resolvedAgent, config = {}) {
105359
105379
  }
105360
105380
  }
105361
105381
 
105382
+ class UnknownRunAgentError extends Error {
105383
+ name = "UnknownRunAgentError";
105384
+ }
105385
+
105362
105386
  // packages/omo-opencode/src/cli/run/runner.ts
105363
105387
  var EVENT_PROCESSOR_SHUTDOWN_TIMEOUT_MS = 2000;
105364
105388
  async function waitForEventProcessorShutdown(eventProcessor, timeoutMs = EVENT_PROCESSOR_SHUTDOWN_TIMEOUT_MS) {
@@ -9,3 +9,6 @@ export interface RunAgentDisplayNameConfig {
9
9
  } | undefined>>;
10
10
  }
11
11
  export declare function resolveRunnableRunAgent(client: RunAgentListClient, resolvedAgent: string, config?: RunAgentDisplayNameConfig): Promise<string>;
12
+ export declare class UnknownRunAgentError extends Error {
13
+ readonly name = "UnknownRunAgentError";
14
+ }
@@ -65,7 +65,7 @@ var package_default;
65
65
  var init_package = __esm(() => {
66
66
  package_default = {
67
67
  name: "oh-my-opencode",
68
- version: "5.1.5",
68
+ version: "5.1.7",
69
69
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
70
70
  main: "./dist/index.js",
71
71
  types: "dist/index.d.ts",
@@ -242,7 +242,7 @@ var init_package = __esm(() => {
242
242
  },
243
243
  devDependencies: {
244
244
  "@clack/prompts": "^1.8.1",
245
- "@code-yeongyu/senpi": "2026.9.29-5",
245
+ "@code-yeongyu/senpi": "2026.9.30",
246
246
  "@modelcontextprotocol/sdk": "^1.30.0",
247
247
  "@oh-my-opencode/agents-md-core": "workspace:*",
248
248
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
@@ -300,18 +300,18 @@ var init_package = __esm(() => {
300
300
  typescript: "^7.0.2"
301
301
  },
302
302
  optionalDependencies: {
303
- "oh-my-opencode-darwin-arm64": "5.1.5",
304
- "oh-my-opencode-darwin-x64": "5.1.5",
305
- "oh-my-opencode-darwin-x64-baseline": "5.1.5",
306
- "oh-my-opencode-linux-arm64": "5.1.5",
307
- "oh-my-opencode-linux-arm64-musl": "5.1.5",
308
- "oh-my-opencode-linux-x64": "5.1.5",
309
- "oh-my-opencode-linux-x64-baseline": "5.1.5",
310
- "oh-my-opencode-linux-x64-musl": "5.1.5",
311
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.5",
312
- "oh-my-opencode-windows-arm64": "5.1.5",
313
- "oh-my-opencode-windows-x64": "5.1.5",
314
- "oh-my-opencode-windows-x64-baseline": "5.1.5"
303
+ "oh-my-opencode-darwin-arm64": "5.1.7",
304
+ "oh-my-opencode-darwin-x64": "5.1.7",
305
+ "oh-my-opencode-darwin-x64-baseline": "5.1.7",
306
+ "oh-my-opencode-linux-arm64": "5.1.7",
307
+ "oh-my-opencode-linux-arm64-musl": "5.1.7",
308
+ "oh-my-opencode-linux-x64": "5.1.7",
309
+ "oh-my-opencode-linux-x64-baseline": "5.1.7",
310
+ "oh-my-opencode-linux-x64-musl": "5.1.7",
311
+ "oh-my-opencode-linux-x64-musl-baseline": "5.1.7",
312
+ "oh-my-opencode-windows-arm64": "5.1.7",
313
+ "oh-my-opencode-windows-x64": "5.1.7",
314
+ "oh-my-opencode-windows-x64-baseline": "5.1.7"
315
315
  },
316
316
  overrides: {
317
317
  hono: "^4.13.8",
@@ -89456,7 +89456,7 @@ var package_default2;
89456
89456
  var init_package2 = __esm(() => {
89457
89457
  package_default2 = {
89458
89458
  name: "@oh-my-opencode/omo-codex",
89459
- version: "5.1.5",
89459
+ version: "5.1.7",
89460
89460
  type: "module",
89461
89461
  private: true,
89462
89462
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -95176,6 +95176,12 @@ ${featureName} = true
95176
95176
  }
95177
95177
  return replaceOrInsertSetting(config, section, featureName, "true");
95178
95178
  }
95179
+ function removeFeature(config, featureName) {
95180
+ const section = findTomlSection(config, "features");
95181
+ if (section !== null)
95182
+ return removeSetting(config, section, featureName);
95183
+ return removeRootSetting(config, `features.${featureName}`);
95184
+ }
95179
95185
 
95180
95186
  // packages/omo-codex/src/install/codex-config-marketplaces.ts
95181
95187
  var SISYPHUS_LEGACY_MARKETPLACES = ["lazycodex", "code-yeongyu-codex-plugins"];
@@ -95768,6 +95774,7 @@ async function updateCodexConfig(input) {
95768
95774
  config = ensureFeatureEnabled(config, "plugins");
95769
95775
  config = ensureFeatureEnabled(config, "plugin_hooks");
95770
95776
  config = ensureFeatureEnabled(config, "multi_agent");
95777
+ config = removeFeature(config, "child_agents_md");
95771
95778
  config = removeUnsupportedCodexMultiAgentModeConfig(config);
95772
95779
  config = ensureCodexReasoningConfig(config, applyReasoningOverride(await readCodexModelCatalog(input.repoRoot), input.reasoning));
95773
95780
  config = ensureCodexMultiAgentV2Config(config, {
@@ -105425,12 +105432,25 @@ async function resolveRunnableRunAgent(client, resolvedAgent, config = {}) {
105425
105432
  })?.name;
105426
105433
  if (configuredAgent)
105427
105434
  return configuredAgent;
105428
- return agents.find((agent) => {
105435
+ const matched = agents.find((agent) => {
105429
105436
  if (!agent.name)
105430
105437
  return false;
105431
105438
  return getAgentConfigKey(agent.name) === resolvedConfigKey;
105432
- })?.name ?? resolvedAgent;
105439
+ })?.name;
105440
+ if (matched)
105441
+ return matched;
105442
+ const registered = agents.map((agent) => agent.name).filter((name) => Boolean(name));
105443
+ const parsedCategory = BuiltinCategoryNameSchema.safeParse(resolvedConfigKey);
105444
+ if (parsedCategory.success) {
105445
+ throw new UnknownRunAgentError(`"${resolvedAgent}" is a task() category, not a CLI agent. Categories: ${BuiltinCategoryNameSchema.options.join(", ")}. Runnable agents: ${registered.join(", ") || "(none)"}.`);
105446
+ }
105447
+ if (registered.length > 0) {
105448
+ throw new UnknownRunAgentError(`Unknown agent "${resolvedAgent}". Runnable agents: ${registered.join(", ")}.`);
105449
+ }
105450
+ return resolvedAgent;
105433
105451
  } catch (error) {
105452
+ if (error instanceof UnknownRunAgentError)
105453
+ throw error;
105434
105454
  if (!(error instanceof Error)) {
105435
105455
  throw error;
105436
105456
  }
@@ -105438,6 +105458,10 @@ async function resolveRunnableRunAgent(client, resolvedAgent, config = {}) {
105438
105458
  }
105439
105459
  }
105440
105460
 
105461
+ class UnknownRunAgentError extends Error {
105462
+ name = "UnknownRunAgentError";
105463
+ }
105464
+
105441
105465
  // packages/omo-opencode/src/cli/run/runner.ts
105442
105466
  var EVENT_PROCESSOR_SHUTDOWN_TIMEOUT_MS = 2000;
105443
105467
  async function waitForEventProcessorShutdown(eventProcessor, timeoutMs = EVENT_PROCESSOR_SHUTDOWN_TIMEOUT_MS) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lazycodex-ai",
3
- "version": "5.1.5",
3
+ "version": "5.1.7",
4
4
  "description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
5
5
  "main": "./dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omo",
3
- "version": "5.1.5",
3
+ "version": "5.1.7",
4
4
  "description": "One Codex plugin namespace for Yeongyu's local Codex components.",
5
5
  "author": {
6
6
  "name": "Yeongyu Kim",
@@ -11223,6 +11223,12 @@ ${featureName} = true
11223
11223
  }
11224
11224
  return replaceOrInsertSetting(config, section, featureName, "true");
11225
11225
  }
11226
+ function removeFeature(config, featureName) {
11227
+ const section = findTomlSection(config, "features");
11228
+ if (section !== null)
11229
+ return removeSetting(config, section, featureName);
11230
+ return removeRootSetting(config, `features.${featureName}`);
11231
+ }
11226
11232
 
11227
11233
  // ../src/install/codex-config-marketplaces.ts
11228
11234
  var SISYPHUS_LEGACY_MARKETPLACES = ["lazycodex", "code-yeongyu-codex-plugins"];
@@ -11815,6 +11821,7 @@ async function updateCodexConfig(input) {
11815
11821
  config = ensureFeatureEnabled(config, "plugins");
11816
11822
  config = ensureFeatureEnabled(config, "plugin_hooks");
11817
11823
  config = ensureFeatureEnabled(config, "multi_agent");
11824
+ config = removeFeature(config, "child_agents_md");
11818
11825
  config = removeUnsupportedCodexMultiAgentModeConfig(config);
11819
11826
  config = ensureCodexReasoningConfig(config, applyReasoningOverride(await readCodexModelCatalog(input.repoRoot), input.reasoning));
11820
11827
  config = ensureCodexMultiAgentV2Config(config, {
@@ -8,7 +8,7 @@
8
8
  "command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
9
9
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
10
10
  "timeout": 30,
11
- "statusMessage": "(OmO 5.1.5) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 5.1.7) Checking Bootstrap Provisioning"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-bootstrap",
3
- "version": "5.1.5",
3
+ "version": "5.1.7",
4
4
  "description": "Codex SessionStart bootstrap component that provisions LazyCodex runtime dependencies from a detached worker.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -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 5.1.5) Checking Comments"
11
+ "statusMessage": "(OmO 5.1.7) Checking Comments"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-comment-checker",
3
- "version": "5.1.5",
3
+ "version": "5.1.7",
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 5.1.5) Recommending Git Bash MCP"
11
+ "statusMessage": "(OmO 5.1.7) 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 5.1.5) Resetting Git Bash MCP Reminder"
23
+ "statusMessage": "(OmO 5.1.7) 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": "5.1.5",
3
+ "version": "5.1.7",
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 5.1.5) Verifying LazyCodex Executor Evidence"
11
+ "statusMessage": "(OmO 5.1.7) 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": "5.1.5",
3
+ "version": "5.1.7",
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": "5.1.5",
4
- "inputDigest": "sha256:ce1030fda9d0a09a2739fc8318901714ddc3c2245a9f5eb4cce5a6b327ddedcc",
3
+ "version": "5.1.7",
4
+ "inputDigest": "sha256:7628ae176ffa5fe1657de3e04fb8944d413281370d4c46b5df7085db4f1ec720",
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 5.1.5) Checking LSP Diagnostics"
11
+ "statusMessage": "(OmO 5.1.7) 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 5.1.5) Resetting LSP Diagnostics Cache"
24
+ "statusMessage": "(OmO 5.1.7) 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": "5.1.5",
3
+ "version": "5.1.7",
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",
@@ -59,7 +59,6 @@ It also enables:
59
59
  plugins = true
60
60
  plugin_hooks = true
61
61
  multi_agent = true
62
- child_agents_md = true
63
62
 
64
63
  [plugins."omo@sisyphuslabs"]
65
64
  enabled = true
@@ -41,7 +41,7 @@ omo-codex auto-runs LSP diagnostics after every edit and injects the result: any
41
41
 
42
42
  # Subagents
43
43
 
44
- Read-only Codex subagent roles live in `CODEX_HOME/agents/`. Spawn: `multi_agent_v1.spawn_agent({"message":"TASK: act as a <role>. ...","fork_context":false})`. If your tool list instead has a flat `spawn_agent` with a required `task_name` (`multi_agent_v2`): `spawn_agent({"task_name":"<lowercase_digits_underscores>","message":"TASK: act as a <role>. ...","fork_turns":"none"})` — finished agents end on their own; `wait_agent` takes only `timeout_ms`.
44
+ Read-only Codex subagent roles live in `CODEX_HOME/agents/`. Spawn: `multi_agent_v1.spawn_agent({"message":"TASK: act as a <role>. ...","agent_type":"<role>","fork_context":false})`. If your tool list instead has a flat `spawn_agent` with a required `task_name` (`multi_agent_v2`): `spawn_agent({"task_name":"<lowercase_digits_underscores>","message":"TASK: act as a <role>. ...","fork_turns":"none"})` — finished agents end on their own; `wait_agent` takes only `timeout_ms`.
45
45
 
46
46
  - `explorer` - codebase search
47
47
  - `librarian` - external docs, OSS code, API contracts
@@ -31,7 +31,7 @@ Waiting is not free: a status poll replays the whole accumulated context through
31
31
 
32
32
  # Subagents
33
33
 
34
- Read-only Codex subagent roles live in `CODEX_HOME/agents/`. Spawn: `multi_agent_v1.spawn_agent({"message":"TASK: act as a <role>. GOAL: ... STOP WHEN: ... EVIDENCE: ...","fork_context":false})`. If your tool list instead has a flat `spawn_agent` with a required `task_name` (`multi_agent_v2`): `spawn_agent({"task_name":"<lowercase_digits_underscores>","message":"TASK: act as a <role>. GOAL: ... STOP WHEN: ... EVIDENCE: ...","fork_turns":"none"})` - finished agents end on their own; `wait_agent` takes only `timeout_ms`.
34
+ Read-only Codex subagent roles live in `CODEX_HOME/agents/`. Spawn: `multi_agent_v1.spawn_agent({"message":"TASK: act as a <role>. GOAL: ... STOP WHEN: ... EVIDENCE: ...","agent_type":"<role>","fork_context":false})`. If your tool list instead has a flat `spawn_agent` with a required `task_name` (`multi_agent_v2`): `spawn_agent({"task_name":"<lowercase_digits_underscores>","message":"TASK: act as a <role>. GOAL: ... STOP WHEN: ... EVIDENCE: ...","fork_turns":"none"})` - finished agents end on their own; `wait_agent` takes only `timeout_ms`.
35
35
 
36
36
  - `explorer` - codebase search
37
37
  - `librarian` - external docs, OSS code, API contracts
@@ -78,7 +78,7 @@ When an approach fails, change something material - an algorithm, library, or pa
78
78
 
79
79
  ## Codex tool and skills notes
80
80
 
81
- The actual Codex tool list and schemas determine the route. Read-only subagent roles live in `CODEX_HOME/agents/`. For `multi_agent_v1`, use `multi_agent_v1.spawn_agent({"message":"TASK: act as a <role>. GOAL: ... STOP WHEN: ... EVIDENCE: ...","fork_context":false})`. If the tool list instead exposes a flat `spawn_agent` requiring `task_name` (`multi_agent_v2`), use `spawn_agent({"task_name":"<lowercase_digits_underscores>","message":"TASK: act as a <role>. GOAL: ... STOP WHEN: ... EVIDENCE: ...","fork_turns":"none"})`. Finished agents end on their own; `wait_agent` takes only `timeout_ms`. Keep the two payloads distinct and do not send v1 fields to v2 or vice versa.
81
+ The actual Codex tool list and schemas determine the route. Read-only subagent roles live in `CODEX_HOME/agents/`. For `multi_agent_v1`, use `multi_agent_v1.spawn_agent({"message":"TASK: act as a <role>. GOAL: ... STOP WHEN: ... EVIDENCE: ...","agent_type":"<role>","fork_context":false})`. If the tool list instead exposes a flat `spawn_agent` requiring `task_name` (`multi_agent_v2`), use `spawn_agent({"task_name":"<lowercase_digits_underscores>","message":"TASK: act as a <role>. GOAL: ... STOP WHEN: ... EVIDENCE: ...","fork_turns":"none"})`. Finished agents end on their own; `wait_agent` takes only `timeout_ms`. Keep the two payloads distinct and do not send v1 fields to v2 or vice versa.
82
82
 
83
83
  - `explorer`: codebase search.
84
84
  - `librarian`: external docs, OSS code, and API contracts.
@@ -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 5.1.5) Loading Project Rules"
10
+ "statusMessage": "(OmO 5.1.7) 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 5.1.5) Loading Project Rules"
22
+ "statusMessage": "(OmO 5.1.7) 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 5.1.5) Matching Project Rules"
35
+ "statusMessage": "(OmO 5.1.7) 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 5.1.5) Resetting Project Rule Cache"
48
+ "statusMessage": "(OmO 5.1.7) 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": "5.1.5",
3
+ "version": "5.1.7",
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",
@@ -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 5.1.5) Checking Thread Title Hygiene"
11
+ "statusMessage": "(OmO 5.1.7) Checking Thread Title Hygiene"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-teammode",
3
- "version": "5.1.5",
3
+ "version": "5.1.7",
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 5.1.5) Recording Session Telemetry"
10
+ "statusMessage": "(OmO 5.1.7) Recording Session Telemetry"
11
11
  }
12
12
  ]
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-telemetry",
3
- "version": "5.1.5",
3
+ "version": "5.1.7",
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",
@@ -299,17 +299,17 @@ Until every success criterion PASSES with its evidence captured:
299
299
  vars. Append a one-line cleanup receipt to the notepad next to the
300
300
  artifact, e.g. \`cleanup: killed 12345; tmux kill-session ulw-qa-foo;
301
301
  rm -rf /tmp/ulw.aB12cD\`. No receipt → criterion stays in_progress.
302
- 6. Verify: LSP diagnostics clean on changed files + the test scope
303
- this criterion touched green (no skipped, no xfail added this
304
- turn). Re-run a validation command (suite, typecheck, build) only
305
- when its inputs changed since its last green run; ONE full-suite
306
- pass belongs immediately before the final message, not after
307
- every increment.
302
+ 6. Verify: LSP diagnostics clean on changed files; no test skipped or
303
+ xfail-ed this turn.
308
304
  7. Mark completed. Append non-obvious findings / learnings.
309
- 8. After each increment, re-run the scenarios that increment could
310
- have affected; re-run the full set once, right before the final
311
- message. Record PASS/FAIL inline with the evidence paths AND the
312
- cleanup receipt. Loop until all PASS.
305
+ 8. Evidence stays valid per target until an input changes; record with
306
+ each artifact the commit and what it exercised. After each increment
307
+ rerun what moved — the tests of every touched file and of the files
308
+ that import it, the scenarios that exercise them, anything whose
309
+ dependencies or environment changed — and cite the capture for the
310
+ rest. The full set (scenarios, suite, typecheck, build) runs once
311
+ more right before the final message. Record PASS/FAIL beside each
312
+ artifact. Loop until all PASS.
313
313
 
314
314
  Within a step, follow Finding things; READ before CHANGE, never in
315
315
  parallel with it.
@@ -412,13 +412,12 @@ When triggered, follow this procedure (NON-NEGOTIABLE):
412
412
  it names a success criterion the evidence fails; record concerns
413
413
  that cite no criterion as notes with a one-line reason — fixed or
414
414
  declined at your judgment.
415
- 3. Fix every criterion-cited blocker. Re-run ONLY the scenario QA
416
- affected by the fix; capture fresh evidence for the delta. Update
417
- notepad.
418
- 4. Re-submit to the SAME reviewer at most twice, passing only the
419
- delta diff, the blockers it cited, and the already-approved criteria
420
- marked out-of-scope. An approval whose only remaining items are
421
- notes counts as approval.
415
+ 3. Fix every criterion-cited blocker; rerun per Execution loop step 8
416
+ and update the notepad.
417
+ 4. Spawn a NEW reviewer for each re-review, at most twice, passing only
418
+ the delta diff, the blockers the last one cited, and the
419
+ already-approved criteria marked out-of-scope. An approval whose only
420
+ remaining items are notes counts as approval.
422
421
  5. On approval, declare done. If criterion-cited blockers remain after
423
422
  two re-reviews, stop and surface them to the user (mirroring the
424
423
  2-attempt stop rule below) — do not loop further.
@@ -443,7 +442,15 @@ commits this session — then stage + draft the message instead.
443
442
  for the regression it names is NOT evidence: mock-call assertions,
444
443
  pinned constants, a fixture equal to the default it must override,
445
444
  an expected value re-derived from the output under test.
446
- - Smallest correct change. No drive-by refactors.
445
+ - Make the smallest correct change per unit, and fix in THIS run every
446
+ defect inside the change's blast radius — the request not delivered,
447
+ a regression this change introduces, an invalid proof, a failing test
448
+ or stale doc of code you touched — as registered work (todo plus
449
+ success criterion) to the ideal state. A defect outside it gets a
450
+ tracked issue with reproduction and evidence and a line in the final
451
+ message; a deferral never turns a criterion into PASS. Keep delegated
452
+ unit scope hard: the worker reports, the orchestrator registers or
453
+ files.
447
454
  - Never suppress lints / errors / test failures. Never delete, skip,
448
455
  \`.only\`, \`.skip\`, \`xfail\`, or comment out tests to green the suite.
449
456
  - Never claim done from inference — only from captured evidence.
@@ -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 5.1.5) Checking Ultrawork Trigger"
10
+ "statusMessage": "(OmO 5.1.7) Checking Ultrawork Trigger"
11
11
  }
12
12
  ]
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-ultrawork",
3
- "version": "5.1.5",
3
+ "version": "5.1.7",
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",