ocmm 0.5.3 → 0.6.0

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 (202) hide show
  1. package/.codex/agents/dw-builder.toml +3 -3
  2. package/.codex/agents/dw-clarifier.toml +2 -2
  3. package/.codex/agents/dw-code-search.toml +2 -2
  4. package/.codex/agents/dw-coding.toml +2 -2
  5. package/.codex/agents/dw-complex.toml +2 -2
  6. package/.codex/agents/dw-creative.toml +2 -2
  7. package/.codex/agents/dw-deep.toml +3 -3
  8. package/.codex/agents/dw-doc-search.toml +2 -2
  9. package/.codex/agents/dw-documenting.toml +2 -2
  10. package/.codex/agents/dw-explore.toml +2 -2
  11. package/.codex/agents/dw-frontend.toml +2 -2
  12. package/.codex/agents/dw-hard-reasoning.toml +2 -2
  13. package/.codex/agents/dw-media-reader.toml +2 -2
  14. package/.codex/agents/dw-normal-task.toml +2 -2
  15. package/.codex/agents/dw-oracle-2nd.toml +8 -0
  16. package/.codex/agents/dw-oracle.toml +3 -3
  17. package/.codex/agents/dw-orchestrator.toml +2 -2
  18. package/.codex/agents/dw-plan-critic.toml +2 -2
  19. package/.codex/agents/dw-planner.toml +3 -3
  20. package/.codex/agents/dw-quick.toml +2 -2
  21. package/.codex/agents/dw-research.toml +2 -2
  22. package/.codex/agents/dw-reviewer.toml +2 -2
  23. package/README.md +193 -46
  24. package/dist/cli/shim.d.ts +4 -2
  25. package/dist/cli/shim.js +26 -11
  26. package/dist/cli/shim.js.map +1 -1
  27. package/dist/codex/plugin-generator.js +121 -96
  28. package/dist/codex/plugin-generator.js.map +1 -1
  29. package/dist/config/load.d.ts +32 -23
  30. package/dist/config/load.js +384 -90
  31. package/dist/config/load.js.map +1 -1
  32. package/dist/config/merge.d.ts +18 -0
  33. package/dist/config/merge.js +46 -0
  34. package/dist/config/merge.js.map +1 -0
  35. package/dist/config/normalize.d.ts +1 -0
  36. package/dist/config/normalize.js +22 -16
  37. package/dist/config/normalize.js.map +1 -1
  38. package/dist/config/profile-aliases.d.ts +12 -0
  39. package/dist/config/profile-aliases.js +127 -0
  40. package/dist/config/profile-aliases.js.map +1 -0
  41. package/dist/config/profile-types.d.ts +13 -0
  42. package/dist/config/profile-types.js +2 -0
  43. package/dist/config/profile-types.js.map +1 -0
  44. package/dist/config/review-agent-migration.d.ts +89 -0
  45. package/dist/config/review-agent-migration.js +237 -0
  46. package/dist/config/review-agent-migration.js.map +1 -0
  47. package/dist/config/schema.d.ts +1364 -219
  48. package/dist/config/schema.js +169 -36
  49. package/dist/config/schema.js.map +1 -1
  50. package/dist/config/tolerant-parse.d.ts +41 -0
  51. package/dist/config/tolerant-parse.js +164 -0
  52. package/dist/config/tolerant-parse.js.map +1 -0
  53. package/dist/data/agents.d.ts +2 -1
  54. package/dist/data/agents.js +25 -10
  55. package/dist/data/agents.js.map +1 -1
  56. package/dist/data/categories.js +2 -1
  57. package/dist/data/categories.js.map +1 -1
  58. package/dist/hooks/chat-params.d.ts +2 -0
  59. package/dist/hooks/chat-params.js +182 -16
  60. package/dist/hooks/chat-params.js.map +1 -1
  61. package/dist/hooks/config.d.ts +14 -2
  62. package/dist/hooks/config.js +538 -60
  63. package/dist/hooks/config.js.map +1 -1
  64. package/dist/hooks/event.d.ts +3 -11
  65. package/dist/hooks/event.js +5 -9
  66. package/dist/hooks/event.js.map +1 -1
  67. package/dist/index.js +21 -14
  68. package/dist/index.js.map +1 -1
  69. package/dist/intent/model-family.d.ts +2 -0
  70. package/dist/intent/model-family.js +11 -0
  71. package/dist/intent/model-family.js.map +1 -1
  72. package/dist/intent/prompt-loader.d.ts +3 -3
  73. package/dist/intent/prompt-loader.js +3 -3
  74. package/dist/permissions/index.d.ts +3 -0
  75. package/dist/permissions/index.js +43 -28
  76. package/dist/permissions/index.js.map +1 -1
  77. package/dist/review-agents/expand.d.ts +36 -0
  78. package/dist/review-agents/expand.js +157 -0
  79. package/dist/review-agents/expand.js.map +1 -0
  80. package/dist/review-agents/names.d.ts +16 -0
  81. package/dist/review-agents/names.js +55 -0
  82. package/dist/review-agents/names.js.map +1 -0
  83. package/dist/routing/effective-route.d.ts +19 -0
  84. package/dist/routing/effective-route.js +133 -0
  85. package/dist/routing/effective-route.js.map +1 -0
  86. package/dist/routing/model-upgrades.d.ts +5 -0
  87. package/dist/routing/model-upgrades.js +59 -11
  88. package/dist/routing/model-upgrades.js.map +1 -1
  89. package/dist/routing/resolver.d.ts +8 -1
  90. package/dist/routing/resolver.js +29 -9
  91. package/dist/routing/resolver.js.map +1 -1
  92. package/dist/routing/route-registry.d.ts +13 -0
  93. package/dist/routing/route-registry.js +84 -0
  94. package/dist/routing/route-registry.js.map +1 -0
  95. package/dist/routing/variant-translator.js +7 -4
  96. package/dist/routing/variant-translator.js.map +1 -1
  97. package/dist/runtime-fallback/dispatcher.d.ts +1 -0
  98. package/dist/runtime-fallback/dispatcher.js +7 -5
  99. package/dist/runtime-fallback/dispatcher.js.map +1 -1
  100. package/dist/runtime-fallback/error-classifier.d.ts +3 -1
  101. package/dist/runtime-fallback/error-classifier.js +135 -1
  102. package/dist/runtime-fallback/error-classifier.js.map +1 -1
  103. package/dist/runtime-fallback/event-handler-generic-fallback.d.ts +26 -0
  104. package/dist/runtime-fallback/event-handler-generic-fallback.js +54 -0
  105. package/dist/runtime-fallback/event-handler-generic-fallback.js.map +1 -0
  106. package/dist/runtime-fallback/event-handler-idle-continuation.d.ts +9 -0
  107. package/dist/runtime-fallback/event-handler-idle-continuation.js +48 -0
  108. package/dist/runtime-fallback/event-handler-idle-continuation.js.map +1 -0
  109. package/dist/runtime-fallback/event-handler-support.d.ts +39 -0
  110. package/dist/runtime-fallback/event-handler-support.js +194 -0
  111. package/dist/runtime-fallback/event-handler-support.js.map +1 -0
  112. package/dist/runtime-fallback/event-handler-test-fixtures.d.ts +874 -0
  113. package/dist/runtime-fallback/event-handler-test-fixtures.js +150 -0
  114. package/dist/runtime-fallback/event-handler-test-fixtures.js.map +1 -0
  115. package/dist/runtime-fallback/event-handler.d.ts +13 -1
  116. package/dist/runtime-fallback/event-handler.js +334 -192
  117. package/dist/runtime-fallback/event-handler.js.map +1 -1
  118. package/dist/runtime-fallback/fallback-state.d.ts +8 -5
  119. package/dist/runtime-fallback/fallback-state.js +9 -6
  120. package/dist/runtime-fallback/fallback-state.js.map +1 -1
  121. package/dist/runtime-fallback/index.d.ts +21 -1
  122. package/dist/runtime-fallback/index.js +7 -1
  123. package/dist/runtime-fallback/index.js.map +1 -1
  124. package/dist/runtime-fallback/interruption-output-adapter.d.ts +7 -0
  125. package/dist/runtime-fallback/interruption-output-adapter.js +91 -0
  126. package/dist/runtime-fallback/interruption-output-adapter.js.map +1 -0
  127. package/dist/runtime-fallback/subagent-429-controller-fixture.d.ts +105 -0
  128. package/dist/runtime-fallback/subagent-429-controller-fixture.js +116 -0
  129. package/dist/runtime-fallback/subagent-429-controller-fixture.js.map +1 -0
  130. package/dist/runtime-fallback/subagent-429-controller.d.ts +167 -0
  131. package/dist/runtime-fallback/subagent-429-controller.js +334 -0
  132. package/dist/runtime-fallback/subagent-429-controller.js.map +1 -0
  133. package/dist/runtime-fallback/subagent-429-policy.d.ts +13 -0
  134. package/dist/runtime-fallback/subagent-429-policy.js +37 -0
  135. package/dist/runtime-fallback/subagent-429-policy.js.map +1 -0
  136. package/dist/runtime-fallback/subagent-429-session.d.ts +48 -0
  137. package/dist/runtime-fallback/subagent-429-session.js +316 -0
  138. package/dist/runtime-fallback/subagent-429-session.js.map +1 -0
  139. package/dist/shared/opencode-events.d.ts +22 -0
  140. package/dist/shared/opencode-events.js +75 -0
  141. package/dist/shared/opencode-events.js.map +1 -0
  142. package/dist/shared/types.d.ts +12 -1
  143. package/package.json +1 -1
  144. package/plugins/deepwork/.codex-plugin/plugin.json +1 -1
  145. package/plugins/deepwork/README.md +3 -2
  146. package/plugins/deepwork/agents/dw-builder.toml +3 -3
  147. package/plugins/deepwork/agents/dw-clarifier.toml +2 -2
  148. package/plugins/deepwork/agents/dw-code-search.toml +2 -2
  149. package/plugins/deepwork/agents/dw-coding.toml +2 -2
  150. package/plugins/deepwork/agents/dw-complex.toml +2 -2
  151. package/plugins/deepwork/agents/dw-creative.toml +2 -2
  152. package/plugins/deepwork/agents/dw-deep.toml +3 -3
  153. package/plugins/deepwork/agents/dw-doc-search.toml +2 -2
  154. package/plugins/deepwork/agents/dw-documenting.toml +2 -2
  155. package/plugins/deepwork/agents/dw-explore.toml +2 -2
  156. package/plugins/deepwork/agents/dw-frontend.toml +2 -2
  157. package/plugins/deepwork/agents/dw-hard-reasoning.toml +2 -2
  158. package/plugins/deepwork/agents/dw-media-reader.toml +2 -2
  159. package/plugins/deepwork/agents/dw-normal-task.toml +2 -2
  160. package/plugins/deepwork/agents/dw-oracle-2nd.toml +8 -0
  161. package/plugins/deepwork/agents/dw-oracle.toml +3 -3
  162. package/plugins/deepwork/agents/dw-orchestrator.toml +2 -2
  163. package/plugins/deepwork/agents/dw-plan-critic.toml +2 -2
  164. package/plugins/deepwork/agents/dw-planner.toml +3 -3
  165. package/plugins/deepwork/agents/dw-quick.toml +2 -2
  166. package/plugins/deepwork/agents/dw-research.toml +2 -2
  167. package/plugins/deepwork/agents/dw-reviewer.toml +2 -2
  168. package/plugins/deepwork/dist/cli/shim.d.ts +4 -2
  169. package/plugins/deepwork/dist/cli/shim.js +26 -11
  170. package/plugins/deepwork/dist/cli/shim.js.map +1 -1
  171. package/plugins/deepwork/dist/shared/opencode-events.d.ts +22 -0
  172. package/plugins/deepwork/dist/shared/opencode-events.js +75 -0
  173. package/plugins/deepwork/dist/shared/opencode-events.js.map +1 -0
  174. package/plugins/deepwork/dist/shared/types.d.ts +12 -1
  175. package/plugins/deepwork/package.json +1 -1
  176. package/plugins/deepwork/skills/deepwork/SKILL.md +74 -58
  177. package/plugins/deepwork/skills/deepwork-requesting-code-review/SKILL.md +53 -27
  178. package/plugins/deepwork/skills/deepwork-requesting-code-review/code-reviewer.md +11 -7
  179. package/plugins/deepwork/skills/deepwork-subagent-driven-development/SKILL.md +34 -21
  180. package/plugins/deepwork/skills/deepwork-subagent-driven-development/implementer-prompt.md +10 -3
  181. package/prompts/codex/agents/clarifier.md +4 -0
  182. package/prompts/codex/agents/orchestrator.md +12 -2
  183. package/prompts/codex/agents/plan-critic.md +4 -0
  184. package/prompts/codex/agents/planner.md +15 -10
  185. package/prompts/codex/agents/reviewer.md +8 -2
  186. package/prompts/codex/deepwork/gpt-5.6.md +20 -37
  187. package/prompts/omo/agents/clarifier.md +4 -0
  188. package/prompts/omo/agents/orchestrator.md +11 -0
  189. package/prompts/omo/agents/plan-critic.md +4 -0
  190. package/prompts/omo/agents/planner.md +15 -3
  191. package/prompts/omo/agents/reviewer.md +8 -2
  192. package/prompts/omo/deepwork/gpt-5.6.md +20 -37
  193. package/prompts/v1/agents/clarifier.md +4 -0
  194. package/prompts/v1/agents/orchestrator.md +12 -2
  195. package/prompts/v1/agents/plan-critic.md +4 -0
  196. package/prompts/v1/agents/planner.md +15 -10
  197. package/prompts/v1/agents/reviewer.md +8 -2
  198. package/prompts/v1/deepwork/gpt-5.6.md +20 -37
  199. package/skills/v1/requesting-code-review/SKILL.md +53 -27
  200. package/skills/v1/requesting-code-review/code-reviewer.md +11 -7
  201. package/skills/v1/subagent-driven-development/SKILL.md +34 -21
  202. package/skills/v1/subagent-driven-development/implementer-prompt.md +10 -3
