oh-my-opencode 5.1.7 → 5.1.9

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 (74) hide show
  1. package/dist/cli/index.js +35 -43
  2. package/dist/cli-node/index.js +35 -43
  3. package/dist/index.js +1118 -1106
  4. package/dist/shared/index.d.ts +0 -1
  5. package/dist/shared/live-server-route.d.ts +0 -2
  6. package/dist/shared/tmux/tmux-utils/pane-close.d.ts +0 -3
  7. package/dist/shared/tmux/tmux-utils/server-health.d.ts +1 -1
  8. package/dist/skills/browser/runtime/omowright/manifest.json +1 -1
  9. package/dist/skills/debugging/SKILL.md +1 -1
  10. package/dist/skills/debugging/references/methodology/06-fix.md +8 -0
  11. package/dist/tui.js +34 -42
  12. package/package.json +14 -14
  13. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  14. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +12 -3
  15. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  16. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  17. package/packages/omo-codex/plugin/components/bootstrap/test/download.test.ts +0 -16
  18. package/packages/omo-codex/plugin/components/bootstrap/test/environment.test.ts +3 -0
  19. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  20. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  21. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  22. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  23. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  24. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  25. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  26. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  27. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  28. package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +0 -27
  29. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  30. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  31. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  32. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  33. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  34. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  35. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  36. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  37. package/packages/omo-codex/plugin/components/ultrawork/test/directive-source.test.ts +0 -6
  38. package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +0 -15
  39. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  40. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  41. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  42. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  43. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  44. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  45. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  46. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  47. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  48. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  49. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  50. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  51. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  52. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  53. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  54. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  55. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  56. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  57. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  58. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  59. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  60. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  61. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  62. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  63. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  64. package/packages/omo-codex/plugin/package-lock.json +12 -12
  65. package/packages/omo-codex/plugin/package.json +1 -1
  66. package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
  67. package/packages/omo-codex/plugin/skills/debugging/SKILL.md +1 -1
  68. package/packages/omo-codex/plugin/skills/debugging/references/methodology/06-fix.md +8 -0
  69. package/packages/omo-codex/plugin/test/AGENTS.md +11 -0
  70. package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +0 -50
  71. package/packages/omo-codex/scripts/install-dist/install-local.mjs +14 -5
  72. package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
  73. package/packages/shared-skills/skills/debugging/SKILL.md +1 -1
  74. package/packages/shared-skills/skills/debugging/references/methodology/06-fix.md +8 -0
@@ -78,5 +78,4 @@ export * from "./legacy-workspace-migration";
78
78
  export * from "./task-system-enabled";
79
79
  export * from "./parse-tools-config";
80
80
  export { parseModelString } from "./model-string-parser";
81
- export { EXCLUDED_DIRS } from "./excluded-dirs";
82
81
  export * from "./replace-tool-args";
@@ -1,5 +1,3 @@
1
- export declare const LIVE_ROUTE_DISPATCH_LOG = "[live-server-route] dispatch via live listener";
2
- export declare const LIVE_ROUTE_UNAVAILABLE_LOG = "[live-server-route] route unavailable; using in-process client";
3
1
  type RouteResult = {
4
2
  client: unknown;
5
3
  route: "live" | "in-process";
@@ -1,4 +1 @@
1
- import { closeTmuxPaneWithDependencies, type CloseTmuxPaneDependencies } from "@oh-my-opencode/tmux-core";
2
1
  export declare function closeTmuxPane(paneId: string): Promise<boolean>;
3
- export { closeTmuxPaneWithDependencies };
4
- export type { CloseTmuxPaneDependencies };
@@ -1,2 +1,2 @@
1
- export { createServerHealthState, createServerHealthStateForTesting, isServerRunning, markServerRunningInProcess, resetServerCheck, } from "@oh-my-opencode/tmux-core";
1
+ export { createServerHealthState, isServerRunning, markServerRunningInProcess, resetServerCheck, } from "@oh-my-opencode/tmux-core";
2
2
  export type { ServerHealthState } from "@oh-my-opencode/tmux-core";
@@ -5,5 +5,5 @@
5
5
  "index.js": "b6b064fab277031c6c51f5a58b84b31040f9960bf767bf646adc0540c1d25c1b",
6
6
  "page-bundle.js": "bfd51e8383cf47200d57387bbbed258bce5a3a3d00c38fc108034d2888e23f0c"
7
7
  },
