oh-my-opencode 5.0.0-beta.79 → 5.0.0-beta.80
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.
- package/.agents/command/remove-deadcode.md +1 -1
- package/.agents/skills/hyperplan/SKILL.md +5 -5
- package/.agents/skills/remove-deadcode/SKILL.md +1 -1
- package/.agents/skills/security-research/SKILL.md +4 -4
- package/dist/cli/index.js +499 -336
- package/dist/cli-node/index.js +499 -336
- package/dist/config-migration/category-deep-split.d.ts +3 -0
- package/dist/config-migration/migration-plans.d.ts +1 -0
- package/dist/features/builtin-commands/templates/hyperplan.d.ts +1 -1
- package/dist/features/builtin-commands/templates/refactor-sections/team-mode-addendum.d.ts +1 -1
- package/dist/features/builtin-commands/templates/remove-ai-slops.d.ts +1 -1
- package/dist/index.js +282 -123
- package/dist/plugin-config/omo-config-chain.d.ts +1 -0
- package/dist/skills/debugging/references/methodology/02-investigate.md +5 -5
- package/dist/skills/refactor/SKILL.md +2 -2
- package/dist/skills/remove-ai-slops/SKILL.md +4 -4
- package/dist/skills/ulw-execute/SKILL.md +3 -2
- package/dist/skills/ulw-plan/references/full-workflow.md +1 -1
- package/dist/skills/ulw-research/SKILL.md +2 -2
- package/dist/tools/delegate-task/openai-categories.d.ts +6 -4
- package/dist/tui.js +146 -71
- package/package.json +14 -14
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +77 -8
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +63 -17
- package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +63 -17
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-template.js +3 -3
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +14 -6
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.js +9 -1
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-template.ts +3 -3
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/src/surface.ts +9 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-template.test.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-contract.test.ts +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/02-investigate.md +5 -5
- package/packages/omo-codex/plugin/skills/refactor/SKILL.md +2 -2
- package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +4 -4
- package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +3 -2
- package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +1 -1
- package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +2 -2
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +167 -51
- package/packages/shared-skills/skills/debugging/references/methodology/02-investigate.md +5 -5
- package/packages/shared-skills/skills/refactor/SKILL.md +2 -2
- package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +4 -4
- package/packages/shared-skills/skills/ulw-execute/SKILL.md +3 -2
- package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +1 -1
- package/packages/shared-skills/skills/ulw-research/SKILL.md +2 -2
|
@@ -75,22 +75,22 @@ When the `team_*` tools are present, create a **debug-squad** team and split inv
|
|
|
75
75
|
"members": [
|
|
76
76
|
{
|
|
77
77
|
"kind": "category",
|
|
78
|
-
"category": "deep",
|
|
78
|
+
"category": "deep-low",
|
|
79
79
|
"prompt": "You are the Runtime State Inspector. Your job: attach to the live process, hit breakpoints, read program state (variables, heap, goroutines, stack, registers depending on runtime), and report observed values verbatim. Never guess — if you don't see the value, say so. Report back via team_send_message with file:line / address references and captured values. Never edit source code. Never run git commands. If you need an instrumentation statement added (breakpoint(), debugger;, dbg!, etc.), ask the Lead first."
|
|
80
80
|
},
|
|
81
81
|
{
|
|
82
82
|
"kind": "category",
|
|
83
|
-
"category": "deep",
|
|
83
|
+
"category": "deep-low",
|
|
84
84
|
"prompt": "You are the Log Archaeologist. Your job: grep server logs, stderr streams, SDK-internal debug output (DEBUG env, RUST_LOG, GODEBUG, PYTHONASYNCIODEBUG), and correlate timestamps. Produce a timeline of events with latencies. Flag anything that looks like a silent catch, a swallowed rejection, a panic recovered-and-ignored, a success response that contains failure signals (HTTP 200 with empty body, stopReason=error, exit 0 with error-in-stdout). Never edit source code."
|
|
85
85
|
},
|
|
86
86
|
{
|
|
87
87
|
"kind": "category",
|
|
88
|
-
"category": "deep",
|
|
88
|
+
"category": "deep-low",
|
|
89
89
|
"prompt": "You are the Reproduction Engineer. Your job: build the smallest reliable repro — a curl command, a vitest/pytest/go test, a tmux script, a Playwright script for browser bugs, a pwntools script for binary targets. It must reproduce on first try and be copy-pasteable by the Lead. Document exact input, expected output, observed output. Save repro artifacts under /tmp/ and tell the Lead to journal them. If the bug is browser-based you MUST use Playwright CLI — do not simulate with curl."
|
|
90
90
|
},
|
|
91
91
|
{
|
|
92
92
|
"kind": "category",
|
|
93
|
-
"category": "deep",
|
|
93
|
+
"category": "deep-low",
|
|
94
94
|
"prompt": "You are the Trace Correlator. Your job: take findings from the other members and cross-link them. Build a causal chain from symptom to suspected cause. Identify missing evidence. Propose the next single most-decisive runtime query. Never edit source code; only reason across already-captured evidence. If hypotheses diverge sharply after correlation, tell the Lead immediately — that is the signal for the Oracle Triple."
|
|
95
95
|
}
|
|
96
96
|
]
|
|
@@ -117,7 +117,7 @@ task(subagent_type="explore", load_skills=[], run_in_background=true,
|
|
|
117
117
|
Runtime state investigation for hypothesis 1: ...")
|
|
118
118
|
task(subagent_type="explore", load_skills=[], run_in_background=true,
|
|
119
119
|
prompt="Log/timing investigation for hypothesis 2: ...")
|
|
120
|
-
task(category="deep", load_skills=[], run_in_background=true,
|
|
120
|
+
task(category="deep-low", load_skills=[], run_in_background=true,
|
|
121
121
|
prompt="Reproduction minimizer for hypothesis 3: ...")
|
|
122
122
|
```
|
|
123
123
|
|
|
@@ -684,7 +684,7 @@ Record the chosen path in the TodoWrite list.
|
|
|
684
684
|
|
|
685
685
|
Rationale for this composition:
|
|
686
686
|
- **4 workers = team mode's parallel cap.** 5+ just queues.
|
|
687
|
-
- **No verifier team member.** Verification needs \`deep\` reasoning (or \`unspecified-high\` fallback). In-team category routing downcasts to the category worker, which is weaker than required — the verifier runs OUTSIDE the team as a \`task(category="deep")\`.
|
|
687
|
+
- **No verifier team member.** Verification needs \`deep-high\` reasoning (or \`unspecified-high\` fallback). In-team category routing downcasts to the category worker, which is weaker than required — the verifier runs OUTSIDE the team as a \`task(category="deep-high")\`.
|
|
688
688
|
- **quick × 2** for mechanical edits, **unspecified-low × 2** for reasoning edits — mirrors the plan's split.
|
|
689
689
|
|
|
690
690
|
**Team lifecycle** (one team, reused until Phase 6 cleanup):
|
|
@@ -716,7 +716,7 @@ While any team task is \`pending | claimed | in_progress\`:
|
|
|
716
716
|
- On a worker completion report, immediately dispatch an **external verifier** — verification runs OUTSIDE the team because team-member category routing downcasts to the category worker:
|
|
717
717
|
\`\`\`
|
|
718
718
|
task(
|
|
719
|
-
category="deep",
|
|
719
|
+
category="deep-high",
|
|
720
720
|
load_skills=[],
|
|
721
721
|
run_in_background=true,
|
|
722
722
|
description="verify step <N>",
|
|
@@ -160,9 +160,9 @@ File: src/bar.py
|
|
|
160
160
|
|
|
161
161
|
Order rule (safest → riskiest): comments → dead code → defensive → duplication → complexity → abstraction/boundary → performance → tests → oversized-modules. This minimizes blast radius of any one change.
|
|
162
162
|
|
|
163
|
-
### Phase 4: Parallel slop removal via `deep` agents in batches of 5
|
|
163
|
+
### Phase 4: Parallel slop removal via `deep-low` agents in batches of 5
|
|
164
164
|
|
|
165
|
-
Files are processed by `deep` category agents with the `$omo:remove-ai-slops` skill loaded, **batched 5 at a time in parallel**. The executable skill name is `remove-ai-slops`. The `deep` category gives the agent enough thoroughness to correctly evaluate the 9 categories and respect the KEEP rules without slipping into surface fixes; the 5-wide batch is the sweet spot — more than 5 creates result-merging noise and context contention, fewer wastes parallelism.
|
|
165
|
+
Files are processed by `deep-low` category agents with the `$omo:remove-ai-slops` skill loaded, **batched 5 at a time in parallel**. The executable skill name is `remove-ai-slops`. The `deep-low` category gives the agent enough thoroughness to correctly evaluate the 9 categories and respect the KEEP rules without slipping into surface fixes; the 5-wide batch is the sweet spot — more than 5 creates result-merging noise and context contention, fewer wastes parallelism.
|
|
166
166
|
|
|
167
167
|
**Batching protocol** (strict):
|
|
168
168
|
|
|
@@ -179,7 +179,7 @@ Files are processed by `deep` category agents with the `$omo:remove-ai-slops` sk
|
|
|
179
179
|
|
|
180
180
|
```
|
|
181
181
|
task(
|
|
182
|
-
category="deep",
|
|
182
|
+
category="deep-low",
|
|
183
183
|
load_skills=["remove-ai-slops"],
|
|
184
184
|
run_in_background=true,
|
|
185
185
|
description="Slop removal: {filename}",
|
|
@@ -205,7 +205,7 @@ For each skipped issue, give reason.
|
|
|
205
205
|
)
|
|
206
206
|
```
|
|
207
207
|
|
|
208
|
-
**Batch failure handling**: a `multi_agent_v1.wait_agent` timeout only means no new mailbox update arrived, not that a `deep` agent failed. For long passes, require each child to send `WORKING: <file> - <current phase>` and `BLOCKED: <reason>` only when it cannot progress. Treat a running child as alive. Mark a file for retry only when the child is completed without the deliverable, ack-only after followup, explicitly `BLOCKED:`, or no longer running. Do NOT block the remaining 4 in that batch; collect successful results and retry the failed file once later. If retry also fails, escalate that file under "Issues Found & Fixed" in the final report.
|
|
208
|
+
**Batch failure handling**: a `multi_agent_v1.wait_agent` timeout only means no new mailbox update arrived, not that a `deep-low` agent failed. For long passes, require each child to send `WORKING: <file> - <current phase>` and `BLOCKED: <reason>` only when it cannot progress. Treat a running child as alive. Mark a file for retry only when the child is completed without the deliverable, ack-only after followup, explicitly `BLOCKED:`, or no longer running. Do NOT block the remaining 4 in that batch; collect successful results and retry the failed file once later. If retry also fails, escalate that file under "Issues Found & Fixed" in the final report.
|
|
209
209
|
|
|
210
210
|
### Phase 5: Verify with quality gates + critical review
|
|
211
211
|
|
|
@@ -143,13 +143,14 @@ When the plan annotates a todo with `Recommended task executor category:`, follo
|
|
|
143
143
|
| `visual-engineering` (medium) | frontend, UI/UX, styling, animation |
|
|
144
144
|
| `writing` (low) | documentation and prose |
|
|
145
145
|
| `git` (low) | git operations |
|
|
146
|
-
| `deep` (
|
|
146
|
+
| `deep-low` (medium) | hairy debugging, research-heavy or subtle cross-module work the worker can settle from what it reads |
|
|
147
|
+
| `deep-high` (high) | the same, when the central decision cannot be settled from evidence: a trade-off, a cross-package contract, or correctness argued from invariants |
|
|
147
148
|
| `ultrabrain` (high) | ONE genuinely hard, logic-heavy problem — hand it the goal, not step-by-step instructions |
|
|
148
149
|
|
|
149
150
|
Sizing is a two-branch decision made per checkbox, before dispatch:
|
|
150
151
|
|
|
151
152
|
- **Splittable work splits.** When the checkbox decomposes into independent pieces, dispatch them as a swarm of `quick`/`unspecified-low` workers in ONE parallel burst — many small cheap workers in parallel beat one large delegation.
|
|
152
|
-
- **Cohesive hard work stays whole.** When splitting would sever shared reasoning (one algorithm, one migration, one subtle bug), send the WHOLE problem to `deep` or `ultrabrain` as ONE delegation. Never force-split work whose parts share one insight.
|
|
153
|
+
- **Cohesive hard work stays whole.** When splitting would sever shared reasoning (one algorithm, one migration, one subtle bug), send the WHOLE problem to `deep-low`, `deep-high` or `ultrabrain` as ONE delegation. Never force-split work whose parts share one insight.
|
|
153
154
|
|
|
154
155
|
Each sub-task message must include:
|
|
155
156
|
|
|
@@ -155,7 +155,7 @@ No Metis, no plan file, no execution until the user approves. The UNCLEAR path a
|
|
|
155
155
|
## Commit strategy
|
|
156
156
|
## Success criteria
|
|
157
157
|
```
|
|
158
|
-
> Target 5-8 todos per wave; fewer than 3 (except the final) means under-splitting. Implementation + Test = ONE todo. Each todo carries: exhaustive References (the executor has no interview context), agent-executable Acceptance criteria, happy + failure QA scenarios each with an evidence path, a Commit line, and a `Recommended task executor category:` line - the routing verdict the executor follows, with a one-line reason, in the omo category vocabulary: `quick` (mechanical / single-file - the default for every splittable piece), `unspecified-low` (small misc), `unspecified-high` (standard multi-file feature), `visual-engineering` (frontend/UI), `writing` (docs), `git` (git ops), `deep` (hairy debugging or cross-module reasoning), `ultrabrain` (ONE genuinely hard cohesive problem, delegated whole). Prefer many small `quick`-routable todos spread across parallel waves; when splitting would sever shared reasoning, keep ONE todo routed to `deep`/`ultrabrain` - never force-split work whose parts share one insight. Harnesses without categories map by difficulty: quick/unspecified-low/writing/git = low, unspecified-high/visual-engineering = medium, deep/ultrabrain = high.
|
|
158
|
+
> Target 5-8 todos per wave; fewer than 3 (except the final) means under-splitting. Implementation + Test = ONE todo. Each todo carries: exhaustive References (the executor has no interview context), agent-executable Acceptance criteria, happy + failure QA scenarios each with an evidence path, a Commit line, and a `Recommended task executor category:` line - the routing verdict the executor follows, with a one-line reason, in the omo category vocabulary: `quick` (mechanical / single-file - the default for every splittable piece), `unspecified-low` (small misc), `unspecified-high` (standard multi-file feature), `visual-engineering` (frontend/UI), `writing` (docs), `git` (git ops), `deep-low` (hairy debugging or cross-module reasoning the worker can settle from what it reads), `deep-high` (the same, when the central decision cannot be settled from evidence: a trade-off, a cross-package contract, or correctness argued from invariants), `ultrabrain` (ONE genuinely hard cohesive problem, delegated whole). Prefer many small `quick`-routable todos spread across parallel waves; when splitting would sever shared reasoning, keep ONE todo routed to `deep`/`ultrabrain` - never force-split work whose parts share one insight. Harnesses without categories map by difficulty: quick/unspecified-low/writing/git = low, unspecified-high/visual-engineering = medium, deep/ultrabrain = high.
|
|
159
159
|
|
|
160
160
|
## Plan artifact producer contract
|
|
161
161
|
|
|
@@ -253,7 +253,7 @@ Interest alone is not a trigger. Anything without one stays a queued lead in `ex
|
|
|
253
253
|
Settle with executed code, not judgment, whenever sources disagree, a behavior is undocumented, a claim is performance- or compatibility-shaped, or the honest answer is "it should work". Spawn one verification worker per claim:
|
|
254
254
|
|
|
255
255
|
```
|
|
256
|
-
task(category="deep", run_in_background=true, prompt="TASK: verify by execution: <claim>.
|
|
256
|
+
task(category="deep-low", run_in_background=true, prompt="TASK: verify by execution: <claim>.
|
|
257
257
|
SOURCE: <where it came from>; CONTRADICTION: <opposing source, if any>.
|
|
258
258
|
Write a minimal self-contained script that tests the claim; run it (uv run --with <deps> python / bun / direct compile); capture full stdout+stderr; pin versions.
|
|
259
259
|
Reply with: the exact code, the full output, environment (OS, runtime, dependency versions), and a verdict — CONFIRMED / REFUTED / PARTIAL — grounded in the output.")
|
|
@@ -333,7 +333,7 @@ Asset workers (background, parallel, each fed `design-spec.md`) — visuals are
|
|
|
333
333
|
|
|
334
334
|
**Verify the asset manifest before rendering.** List every asset the document references, assert each file exists and is non-empty on disk, and re-render whatever is missing. A document that renders with three broken diagrams is a document you will publish twice.
|
|
335
335
|
|
|
336
|
-
Assembly worker — `task(category="deep", load_skills=["frontend", "visual-qa", "open-design", "data-scientist", "imagegen", "ulw-loop"], run_in_background=true, ...)`: before writing, read every available design and visualization skill and apply it — the report is a designed artifact, not a text dump; the worker's prompt carries `design-spec.md`. Use the template the user approved; absent a stronger house style the default skeleton is executive summary → key findings by theme → detailed analysis (quotes under 20 words with attribution, charts, Mermaid graphs, generated visuals, SHA-pinned permalinks, verification results) → comparative analysis when options compete → numbered sources with access dates → methodology appendix (workers, waves, searches, verifications, debate rounds) → correction log naming what verification overturned. Write it long and specific: every claim cites `[Source N]`, and the sources section lists every source the run actually used rather than a curated few.
|
|
336
|
+
Assembly worker — `task(category="deep-low", load_skills=["frontend", "visual-qa", "open-design", "data-scientist", "imagegen", "ulw-loop"], run_in_background=true, ...)`: before writing, read every available design and visualization skill and apply it — the report is a designed artifact, not a text dump; the worker's prompt carries `design-spec.md`. Use the template the user approved; absent a stronger house style the default skeleton is executive summary → key findings by theme → detailed analysis (quotes under 20 words with attribution, charts, Mermaid graphs, generated visuals, SHA-pinned permalinks, verification results) → comparative analysis when options compete → numbered sources with access dates → methodology appendix (workers, waves, searches, verifications, debate rounds) → correction log naming what verification overturned. Write it long and specific: every claim cites `[Source N]`, and the sources section lists every source the run actually used rather than a curated few.
|
|
337
337
|
|
|
338
338
|
### The delivery gates — every gate must PASS, in order
|
|
339
339
|
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { BuiltinCategoryDefinition } from "./builtin-category-definition";
|
|
2
2
|
export declare const ULTRABRAIN_CATEGORY_PROMPT_APPEND_GPT_6_ASTRA = "<Category_Context name=\"ultrabrain\">\nThe orchestrator routed this task here because it is the one genuinely hard, logic-heavy problem in its plan, and it sent a goal rather than steps: choose the approach yourself, and let correctness outrank speed, brevity, and token cost.\n\nSuccess means:\n- every load-bearing claim cites evidence from this turn: a file and line read, a command run, a test executed;\n- every executable claim was executed: a proposed fix runs, an algorithm passes the boundary cases you enumerated, a verdict on a diff names the failing line;\n- the conclusion survived your own attempt to break it, and the answer names the strongest counter-case you looked for;\n- rejected alternatives carry the reason that decided against them, and open assumptions are stated so the orchestrator can overturn them;\n- one decision-complete recommendation, actionable without a follow-up question.\n\nWhatever that check leaves unsettled goes in the answer as an open question with what would settle it. When the goal bundles independent problems, solve the one the others depend on and return the rest as separately delegable items.\n</Category_Context>";
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const DEEP_HIGH_CATEGORY_PROMPT_APPEND_GPT = "<Category_Context name=\"deep-high\">\nThe orchestrator routed this task here because a decision in it cannot be settled from evidence alone: a trade-off, a contract other code depends on, a mechanism with no pattern to copy, or correctness that has to be argued. One goal, one deliverable, and the time to earn it. The exploration budget is generous: read every file involved, trace callers and dependencies in both directions, and fan out explore and librarian subagents in parallel for the questions a single read wave cannot answer, until you can explain the full mechanism you are about to change; an edit made before that point is the failure this category exists to prevent.\n\nThe goal is the authorization. Choose how to reach it yourself, and when it lists numbered steps or phases, deliver all of them in this turn as one task; a proposal, a plan awaiting approval, a simplified version, or a proof of concept is unfinished work. When the steps turn out to be independent problems sharing no reasoning, do the one the goal centers on and return the others as separately delegable items with what you learned. A question ends your turn and hands the task back unfinished, so decide from context, record each assumption in the final message, and stop early only for a blocker you cannot route around: a missing secret, a decision only the user can make, or three materially different attempts that all failed.\n\nFix the cause: trace at least two levels above the symptom before settling, and prefer the change that makes the failure impossible over the guard that hides it. Depth means understanding the mechanism, so the diff stays as small as the fix allows; on greenfield work choose strong defaults and finish something you would hand to a senior engineer. Close with the delivered change, the evidence that it works, the decision you settled with the alternative you rejected, and the assumptions you made.\n</Category_Context>";
|
|
4
|
+
export declare const DEEP_LOW_CATEGORY_PROMPT_APPEND_GPT = "<Category_Context name=\"deep-low\">\nThe orchestrator routed this task here as the default deep lane: one goal, one deliverable, decisions that the code, tests, and history can settle. Read until you can explain the mechanism you are about to change, including its callers, then act; fan out explore and librarian subagents when one read wave cannot answer a question.\n\nSuccess means:\n- every step or phase the goal lists is delivered in this turn as one task; a plan awaiting approval, a simplified version, or a proof of concept is unfinished work;\n- the change removes the cause you traced, at least two levels above the symptom, with the diff as small as that fix allows;\n- the final message reports the change, the evidence that it works, and each assumption you decided from context, because a question ends your turn and returns the task unfinished.\n\nEscalation is a complete result. When the correct choice turns out to depend on a trade-off the brief does not settle, on a contract other packages rely on, or on an argument about invariants you cannot verify by running something, stop before editing and return `ESCALATE: deep-high` as the first line, followed by what you read, the decision you could not settle, and the options you saw. A confident guess through that decision costs more than the escalation.\n\nStop the moment the success criteria hold; work past them is a defect. Stop early only for a blocker you cannot route around: a missing secret, a decision only the user can make, or three materially different attempts that all failed.\n</Category_Context>";
|
|
4
5
|
export declare const UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND_GPT_6_ASTRA = "<Category_Context name=\"unspecified-high\">\nThe orchestrator routed this task here because it spans systems or modules and fits no specialist category, so breadth of consideration is what this category buys. Before committing to an approach, survey the whole surface the change touches: every caller and consumer of what you will modify, sibling modules that implement the same pattern, the tests, docs, schemas, config, scripts, and CI that encode the current behavior, and the history of the area (git log and blame) for the reasons it is shaped this way. Fan out explore and librarian subagents in parallel when that surface is wider than one read wave covers.\n\nWeigh at least two ways to do it against what you found, choose one, and say in the final message why it won. Then deliver it across every surface you identified, so behavior stays consistent everywhere the change is observable and no caller, test, doc, schema, or config still describes the old state. A question ends your turn and hands the task back unfinished, so decide from context, record each assumption in the final message, and finish.\n</Category_Context>";
|
|
5
|
-
export declare const
|
|
6
|
-
export declare const
|
|
6
|
+
export declare const DEEP_LOW_CATEGORY_PROMPT_APPEND = "<Category_Context name=\"deep-low\">\nYou are working on a GOAL-ORIENTED AUTONOMOUS task: one goal, one deliverable, decisions the codebase can settle.\n\nBefore any change, read the files involved and trace their dependencies until you can explain the mechanism you are about to modify. The goal is already defined: do not ask clarifying questions; make reasonable assumptions, record them in the final message, and proceed.\n\nWhen the goal lists numbered steps or phases, execute all of them in this turn as one atomic task. Genuinely independent tasks bundled into one goal: flag them and do only the one the goal centers on.\n\nEscalation is a complete result. When the correct choice depends on a trade-off the brief does not settle, a contract other packages rely on, or an argument about invariants you cannot verify by running something, stop before editing and return `ESCALATE: deep-high` as the first line, followed by what you read, the decision you could not settle, and the options you saw.\n\nPrefer the fix that removes the cause over the patch that hides the symptom. Report completion with the changes made and the evidence they work.\n</Category_Context>";
|
|
7
|
+
export declare const DEEP_HIGH_CATEGORY_PROMPT_APPEND = "<Category_Context name=\"deep-high\">\nYou are working on a GOAL-ORIENTED AUTONOMOUS task that was escalated here because a decision in it cannot be settled from evidence alone: a trade-off, a contract other code depends on, a mechanism with no pattern to copy, or correctness that has to be argued.\n\nBefore any change, read the files involved and trace their dependencies until you can explain the mechanism you are about to modify. The goal is already defined: do not ask clarifying questions; make reasonable assumptions, record them in the final message, and proceed.\n\nWhen the goal lists numbered steps or phases, execute all of them in this turn as one atomic task. Genuinely independent tasks bundled into one goal: flag them and do only the one the goal centers on.\n\nPrefer the fix that removes the cause over the patch that hides the symptom. Report completion with the changes made, the evidence they work, and the decision you settled with the alternative you rejected.\n</Category_Context>";
|
|
7
8
|
export declare function resolveUltrabrainCategoryPromptAppend(model: string | undefined): string;
|
|
8
|
-
export declare function
|
|
9
|
+
export declare function resolveDeepLowCategoryPromptAppend(model: string | undefined): string;
|
|
10
|
+
export declare function resolveDeepHighCategoryPromptAppend(model: string | undefined): string;
|
|
9
11
|
export declare function resolveUnspecifiedHighCategoryPromptAppend(model: string | undefined): string;
|
|
10
12
|
export declare const OPENAI_CATEGORIES: BuiltinCategoryDefinition[];
|
package/dist/tui.js
CHANGED
|
@@ -3391,13 +3391,8 @@ var init_category_model_requirements = __esm(() => {
|
|
|
3391
3391
|
{ providers: ["openai", "openai-codex", "opencode"], model: "gpt-5.6-sol", variant: "max" }
|
|
3392
3392
|
]
|
|
3393
3393
|
},
|
|
3394
|
-
deep: {
|
|
3394
|
+
"deep-low": {
|
|
3395
3395
|
fallbackChain: [
|
|
3396
|
-
{
|
|
3397
|
-
providers: ["openai", "openai-codex", "github-copilot", "opencode"],
|
|
3398
|
-
model: "gpt-6-astra",
|
|
3399
|
-
variant: "high"
|
|
3400
|
-
},
|
|
3401
3396
|
{
|
|
3402
3397
|
providers: ["openai", "openai-codex", "github-copilot", "opencode"],
|
|
3403
3398
|
model: "gpt-5.6-sol",
|
|
@@ -3405,6 +3400,15 @@ var init_category_model_requirements = __esm(() => {
|
|
|
3405
3400
|
}
|
|
3406
3401
|
]
|
|
3407
3402
|
},
|
|
3403
|
+
"deep-high": {
|
|
3404
|
+
fallbackChain: [
|
|
3405
|
+
{
|
|
3406
|
+
providers: ["openai", "openai-codex", "github-copilot", "opencode"],
|
|
3407
|
+
model: "gpt-6-astra",
|
|
3408
|
+
variant: "high"
|
|
3409
|
+
}
|
|
3410
|
+
]
|
|
3411
|
+
},
|
|
3408
3412
|
artistry: {
|
|
3409
3413
|
fallbackChain: [
|
|
3410
3414
|
{
|
|
@@ -3491,12 +3495,17 @@ var init_category_model_requirements = __esm(() => {
|
|
|
3491
3495
|
{
|
|
3492
3496
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
3493
3497
|
model: "claude-fable-5-1",
|
|
3494
|
-
variant: "
|
|
3498
|
+
variant: "low"
|
|
3495
3499
|
},
|
|
3496
3500
|
{
|
|
3497
3501
|
providers: ["kimi-for-coding", "moonshotai", "opencode-go", "opencode"],
|
|
3498
3502
|
model: "kimi-k3",
|
|
3499
|
-
variant: "
|
|
3503
|
+
variant: "low"
|
|
3504
|
+
},
|
|
3505
|
+
{
|
|
3506
|
+
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
3507
|
+
model: "claude-opus-4-6",
|
|
3508
|
+
variant: "low"
|
|
3500
3509
|
}
|
|
3501
3510
|
]
|
|
3502
3511
|
}
|
|
@@ -4829,7 +4838,7 @@ var init_kimi_categories = __esm(() => {
|
|
|
4829
4838
|
KIMI_CATEGORIES = [
|
|
4830
4839
|
{
|
|
4831
4840
|
name: "writing",
|
|
4832
|
-
config: { model: "anthropic/claude-fable-5-1", variant: "
|
|
4841
|
+
config: { model: "anthropic/claude-fable-5-1", variant: "low" },
|
|
4833
4842
|
description: "Documentation, prose, technical writing",
|
|
4834
4843
|
promptAppend: WRITING_CATEGORY_PROMPT_APPEND
|
|
4835
4844
|
}
|
|
@@ -4855,20 +4864,20 @@ function isGpt6Model(model) {
|
|
|
4855
4864
|
var init_types = () => {};
|
|
4856
4865
|
|
|
4857
4866
|
// packages/omo-opencode/src/tools/delegate-task/openai-categories.ts
|
|
4867
|
+
function isGptDeepLaneModel(model) {
|
|
4868
|
+
return model !== undefined && (isGpt6Model(model) || isGpt5_5Model(model) || isGpt5_6Model(model));
|
|
4869
|
+
}
|
|
4858
4870
|
function resolveUltrabrainCategoryPromptAppend(model) {
|
|
4859
4871
|
if (model && isGpt6Model(model)) {
|
|
4860
4872
|
return ULTRABRAIN_CATEGORY_PROMPT_APPEND_GPT_6_ASTRA;
|
|
4861
4873
|
}
|
|
4862
4874
|
return ULTRABRAIN_CATEGORY_PROMPT_APPEND;
|
|
4863
4875
|
}
|
|
4864
|
-
function
|
|
4865
|
-
|
|
4866
|
-
|
|
4867
|
-
|
|
4868
|
-
|
|
4869
|
-
return DEEP_CATEGORY_PROMPT_APPEND_GPT_5_5;
|
|
4870
|
-
}
|
|
4871
|
-
return DEEP_CATEGORY_PROMPT_APPEND;
|
|
4876
|
+
function resolveDeepLowCategoryPromptAppend(model) {
|
|
4877
|
+
return isGptDeepLaneModel(model) ? DEEP_LOW_CATEGORY_PROMPT_APPEND_GPT : DEEP_LOW_CATEGORY_PROMPT_APPEND;
|
|
4878
|
+
}
|
|
4879
|
+
function resolveDeepHighCategoryPromptAppend(model) {
|
|
4880
|
+
return isGptDeepLaneModel(model) ? DEEP_HIGH_CATEGORY_PROMPT_APPEND_GPT : DEEP_HIGH_CATEGORY_PROMPT_APPEND;
|
|
4872
4881
|
}
|
|
4873
4882
|
function resolveUnspecifiedHighCategoryPromptAppend(model) {
|
|
4874
4883
|
if (model && isGpt6Model(model)) {
|
|
@@ -4887,14 +4896,23 @@ Success means:
|
|
|
4887
4896
|
- one decision-complete recommendation, actionable without a follow-up question.
|
|
4888
4897
|
|
|
4889
4898
|
Whatever that check leaves unsettled goes in the answer as an open question with what would settle it. When the goal bundles independent problems, solve the one the others depend on and return the rest as separately delegable items.
|
|
4890
|
-
</Category_Context>`,
|
|
4891
|
-
The orchestrator routed this task here
|
|
4892
|
-
|
|
4893
|
-
**MUST USE \`deep\` FOR 3D GRAPHICS, COMPUTER USE, BROWSER USE, BACKEND, LOGIC, ALGORITHMS, CAPTCHA SOLVING, AND MULTIMODAL WORK.**
|
|
4899
|
+
</Category_Context>`, DEEP_HIGH_CATEGORY_PROMPT_APPEND_GPT = `<Category_Context name="deep-high">
|
|
4900
|
+
The orchestrator routed this task here because a decision in it cannot be settled from evidence alone: a trade-off, a contract other code depends on, a mechanism with no pattern to copy, or correctness that has to be argued. One goal, one deliverable, and the time to earn it. The exploration budget is generous: read every file involved, trace callers and dependencies in both directions, and fan out explore and librarian subagents in parallel for the questions a single read wave cannot answer, until you can explain the full mechanism you are about to change; an edit made before that point is the failure this category exists to prevent.
|
|
4894
4901
|
|
|
4895
4902
|
The goal is the authorization. Choose how to reach it yourself, and when it lists numbered steps or phases, deliver all of them in this turn as one task; a proposal, a plan awaiting approval, a simplified version, or a proof of concept is unfinished work. When the steps turn out to be independent problems sharing no reasoning, do the one the goal centers on and return the others as separately delegable items with what you learned. A question ends your turn and hands the task back unfinished, so decide from context, record each assumption in the final message, and stop early only for a blocker you cannot route around: a missing secret, a decision only the user can make, or three materially different attempts that all failed.
|
|
4896
4903
|
|
|
4897
|
-
Fix the cause: trace at least two levels above the symptom before settling, and prefer the change that makes the failure impossible over the guard that hides it. Depth means understanding the mechanism, so the diff stays as small as the fix allows; on greenfield work choose strong defaults and finish something you would hand to a senior engineer. Close with the delivered change, the evidence that it works, and the assumptions you made.
|
|
4904
|
+
Fix the cause: trace at least two levels above the symptom before settling, and prefer the change that makes the failure impossible over the guard that hides it. Depth means understanding the mechanism, so the diff stays as small as the fix allows; on greenfield work choose strong defaults and finish something you would hand to a senior engineer. Close with the delivered change, the evidence that it works, the decision you settled with the alternative you rejected, and the assumptions you made.
|
|
4905
|
+
</Category_Context>`, DEEP_LOW_CATEGORY_PROMPT_APPEND_GPT = `<Category_Context name="deep-low">
|
|
4906
|
+
The orchestrator routed this task here as the default deep lane: one goal, one deliverable, decisions that the code, tests, and history can settle. Read until you can explain the mechanism you are about to change, including its callers, then act; fan out explore and librarian subagents when one read wave cannot answer a question.
|
|
4907
|
+
|
|
4908
|
+
Success means:
|
|
4909
|
+
- every step or phase the goal lists is delivered in this turn as one task; a plan awaiting approval, a simplified version, or a proof of concept is unfinished work;
|
|
4910
|
+
- the change removes the cause you traced, at least two levels above the symptom, with the diff as small as that fix allows;
|
|
4911
|
+
- the final message reports the change, the evidence that it works, and each assumption you decided from context, because a question ends your turn and returns the task unfinished.
|
|
4912
|
+
|
|
4913
|
+
Escalation is a complete result. When the correct choice turns out to depend on a trade-off the brief does not settle, on a contract other packages rely on, or on an argument about invariants you cannot verify by running something, stop before editing and return \`ESCALATE: deep-high\` as the first line, followed by what you read, the decision you could not settle, and the options you saw. A confident guess through that decision costs more than the escalation.
|
|
4914
|
+
|
|
4915
|
+
Stop the moment the success criteria hold; work past them is a defect. Stop early only for a blocker you cannot route around: a missing secret, a decision only the user can make, or three materially different attempts that all failed.
|
|
4898
4916
|
</Category_Context>`, UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND_GPT_6_ASTRA = `<Category_Context name="unspecified-high">
|
|
4899
4917
|
The orchestrator routed this task here because it spans systems or modules and fits no specialist category, so breadth of consideration is what this category buys. Before committing to an approach, survey the whole surface the change touches: every caller and consumer of what you will modify, sibling modules that implement the same pattern, the tests, docs, schemas, config, scripts, and CI that encode the current behavior, and the history of the area (git log and blame) for the reasons it is shaped this way. Fan out explore and librarian subagents in parallel when that surface is wider than one read wave covers.
|
|
4900
4918
|
|
|
@@ -4919,49 +4937,24 @@ Response format:
|
|
|
4919
4937
|
- Bottom line (2-3 sentences)
|
|
4920
4938
|
- Action plan (numbered steps)
|
|
4921
4939
|
- Risks and mitigations (if relevant)
|
|
4922
|
-
</Category_Context>`,
|
|
4923
|
-
You are working on GOAL-ORIENTED AUTONOMOUS
|
|
4924
|
-
|
|
4925
|
-
You are NOT an interactive assistant. You are an autonomous problem-solver.
|
|
4926
|
-
|
|
4927
|
-
**MUST USE \`deep\` FOR 3D GRAPHICS, COMPUTER USE, BROWSER USE, BACKEND, LOGIC, ALGORITHMS, CAPTCHA SOLVING, AND MULTIMODAL WORK.**
|
|
4928
|
-
|
|
4929
|
-
BEFORE making ANY changes:
|
|
4930
|
-
1. Silently explore the codebase extensively (5-15 minutes of reading is normal)
|
|
4931
|
-
2. Read related files, trace dependencies, understand the full context
|
|
4932
|
-
3. Build a complete mental model of the problem space
|
|
4933
|
-
4. Do not ask clarifying questions - the goal is already defined
|
|
4934
|
-
|
|
4935
|
-
You receive a GOAL. When the goal includes numbered steps or phases, treat them as one atomic task broken into sub-steps, not as separate independent tasks. Figure out HOW to achieve it yourself. Thorough research before any action.
|
|
4936
|
-
|
|
4937
|
-
Sub-steps of ONE goal = execute all steps as phases of one atomic task.
|
|
4938
|
-
Genuinely independent tasks = flag and refuse, require separate delegations.
|
|
4939
|
-
|
|
4940
|
-
Approach: explore extensively, understand deeply, then act decisively. Prefer comprehensive solutions over quick patches. If the goal is unclear, make reasonable assumptions and proceed.
|
|
4941
|
-
|
|
4942
|
-
Minimal status updates. Focus on results, not play-by-play. Report completion with summary of changes.
|
|
4943
|
-
</Category_Context>`, DEEP_CATEGORY_PROMPT_APPEND_GPT_5_5 = `<Category_Context name="deep">
|
|
4944
|
-
You are operating in DEEP mode. This is the category reserved for goal-oriented autonomous work on hairy problems that reward thorough exploration and comprehensive solutions.
|
|
4945
|
-
|
|
4946
|
-
**MUST USE \`deep\` FOR 3D GRAPHICS, COMPUTER USE, BROWSER USE, BACKEND, LOGIC, ALGORITHMS, CAPTCHA SOLVING, AND MULTIMODAL WORK.**
|
|
4940
|
+
</Category_Context>`, DEEP_LOW_CATEGORY_PROMPT_APPEND = `<Category_Context name="deep-low">
|
|
4941
|
+
You are working on a GOAL-ORIENTED AUTONOMOUS task: one goal, one deliverable, decisions the codebase can settle.
|
|
4947
4942
|
|
|
4948
|
-
|
|
4943
|
+
Before any change, read the files involved and trace their dependencies until you can explain the mechanism you are about to modify. The goal is already defined: do not ask clarifying questions; make reasonable assumptions, record them in the final message, and proceed.
|
|
4949
4944
|
|
|
4950
|
-
|
|
4945
|
+
When the goal lists numbered steps or phases, execute all of them in this turn as one atomic task. Genuinely independent tasks bundled into one goal: flag them and do only the one the goal centers on.
|
|
4951
4946
|
|
|
4952
|
-
|
|
4947
|
+
Escalation is a complete result. When the correct choice depends on a trade-off the brief does not settle, a contract other packages rely on, or an argument about invariants you cannot verify by running something, stop before editing and return \`ESCALATE: deep-high\` as the first line, followed by what you read, the decision you could not settle, and the options you saw.
|
|
4953
4948
|
|
|
4954
|
-
|
|
4949
|
+
Prefer the fix that removes the cause over the patch that hides the symptom. Report completion with the changes made and the evidence they work.
|
|
4950
|
+
</Category_Context>`, DEEP_HIGH_CATEGORY_PROMPT_APPEND = `<Category_Context name="deep-high">
|
|
4951
|
+
You are working on a GOAL-ORIENTED AUTONOMOUS task that was escalated here because a decision in it cannot be settled from evidence alone: a trade-off, a contract other code depends on, a mechanism with no pattern to copy, or correctness that has to be argued.
|
|
4955
4952
|
|
|
4956
|
-
|
|
4953
|
+
Before any change, read the files involved and trace their dependencies until you can explain the mechanism you are about to modify. The goal is already defined: do not ask clarifying questions; make reasonable assumptions, record them in the final message, and proceed.
|
|
4957
4954
|
|
|
4958
|
-
|
|
4955
|
+
When the goal lists numbered steps or phases, execute all of them in this turn as one atomic task. Genuinely independent tasks bundled into one goal: flag them and do only the one the goal centers on.
|
|
4959
4956
|
|
|
4960
|
-
|
|
4961
|
-
|
|
4962
|
-
**Completion bar: full delivery.** "Simplified version", "proof of concept", and "you can extend this later" are not acceptable deliveries for a deep task. The orchestrator routed here specifically for a complete solution. If you hit a genuine blocker (missing secret, design decision only the user can make, three materially different attempts all failed), document it and return; otherwise, finish the task.
|
|
4963
|
-
|
|
4964
|
-
**Status cadence: sparse.** The user is not on the other side of this conversation; the orchestrator is, and they will synthesize your progress. Send commentary only at meaningful phase transitions (starting exploration, starting implementation, starting verification, hitting a genuine blocker). Do not narrate every tool call; silence during focused work is expected.
|
|
4957
|
+
Prefer the fix that removes the cause over the patch that hides the symptom. Report completion with the changes made, the evidence they work, and the decision you settled with the alternative you rejected.
|
|
4965
4958
|
</Category_Context>`, QUICK_CATEGORY_PROMPT_APPEND = `<Category_Context>
|
|
4966
4959
|
You are working on SMALL / QUICK tasks.
|
|
4967
4960
|
|
|
@@ -4980,10 +4973,9 @@ You are working on tasks that don't fit specific categories but require moderate
|
|
|
4980
4973
|
</Category_Context>`, UNSPECIFIED_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits, effort is moderate, and scope stays within a few files/modules. Prefer any matching specialist category.</Selection_Gate>
|
|
4981
4974
|
<Caller_Warning>Provide explicit must-do steps, forbidden scope, and concrete success criteria.</Caller_Warning>`, UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND = `<Category_Context>
|
|
4982
4975
|
You are working on tasks that don't fit specific categories but require substantial effort.
|
|
4983
|
-
</Category_Context>`, UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits and substantial effort spans systems/modules with broad impact. Use unspecified-low for contained moderate work.</Selection_Gate>`,
|
|
4976
|
+
</Category_Context>`, UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits and substantial effort spans systems/modules with broad impact. Use unspecified-low for contained moderate work.</Selection_Gate>`, DEEP_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Route here when one subsystem plus its callers holds the mechanism and the evidence, once read, leaves one right answer. Wide but mechanical work belongs here or in a quick batch. When unsure, choose deep-low: a misrouted child returns \`ESCALATE: deep-high\` after one cheap attempt; re-spawn the same brief as deep-high with its findings.</Selection_Gate>`, DEEP_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Route here only when you can name the decision evidence cannot settle: a trade-off with no single right answer, a contract change crossing a package or process boundary, a mechanism with no in-repo pattern to copy, or correctness argued from invariants rather than observed in a test. Wide scope with easy decisions is deep-low or unspecified-high; reasoning as the deliverable is ultrabrain.</Selection_Gate>`, DEEP_LOW_GATE_MODEL = "gpt-5.6-sol", DEEP_HIGH_GATE_MODEL = "gpt-6-astra", OPENAI_CATEGORIES;
|
|
4984
4977
|
var init_openai_categories = __esm(() => {
|
|
4985
4978
|
init_types();
|
|
4986
|
-
GPT_FLAGSHIP_GATE_MODELS = ["gpt-6-astra", "gpt-5.6-sol"];
|
|
4987
4979
|
OPENAI_CATEGORIES = [
|
|
4988
4980
|
{
|
|
4989
4981
|
name: "ultrabrain",
|
|
@@ -4993,12 +4985,22 @@ var init_openai_categories = __esm(() => {
|
|
|
4993
4985
|
resolvePromptAppend: resolveUltrabrainCategoryPromptAppend
|
|
4994
4986
|
},
|
|
4995
4987
|
{
|
|
4996
|
-
name: "deep",
|
|
4988
|
+
name: "deep-low",
|
|
4989
|
+
config: { model: "openai/gpt-5.6-sol", variant: "medium" },
|
|
4990
|
+
description: "Default deep lane: one goal, one deliverable, decisions the child can settle from what it reads. **3D graphics, computer/browser use, CAPTCHA, multimodal, backend, logic, and algorithm work is routed here.** Multiple goals fan out as parallel calls.",
|
|
4991
|
+
callerGuidance: DEEP_LOW_CATEGORY_CALLER_GUIDANCE,
|
|
4992
|
+
promptAppend: DEEP_LOW_CATEGORY_PROMPT_APPEND,
|
|
4993
|
+
resolvePromptAppend: resolveDeepLowCategoryPromptAppend,
|
|
4994
|
+
requiresModel: DEEP_LOW_GATE_MODEL
|
|
4995
|
+
},
|
|
4996
|
+
{
|
|
4997
|
+
name: "deep-high",
|
|
4997
4998
|
config: { model: "openai/gpt-6-astra", variant: "high" },
|
|
4998
|
-
description: "
|
|
4999
|
-
|
|
5000
|
-
|
|
5001
|
-
|
|
4999
|
+
description: "Escalation deep lane: a goal whose central decision cannot be settled from evidence alone. Same one-goal, one-deliverable contract as deep-low.",
|
|
5000
|
+
callerGuidance: DEEP_HIGH_CATEGORY_CALLER_GUIDANCE,
|
|
5001
|
+
promptAppend: DEEP_HIGH_CATEGORY_PROMPT_APPEND,
|
|
5002
|
+
resolvePromptAppend: resolveDeepHighCategoryPromptAppend,
|
|
5003
|
+
requiresModel: DEEP_HIGH_GATE_MODEL
|
|
5002
5004
|
},
|
|
5003
5005
|
{
|
|
5004
5006
|
name: "quick",
|
|
@@ -68542,6 +68544,65 @@ var init_config = __esm(() => {
|
|
|
68542
68544
|
}).strict();
|
|
68543
68545
|
});
|
|
68544
68546
|
|
|
68547
|
+
// packages/omo-config-core/src/schema/legacy-category-names.ts
|
|
68548
|
+
function canonicalCategoryName(name) {
|
|
68549
|
+
return Object.hasOwn(LEGACY_CATEGORY_NAME_ALIASES, name) ? LEGACY_CATEGORY_NAME_ALIASES[name] : name;
|
|
68550
|
+
}
|
|
68551
|
+
function isRecord9(value) {
|
|
68552
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
68553
|
+
}
|
|
68554
|
+
function joinPath(path, segment) {
|
|
68555
|
+
return [...path, segment].join(".");
|
|
68556
|
+
}
|
|
68557
|
+
function canonicalizeCategoriesRecord(categories, path, renames) {
|
|
68558
|
+
const result = {};
|
|
68559
|
+
for (const [name, definition] of Object.entries(categories)) {
|
|
68560
|
+
const canonical = canonicalCategoryName(name);
|
|
68561
|
+
if (canonical === name) {
|
|
68562
|
+
result[name] = definition;
|
|
68563
|
+
continue;
|
|
68564
|
+
}
|
|
68565
|
+
const dropped = Object.hasOwn(categories, canonical);
|
|
68566
|
+
renames.push({ canonical, dropped, legacy: name, path: joinPath(path, name) });
|
|
68567
|
+
if (!dropped)
|
|
68568
|
+
result[canonical] = definition;
|
|
68569
|
+
}
|
|
68570
|
+
return result;
|
|
68571
|
+
}
|
|
68572
|
+
function canonicalizeValue(value, path, renames) {
|
|
68573
|
+
if (Array.isArray(value)) {
|
|
68574
|
+
return value.map((entry, index) => canonicalizeValue(entry, [...path, String(index)], renames));
|
|
68575
|
+
}
|
|
68576
|
+
if (!isRecord9(value))
|
|
68577
|
+
return value;
|
|
68578
|
+
const result = {};
|
|
68579
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
68580
|
+
if (key === "categories" && isRecord9(entry)) {
|
|
68581
|
+
result[key] = canonicalizeCategoriesRecord(entry, [...path, key], renames);
|
|
68582
|
+
continue;
|
|
68583
|
+
}
|
|
68584
|
+
if (key === "category" && typeof entry === "string") {
|
|
68585
|
+
const canonical = canonicalCategoryName(entry);
|
|
68586
|
+
if (canonical !== entry) {
|
|
68587
|
+
renames.push({ canonical, dropped: false, legacy: entry, path: joinPath(path, key) });
|
|
68588
|
+
}
|
|
68589
|
+
result[key] = canonical;
|
|
68590
|
+
continue;
|
|
68591
|
+
}
|
|
68592
|
+
result[key] = canonicalizeValue(entry, [...path, key], renames);
|
|
68593
|
+
}
|
|
68594
|
+
return result;
|
|
68595
|
+
}
|
|
68596
|
+
function canonicalizeLegacyCategoryNames(document) {
|
|
68597
|
+
const renames = [];
|
|
68598
|
+
const canonicalized = isRecord9(document) ? canonicalizeValue(document, [], renames) : {};
|
|
68599
|
+
return { document: canonicalized, renames };
|
|
68600
|
+
}
|
|
68601
|
+
var LEGACY_CATEGORY_NAME_ALIASES;
|
|
68602
|
+
var init_legacy_category_names = __esm(() => {
|
|
68603
|
+
LEGACY_CATEGORY_NAME_ALIASES = { deep: "deep-low" };
|
|
68604
|
+
});
|
|
68605
|
+
|
|
68545
68606
|
// packages/omo-config-core/src/schema/index.ts
|
|
68546
68607
|
var init_schema = __esm(() => {
|
|
68547
68608
|
init_agent();
|
|
@@ -68551,6 +68612,7 @@ var init_schema = __esm(() => {
|
|
|
68551
68612
|
init_format_on_mutation();
|
|
68552
68613
|
init_git_master();
|
|
68553
68614
|
init_harness();
|
|
68615
|
+
init_legacy_category_names();
|
|
68554
68616
|
init_memory();
|
|
68555
68617
|
init_model_catalog();
|
|
68556
68618
|
init_model_profile();
|
|
@@ -68807,21 +68869,21 @@ function hasUnsafeUnrecognizedKey(issues) {
|
|
|
68807
68869
|
function hasTamperedPrototype(value) {
|
|
68808
68870
|
if (Array.isArray(value))
|
|
68809
68871
|
return value.some((entry) => hasTamperedPrototype(entry));
|
|
68810
|
-
if (!
|
|
68872
|
+
if (!isRecord10(value))
|
|
68811
68873
|
return false;
|
|
68812
68874
|
const prototype = Object.getPrototypeOf(value);
|
|
68813
68875
|
if (prototype !== Object.prototype && prototype !== null)
|
|
68814
68876
|
return true;
|
|
68815
68877
|
return Object.values(value).some((entry) => hasTamperedPrototype(entry));
|
|
68816
68878
|
}
|
|
68817
|
-
function
|
|
68879
|
+
function isRecord10(value) {
|
|
68818
68880
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
68819
68881
|
}
|
|
68820
68882
|
function containerAt(record, path) {
|
|
68821
68883
|
let container = record;
|
|
68822
68884
|
for (const segment of path) {
|
|
68823
68885
|
const next = container[segment];
|
|
68824
|
-
if (!
|
|
68886
|
+
if (!isRecord10(next))
|
|
68825
68887
|
return null;
|
|
68826
68888
|
container = next;
|
|
68827
68889
|
}
|
|
@@ -68923,6 +68985,15 @@ function readConfigSource(path, scope, fileSystem) {
|
|
|
68923
68985
|
value: parsedRecord
|
|
68924
68986
|
};
|
|
68925
68987
|
}
|
|
68988
|
+
function legacyCategoryDiagnostic(path, renames) {
|
|
68989
|
+
const detail = renames.map((rename) => rename.dropped ? `${rename.path} ignored because ${rename.canonical} is also configured` : `${rename.path} renamed to ${rename.canonical}`).join(", ");
|
|
68990
|
+
return {
|
|
68991
|
+
kind: "deprecated-keys",
|
|
68992
|
+
message: `Deprecated category name in ${path}: ${detail}. Rename it; the alias is removed in a future release.`,
|
|
68993
|
+
path,
|
|
68994
|
+
issuePaths: renames.map((rename) => rename.path)
|
|
68995
|
+
};
|
|
68996
|
+
}
|
|
68926
68997
|
function loadOmoConfig(options = {}) {
|
|
68927
68998
|
const fileSystem = options.fileSystem ?? DEFAULT_READ_FILE_SYSTEM;
|
|
68928
68999
|
const cwd = options.cwd ?? process.cwd();
|
|
@@ -68941,8 +69012,12 @@ function loadOmoConfig(options = {}) {
|
|
|
68941
69012
|
if (loaded.diagnostic !== undefined)
|
|
68942
69013
|
diagnostics.push(loaded.diagnostic);
|
|
68943
69014
|
if (loaded.value !== undefined) {
|
|
68944
|
-
|
|
68945
|
-
|
|
69015
|
+
const canonicalized = canonicalizeLegacyCategoryNames(loaded.value);
|
|
69016
|
+
if (canonicalized.renames.length > 0) {
|
|
69017
|
+
diagnostics.push(legacyCategoryDiagnostic(candidate.path, canonicalized.renames));
|
|
69018
|
+
}
|
|
69019
|
+
layers.push({ config: canonicalized.document, source: loaded.source });
|
|
69020
|
+
merged = mergeOmoConfigRecords(merged, canonicalized.document);
|
|
68946
69021
|
}
|
|
68947
69022
|
}
|
|
68948
69023
|
const requestedProfile = resolveOmoProfileName({
|
|
@@ -70480,7 +70555,7 @@ function migrateRalphLoopConfig(config) {
|
|
|
70480
70555
|
function validatePluginConfig(directory, environment = process.env) {
|
|
70481
70556
|
const chain = loadOmoOpenCodeConfigChain(directory, environment);
|
|
70482
70557
|
const views = chain.views.map((view) => parseConfigView(view.path, view.config));
|
|
70483
|
-
const chainMessages = chain.diagnostics.map((diagnostic) => `${shortPath(diagnostic.path)}: ${diagnostic.message}`);
|
|
70558
|
+
const chainMessages = chain.diagnostics.filter((diagnostic) => diagnostic.kind !== "deprecated-keys").map((diagnostic) => `${shortPath(diagnostic.path)}: ${diagnostic.message}`);
|
|
70484
70559
|
const messages = [...chainMessages, ...views.flatMap((view) => view.messages)];
|
|
70485
70560
|
const firstFailingView = views.find((view) => view.messages.length > 0);
|
|
70486
70561
|
const firstView = views[0];
|