package/README.md CHANGED
@@ -8,7 +8,7 @@ Concepts (model tiering, per-model specialized prompts, intent gating, proactive
8
8
 
9
9
  | Hook | What ocmm does |
10
10
  | ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
11
- | `config` | Registers 9 agents + 10 category-subagents with their preferred provider/model, shared skill paths, and slash commands. Attaches functional agent prompts plus workflow/model-family deepwork prompts to built-in agents, and category prompts to category subagents. User config can add, override, or disable any of them. |
11
+ | `config` | Registers 11 agents + 10 category-subagents with their preferred provider/model, shared skill paths, and slash commands. Attaches functional agent prompts plus workflow/model-family deepwork prompts to built-in agents, and category prompts to category subagents. User config can add, override, or disable any of them. |
12
12
  | `chat.params` | Resolves the variant for the active agent/model (4-tier priority: user-config -> agent-default -> category-default -> input-variant), respects explicit user choices, and applies only the model-family parameters ocmm supports for that model. Built-in defaults normalize category work to model-appropriate high/max reasoning where supported and avoid implicit Opus 4.7+ thinking budgets. |
13
13
  | `chat.message` | v1 workflow: queues superpowers skills content on the first message per session. Also expands bare ocmm slash commands in noninteractive `opencode run` input so `/ralph-loop ...` and shared-skill commands get command context even when the TUI slash parser is bypassed. |
14
14
  | `experimental.chat.system.transform` | Prepends queued v1 skill content and one-shot slash command context to `output.system`. omo workflow only uses this hook when a bare slash command was expanded by `chat.message`. |
@@ -222,7 +222,7 @@ The Codex plugin exposes:
222
222
  - copied ocmm shared skills plus flattened `deepwork-*` skills from `skills/v1/`;
223
223
  - a `deepwork` skill that maps ocmm's planning/delegation semantics to Codex tools;
224
224
  - plugin-scoped MCP servers generated from ocmm's MCP config, including the default `lsp` MCP served by the plugin-local `ocmm-lsp` wrapper;
225
- - generated `dw-*` Codex agent TOML files under `plugins/deepwork/agents/` for installers or local agent registration, including functional agents such as `dw-oracle` and `dw-creative`.
225
+ - generated `dw-*` Codex agent TOML files under `plugins/deepwork/agents/` for installers or local agent registration, including functional agents such as `dw-oracle`, `dw-oracle-2nd`, and `dw-creative`; configured review `variants` can also emit logical tier profiles such as `dw-oracle-high` and `dw-oracle-2nd-low`.
226
226
 
227
227
  OpenCode still uses `dist/index.js` and its OpenCode hook surface. The Codex adapter does not import or mutate the OpenCode plugin module at runtime.
228
228
 
@@ -250,25 +250,33 @@ Schema (Zod-validated; unknown keys rejected). All fields optional:
250
250
  "disable": []
251
251
  },