8
- "stagedAtUtc": "2026-09-30T23:56:16.088Z"
8
+ "stagedAtUtc": "2026-10-02T01:09:52.603Z"
9
9
  }
@@ -73,7 +73,7 @@ Each phase has exactly one reference. Read it as you enter the phase — not in
73
73
  | 4 | **Oracle Triple** — after 2 consecutive failed rounds, spawn three Oracles with orthogonal framings and synthesize | [references/methodology/04-oracle-triple.md](references/methodology/04-oracle-triple.md) |
74
74
  | 5 | **User decision escalation** — only when evidence exhausted and the call has policy implications | [references/methodology/05-escalate.md](references/methodology/05-escalate.md) |
75
75
  | 6 | **Root cause confirmation** — confirmed only when toggling the suspected cause toggles the bug | [references/methodology/06-fix.md](references/methodology/06-fix.md) |
76
- | 7 | **TDD fix** — red test first, minimal green, no scope expansion | [references/methodology/06-fix.md](references/methodology/06-fix.md) |
76
+ | 7 | **Fix locked by a failing proof** — reuse the owner test that already fails or add one regression that fails on the pre-fix code, minimal green, no scope expansion | [references/methodology/06-fix.md](references/methodology/06-fix.md) |
77
77
  | 8 | **Manual QA** — actually use the system (tmux for CLI, Playwright for browser, real curl for API, real repro for binary) | [references/methodology/08-qa.md](references/methodology/08-qa.md) |
78
78
  | 9 | **Cleanup** — walk the journal, revert every artifact, verify `git diff` shows only fix + test | [references/methodology/09-cleanup.md](references/methodology/09-cleanup.md) |
79
79
  | 10 | **Final verification** — four evidence gates before declaring done | [references/methodology/09-cleanup.md](references/methodology/09-cleanup.md) |
@@ -51,6 +51,14 @@ The "mechanism" field is the acid test. If you can't write the causal chain from
51
51
 
52
52
  Red, green, refactor. No shortcuts.
53
53
 
54
+ ### 0. Look for the owner test first
55
+
56
+ Before writing a reproduction test, find the test that already owns this contract at the strongest boundary. Run it on the pre-fix code:
57
+
58
+ - **It already fails for this bug.** It is the red proof. Record its failure and skip step 1.
59
+ - **It passes but covers the path.** Extend it with the failing case (a table row, a fixture case) instead of adding a parallel test.
60
+ - **No owner exists.** Write the new reproduction test in step 1, and apply the repository's test-authoring gate if it has one.
61
+
54
62
  ### 1. Red — the reproduction as a test
55
63
 
56
64
  Write a test that fails *specifically because of this bug*. Requirements:
package/dist/tui.js CHANGED
@@ -3517,7 +3517,7 @@ var init_category_model_requirements = __esm(() => {
3517
3517
  {
3518
3518
  providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
3519
3519
  model: "gpt-6-astra",
3520
- variant: "xhigh"
3520
+ variant: "high"
3521
3521
  }
3522
3522
  ]
3523
3523
  },