252
252
 
253
+ // Opt in per provider before --fast / OCMM_FAST can promote a route.
254
+ "fastModels": {
255
+ "providers": ["openai"],
256
+ "mappings": {
257
+ "openai/<original-model>": "<provider-local-fast-model>"
258
+ }
259
+ },
260
+
253
261
  "agents": {
254
262
  "reviewer": {
255
- "model": "anthropic/claude-opus-4-7",
263
+ "model": "<provider>/<primary-reasoning-model>",
256
264
  "variant": "max",
257
265
  },
258
266
  "orchestrator": {
259
- "model": "anthropic/claude-opus-4-7",
267
+ "model": "<provider>/<primary-reasoning-model>",
260
268
  "variant": "max",
261
269
  "fallbackModels": [
262
- "openai/gpt-5.5",
263
- { "providers": ["zhipu"], "model": "glm-5.1" },
270
+ "<provider>/<fallback-reasoning-model>",
271
+ { "providers": ["<provider>"], "model": "<fallback-model>", "variant": "high" },
264
272
  ],
265
273
  },
266
274
  "builder": {
267
275
  "requirement": {
268
276
  "variant": "high",
269
- "requiresProvider": ["openai"],
277
+ "requiresProvider": ["<provider>"],
270
278
  "fallbackChain": [
271
- { "providers": ["openai"], "model": "gpt-5.5", "variant": "high" },
279
+ { "providers": ["<provider>"], "model": "<implementation-model>", "variant": "high" },
272
280
  ],
273
281
  },
274
282
  },
@@ -276,7 +284,7 @@ Schema (Zod-validated; unknown keys rejected). All fields optional:
276
284
 
277
285
  "categories": {
278
286
  "hard-reasoning": {
279
- "model": "openai/gpt-5.5",
287
+ "model": "<provider>/<primary-reasoning-model>",
280
288
  "variant": "xhigh",
281
289
  },
282
290
  },
@@ -298,6 +306,14 @@ Schema (Zod-validated; unknown keys rejected). All fields optional:
298
306
  "capacity",
299
307
  "try again",
300
308
  ],
309
+ "subagent429": {
310
+ "enabled": true,
311
+ "maxRetries": 5,
312
+ "providerScopes": {
313
+ "anthropic": "provider",
314
+ "openai": "model"
315
+ }
316
+ }
301
317
  },
302
318
 
303
319
  "subagent": {
@@ -335,6 +351,66 @@ Schema (Zod-validated; unknown keys rejected). All fields optional:
335
351
  }
336
352
  ```
337
353
 
354
+ ### Canonical review-slot configuration
355
+
356
+ ```jsonc
357
+ {
358
+ "agents": {
359
+ "oracle": {
360
+ "model": "openai/gpt-5.6-terra",
361
+ "variant": "xhigh",
362
+ "variants": {
363
+ "low": "high",
364
+ "high": "max",
365
+ "max": { "model": "openai/gpt-5.6-sol", "variant": "max" }
366
+ }
367
+ },
368
+ "oracle-2nd": {
369
+ "model": "anthropic/claude-opus-4-7",
370
+ "variant": "xhigh",
371
+ "variants": { "max": "max" }
372
+ },
373
+ "oracle-3rd": { "model": "google/gemini-3.1-pro" },
374
+ "reviewer": {
375
+ "model": "openai/gpt-5.6-sol",
376
+ "variants": { "high": { "variant": "max" } }
377
+ }
378
+ }
379
+ }
380
+ ```
381
+
382
+ - Unsuffixed slot names (`oracle`, `oracle-2nd`, `oracle-3rd`, `reviewer`) mean logical **normal** tier.
383
+ - Logical tier (`-low`/`-high`/`-max`) and native provider model `variant` are separate controls.
384
+ - Review slots are priority order, not capability ranking.
385
+ - Slots `oracle-3rd` through `oracle-9th` require explicit config.
386
+ - Multiple configured review profiles do not fan out automatically; dispatch still uses one selected profile.
387
+ - `reviewer` has no ordinal slot naming.
388
+ - xhigh-equivalent review floors still apply even when a logical `low` tier is selected.
389
+ - `agents.oracle-high` is a deprecated config spelling migrated to `agents.oracle-2nd`, while runtime `oracle-high` remains the first-slot logical high tier.
390
+ - Alias/canonical collisions fail validation.
391
+ - `schema.json` and direct `OcmmConfigSchema` parsing remain strict. Runtime `loadConfig()` is tolerant: a schema-mismatched review field or entry is discarded locally while valid siblings and lower-priority values remain loaded. Only ambiguous alias/canonical migration collisions fall back to defaults.
392
+
393
+ ### Disabling review slots and interruption recovery
394
+
395
+ ```jsonc
396
+ {
397
+ "disabledAgents": ["oracle-2nd", "oracle-high"],
398
+ "disabledHooks": ["subagent-interruption-recovery"]
399
+ }
400
+ ```
401
+
402
+ - `oracle-2nd` disables that entire second review slot, including its logical tier profiles.
403
+ - `oracle-high` disables only the first-slot logical high tier profile; it does not disable `oracle` normal or other slots.
404
+ - `subagent-interruption-recovery` is optional evidence correlation + resume-note behavior layered on top of existing fallback flow.
405
+
406
+ Interruption recovery behavior:
407
+
408
+ 1. Reuses the existing dedicated 429/generic fallback controller and retry budgets.
409
+ 2. Keys correlation by child session and deduplicates parent `message.part.updated` evidence.
410
+ 3. Treats child `session.error` as provider-error evidence.
411
+ 4. Never retries explicit abort, permission denial, unknown agent, deletion, or ordinary empty output outcomes.
412
+ 5. May append one manual continuation notice only when an explicit task identifier is observed in task input/output or correlated parent-part evidence; it never substitutes `childSessionID` for `task_id`, dispatches from `tool.execute.after`, or synthesizes a parent prompt.
413
+
338
414
  ### Shorthand vs full form
339
415
 
340
416
  Both `agents.*` and `categories.*` accept either shape:
@@ -374,6 +450,7 @@ Both `agents.*` and `categories.*` accept either shape:
374
450
  | `todo-description-override` | Enabled | Overrides the `todowrite` tool description with ocmm’s structured todo format. |
375
451
  | `commit-guard-injector` | Enabled | Injects the no-autonomous-git-write constraint into the system prompt. |
376
452
  | `subagent-git-guard` | Enabled | Blocks git write commands in subagent sessions except allowed temp-repo cases. |
453
+ | `subagent-interruption-recovery` | Enabled | Correlates child-session interruption evidence (`session.error` + `message.part.updated`) and lets the output adapter append at most one manual continuation notice without owning retry dispatch. |
377
454
  | `subagent-depth-guard` | Enabled | Blocks `task` dispatches that would exceed `subagent.maxDepth`; default max depth is 3 subagent layers. |
378
455
 
379
456
  ## Variant policy
@@ -382,48 +459,51 @@ Both `agents.*` and `categories.*` accept either shape:
382
459
 
383
460
  | Model family | ocmm behavior |
384
461
  | ------------ | ------------- |
385
- | Explicit user config or request | Respected as written. ocmm does not silently rewrite user-declared `model`, `variant`, `reasoningEffort`, or `thinking` values. |
386
- | GPT/Codex non-mini built-in defaults | Built-in defaults never request below `high`; category defaults from `coding` upward resolve to `max`, which currently translates to the GPT/Codex `xhigh` reasoning effort. |
387
- | GPT/Codex mini | Keeps the full OpenAI reasoning ladder, including `minimal`, `low`, and no-op `none`. |
388
- | Claude Opus 4.7+ / Fable | Built-in defaults do not emit an ocmm-owned `thinking` budget or `reasoningEffort`; explicit user config is passed through as written. |
462
+ | Explicit user config or request | Respected as written except for review/plan-review floors: `reviewer`, Oracle review profiles (`oracle`, `oracle-high`, `oracle-2nd`, etc.), and `plan-critic` are raised to the model family's xhigh-equivalent/highest-supported review effort when possible. |
463
+ | GPT-like non-mini built-in defaults | Built-in defaults never request below `high`; category defaults from `coding` upward resolve to `max`. GPT-5.6 supports native `reasoningEffort=max`; other GPT-like/Codex-like families use their catalog-supported maximum effort. |
464
+ | GPT-like mini | Keeps the provider's full low-effort ladder, including `minimal`, `low`, and no-op `none` when supported. |
465
+ | Claude Opus 4.7+ / Fable | Built-in defaults do not emit an ocmm-owned `thinking` budget or `reasoningEffort`; explicit non-review user config is passed through as written, while review/plan-review agents still receive the xhigh-equivalent floor when possible. |
389
466
  | Older Claude | Uses Anthropic `thinking` budgets for non-`none` variants. |
390
467
  | Gemini | Uses `reasoningEffort`; high and above also enable provider thinking. |
391
- | Latest GLM / DeepSeek | Built-in defaults normalize low/medium-style local variants to canonical high/max controls where the provider family supports them; explicit user config or request variants are left as written. |
468
+ | Latest GLM / DeepSeek | Built-in defaults normalize low/medium-style local variants to canonical high/max controls where the provider family supports them; non-review explicit user config or request variants are left as written. |
392
469
  | Category defaults | `quick` stays lightweight. Built-in category defaults from `coding` upward resolve to `max`; explicit user category config or input variants are respected as written. |
393
470
  | Kimi / MiniMax / unknown | Uses the existing temperature shaping fallback when no better family-specific knob exists. |
394
471
 
395
472
  ## Built-in agents
396
473
 
397
474
  ```