@@ -5319,7 +5319,7 @@ var init_openai_categories = __esm(() => {
5319
5319
  },
5320
5320
  {
5321
5321
  name: "deep-high",
5322
- config: { model: "openai/gpt-6-astra", variant: "xhigh" },
5322
+ config: { model: "openai/gpt-6-astra", variant: "high" },
5323
5323
  description: "Escalation deep lane: a goal whose central decision cannot be settled from evidence alone. Same one-goal, one-deliverable contract as deep-low.",
5324
5324
  callerGuidance: DEEP_HIGH_CATEGORY_CALLER_GUIDANCE,
5325
5325
  promptAppend: DEEP_HIGH_CATEGORY_PROMPT_APPEND,
@@ -63514,28 +63514,6 @@ var init_legacy_workspace_migration = __esm(() => {
63514
63514
  // packages/omo-opencode/src/shared/model-string-parser.ts
63515
63515
  var init_model_string_parser2 = () => {};
63516
63516
 
63517
- // packages/omo-opencode/src/shared/excluded-dirs.ts
63518
- var EXCLUDED_DIR_NAMES, EXCLUDED_DIRS;
63519
- var init_excluded_dirs = __esm(() => {
63520
- EXCLUDED_DIR_NAMES = [
63521
- "node_modules",
63522
- ".git",
63523
- "dist",
63524
- "build",
63525
- ".next",
63526
- ".omo",
63527
- ".sisyphus",
63528
- ".turbo",
63529
- "coverage",
63530
- "out",
63531
- ".cache",
63532
- ".vscode-test",
63533
- "target",
63534
- ".local-ignore"
63535
- ];
63536
- EXCLUDED_DIRS = Object.freeze(new Set(EXCLUDED_DIR_NAMES));
63537
- });
63538
-
63539
63517
  // packages/omo-opencode/src/shared/replace-tool-args.ts
63540
63518
  var init_replace_tool_args = () => {};
63541
63519
 
@@ -63546,7 +63524,6 @@ var init_shared = __esm(() => {
63546
63524
  init_model_resolution_pipeline();
63547
63525
  init_session_category_registry();
63548
63526
  init_model_string_parser2();
63549
- init_excluded_dirs();
63550
63527
  init_frontmatter2();
63551
63528
  init_command_executor2();
63552
63529
  init_contains_path2();
@@ -69930,7 +69907,8 @@ var init_memory = __esm(() => {
69930
69907
  event_caps: OmoMemoryRecallEventCapsSchema.default({ tool_args: 400, result_head: 600, assistant: 1500, prompt: 4000 }),
69931
69908
  sidecar_max_tokens: number2().int().positive().default(48000),
69932
69909
  max_concurrent_wakes: number2().int().positive().default(2),
69933
- tool_budget: number2().int().positive().default(8)
69910
+ tool_budget: number2().int().positive().default(8),
69911
+ query_expansion: boolean2().default(false)
69934
69912
  }).strict();
69935
69913
  OmoMemoryNudgeSchema = object({
69936
69914
  enabled: boolean2().default(true),
@@ -69991,7 +69969,8 @@ var init_memory = __esm(() => {
69991
69969
  event_caps: OmoMemoryRecallEventCapsLayerSchema.optional(),
69992
69970
  sidecar_max_tokens: number2().int().positive().optional(),
69993
69971
  max_concurrent_wakes: number2().int().positive().optional(),
69994
- tool_budget: number2().int().positive().optional()
69972
+ tool_budget: number2().int().positive().optional(),
69973
+ query_expansion: boolean2().optional()
69995
69974
  }).strict();
69996
69975
  OmoMemoryNudgeLayerSchema = object({
69997
69976
  enabled: boolean2().optional(),
@@ -70068,7 +70047,8 @@ var init_memory = __esm(() => {
70068
70047
  event_caps: { tool_args: 400, result_head: 600, assistant: 1500, prompt: 4000 },
70069
70048
  sidecar_max_tokens: 48000,
70070
70049
  max_concurrent_wakes: 2,
70071
- tool_budget: 8
70050
+ tool_budget: 8,
70051
+ query_expansion: false
70072
70052
  }),
70073
70053
  compile_warn_tokens: number2().int().positive().default(30000),
70074
70054
  agents: record(string2(), OmoMemoryAgentOverridesSchema).default({})
@@ -70354,6 +70334,13 @@ var init_format_on_mutation = __esm(() => {
70354
70334
  }).strict();
70355
70335
  });
70356
70336
 
70337
+ // packages/omo-config-core/src/schema/gateway.ts
70338
+ var OmoGatewaySectionSchema;
70339
+ var init_gateway = __esm(() => {
70340
+ init_zod();
70341
+ OmoGatewaySectionSchema = record(string2(), unknown()).describe("Chat-surface gateway settings, owned and validated by a separately installed gateway package. omo accepts the key and never reads it.");
70342
+ });
70343
+
70357
70344
  // packages/omo-config-core/src/schema/config.ts
70358
70345
  var OmoOpenCodeHarnessConfigSchema, OmoDisabledSkillsSchema, OmoTypedHarnessConfigSchema, OmoConfigProfileSchema, OmoConfigSchema, OmoConfigLayerSchema;
70359
70346
  var init_config = __esm(() => {
@@ -70369,10 +70356,12 @@ var init_config = __esm(() => {
70369
70356
  init_team();
70370
70357
  init_telemetry();
70371
70358
  init_format_on_mutation();
70359
+ init_gateway();
70372
70360
  OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
70373
70361
  OmoDisabledSkillsSchema = array(string2());
70374
70362
  OmoTypedHarnessConfigSchema = object({
70375
70363
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
70364
+ gateway: OmoGatewaySectionSchema.optional(),
70376
70365
  categories: OmoCategoriesConfigSchema.optional(),
70377
70366
  agents: OmoAgentsConfigSchema.optional(),
70378
70367
  git_master: OmoGitMasterSettingsLayerSchema.optional(),
@@ -70407,6 +70396,7 @@ var init_config = __esm(() => {
70407
70396
  }).strict();
70408
70397
  OmoConfigSchema = object({
70409
70398
  formatOnMutation: OmoFormatOnMutationSchema.optional(),
70399
+ gateway: OmoGatewaySectionSchema.optional(),
70410
70400
  $schema: string2().optional(),
70411
70401
  categories: OmoCategoriesConfigSchema.optional(),
70412
70402
  agents: OmoAgentsConfigSchema.optional(),
@@ -70430,6 +70420,7 @@ var init_config = __esm(() => {
70430
70420
  }).strict();
70431
70421
  OmoConfigLayerSchema = object({
70432
70422
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
70423
+ gateway: OmoGatewaySectionSchema.optional(),
70433
70424
  $schema: string2().optional(),
70434
70425
  categories: OmoCategoriesConfigSchema.optional(),
70435
70426
  agents: OmoAgentsConfigSchema.optional(),
@@ -70570,6 +70561,7 @@ var init_schema = __esm(() => {
70570
70561
  init_config();
70571
70562
  init_fallback_models();
70572
70563
  init_format_on_mutation();
70564
+ init_gateway();
70573
70565
  init_git_master();
70574
70566
  init_harness();
70575
70567
  init_legacy_category_names();
@@ -74617,7 +74609,7 @@ init_shared();
74617
74609
  // package.json
74618
74610
  var package_default = {
74619
74611
  name: "oh-my-opencode",
74620
- version: "5.1.7",
74612
+ version: "5.1.9",
74621
74613
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
74622
74614
  main: "./dist/index.js",
74623
74615
  types: "dist/index.d.ts",
@@ -74794,7 +74786,7 @@ var package_default = {
74794
74786
  },
74795
74787
  devDependencies: {
74796
74788
  "@clack/prompts": "^1.8.1",
74797
- "@code-yeongyu/senpi": "2026.9.30",
74789
+ "@code-yeongyu/senpi": "2026.10.1-3",
74798
74790
  "@modelcontextprotocol/sdk": "^1.30.0",
74799
74791
  "@oh-my-opencode/agents-md-core": "workspace:*",
74800
74792
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
@@ -74852,18 +74844,18 @@ var package_default = {
74852
74844
  typescript: "^7.0.2"
74853
74845
  },
74854
74846
  optionalDependencies: {
74855
- "oh-my-opencode-darwin-arm64": "5.1.7",
74856
- "oh-my-opencode-darwin-x64": "5.1.7",
74857
- "oh-my-opencode-darwin-x64-baseline": "5.1.7",
74858
- "oh-my-opencode-linux-arm64": "5.1.7",
74859
- "oh-my-opencode-linux-arm64-musl": "5.1.7",
74860
- "oh-my-opencode-linux-x64": "5.1.7",
74861
- "oh-my-opencode-linux-x64-baseline": "5.1.7",
74862
- "oh-my-opencode-linux-x64-musl": "5.1.7",
74863
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.7",
74864
- "oh-my-opencode-windows-arm64": "5.1.7",
74865
- "oh-my-opencode-windows-x64": "5.1.7",
74866
- "oh-my-opencode-windows-x64-baseline": "5.1.7"
74847
+ "oh-my-opencode-darwin-arm64": "5.1.9",
74848
+ "oh-my-opencode-darwin-x64": "5.1.9",
74849
+ "oh-my-opencode-darwin-x64-baseline": "5.1.9",
74850
+ "oh-my-opencode-linux-arm64": "5.1.9",
74851
+ "oh-my-opencode-linux-arm64-musl": "5.1.9",
74852
+ "oh-my-opencode-linux-x64": "5.1.9",
74853
+ "oh-my-opencode-linux-x64-baseline": "5.1.9",
74854
+ "oh-my-opencode-linux-x64-musl": "5.1.9",
74855
+ "oh-my-opencode-linux-x64-musl-baseline": "5.1.9",
74856
+ "oh-my-opencode-windows-arm64": "5.1.9",
74857
+ "oh-my-opencode-windows-x64": "5.1.9",
74858
+ "oh-my-opencode-windows-x64-baseline": "5.1.9"
74867
74859
  },
74868
74860
  overrides: {
74869
74861
  hono: "^4.13.8",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode",
3
- "version": "5.1.7",
3
+ "version": "5.1.9",
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",
@@ -177,7 +177,7 @@
177
177
  },
178
178
  "devDependencies": {
179
179
  "@clack/prompts": "^1.8.1",
180
- "@code-yeongyu/senpi": "2026.9.30",
180
+ "@code-yeongyu/senpi": "2026.10.1-3",
181
181
  "@modelcontextprotocol/sdk": "^1.30.0",
182
182
  "@oh-my-opencode/agents-md-core": "workspace:*",
183
183
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
@@ -235,18 +235,18 @@
235
235
  "typescript": "^7.0.2"
236
236
  },
237
237
  "optionalDependencies": {
238
- "oh-my-opencode-darwin-arm64": "5.1.7",
239
- "oh-my-opencode-darwin-x64": "5.1.7",
240
- "oh-my-opencode-darwin-x64-baseline": "5.1.7",
241
- "oh-my-opencode-linux-arm64": "5.1.7",
242
- "oh-my-opencode-linux-arm64-musl": "5.1.7",
243
- "oh-my-opencode-linux-x64": "5.1.7",
244
- "oh-my-opencode-linux-x64-baseline": "5.1.7",
245
- "oh-my-opencode-linux-x64-musl": "5.1.7",
246
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.7",
247
- "oh-my-opencode-windows-arm64": "5.1.7",
248
- "oh-my-opencode-windows-x64": "5.1.7",
249
- "oh-my-opencode-windows-x64-baseline": "5.1.7"
238
+ "oh-my-opencode-darwin-arm64": "5.1.9",
239
+ "oh-my-opencode-darwin-x64": "5.1.9",
240
+ "oh-my-opencode-darwin-x64-baseline": "5.1.9",
241
+ "oh-my-opencode-linux-arm64": "5.1.9",
242
+ "oh-my-opencode-linux-arm64-musl": "5.1.9",
243
+ "oh-my-opencode-linux-x64": "5.1.9",
244
+ "oh-my-opencode-linux-x64-baseline": "5.1.9",
245
+ "oh-my-opencode-linux-x64-musl": "5.1.9",
246
+ "oh-my-opencode-linux-x64-musl-baseline": "5.1.9",
247
+ "oh-my-opencode-windows-arm64": "5.1.9",
248
+ "oh-my-opencode-windows-x64": "5.1.9",
249
+ "oh-my-opencode-windows-x64-baseline": "5.1.9"
250
250
  },
251
251
  "overrides": {
252
252
  "hono": "^4.13.8",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omo",
3
- "version": "5.1.7",
3
+ "version": "5.1.9",
4
4
  "description": "One Codex plugin namespace for Yeongyu's local Codex components.",
5
5
  "author": {
6
6
  "name": "Yeongyu Kim",
@@ -7148,7 +7148,8 @@ var OmoMemoryRecallSchema = object({
7148
7148
  event_caps: OmoMemoryRecallEventCapsSchema.default({ tool_args: 400, result_head: 600, assistant: 1500, prompt: 4000 }),
7149
7149
  sidecar_max_tokens: number2().int().positive().default(48000),
7150
7150
  max_concurrent_wakes: number2().int().positive().default(2),
7151
- tool_budget: number2().int().positive().default(8)
7151
+ tool_budget: number2().int().positive().default(8),
7152
+ query_expansion: boolean2().default(false)
7152
7153
  }).strict();
7153
7154
  var OmoMemoryNudgeSchema = object({
7154
7155
  enabled: boolean2().default(true),
@@ -7209,7 +7210,8 @@ var OmoMemoryRecallLayerSchema = object({
7209
7210
  event_caps: OmoMemoryRecallEventCapsLayerSchema.optional(),
7210
7211
  sidecar_max_tokens: number2().int().positive().optional(),
7211
7212
  max_concurrent_wakes: number2().int().positive().optional(),
7212
- tool_budget: number2().int().positive().optional()
7213
+ tool_budget: number2().int().positive().optional(),
7214
+ query_expansion: boolean2().optional()
7213
7215
  }).strict();
7214
7216
  var OmoMemoryNudgeLayerSchema = object({
7215
7217
  enabled: boolean2().optional(),
@@ -7286,7 +7288,8 @@ var OmoMemorySettingsSchema = object({
7286
7288
  event_caps: { tool_args: 400, result_head: 600, assistant: 1500, prompt: 4000 },
7287
7289
  sidecar_max_tokens: 48000,
7288
7290
  max_concurrent_wakes: 2,
7289
- tool_budget: 8
7291
+ tool_budget: 8,
7292
+ query_expansion: false
7290
7293
  }),
7291
7294
  compile_warn_tokens: number2().int().positive().default(30000),
7292
7295
  agents: record(string2(), OmoMemoryAgentOverridesSchema).default({})
@@ -7545,11 +7548,15 @@ var OmoFormatOnMutationSchema = OmoFormatOnMutationLayerSchema.extend({
7545
7548
  timeoutMs: number2().int().positive().default(3000)
7546
7549
  }).strict();
7547
7550
 
7551
+ // ../../omo-config-core/src/schema/gateway.ts
7552
+ var OmoGatewaySectionSchema = record(string2(), unknown()).describe("Chat-surface gateway settings, owned and validated by a separately installed gateway package. omo accepts the key and never reads it.");
7553
+
7548
7554
  // ../../omo-config-core/src/schema/config.ts
7549
7555
  var OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
7550
7556
  var OmoDisabledSkillsSchema = array(string2());
7551
7557
  var OmoTypedHarnessConfigSchema = object({
7552
7558
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
7559
+ gateway: OmoGatewaySectionSchema.optional(),
7553
7560
  categories: OmoCategoriesConfigSchema.optional(),
7554
7561
  agents: OmoAgentsConfigSchema.optional(),
7555
7562
  git_master: OmoGitMasterSettingsLayerSchema.optional(),
@@ -7584,6 +7591,7 @@ var OmoConfigProfileSchema = object({
7584
7591
  }).strict();
7585
7592
  var OmoConfigSchema = object({
7586
7593
  formatOnMutation: OmoFormatOnMutationSchema.optional(),
7594
+ gateway: OmoGatewaySectionSchema.optional(),
7587
7595
  $schema: string2().optional(),
7588
7596
  categories: OmoCategoriesConfigSchema.optional(),
7589
7597
  agents: OmoAgentsConfigSchema.optional(),
@@ -7607,6 +7615,7 @@ var OmoConfigSchema = object({
7607
7615
  }).strict();
7608
7616
  var OmoConfigLayerSchema = object({
7609
7617
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
7618
+ gateway: OmoGatewaySectionSchema.optional(),
7610
7619
  $schema: string2().optional(),
7611
7620
  categories: OmoCategoriesConfigSchema.optional(),
7612
7621
  agents: OmoAgentsConfigSchema.optional(),
@@ -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.7) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 5.1.9) 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.7",
3
+ "version": "5.1.9",
4
4
  "description": "Codex SessionStart bootstrap component that provisions LazyCodex runtime dependencies from a detached worker.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -262,22 +262,6 @@ describe("downloadFromManifest", () => {
262
262
  });
263
263
 
264
264
  describe("committed manifests", () => {
265
- it("#given the committed ast-grep manifest #when loaded #then every required platform pins an https URL and a sha256", async () => {
266
- // given / when
267
- const manifest = await loadAssetManifest("ast-grep");
268
-
269
- // then
270
- expect(manifest.name).toBe("ast-grep");
271
- expect(manifest.version).toMatch(/^\d+\.\d+\.\d+$/);
272
- for (const platformKey of ["darwin-arm64", "darwin-x64", "linux-x64", "win32-x64"]) {
273
- const asset = manifest.platforms[platformKey];
274
- if (asset === undefined) throw new Error(`missing platform ${platformKey}`);
275
- expect(asset.url).toStartWith("https://");
276
- expect(asset.url).toContain(manifest.version);
277
- expect(asset.sha256).toMatch(/^[a-f0-9]{64}$/);
278
- }
279
- });
280
-
281
265
  it("#given the committed node manifest #when loaded #then the win32-x64 LTS zip pins an https URL and a sha256", async () => {
282
266
  // given / when
283
267
  const manifest = await loadAssetManifest("node");
@@ -373,4 +373,7 @@ async function writeSyncSourceFixture(sourceRoot: string): Promise<void> {
373
373
  await writeExecutableStub(join(sourceRoot, "packages", "git-bash-mcp", "dist", "cli.js"));
374
374
  await writeExecutableStub(join(sourceRoot, "packages", "lsp-tools-mcp", "dist", "cli.js"));
375
375
  await writeExecutableStub(join(sourceRoot, "packages", "lsp-daemon", "dist", "cli.js"));
376
+ // The sync bundles the root CLI and its node fallback too (script/lazycodex-runtime-dists.ts).
377
+ await writeExecutableStub(join(sourceRoot, "dist", "cli", "index.js"));
378
+ await writeExecutableStub(join(sourceRoot, "dist", "cli-node", "index.js"));
376
379
  }
@@ -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.7) Checking Comments"
11
+ "statusMessage": "(OmO 5.1.9) 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.7",
3
+ "version": "5.1.9",
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.7) Recommending Git Bash MCP"
11
+ "statusMessage": "(OmO 5.1.9) 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.7) Resetting Git Bash MCP Reminder"
23
+ "statusMessage": "(OmO 5.1.9) 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.7",
3
+ "version": "5.1.9",
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.7) Verifying LazyCodex Executor Evidence"
11
+ "statusMessage": "(OmO 5.1.9) 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.7",
3
+ "version": "5.1.9",
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.7",
4
- "inputDigest": "sha256:7628ae176ffa5fe1657de3e04fb8944d413281370d4c46b5df7085db4f1ec720",
3
+ "version": "5.1.9",
4
+ "inputDigest": "sha256:408549caf858a9eb5d20f3b2d5b951828904b19d663a0296c992546a061ec3ea",
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.7) Checking LSP Diagnostics"
11
+ "statusMessage": "(OmO 5.1.9) 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.7) Resetting LSP Diagnostics Cache"
24
+ "statusMessage": "(OmO 5.1.9) 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.7",
3
+ "version": "5.1.9",
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",
@@ -16,9 +16,6 @@ describe("plugin package metadata", () => {
16
16
  const hooksJson = readHooksJson("hooks/hooks.json");
17
17
  const mcpJson = readMcpJson(".mcp.json");
18
18
  const cliSource = readTextFile("src/cli.ts");
19
- const daemonCliPathSource = readTextFile("src/daemon-cli-path.ts");
20
- const codexHookCliSource = readTextFile("src/codex-hook-cli.ts");
21
- const codexHookSource = readTextFile("src/codex-hook.ts");
22
19
  const sourceFiles = listDirectoryEntries("src");
23
20
  const scripts = requireScripts(packageJson, "package.json");
24
21
 
@@ -55,30 +52,6 @@ describe("plugin package metadata", () => {
55
52
  },
56
53
  },
57
54
  });
58
- expect(cliSource).not.toContain("./lazy-lsp-mcp.js");
59
- expect(cliSource).toContain("resolveLspDaemonCliPath");
60
- expect(daemonCliPathSource).toContain("@code-yeongyu/lsp-daemon/cli");
61
- expect(daemonCliPathSource).toContain("../../lsp-daemon/dist/cli.js");
62
- expect(daemonCliPathSource).toContain("OMO_LSP_DAEMON_VERSION");
63
- expect(cliSource).not.toContain("../../../../../lsp-daemon/dist/cli.js");
64
- expect(codexHookSource).toContain("ensureLspDaemonCliEnv");
65
- expect(codexHookCliSource).not.toContain("@code-yeongyu/lsp-daemon");
66
- expect(codexHookSource).toContain("@code-yeongyu/lsp-daemon/client");
67
- expect(codexHookSource).toContain("@oh-my-opencode/lsp-core/post-edit");
68
- expect(codexHookSource).toContain("CODEX_HOME");
69
- expect(codexHookCliSource).not.toContain("../../../../../lsp-daemon");
70
- expect(codexHookSource).not.toContain("../../../../../lsp-daemon");
71
55
  expect(sourceFiles.filter((name) => name.startsWith("lazy-mcp") || name === "lazy-lsp-mcp.ts")).toEqual([]);
72
56
  });
73
-
74
- it("#given built component CLI #when runtime imports are inspected #then it is self-contained except Node builtins", () => {
75
- const cliSource = readTextFile("dist/cli.js");
76
- const imports = [
77
- ...cliSource.matchAll(/\bimport\s+(?:[^'";]+?\s+from\s+)?["']([^"']+)["']/g),
78
- ...cliSource.matchAll(/\bimport\s*\(\s*["']([^"']+)["']\s*\)/g),
79
- ].flatMap((match) => (match[1] === undefined ? [] : [match[1]]));
80
- expect(imports.filter((specifier) => !specifier.startsWith("node:"))).toEqual([]);
81
- expect(cliSource).not.toContain("@code-yeongyu/lsp-daemon/client");
82
- expect(cliSource).not.toContain("@oh-my-opencode/lsp-core");
83
- });
84
57
  });
@@ -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.7) Loading Project Rules"
10
+ "statusMessage": "(OmO 5.1.9) 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.7) Loading Project Rules"
22
+ "statusMessage": "(OmO 5.1.9) 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.7) Matching Project Rules"
35
+ "statusMessage": "(OmO 5.1.9) 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.7) Resetting Project Rule Cache"
48
+ "statusMessage": "(OmO 5.1.9) 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.7",
3
+ "version": "5.1.9",
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.7) Checking Thread Title Hygiene"
11
+ "statusMessage": "(OmO 5.1.9) 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.7",
3
+ "version": "5.1.9",
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.7) Recording Session Telemetry"
10
+ "statusMessage": "(OmO 5.1.9) Recording Session Telemetry"
11
11
  }
12
12
  ]
13
13
  }