398
- orchestrator anthropic/claude-opus-4-7 variant=max main coordinator
399
- builder openai/gpt-5.5 variant=high autonomous implementer
400
- reviewer openai/gpt-5.5 variant=high read-only consultant
401
- doc-search openai/gpt-5.4-mini-fast (none) external docs / OSS lookup
402
- code-search openai/gpt-5.4-mini-fast (none) internal codebase grep
403
- planner anthropic/claude-opus-4-7 variant=max work-plan author
404
- clarifier anthropic/claude-sonnet-4-6 (none) pre-plan analysis
405
- plan-critic openai/gpt-5.5 variant=xhigh plan QA
406
- media-reader openai/gpt-5.5 variant=high multimodal analysis
475
+ orchestrator primary reasoning lane variant=max main coordinator
476
+ builder implementation lane variant=high autonomous implementer
477
+ reviewer primary review lane xhigh floor read-only consultant
478
+ oracle review slot 1 (logical normal) xhigh floor self-supervision reviewer
479
+ oracle-high review slot 1 logical high derived profile runtime tier profile (from variants)
480
+ oracle-2nd review slot 2 (logical normal) xhigh floor second-priority independent reviewer
481
+ doc-search lightweight lookup lane (none) external docs / OSS lookup
482
+ code-search lightweight lookup lane (none) internal codebase grep
483
+ planner primary reasoning lane variant=max work-plan author
484
+ clarifier analysis lane (none) pre-plan analysis
485
+ plan-critic primary review lane variant=xhigh plan QA
486
+ media-reader multimodal-capable lane variant=high multimodal analysis
407
487
  ```
408
488
 
409
489
  ## Built-in categories (also registered as subagents)
410
490
 
411
491
  ```
412
- frontend google/gemini-3.1-pro variant=high UI/UX, layout, styling, visual QA
413
- creative google/gemini-3.1-pro variant=high concepts, naming, narrative, framing
414
- hard-reasoning openai/gpt-5.5 variant=xhigh ultrabrain-style decisions and tradeoffs
415
- research openai/gpt-5.5 variant=high missing-fact investigation and evidence gathering
416
- quick openai/gpt-5.4-mini (none) fully specified mechanical edits
417
- coding anthropic/claude-sonnet-4-6 (none) determined code edits and bug fixes
418
- normal-task anthropic/claude-sonnet-4-6 (none) ordinary bounded tasks
419
- complex openai/gpt-5.5 variant=high coordinated multi-step ordinary tasks
420
- deep openai/gpt-5.5 (none) autonomous system development and delivery
421
- documenting kimi-for-coding/k2p5 (none) standalone documentation and prose
492
+ frontend UI/multimodal-capable lane variant=high UI/UX, layout, styling, visual QA
493
+ creative creative-capable lane variant=high concepts, naming, narrative, framing
494
+ hard-reasoning primary reasoning lane variant=xhigh ultrabrain-style decisions and tradeoffs
495
+ research research-capable lane variant=high missing-fact investigation and evidence gathering
496
+ quick lightweight lane (none) fully specified mechanical edits
497
+ coding implementation lane (none) determined code edits and bug fixes
498
+ normal-task implementation lane (none) ordinary bounded tasks
499
+ complex coordinated-work lane variant=high coordinated multi-step ordinary tasks
500
+ deep primary reasoning lane variant=max autonomous system development and delivery
501
+ documenting prose-capable lane (none) standalone documentation and prose
422
502
  ```
423
503
 
424
- Variants shown are the **raw source values** from `src/data/categories.ts`. At runtime the variant policy normalizes categories from `coding` upward to model-appropriate `max` (which translates to the GPT/Codex `xhigh` reasoning effort for GPT-class models) unless the user explicitly overrides them; see the variant policy table above. Entries marked `(none)` carry no built-in variant and rely on this normalization.
504
+ Rows above describe built-in selection lanes, not required provider channels or model IDs. Example model names elsewhere in the repository are references only; explicit user configuration and the currently available model catalog decide the actual model. Agent rows show source defaults or enforced review floors; category rows show the **raw source values** from `src/data/categories.ts`. At runtime the variant policy normalizes categories from `coding` upward to model-appropriate `max` unless the user explicitly overrides them; see the variant policy table above. Entries marked `(none)` carry no built-in variant and rely on this normalization.
425
505
 
426
- The primary structure is `orchestrator` plus four functional agents: `reviewer`, `planner`, `clarifier`, and `plan-critic`. Supporting utility agents (`builder`, `doc-search`, `code-search`, `media-reader`) still use the workflow/model-family deepwork prompt without an additional role prompt. `builder` and `planner` are registered with `mode:"all"` so they can be selected directly and used as delegated task agents. Each category has a prompt under `prompts/<workflow>/category/<name>.md` that is set as the category-subagent's system prompt. Callers invoke categories via `task(category="deep", ...)` or direct subagent names such as `@deep` and `@quick`. Compatibility aliases `@oracle` and `@explore` are registered for upstream omo-style delegation and map to local `reviewer` and `code-search`.
506
+ The primary review structure is `reviewer` plus canonical Oracle slots (`oracle`, `oracle-2nd`, optional `oracle-3rd` ... `oracle-9th` when explicitly configured). Runtime logical tier names such as `oracle-high` and `oracle-max` are derived from configured `variants` and stay within slot 1; they are not separate slot registrations. `oracle` is the first-slot self-supervision agent and shares the reviewer prompt via `promptSource: "reviewer"`; `oracle-2nd` is the second-priority independent slot. `agents.oracle-high` is a deprecated config spelling migrated to `agents.oracle-2nd` during config load so legacy config keeps working while canonical keys remain slot-based. Supporting utility agents (`builder`, `doc-search`, `code-search`, `media-reader`) still use the workflow/model-family deepwork prompt without an additional role prompt. `builder` is registered with `mode:"primary"`; `planner` is registered with `mode:"all"` so it can be selected directly and used as a delegated task agent. Each category has a prompt under `prompts/<workflow>/category/<name>.md` that is set as the category-subagent's system prompt. Callers invoke categories via `task(category="deep", ...)` or direct subagent names such as `@deep` and `@quick`. The upstream-style compatibility alias `@explore` maps to local `code-search`; `@oracle` selects the independent local `oracle` agent rather than aliasing `reviewer`.
427
507
 
428
508
  ## Prompt architecture
429
509
 
@@ -432,11 +512,11 @@ Prompts are organized by workflow:
432
512
  ```
433
513
  prompts/
434
514
  omo/ # upstream omo prompts
435
- deepwork/{default,gpt,gemini,glm,codex,planner}.md
515
+ deepwork/{default,gpt,gpt-5.6,gemini,glm,codex,planner}.md
436
516
  agents/{orchestrator,reviewer,planner,clarifier,plan-critic}.md
437
517
  category/*.md (10 files)
438
518
  v1/ # superpowers-style prompts
439
- deepwork/{default,gpt,gemini,glm,codex,planner}.md
519
+ deepwork/{default,gpt,gpt-5.6,gemini,glm,codex,planner}.md
440
520
  agents/{orchestrator,reviewer,planner,clarifier,plan-critic}.md
441
521
  category/*.md (10 files)
442
522
  skills/
@@ -462,7 +542,7 @@ Model-family variant selection (`pickDeepworkVariantForAgent`):
462
542
  - Codex family -> `codex.md`
463
543
  - others (Claude/Kimi/Minimax/unknown) -> `default.md`
464
544
 
465
- Variant is selected at config time using the agent's `fallbackChain[0].model` + `classifyModelFamily`. For built-in functional agents, ocmm composes `agents/<name>.md` with the selected `deepwork/<variant>.md`; the role prompt is authoritative for that agent's scope and the deepwork prompt supplies workflow/model calibration. Categories receive only their category prompt. No runtime keyword detection — prompts are attached declaratively.
545
+ Variant is selected at config time using the final selected agent model after explicit user configuration, inherited aliases, and catalog-confirmed upgrades are considered. For built-in functional agents, ocmm composes `agents/<name>.md` with the selected `deepwork/<variant>.md`; the role prompt is authoritative for that agent's scope and the deepwork prompt supplies workflow/model calibration. Categories receive only their category prompt. No runtime keyword detection — prompts are attached declaratively.
466
546
 
467
547
  For v1 workflow, superpowers skills are injected on the first message per session via `chat.message` (queue) + `system.transform` (prepend). For omo workflow, prompts are attached declaratively at config time; `chat.message` and `system.transform` only participate when a bare noninteractive slash command needs compatibility expansion.
468
548
 
@@ -486,9 +566,10 @@ A **profile** is a named partial overlay on the base config. It can override any
486
566
 
487
567
  ### Selecting a profile
488
568
 
489
- Two ways, in priority order:
569
+ Ambient selection remains, in priority order: `OCMM_NO_PROFILE`, then `OCMM_PROFILE`, then config `activeProfile`.
490
570
 
491
- 1. **`OCMM_PROFILE` env var** (highest priority, per-shell, not persisted):
571
+ 1. **`OCMM_NO_PROFILE=1` or `OCMM_NO_PROFILE=true`** disables profile selection for that process.
572
+ 2. **`OCMM_PROFILE` env var** selects a profile for the shell without persisting it:
492
573
 
493
574
  ```bash
494
575
  OCMM_PROFILE=gpu opencode run "..."
@@ -496,13 +577,35 @@ Two ways, in priority order:
496
577
 
497
578
  Empty string is treated as unset — falls back to the config's `activeProfile`.
498
579
 
499
- 2. **`activeProfile` in the config file** (persisted):
580
+ 3. **`activeProfile` in the config file** is the persisted fallback:
500
581
 
501
582
  ```jsonc
502
583
  { "activeProfile": "gpu" }
503
584
  ```
504
585
 
505
- If the named profile doesn't exist, it is silently ignored the base config loads unchanged.
586
+ If the named profile doesn't exist, the OpenCode plugin facade warns and preserves the base config.
587
+
588
+ ### OpenCode plugin profile facade and qualified aliases
589
+
590
+ Directory profile descriptors and qualified aliases are an **OpenCode plugin facade** feature. Only `loadOpenCodePluginConfig` materializes them; ordinary programmatic `loadConfig` calls — including `loadConfig({ host: "opencode" })` — and the Codex adapter remain non-materializing.
591
+
592
+ For each profile name, descriptor precedence is inline `profiles.<name>` < user `ocmm-profiles/` directory < project `.opencode/ocmm-profiles/` directory. When both extensions exist for one basename, `.jsonc` wins **before parsing**. An invalid inactive descriptor is inert. An invalid selected descriptor at higher precedence makes the plugin atomically use defaults; it does not fall through to a lower-precedence descriptor.
593
+
594
+ An alias containing a colon uses first-colon grammar, `<profile>:<agent>`. For example, a base agent can import the `reviewer` requirement from the `precision` profile while retaining its own behavior:
595
+
596
+ ```jsonc
597
+ {
598
+ "agents": {
599
+ "oracle": {
600
+ "alias": "precision:reviewer",
601
+ "description": "Local Oracle behavior remains local",
602
+ "promptAppend": "Use this role's local review instructions."
603
+ }
604
+ }
605
+ }
606
+ ```
607
+
608
+ The import is requirement-only: it copies the normalized `ModelRequirement` — `fallbackChain`; its requirement-level native `variant`; each fallback entry's `providers`, `model`, native `variant`, and model-control metadata; and `requiresModel`, `requiresAnyModel`, and `requiresProvider`. Agent-level logical review `variants` remain local and are not imported. Permissions, prompts, tools, description, other agent controls, and profile-wide fields also stay on the source agent.
506
609
 
507
610
  ### Profile merge semantics
508
611
 
@@ -515,6 +618,20 @@ If the named profile doesn't exist, it is silently ignored — the base config l
515
618
 
516
619
  `fallbackModels` and `disabledAgents` are unioned across user and project configs (NOT profiles). Profiles are the one layer that replaces.
517
620
 
621
+ ### Fast model routing
622
+
623
+ Fast routing is opt-in and applies only to **OCMM-managed routes**. It never mutates unmanaged OpenCode agents or provider catalogs. Use the OpenCode shim:
624
+
625
+ ```bash
626
+ ocmm --fast run "Review this change"
627
+ ```
628
+
629
+ Before an explicit `--` separator, the shim consumes `--fast`; `ocmm -- --fast` instead passes `--fast` to OpenCode verbatim. The shim sets `OCMM_FAST=1` in its child environment only when it consumes that flag; otherwise it clears any inherited child value. For direct plugin activation, only the exact ambient values `OCMM_FAST=1` and `OCMM_FAST=true` enable fast routing; every other value is false.
630
+
631
+ `fastModels.providers` is an explicit, case-sensitive provider allowlist. Omitting it or leaving it empty disables promotion. For an allowlisted selected model, `fastModels.mappings` looks up the qualified original key `provider/model`; its value is a provider-local model ID (it may itself contain `/`), and the already-selected provider is retained. An explicitly owned mapping key is authoritative, including a self-map no-op.
632
+
633
+ Without an explicit mapping, ocmm tries `${modelID}-fast` only when that exact model exists in the selected provider's catalog. A selected model already ending in `-fast` is not promoted again.
634
+
518
635
  ## `ocmm` shim
519
636
 
520
637
  The `ocmm` binary launches opencode with configurable config isolation. It merges providers from your global `opencode.json`, adds the ocmm plugin, and optionally strips the `oh-my-openagent` plugin to avoid collision.
@@ -522,6 +639,7 @@ The `ocmm` binary launches opencode with configurable config isolation. It merge
522
639
  ```bash
523
640
  ocmm # start opencode (no isolation by default)
524
641
  ocmm -p work run "hello" # select profile + run
642
+ ocmm --fast run "Review this change" # opt into fast model routing
525
643
  ocmm --mode xdg run "hello" # full config isolation
526
644
  ocmm --mode config-file -c run x # config-file mode + continue
527
645
  ocmm --help
@@ -531,6 +649,7 @@ ocmm --help
531
649
 
532
650
  ```
533
651
  -p, --profile <name> Select ocmm profile (sets OCMM_PROFILE)
652
+ --fast Enable opt-in fast model routing
534
653
  --mode <m> Isolation: none|inline|config-file|config-dir|xdg (default: none)
535
654
  --no-providers Don't merge providers from global config
536
655
  --no-plugins Don't merge plugins from global config
@@ -544,7 +663,7 @@ ocmm --help
544
663
  -- Separator; everything after passes to opencode verbatim
545
664
  ```
546
665
 
547
- All non-ocmm args (including `-c`, `--continue`, `--model`, `run`, etc.) pass through to opencode.
666
+ All non-ocmm args (including `-c`, `--continue`, `--model`, `run`, etc.) pass through to opencode. Before the explicit `--` separator, `--fast` is an ocmm shim flag; after it, `ocmm -- --fast` passes that token through to OpenCode.
548
667
 
549
668
  ### Isolation modes
550
669
 
@@ -576,14 +695,24 @@ The CLI reads/writes the **user** config file at `~/.config/opencode/ocmm.json[c
576
695
 
577
696
  ## Runtime fallback
578
697
 
579
- When a model call fails with a retryable error (HTTP 429/5xx, or a message matching `retryOnPatterns`), ocmm:
698
+ When a model call falls through to generic runtime fallback (HTTP 429/5xx, or a message matching `retryOnPatterns`), ocmm:
580
699
 
581
700
  1. Resolves the failing agent's `ModelRequirement` (user config -> built-in defaults).
582
701
  2. Marks the just-failed model as failed with a timestamp.
583
702
  3. Finds the next entry in the fallback chain that is not in cooldown (default 60s).
584
- 4. Dispatches a new `client.session.prompt` call with the next model, reusing the last user message's parts.
703
+ 4. Dispatches a new `client.session.prompt` call with the next model, reusing the latest contiguous user-message block.
585
704
  5. Aborts the original session first (best-effort).
586
705
 
706
+ ### Subagent 429 recovery
707
+
708
+ New child sessions have a dedicated recovery path only for retryable errors with an explicit HTTP status of `429`. It recognizes the OpenCode parent-session fields `parentID`, `parentId`, `parentSessionID`, and `parentSessionId` when the child is created; root sessions, untracked sessions, and regex-only matches remain on generic fallback. A non-429 error before the child enters the dedicated path leaves it on the generic path.
709
+
710
+ Each dedicated 429 waits for two signals before retrying or switching: its delay timer and the idle event owned by that error. Dedicated dispatches do **not** abort the child session; generic fallback continues to use a best-effort abort. Recovery hints longer than 10 minutes become a zero-delay probe, while hints of 10 minutes or less wait in full. With no hint, the wait uses capped equal-jitter exponential backoff (1-second base, 30-second cap).
711
+
712
+ `subagent429.maxRetries` defaults to 5 and is scoped to a model by default. Set it to 0 to prepare a switch immediately (the two signals still gate dispatch). A configured provider scope blocks every model of that provider, but only in the current child session. Every newly selected model starts with a fresh retry budget; `runtimeFallback.maxAttempts` counts only committed model switches, not same-model dedicated retries.
713
+
714
+ While a dedicated dispatch is active, the first queued provider outcome takes priority over idle. A queued 429 continues the dedicated flow after the active dispatch settles; a queued non-429 error hands off to generic fallback after settlement; and a bare `false` dispatch result with no queued outcome stops the dedicated flow. With `runtimeFallback.dispatch: false`, ocmm is observe-only and dispatches neither dedicated retries nor generic fallback. Dedicated state is never shared between child sessions.
715
+
587
716
  ```jsonc
588
717
  "runtimeFallback": {
589
718
  "enabled": true,
@@ -591,12 +720,30 @@ When a model call fails with a retryable error (HTTP 429/5xx, or a message match
591
720
  "maxAttempts": 3,
592
721
  "cooldownSeconds": 60,
593
722
  "retryOnStatusCodes": [429, 500, 502, 503, 504],
594
- "retryOnPatterns": ["rate limit", "overloaded", "..."]
723
+ "retryOnPatterns": ["rate limit", "overloaded", "..."],
724
+ "subagent429": {
725
+ "enabled": true,
726
+ "maxRetries": 5,
727
+ "providerScopes": {
728
+ "anthropic": "provider",
729
+ "openai": "model"
730
+ }
731
+ }
595
732
  }
596
733
  ```
597
734
 
598
735
  Abort errors are never retried. Deduplication is enforced via an in-flight `Set<sessionID>`.
599
736
 
737
+ ### Subagent interruption recovery
738
+
739
+ The `subagent-interruption-recovery` hook is enabled by default and layers evidence correlation over the existing fallback ownership model:
740
+
741
+ - It reuses the existing 429/generic fallback controller and budget accounting.
742
+ - Correlation is keyed by child session and deduplicates parent `message.part.updated` task-part evidence.
743
+ - Child `session.error` events are treated as provider-error evidence in that correlation record.
744
+ - It never retries explicit abort, permission denial, unknown agent, deletion, or ordinary empty-output outcomes.
745
+ - The task-output adapter may append at most one manual continuation notice only when an explicit task identifier is observed in tool input/output or correlated parent-part evidence. It never substitutes `childSessionID` for `task_id`, dispatches from `tool.execute.after`, or synthesizes a parent prompt.
746
+
600
747
  ## Develop
601
748
 
602
749
  ```bash
@@ -7,7 +7,7 @@
7
7
  * global opencode.json so you don't redefine providers.
8
8
  *
9
9
  * USAGE:
10
- * ocmm [-p <name>] [-n] [--mode <m>] [--no-providers] [--no-plugins] [--ocmm-only]
10
+ * ocmm [-p <name>] [-n] [--fast] [--mode <m>] [--no-providers] [--no-plugins] [--ocmm-only]
11
11
  * [--config-dir <path>] [--opencode <path-or-name>]
12
12
  * [--keep-omo] [--reset] [-- <opencode args...>]
13
13
  * ocmm --help
@@ -20,13 +20,14 @@
20
20
  * config-dir OPENCODE_CONFIG_DIR env var (redirects config dir, uses --config-dir)
21
21
  * xdg XDG_CONFIG_HOME env var (full isolation, uses --config-dir, can strip plugins)
22
22
  *
23
- * All flags except -p/--profile, --reset, and --help can also be set in
23
+ * All flags except -p/--profile, --fast, --reset, and --help can also be set in
24
24
  * the \`shim\` section of ocmm.json[c]. CLI flags override config values.
25
25
  */
26
26
  import type { ShimConfig, IsolationMode } from "../config/schema.ts";
27
27
  interface ShimArgs {
28
28
  profile?: string;
29
29
  noProfile: boolean;
30
+ fast: boolean;
30
31
  mode?: IsolationMode;
31
32
  noProviders: boolean;
32
33
  noPlugins: boolean;
@@ -61,6 +62,7 @@ export declare function buildIsolatedConfig(opts: {
61
62
  keepOmo?: boolean;
62
63
  }): OpencodeConfig;
63
64
  export declare function parseArgs(argv: string[]): ShimArgs;
65
+ export declare function buildChildEnv(parent: NodeJS.ProcessEnv, args: ShimArgs): NodeJS.ProcessEnv;
64
66
  /**
65
67
  * Read the `shim` section from the global ocmm.json[c] to use as defaults.
66
68
  * CLI flags override these; config provides the baseline.
package/dist/cli/shim.js CHANGED
@@ -7,7 +7,7 @@
7
7
  * global opencode.json so you don't redefine providers.
8
8
  *
9
9
  * USAGE:
10
- * ocmm [-p <name>] [-n] [--mode <m>] [--no-providers] [--no-plugins] [--ocmm-only]
10
+ * ocmm [-p <name>] [-n] [--fast] [--mode <m>] [--no-providers] [--no-plugins] [--ocmm-only]
11
11
  * [--config-dir <path>] [--opencode <path-or-name>]
12
12
  * [--keep-omo] [--reset] [-- <opencode args...>]
13
13
  * ocmm --help
@@ -20,7 +20,7 @@
20
20
  * config-dir OPENCODE_CONFIG_DIR env var (redirects config dir, uses --config-dir)
21
21
  * xdg XDG_CONFIG_HOME env var (full isolation, uses --config-dir, can strip plugins)
22
22
  *
23
- * All flags except -p/--profile, --reset, and --help can also be set in
23
+ * All flags except -p/--profile, --fast, --reset, and --help can also be set in
24
24
  * the \`shim\` section of ocmm.json[c]. CLI flags override config values.
25
25
  */
26
26
  import { existsSync, readFileSync, writeFileSync, mkdirSync, rmSync, copyFileSync } from "node:fs";
@@ -168,6 +168,7 @@ export function parseArgs(argv) {
168
168
  noProviders: false,
169
169
  noPlugins: false,
170
170
  noProfile: false,
171
+ fast: false,
171
172
  keepOmo: false,
172
173
  reset: false,
173
174
  help: false,
@@ -203,6 +204,9 @@ export function parseArgs(argv) {
203
204
  case "-n":
204
205
  args.noProfile = true;
205
206
  break;
207
+ case "--fast":
208
+ args.fast = true;
209
+ break;
206
210
  case "--no-providers":
207
211
  args.noProviders = true;
208
212
  break;
@@ -266,11 +270,27 @@ export function parseArgs(argv) {
266
270
  }
267
271
  return args;
268
272
  }
273
+ export function buildChildEnv(parent, args) {
274
+ const env = { ...parent };
275
+ if (args.profile) {
276
+ env.OCMM_PROFILE = args.profile;
277
+ }
278
+ if (args.noProfile) {
279
+ env.OCMM_NO_PROFILE = "1";
280
+ }
281
+ if (args.fast) {
282
+ env.OCMM_FAST = "1";
283
+ }
284
+ else {
285
+ delete env.OCMM_FAST;
286
+ }
287
+ return env;
288
+ }
269
289
  function printHelp() {
270
290
  console.log(`ocmm — launch opencode with isolated config
271
291
 
272
292
  USAGE:
273
- ocmm [-p <name>] [-n] [--mode <m>] [--no-providers] [--no-plugins] [--ocmm-only]
293
+ ocmm [-p <name>] [-n] [--fast] [--mode <m>] [--no-providers] [--no-plugins] [--ocmm-only]
274
294
  [--config-dir <path>] [--opencode <path-or-name>]
275
295
  [--keep-omo] [--reset] [-- <opencode args...>]
276
296
  ocmm --help
@@ -278,6 +298,7 @@ USAGE:
278
298
  OCMM FLAGS:
279
299
  -p, --profile <name> Select ocmm profile at startup (sets OCMM_PROFILE)
280
300
  -n, --no-profile Start without loading any profile (overrides activeProfile)
301
+ --fast Enable fast model routing (requires an allowlisted provider)
281
302
  --mode <m> Isolation method: none|inline|config-file|config-dir|xdg
282
303
  (default: none, or 'shim.mode' in ocmm.jsonc)
283
304
  --no-providers Don't merge providers from global opencode config
@@ -313,7 +334,7 @@ PASSTHROUGH:
313
334
  ocmm --mode inline run "hello" # inline config injection
314
335
  ocmm --mode config-file -c run "x" # config-file mode + continue
315
336
 
316
- All flags except -p/--profile, --reset, and --help can also be set in the \`shim\`
337
+ All flags except -p/--profile, --fast, --reset, and --help can also be set in the \`shim\`
317
338
  section of ocmm.json[c]. CLI flags override config values.`);
318
339
  }
319
340
  /**
@@ -353,13 +374,7 @@ function main() {
353
374
  mergePlugins: !noPlugins,
354
375
  keepOmo,
355
376
  });
356
- const env = { ...process.env };
357
- if (args.profile) {
358
- env.OCMM_PROFILE = args.profile;
359
- }
360
- if (args.noProfile) {
361
- env.OCMM_NO_PROFILE = "1";
362
- }
377
+ const env = buildChildEnv(process.env, args);
363
378
  switch (mode) {
364
379
  case "none": {
365
380
  env.OPENCODE_CONFIG_CONTENT = JSON.stringify(config);
@@ -1 +1 @@
1
- {"version":3,"file":"shim.js","sourceRoot":"","sources":["../../src/cli/shim.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shim.js","sourceRoot":"","sources":["../../src/cli/shim.ts"],"names":[],"mappings":"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"}