oh-my-opencode 5.0.0-beta.1 → 5.0.0-beta.11
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/publish.md +44 -16
- package/.agents/skills/publish/SKILL.md +44 -16
- package/.agents/skills/work-with-pr/SKILL.md +37 -23
- package/.opencode/command/publish.md +44 -16
- package/.opencode/skills/work-with-pr/SKILL.md +37 -23
- package/README.md +12 -1
- package/dist/agents/atlas/agent.d.ts +0 -1
- package/dist/agents/sisyphus/grok-4.d.ts +20 -0
- package/dist/agents/sisyphus/index.d.ts +2 -0
- package/dist/agents/sisyphus-agent-config.d.ts +6 -0
- package/dist/agents/sisyphus-agent-factory.d.ts +1 -1
- package/dist/agents/sisyphus-runtime-prompt-reconciler.d.ts +15 -4
- package/dist/agents/types.d.ts +2 -2
- package/dist/cli/index.js +805 -534
- package/dist/cli/run/on-complete-hook.d.ts +2 -0
- package/dist/cli-node/index.js +805 -534
- package/dist/hooks/atlas/final-wave-approval-gate.test-support.d.ts +50 -0
- package/dist/hooks/atlas/system-reminder-templates.d.ts +0 -1
- package/dist/index.js +1566 -1217
- package/dist/shared/normalize-sdk-response.d.ts +1 -0
- package/dist/shared/shell-env.d.ts +1 -1
- package/dist/skills/coding-agent-sessions/SKILL.md +3 -2
- package/dist/skills/coding-agent-sessions/references/all-platforms.md +1 -1
- package/dist/skills/coding-agent-sessions/references/senpi.md +4 -4
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
- package/dist/skills/frontend/SKILL.md +10 -7
- package/dist/skills/frontend/references/design/_INDEX.md +1 -0
- package/dist/skills/frontend/references/design/stylegallery.md +80 -0
- package/dist/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
- package/dist/skills/ultimate-browsing/engine/AGENTS.md +179 -0
- package/dist/skills/ultimate-browsing/engine/templates/package.json +1 -1
- package/dist/skills/ultimate-browsing/references/chrome-stealth.md +11 -11
- package/dist/skills/ulw-plan/SKILL.md +2 -2
- package/dist/skills/ulw-plan/references/full-workflow.md +27 -3
- package/dist/skills/ulw-plan/references/intent-clear.md +2 -1
- package/dist/skills/ulw-plan/references/intent-unclear.md +3 -3
- package/dist/tools/delegate-task/builtin-categories.d.ts +1 -0
- package/dist/tools/delegate-task/builtin-category-definition.d.ts +1 -0
- package/dist/tools/delegate-task/tool-description.d.ts +3 -1
- package/dist/tui.js +184 -83
- package/package.json +21 -19
- package/packages/lsp-core/src/lsp/client-diagnostics-concurrency.integration.test.ts +44 -0
- package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +0 -28
- package/packages/lsp-core/src/lsp/client-wrapper-outside-cwd.test.ts +78 -0
- package/packages/lsp-core/src/lsp/client-wrapper.test.ts +66 -13
- package/packages/lsp-core/src/lsp/client-wrapper.ts +70 -18
- package/packages/lsp-core/src/lsp/outside-context-workspace.ts +33 -0
- package/packages/lsp-core/src/lsp/workspace-edit-adversarial.test.ts +20 -1
- package/packages/lsp-core/src/lsp/workspace-markers.ts +1 -0
- package/packages/lsp-core/src/tools/diagnostics.ts +3 -3
- package/packages/lsp-core/src/tools/navigation.ts +4 -2
- package/packages/lsp-core/src/tools/rename.ts +4 -2
- package/packages/lsp-core/src/tools/symbols.ts +1 -1
- package/packages/lsp-daemon/dist/cli.js +160 -71
- package/packages/lsp-daemon/dist/client.js +135 -46
- package/packages/lsp-daemon/dist/index.js +143 -54
- package/packages/lsp-tools-mcp/dist/cli.js +131 -42
- package/packages/lsp-tools-mcp/dist/mcp.js +131 -42
- package/packages/lsp-tools-mcp/dist/tools.js +131 -42
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- 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/codegraph/dist/cli.js +118 -8
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +118 -8
- package/packages/omo-codex/plugin/components/codegraph/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/lazycodex-executor-verify/test/codex-hook.test.ts +3 -17
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
- package/packages/omo-codex/plugin/components/lsp/dist/cli.js +147 -64
- 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/rules/test/bundled-rules-priority.test.ts +11 -16
- package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +16 -23
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +9 -7
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +0 -6
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-dedup.test.ts +6 -4
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-directive.test.ts +12 -9
- package/packages/omo-codex/plugin/components/rules/test/codex-hook.test.ts +28 -37
- package/packages/omo-codex/plugin/components/rules/test/formatter.test.ts +37 -69
- package/packages/omo-codex/plugin/components/rules/test/hook-output.test.ts +2 -3
- package/packages/omo-codex/plugin/components/rules/test/windows-git-bash-bundled-rule.test.ts +1 -15
- package/packages/omo-codex/plugin/components/start-work-continuation/AGENTS.md +3 -2
- package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/test/cli.test.ts +0 -3
- package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +2 -16
- 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/teammode/test/thread-title-hook.test.ts +3 -9
- package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +24 -12
- package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +24 -12
- 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/directive.md +6 -0
- 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/ultrawork/SKILL.md +6 -0
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +2 -2
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +27 -3
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +2 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +3 -3
- package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +0 -136
- package/packages/omo-codex/plugin/components/ultrawork/test/skill-pointer.test.ts +0 -2
- package/packages/omo-codex/plugin/components/ulw-loop/directive.md +6 -0
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +3 -2
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +108 -0
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-continuation.test.ts +0 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +0 -3
- package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +2 -35
- package/packages/omo-codex/plugin/components/ulw-loop/test/ultrawork-directive.test.ts +4 -5
- 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-codegraph-init-guidance.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/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-checking-codegraph-bootstrap.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-start-work-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-checking-start-work-continuation.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 +20 -20
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +3 -2
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +1 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/senpi.md +4 -4
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +10 -7
- package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +1 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/stylegallery.md +80 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +179 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +11 -11
- package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +6 -0
- package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +3 -2
- package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +108 -0
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +1 -0
- package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +2 -2
- package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +27 -3
- package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +2 -1
- package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +3 -3
- package/packages/omo-codex/plugin/test/aggregate-agents.test.mjs +19 -173
- package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +4 -24
- package/packages/omo-codex/plugin/test/aggregate-plugin-fixture.mjs +175 -13
- package/packages/omo-codex/plugin/test/aggregate.test.mjs +78 -2
- package/packages/omo-codex/plugin/test/auto-update-release-notes.test.mjs +19 -33
- package/packages/omo-codex/plugin/test/lcx-contribute-bug-fix-template.test.mjs +21 -27
- package/packages/omo-codex/plugin/test/scaffold-plan.test.mjs +0 -36
- package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +101 -0
- package/packages/omo-codex/plugin/test/sync-skills.test.mjs +1 -119
- package/packages/omo-codex/plugin/test/teammode-archive-ambiguity.test.mjs +0 -40
- package/packages/omo-codex/plugin/test/teammode-communication.test.mjs +6 -62
- package/packages/omo-codex/plugin/test/teammode-thread-links.test.mjs +3 -36
- package/packages/omo-codex/plugin/test/teammode-transport.test.mjs +0 -44
- package/packages/omo-codex/plugin/test/teammode-worktree.test.mjs +2 -6
- package/packages/omo-codex/plugin/test/ultrawork-skill-pointer.test.mjs +0 -3
- package/packages/omo-codex/plugin/test/ulw-plan-review-state-contract.test.mjs +0 -3
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +57 -19
- package/packages/omo-codex/scripts/install-lazycodex-version-stamp.test.mjs +7 -2
- package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +3 -2
- package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +1 -1
- package/packages/shared-skills/skills/coding-agent-sessions/references/senpi.md +4 -4
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
- package/packages/shared-skills/skills/frontend/SKILL.md +10 -7
- package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +1 -0
- package/packages/shared-skills/skills/frontend/references/design/stylegallery.md +80 -0
- package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
- package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +179 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +11 -11
- package/packages/shared-skills/skills/ulw-plan/SKILL.md +2 -2
- package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +27 -3
- package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +2 -1
- package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +3 -3
- package/dist/tools/call-omo-agent/background-agent-executor.d.ts +0 -5
- package/packages/omo-codex/plugin/test/aggregate-skills.test.mjs +0 -92
- package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +0 -314
- package/packages/omo-codex/plugin/test/ulw-plan-scope-contract.test.mjs +0 -24
|
@@ -136,7 +136,7 @@ No Metis, no plan file, no execution until the user approves. The UNCLEAR path a
|
|
|
136
136
|
|
|
137
137
|
## Phase 3 - Generate the plan (only after approval)
|
|
138
138
|
1. Rerun `node "<skill-root>/scripts/scaffold-plan.mjs" <slug> [--clear|--unclear]` without `--draft-only`. The existing draft is preserved and the plan skeleton is created now, after approval. A plain rerun is a safe no-op; never hand-build the skeleton.
|
|
139
|
-
2. **Metis gap analysis (mandatory):** spawn a metis reviewer for contradictions, missing constraints, scope-creep, unvalidated assumptions, and missing acceptance criteria; fold findings in silently.
|
|
139
|
+
2. **Metis gap analysis (mandatory):** spawn a metis reviewer for contradictions, missing constraints — including unstated extrinsic ones: budget/spend, mandated stack, expected scale, target audience / compliance — scope-creep, unvalidated assumptions, and missing acceptance criteria; fold findings in silently; require each constraint gap to return as a proposed default plus reversibility, or a single owner-question when defaulting is unsafe.
|
|
140
140
|
3. APPEND todo batches into the `## Todos` region with edit/apply_patch - never rewrite the script-emitted headers; 50+ todos is fine; one request -> one plan.
|
|
141
141
|
4. Fill `## TL;DR (For humans)` LAST, after the detailed plan, so it summarizes the real plan, not an intention.
|
|
142
142
|
5. Self-review: every todo has references + agent-executable acceptance criteria + happy+failure QA scenarios; no business-logic assumption without evidence; zero criteria need a human. HR6 backstop - confirm the plan's FIRST `## ` heading is `## TL;DR (For humans)` and that every header below it appears in the template order; if you ever hand-built or reordered the file, the human summary must still lead.
|
|
@@ -180,7 +180,7 @@ Every "present the plan summary/brief" above delivers THIS structure, in the use
|
|
|
180
180
|
6. **Execution handoff** - the plan runs in a worker session via `$start-work <plan-name>`; introduce the options: `--worktree <absolute-path>` (task-owned worktree; required for PR/branch work), `--make-pr` (deliver as a PR; auto-creates a task-owned worktree), `--ship` (implies `--make-pr`, keeps working until the PR is reviewed and MERGED).
|
|
181
181
|
|
|
182
182
|
### High-accuracy review (dual review)
|
|
183
|
-
The high-accuracy review is DUAL and both passes must return OKAY before handoff: (1) the native `momus` reviewer subagent, and (2) an independent Oracle review via `task(subagent_type="oracle", ...)` on the strongest available reasoning model, in a fully isolated sub-session with normal approval and sandbox policy. Do not add flags that disable approvals or sandboxing. Momus runs at High and may take substantially longer than other agents. One round = exactly ONE `momus` + ONE independent review, dispatched together against the COMPLETE plan file (todos + TL;DR filled) at the draft's exact recorded `plan_path`. Keep Momus in flight and wait for its terminal result: elapsed time alone never justifies cancelling, duplicating, replacing, or treating it as failed. After both verdicts return, fix every
|
|
183
|
+
The high-accuracy review is DUAL and both passes must return OKAY before handoff: (1) the native `momus` reviewer subagent, and (2) an independent Oracle review via `task(subagent_type="oracle", ...)` on the strongest available reasoning model, in a fully isolated sub-session with normal approval and sandbox policy. Do not add flags that disable approvals or sandboxing. Momus runs at High and may take substantially longer than other agents. One round = exactly ONE `momus` + ONE independent review, dispatched together against the COMPLETE plan file (todos + TL;DR filled) at the draft's exact recorded `plan_path`. Keep Momus in flight and wait for its terminal result: elapsed time alone never justifies cancelling, duplicating, replacing, or treating it as failed. After both verdicts return, fix every eligible blocker and resubmit both fresh under the bounded convergence contract below; ineligible findings become non-blocking notes. CLEAR: runs when the user opts in or `review_required: true`. UNCLEAR: runs automatically unless Classify=Trivial.
|
|
184
184
|
|
|
185
185
|
Every reviewer prompt must carry this intake contract with all angle-bracket values replaced by literals from the current round before dispatch. Never pass `draft.plan_path`, `draft.plan_sha256`, field names, or another symbolic reference to an isolated reviewer. Its first action is to read the exact recorded path; retrieval drift stops that lane before review:
|
|
186
186
|
|
|
@@ -209,7 +209,31 @@ Every reviewer prompt must carry this intake contract with all angle-bracket val
|
|
|
209
209
|
|
|
210
210
|
The first action must open the literal workspace root as a directory descriptor, then traverse `.omo`, `plans`, and the final target with descriptor-relative no-follow opens, `fstat` each ancestor as a directory and the final descriptor as a regular file, and hash all bytes read from that same final descriptor. If the platform cannot guarantee this chain, or any path/runtime/launch/receipt/digest check drifts, return `INCONCLUSIVE` before reviewing. Echo the literal workspace, runtime home, target, digest, round, and launch ID; the parent separately matches the completion envelope to the persisted session/process receipt. Never search or use another artifact.
|
|
211
211
|
|
|
212
|
-
|
|
212
|
+
### Bounded convergence (the review must terminate)
|
|
213
|
+
Review rounds are capped at 5 (unlimited only on explicit user request), and an approval whose only remaining items are notes counts as approval. A finding may BLOCK only when it names at least one `blocker_eligibility` category below with its concrete evidence; every other finding - speculative durability, replay/crash-recovery, schema, CLI-parsing, state-machine, or hardening concerns the accepted scope never required - is recorded as a non-blocking note and becomes implementation/test work, never plan expansion. After round 1 the blocker ledger FREEZES: later rounds verify accepted ledger blockers, regressions introduced by fixes, and new findings that pass eligibility - they never rediscover the plan from scratch. Fixes apply the smallest edit that resolves the cited blocker; neither reviews nor fixes grow the plan's scope. Every reviewer prompt carries this convergence contract alongside the intake contract. On cap exhaustion without approval: STOP, report outstanding blockers, ask the user - continue / accept / adjust.
|
|
214
|
+
|
|
215
|
+
<!-- ulw-plan-review-convergence-contract -->
|
|
216
|
+
```json
|
|
217
|
+
{
|
|
218
|
+
"max_rounds": 5,
|
|
219
|
+
"max_rounds_override": "explicit_user_request_only",
|
|
220
|
+
"on_cap_reached": "stop_report_outstanding_blockers_ask_user",
|
|
221
|
+
"blocker_eligibility": [
|
|
222
|
+
"explicit_requirement_or_accepted_decision",
|
|
223
|
+
"existing_failing_regression",
|
|
224
|
+
"reproducible_broken_flow",
|
|
225
|
+
"concrete_security_data_loss_or_compatibility_risk",
|
|
226
|
+
"external_api_provider_or_release_contract_conflict"
|
|
227
|
+
],
|
|
228
|
+
"ineligible_finding_disposition": "non_blocking_note",
|
|
229
|
+
"approval_with_notes_counts_as_approval": true,
|
|
230
|
+
"ledger_freeze_after_round": 1,
|
|
231
|
+
"closure_round_scope": ["accepted_ledger_blockers", "regressions_introduced_by_fixes", "new_findings_passing_blocker_eligibility"],
|
|
232
|
+
"fix_edit_policy": "smallest_edit_no_scope_expansion"
|
|
233
|
+
}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
The draft must record the native Momus session/result, the independent review session/result, and the fix/retry summary, plus the convergence ledger (accepted blockers, non-blocking notes, round count). Immediately before handoff, repeat the same live canonical-path and SHA-256 validation and require it to match the approved round digest; drift invalidates both approvals and starts a fresh round. Do not say "high-accuracy review completed" unless both receipts exist, both final verdicts are unconditional approval, and the final live-plan validation passes.
|
|
213
237
|
|
|
214
238
|
## Delegation discipline (OpenCode-native)
|
|
215
239
|
Every delegated prompt starts with `TASK:`, then DELIVERABLE / SCOPE / VERIFY; state the role inside the prompt and include only the context the child needs:
|
|
@@ -26,7 +26,7 @@ ASK WITH WHY: name what you explored, why it did not resolve, and which part of
|
|
|
26
26
|
|
|
27
27
|
FOGGIEST-GAP targeting (ordinal, NO numbers): each turn aim at the single open gap whose resolution most unblocks the plan, and say why in one sentence; rotate across equally-foggy components. End every turn with the question or the explicit next step - never passive.
|
|
28
28
|
|
|
29
|
-
CLEARANCE CHECK after each turn: objective defined? scope IN/OUT explicit? approach decided? test strategy confirmed? no blocking ambiguity left? Any NO is your next question; all YES -> present the approval brief and stop.
|
|
29
|
+
CLEARANCE CHECK after each turn: objective defined? scope IN/OUT explicit? approach decided? test strategy confirmed? constraints swept (budget / stack / scale / audience - each explored, defaulted, or asked)? no blocking ambiguity left? Any NO is your next question; all YES -> present the approval brief and stop.
|
|
30
30
|
</interview>
|
|
31
31
|
|
|
32
32
|
<approval_and_deliver>
|
|
@@ -40,5 +40,6 @@ Request: "add a 5/min-per-IP rate-limit to `/login`".
|
|
|
40
40
|
3. Two surviving forks, each asked WITH WHY:
|
|
41
41
|
- Storage backend (explored: repo already uses Redis; default = Redis; options Redis / in-memory / per-node) - why: persistence across nodes forks the design.
|
|
42
42
|
- Over-limit response (default = 429 + Retry-After; options 429 / 423 / silent drop) - why: client contract forks on it.
|
|
43
|
+
- Swept axes: no budget/audience fork (internal service); scale bound = existing Redis capacity (defaulted, reversible).
|
|
43
44
|
4. Approval brief -> explicit okay -> scaffold -> append todos -> if `review_required`, run dual review and deliver receipts; otherwise deliver with the optional review question.
|
|
44
45
|
</worked_example>
|
|
@@ -20,13 +20,13 @@ TOPOLOGY LOCK still applies: enumerate the 1-6 independently-succeed/fail compon
|
|
|
20
20
|
</research_protocol>
|
|
21
21
|
|
|
22
22
|
<default_selection>
|
|
23
|
-
For each open decision, adopt the defensible best-practice default (industry standard or repo convention), RECORD it in the draft's Open-assumptions ledger with rationale and reversibility, and proceed. NO numeric scoring - the ledger IS the audit trail. The ONLY default escalated to a single focused question is one that is irreversible, destructive, or safety-critical and research cannot settle.
|
|
23
|
+
For each open decision - including the extrinsic axes the sweep names (budget, mandated stack, expected scale, target audience / compliance) - adopt the defensible best-practice default (industry standard or repo convention), RECORD it in the draft's Open-assumptions ledger with rationale and reversibility, and proceed. NO numeric scoring - the ledger IS the audit trail. The ONLY default escalated to a single focused question is one that is irreversible, destructive, or safety-critical, or commits real spend the user never authorized, and research cannot settle.
|
|
24
24
|
|
|
25
25
|
Fold a contrarian self-grill into the Metis spawn: challenge the single highest-leverage adopted assumption - is this constraint real or habitual; does any adopted default add complexity the request never asked for? - and return concrete reframes. The grill targets incidental complexity (unneeded abstraction, speculative capacity), NEVER the feature set: reducing, phasing, or deferring part of the request is not a reframe. Fold a reframe into the plan only as a recommended default plus rationale, never as a forced change.
|
|
26
26
|
</default_selection>
|
|
27
27
|
|
|
28
28
|
<high_accuracy_auto>
|
|
29
|
-
Because the human did not steer, adversarial review SUBSTITUTES for the interview you skipped - this is what catches a bad default. Metis runs during plan generation as always; after Metis findings are folded and the plan file is complete, run the dual high-accuracy review defined in `full-workflow.md` AUTOMATICALLY - no "do you want a review?" question - and resubmit fresh
|
|
29
|
+
Because the human did not steer, adversarial review SUBSTITUTES for the interview you skipped - this is what catches a bad default. Metis runs during plan generation as always; after Metis findings are folded and the plan file is complete, run the dual high-accuracy review defined in `full-workflow.md` AUTOMATICALLY - no "do you want a review?" question - and drive it to convergence under the bounded convergence contract in `full-workflow.md`: fix every eligible blocker and resubmit fresh, record ineligible findings as non-blocking notes, and on cap exhaustion stop and ask the user.
|
|
30
30
|
|
|
31
31
|
TRIVIAL-TIER GUARD: if Classify sized the work Trivial, the auto-Momus loop is SUPPRESSED (Metis still runs once) - a vague-but-tiny request ("clean this up") must not trigger the full adversarial loop. UNCLEAR raises the research-plus-default posture; it does not override the Trivial cost guard for Momus.
|
|
32
32
|
</high_accuracy_auto>
|
|
@@ -40,5 +40,5 @@ Request: "make auth better".
|
|
|
40
40
|
1. Research waves -> current auth at `src/auth/*` and evidence for the requested improvement; best-practice baselines via librarian.
|
|
41
41
|
2. Topology lock as an ANNOUNCEMENT, not a question: components refine the evidenced auth intent in full, such as session hardening, brute-force protection, and password policy when the repository supports them. MFA is an adjacent capability and stays in Scope OUT unless the user asks for it or evidence establishes it as part of the requested outcome.
|
|
42
42
|
3. Adopted-defaults table (assumption | default | rationale | reversible?): bcrypt rounds 8 -> 12 (reversible), add 5/min-per-IP login limit (reversible), rotate session id on privilege change (reversible).
|
|
43
|
-
4. Metis folded -> auto dual review (fix
|
|
43
|
+
4. Metis folded -> auto dual review (fix eligible gaps under the bounded convergence contract) -> brief LEADING with the approach and the defaults, surfaced in the human TL;DR for veto.
|
|
44
44
|
</worked_example>
|
|
@@ -2,5 +2,6 @@ import type { CategoryConfig } from "../../config/schema";
|
|
|
2
2
|
export declare const DEFAULT_CATEGORIES: Record<string, CategoryConfig>;
|
|
3
3
|
export declare const CATEGORY_PROMPT_APPENDS: Record<string, string>;
|
|
4
4
|
export declare const CATEGORY_DESCRIPTIONS: Record<string, string>;
|
|
5
|
+
export declare const CATEGORY_CALLER_GUIDANCE: Record<string, string | undefined>;
|
|
5
6
|
export declare const CATEGORY_PROMPT_APPEND_RESOLVERS: Record<string, (model: string | undefined) => string>;
|
|
6
7
|
export declare const BUILTIN_CATEGORY_REQUIRES_MODEL: Record<string, string>;
|
|
@@ -6,4 +6,6 @@ export interface DelegateTaskPresentation {
|
|
|
6
6
|
categoryExamples: string;
|
|
7
7
|
description: string;
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
type DelegateTaskPresentationOptions = Pick<DelegateTaskToolOptions, "availableCategories" | "availableSkills" | "userCategories">;
|
|
10
|
+
export declare function createDelegateTaskPresentation(options: DelegateTaskPresentationOptions): DelegateTaskPresentation;
|
|
11
|
+
export {};
|
package/dist/tui.js
CHANGED
|
@@ -15197,7 +15197,7 @@ function finalize(ctx, schema) {
|
|
|
15197
15197
|
result.$schema = "http://json-schema.org/draft-07/schema#";
|
|
15198
15198
|
} else if (ctx.target === "draft-04") {
|
|
15199
15199
|
result.$schema = "http://json-schema.org/draft-04/schema#";
|
|
15200
|
-
} else if (ctx.target === "openapi-3.0") {}
|
|
15200
|
+
} else if (ctx.target === "openapi-3.0") {}
|
|
15201
15201
|
if (ctx.external?.uri) {
|
|
15202
15202
|
const id = ctx.external.registry.get(schema)?.id;
|
|
15203
15203
|
if (!id)
|
|
@@ -15458,7 +15458,7 @@ var formatMap, stringProcessor = (schema, ctx, _json, _params) => {
|
|
|
15458
15458
|
if (val === undefined) {
|
|
15459
15459
|
if (ctx.unrepresentable === "throw") {
|
|
15460
15460
|
throw new Error("Literal `undefined` cannot be represented in JSON Schema");
|
|
15461
|
-
}
|
|
15461
|
+
}
|
|
15462
15462
|
} else if (typeof val === "bigint") {
|
|
15463
15463
|
if (ctx.unrepresentable === "throw") {
|
|
15464
15464
|
throw new Error("BigInt literals cannot be represented in JSON Schema");
|
|
@@ -18837,15 +18837,16 @@ var init_codegraph = __esm(() => {
|
|
|
18837
18837
|
});
|
|
18838
18838
|
|
|
18839
18839
|
// packages/omo-config-core/src/schema/memory.ts
|
|
18840
|
-
var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
|
|
18840
|
+
var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryNudgeSchema, OmoMemoryFactsSchema, OmoMemoryDreamSchema, OmoMemoryPeopleSchema, OmoMemorySoulSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryNudgeLayerSchema, OmoMemoryFactsLayerSchema, OmoMemoryDreamLayerSchema, OmoMemoryPeopleLayerSchema, OmoMemorySoulLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
|
|
18841
18841
|
var init_memory = __esm(() => {
|
|
18842
18842
|
init_zod();
|
|
18843
18843
|
OmoMemoryReflectionTriggerSchema = object({
|
|
18844
|
-
step_count: number2().int().nonnegative().default(
|
|
18844
|
+
step_count: number2().int().nonnegative().default(25),
|
|
18845
18845
|
on_compaction: boolean2().default(true)
|
|
18846
18846
|
}).strict();
|
|
18847
18847
|
OmoMemoryReflectionSchema = object({
|
|
18848
|
-
|
|
18848
|
+
enabled: boolean2().default(true),
|
|
18849
|
+
trigger: OmoMemoryReflectionTriggerSchema.default({ step_count: 25, on_compaction: true }),
|
|
18849
18850
|
merge: _enum2(["auto", "integration"]).default("auto"),
|
|
18850
18851
|
category: string2().min(1).default("quick"),
|
|
18851
18852
|
timeout_minutes: number2().int().positive().default(15),
|
|
@@ -18858,11 +18859,36 @@ var init_memory = __esm(() => {
|
|
|
18858
18859
|
OmoMemorySearchSchema = object({
|
|
18859
18860
|
enabled: boolean2().default(true)
|
|
18860
18861
|
}).strict();
|
|
18862
|
+
OmoMemoryNudgeSchema = object({
|
|
18863
|
+
enabled: boolean2().default(true),
|
|
18864
|
+
every_user_turns: number2().int().min(1).default(10)
|
|
18865
|
+
}).strict();
|
|
18866
|
+
OmoMemoryFactsSchema = object({
|
|
18867
|
+
enabled: boolean2().default(true),
|
|
18868
|
+
debounce_settles: number2().int().min(1).default(4)
|
|
18869
|
+
}).strict();
|
|
18870
|
+
OmoMemoryDreamSchema = object({
|
|
18871
|
+
enabled: boolean2().default(true),
|
|
18872
|
+
idle_minutes: number2().int().min(0).default(30),
|
|
18873
|
+
min_hours_between: number2().int().min(1).default(24),
|
|
18874
|
+
shutdown_launch: boolean2().default(true),
|
|
18875
|
+
auto_select_max: number2().int().min(1).max(10).default(5),
|
|
18876
|
+
auto_select_max_chars: number2().int().min(1e4).default(150000)
|
|
18877
|
+
}).strict();
|
|
18878
|
+
OmoMemoryPeopleSchema = object({
|
|
18879
|
+
enabled: boolean2().default(true),
|
|
18880
|
+
max_entries: number2().int().min(1).max(100).default(40),
|
|
18881
|
+
max_entry_chars: number2().int().min(50).max(500).default(200)
|
|
18882
|
+
}).strict();
|
|
18883
|
+
OmoMemorySoulSchema = object({
|
|
18884
|
+
edit_notice: boolean2().default(true)
|
|
18885
|
+
}).strict();
|
|
18861
18886
|
OmoMemoryReflectionTriggerLayerSchema = object({
|
|
18862
18887
|
step_count: number2().int().nonnegative().optional(),
|
|
18863
18888
|
on_compaction: boolean2().optional()
|
|
18864
18889
|
}).strict();
|
|
18865
18890
|
OmoMemoryReflectionLayerSchema = object({
|
|
18891
|
+
enabled: boolean2().optional(),
|
|
18866
18892
|
trigger: OmoMemoryReflectionTriggerLayerSchema.optional(),
|
|
18867
18893
|
merge: _enum2(["auto", "integration"]).optional(),
|
|
18868
18894
|
category: string2().min(1).optional(),
|
|
@@ -18876,10 +18902,39 @@ var init_memory = __esm(() => {
|
|
|
18876
18902
|
OmoMemorySearchLayerSchema = object({
|
|
18877
18903
|
enabled: boolean2().optional()
|
|
18878
18904
|
}).strict();
|
|
18905
|
+
OmoMemoryNudgeLayerSchema = object({
|
|
18906
|
+
enabled: boolean2().optional(),
|
|
18907
|
+
every_user_turns: number2().int().min(1).optional()
|
|
18908
|
+
}).strict();
|
|
18909
|
+
OmoMemoryFactsLayerSchema = object({
|
|
18910
|
+
enabled: boolean2().optional(),
|
|
18911
|
+
debounce_settles: number2().int().min(1).optional()
|
|
18912
|
+
}).strict();
|
|
18913
|
+
OmoMemoryDreamLayerSchema = object({
|
|
18914
|
+
enabled: boolean2().optional(),
|
|
18915
|
+
idle_minutes: number2().int().min(0).optional(),
|
|
18916
|
+
min_hours_between: number2().int().min(1).optional(),
|
|
18917
|
+
shutdown_launch: boolean2().optional(),
|
|
18918
|
+
auto_select_max: number2().int().min(1).max(10).optional(),
|
|
18919
|
+
auto_select_max_chars: number2().int().min(1e4).optional()
|
|
18920
|
+
}).strict();
|
|
18921
|
+
OmoMemoryPeopleLayerSchema = object({
|
|
18922
|
+
enabled: boolean2().optional(),
|
|
18923
|
+
max_entries: number2().int().min(1).max(100).optional(),
|
|
18924
|
+
max_entry_chars: number2().int().min(50).max(500).optional()
|
|
18925
|
+
}).strict();
|
|
18926
|
+
OmoMemorySoulLayerSchema = object({
|
|
18927
|
+
edit_notice: boolean2().optional()
|
|
18928
|
+
}).strict();
|
|
18879
18929
|
OmoMemoryAgentOverridesSchema = object({
|
|
18880
18930
|
enabled: boolean2().optional(),
|
|
18881
18931
|
agent: string2().min(1).optional(),
|
|
18882
18932
|
reflection: OmoMemoryReflectionLayerSchema.optional(),
|
|
18933
|
+
nudge: OmoMemoryNudgeLayerSchema.optional(),
|
|
18934
|
+
facts: OmoMemoryFactsLayerSchema.optional(),
|
|
18935
|
+
dream: OmoMemoryDreamLayerSchema.optional(),
|
|
18936
|
+
people: OmoMemoryPeopleLayerSchema.optional(),
|
|
18937
|
+
soul: OmoMemorySoulLayerSchema.optional(),
|
|
18883
18938
|
sync: OmoMemorySyncLayerSchema.optional(),
|
|
18884
18939
|
search: OmoMemorySearchLayerSchema.optional(),
|
|
18885
18940
|
compile_warn_tokens: number2().int().positive().optional()
|
|
@@ -18887,13 +18942,27 @@ var init_memory = __esm(() => {
|
|
|
18887
18942
|
OmoMemorySettingsSchema = object({
|
|
18888
18943
|
enabled: boolean2().default(true),
|
|
18889
18944
|
agent: string2().min(1).default("auto"),
|
|
18945
|
+
tool_exposure: _enum2(["direct", "search"]).default("direct"),
|
|
18890
18946
|
reflection: OmoMemoryReflectionSchema.default({
|
|
18891
|
-
|
|
18947
|
+
enabled: true,
|
|
18948
|
+
trigger: { step_count: 25, on_compaction: true },
|
|
18892
18949
|
merge: "auto",
|
|
18893
18950
|
category: "quick",
|
|
18894
18951
|
timeout_minutes: 15,
|
|
18895
18952
|
sandbox: "auto"
|
|
18896
18953
|
}),
|
|
18954
|
+
nudge: OmoMemoryNudgeSchema.default({ enabled: true, every_user_turns: 10 }),
|
|
18955
|
+
facts: OmoMemoryFactsSchema.default({ enabled: true, debounce_settles: 4 }),
|
|
18956
|
+
dream: OmoMemoryDreamSchema.default({
|
|
18957
|
+
enabled: true,
|
|
18958
|
+
idle_minutes: 30,
|
|
18959
|
+
min_hours_between: 24,
|
|
18960
|
+
shutdown_launch: true,
|
|
18961
|
+
auto_select_max: 5,
|
|
18962
|
+
auto_select_max_chars: 150000
|
|
18963
|
+
}),
|
|
18964
|
+
people: OmoMemoryPeopleSchema.default({ enabled: true, max_entries: 40, max_entry_chars: 200 }),
|
|
18965
|
+
soul: OmoMemorySoulSchema.default({ edit_notice: true }),
|
|
18897
18966
|
sync: OmoMemorySyncSchema.default({ enabled: true }),
|
|
18898
18967
|
search: OmoMemorySearchSchema.default({ enabled: true }),
|
|
18899
18968
|
compile_warn_tokens: number2().int().positive().default(30000),
|
|
@@ -18902,7 +18971,13 @@ var init_memory = __esm(() => {
|
|
|
18902
18971
|
OmoMemorySettingsLayerSchema = object({
|
|
18903
18972
|
enabled: boolean2().optional(),
|
|
18904
18973
|
agent: string2().min(1).optional(),
|
|
18974
|
+
tool_exposure: _enum2(["direct", "search"]).optional(),
|
|
18905
18975
|
reflection: OmoMemoryReflectionLayerSchema.optional(),
|
|
18976
|
+
nudge: OmoMemoryNudgeLayerSchema.optional(),
|
|
18977
|
+
facts: OmoMemoryFactsLayerSchema.optional(),
|
|
18978
|
+
dream: OmoMemoryDreamLayerSchema.optional(),
|
|
18979
|
+
people: OmoMemoryPeopleLayerSchema.optional(),
|
|
18980
|
+
soul: OmoMemorySoulLayerSchema.optional(),
|
|
18906
18981
|
sync: OmoMemorySyncLayerSchema.optional(),
|
|
18907
18982
|
search: OmoMemorySearchLayerSchema.optional(),
|
|
18908
18983
|
compile_warn_tokens: number2().int().positive().optional(),
|
|
@@ -18941,7 +19016,7 @@ function resolveOmoTaskSettings(input, resolveParallelism = availableParallelism
|
|
|
18941
19016
|
residency_max_children: record2["residency_max_children"] ?? Math.max(8, resolveParallelism() * 3)
|
|
18942
19017
|
});
|
|
18943
19018
|
}
|
|
18944
|
-
var ResidencyMaxChildrenInputSchema, OmoTaskWaitSchema, OmoTaskTeamSettingsSchema, OmoTaskWarningsSchema, OmoTaskSettingsSchema, OmoTaskWaitLayerSchema, OmoTaskTeamSettingsLayerSchema, OmoTaskWarningsLayerSchema, OmoTaskSettingsLayerSchema;
|
|
19019
|
+
var ResidencyMaxChildrenInputSchema, OmoTaskWaitSchema, OmoTaskTeamSettingsSchema, OmoTaskWarningsSchema, OmoTaskDagSettingsSchema, OmoTaskSettingsSchema, OmoTaskDagSettingsLayerSchema, OmoTaskWaitLayerSchema, OmoTaskTeamSettingsLayerSchema, OmoTaskWarningsLayerSchema, OmoTaskSettingsLayerSchema;
|
|
18945
19020
|
var init_task = __esm(() => {
|
|
18946
19021
|
init_zod();
|
|
18947
19022
|
ResidencyMaxChildrenInputSchema = union([number2().int().positive(), literal("unlimited")]);
|
|
@@ -18958,6 +19033,16 @@ var init_task = __esm(() => {
|
|
|
18958
19033
|
OmoTaskWarningsSchema = object({
|
|
18959
19034
|
unavailable_categories: boolean2().default(true)
|
|
18960
19035
|
}).strict();
|
|
19036
|
+
OmoTaskDagSettingsSchema = object({
|
|
19037
|
+
max_nodes_per_run: number2().int().positive().default(64),
|
|
19038
|
+
max_runs_per_session: number2().int().positive().default(16),
|
|
19039
|
+
subscriber_ring: number2().int().positive().default(1000),
|
|
19040
|
+
heartbeat_ms: number2().int().positive().default(15000),
|
|
19041
|
+
history_default_limit: number2().int().positive().default(256),
|
|
19042
|
+
history_max_limit: number2().int().positive().default(1000),
|
|
19043
|
+
retention_days: number2().int().positive().default(7),
|
|
19044
|
+
max_prompt_bytes: number2().int().positive().default(262144)
|
|
19045
|
+
}).strict();
|
|
18961
19046
|
OmoTaskSettingsSchema = object({
|
|
18962
19047
|
default_execution_mode: _enum2(["in-process", "process"]).default("in-process"),
|
|
18963
19048
|
default_concurrency: number2().int().positive().default(5),
|
|
@@ -18975,7 +19060,18 @@ var init_task = __esm(() => {
|
|
|
18975
19060
|
max_members: 8,
|
|
18976
19061
|
max_parallel_members: 4,
|
|
18977
19062
|
max_wall_clock_minutes: 120
|
|
18978
|
-
})
|
|
19063
|
+
}),
|
|
19064
|
+
dag: OmoTaskDagSettingsSchema.optional()
|
|
19065
|
+
}).strict();
|
|
19066
|
+
OmoTaskDagSettingsLayerSchema = object({
|
|
19067
|
+
max_nodes_per_run: number2().int().positive().optional(),
|
|
19068
|
+
max_runs_per_session: number2().int().positive().optional(),
|
|
19069
|
+
subscriber_ring: number2().int().positive().optional(),
|
|
19070
|
+
heartbeat_ms: number2().int().positive().optional(),
|
|
19071
|
+
history_default_limit: number2().int().positive().optional(),
|
|
19072
|
+
history_max_limit: number2().int().positive().optional(),
|
|
19073
|
+
retention_days: number2().int().positive().optional(),
|
|
19074
|
+
max_prompt_bytes: number2().int().positive().optional()
|
|
18979
19075
|
}).strict();
|
|
18980
19076
|
OmoTaskWaitLayerSchema = object({
|
|
18981
19077
|
min_ms: number2().int().positive().optional(),
|
|
@@ -19003,7 +19099,8 @@ var init_task = __esm(() => {
|
|
|
19003
19099
|
resume_children: boolean2().optional(),
|
|
19004
19100
|
warnings: OmoTaskWarningsLayerSchema.optional(),
|
|
19005
19101
|
wait: OmoTaskWaitLayerSchema.optional(),
|
|
19006
|
-
team: OmoTaskTeamSettingsLayerSchema.optional()
|
|
19102
|
+
team: OmoTaskTeamSettingsLayerSchema.optional(),
|
|
19103
|
+
dag: OmoTaskDagSettingsLayerSchema.optional()
|
|
19007
19104
|
}).strict();
|
|
19008
19105
|
});
|
|
19009
19106
|
|
|
@@ -19058,6 +19155,19 @@ var init_team = __esm(() => {
|
|
|
19058
19155
|
OmoTeamsConfigLayerSchema = record(string2(), OmoTeamSpecLayerSchema);
|
|
19059
19156
|
});
|
|
19060
19157
|
|
|
19158
|
+
// packages/omo-config-core/src/schema/telemetry.ts
|
|
19159
|
+
var OmoTelemetrySettingsShape, OmoTelemetrySettingsLayerSchema, OmoTelemetrySettingsSchema;
|
|
19160
|
+
var init_telemetry = __esm(() => {
|
|
19161
|
+
init_zod();
|
|
19162
|
+
OmoTelemetrySettingsShape = {
|
|
19163
|
+
enabled: boolean2()
|
|
19164
|
+
};
|
|
19165
|
+
OmoTelemetrySettingsLayerSchema = object(OmoTelemetrySettingsShape).partial().strict();
|
|
19166
|
+
OmoTelemetrySettingsSchema = OmoTelemetrySettingsLayerSchema.extend({
|
|
19167
|
+
enabled: boolean2().default(true)
|
|
19168
|
+
}).strict();
|
|
19169
|
+
});
|
|
19170
|
+
|
|
19061
19171
|
// packages/omo-config-core/src/schema/config.ts
|
|
19062
19172
|
var OmoOpenCodeHarnessConfigSchema, OmoTypedHarnessConfigSchema, OmoConfigProfileSchema, OmoConfigSchema, OmoConfigLayerSchema;
|
|
19063
19173
|
var init_config = __esm(() => {
|
|
@@ -19069,6 +19179,7 @@ var init_config = __esm(() => {
|
|
|
19069
19179
|
init_model_catalog();
|
|
19070
19180
|
init_task();
|
|
19071
19181
|
init_team();
|
|
19182
|
+
init_telemetry();
|
|
19072
19183
|
OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
|
|
19073
19184
|
OmoTypedHarnessConfigSchema = object({
|
|
19074
19185
|
categories: OmoCategoriesConfigSchema.optional(),
|
|
@@ -19077,7 +19188,8 @@ var init_config = __esm(() => {
|
|
|
19077
19188
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
19078
19189
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
19079
19190
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
19080
|
-
memory: OmoMemorySettingsLayerSchema.optional()
|
|
19191
|
+
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
19192
|
+
telemetry: OmoTelemetrySettingsLayerSchema.optional()
|
|
19081
19193
|
}).strict();
|
|
19082
19194
|
OmoConfigProfileSchema = object({
|
|
19083
19195
|
categories: OmoCategoriesConfigSchema.optional(),
|
|
@@ -19087,6 +19199,7 @@ var init_config = __esm(() => {
|
|
|
19087
19199
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
19088
19200
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
19089
19201
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
19202
|
+
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
19090
19203
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
19091
19204
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
19092
19205
|
"[codex]": OmoTypedHarnessConfigSchema.optional()
|
|
@@ -19100,6 +19213,7 @@ var init_config = __esm(() => {
|
|
|
19100
19213
|
teams: OmoTeamsConfigSchema.optional(),
|
|
19101
19214
|
models: OmoModelCatalogSchema.optional(),
|
|
19102
19215
|
memory: OmoMemorySettingsSchema.optional(),
|
|
19216
|
+
telemetry: OmoTelemetrySettingsSchema.optional(),
|
|
19103
19217
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
19104
19218
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
19105
19219
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
@@ -19116,6 +19230,7 @@ var init_config = __esm(() => {
|
|
|
19116
19230
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
19117
19231
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
19118
19232
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
19233
|
+
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
19119
19234
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
19120
19235
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
19121
19236
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
@@ -19138,6 +19253,7 @@ var init_schema = __esm(() => {
|
|
|
19138
19253
|
init_model_ref();
|
|
19139
19254
|
init_task();
|
|
19140
19255
|
init_team();
|
|
19256
|
+
init_telemetry();
|
|
19141
19257
|
});
|
|
19142
19258
|
|
|
19143
19259
|
// packages/omo-config-core/src/loader/merge.ts
|
|
@@ -20964,10 +21080,10 @@ var init_category_model_requirements = __esm(() => {
|
|
|
20964
21080
|
quick: {
|
|
20965
21081
|
fallbackChain: [
|
|
20966
21082
|
{ providers: ["kimi-for-coding"], model: "kimi-for-coding-highspeed" },
|
|
20967
|
-
{ providers: ["
|
|
21083
|
+
{ providers: ["openai-codex"], model: "gpt-5.6-luna-fast", variant: "low" },
|
|
20968
21084
|
{ providers: ["deepseek"], model: "deepseek-v4-flash", variant: "off" },
|
|
20969
21085
|
{
|
|
20970
|
-
providers: ["qwen-token-plan", "alibaba-token-plan", "bailian-coding-plan", "
|
|
21086
|
+
providers: ["qwen-token-plan", "alibaba-token-plan", "bailian-coding-plan", "vercel"],
|
|
20971
21087
|
model: "qwen3.6-flash",
|
|
20972
21088
|
variant: "low"
|
|
20973
21089
|
},
|
|
@@ -20983,6 +21099,11 @@ var init_category_model_requirements = __esm(() => {
|
|
|
20983
21099
|
},
|
|
20984
21100
|
"unspecified-low": {
|
|
20985
21101
|
fallbackChain: [
|
|
21102
|
+
{
|
|
21103
|
+
providers: ["xai", "github-copilot", "opencode", "vercel"],
|
|
21104
|
+
model: "grok-4.6",
|
|
21105
|
+
variant: "xhigh"
|
|
21106
|
+
},
|
|
20986
21107
|
{
|
|
20987
21108
|
providers: ["openai", "quotio-openai", "github-copilot", "opencode", "vercel"],
|
|
20988
21109
|
model: "gpt-5.6-terra",
|
|
@@ -77849,6 +77970,47 @@ var init_model_capabilities_generated = __esm(() => {
|
|
|
77849
77970
|
input: 272000,
|
|
77850
77971
|
output: 128000
|
|
77851
77972
|
}
|
|
77973
|
+
},
|
|
77974
|
+
"grok-4.6": {
|
|
77975
|
+
id: "grok-4.6",
|
|
77976
|
+
family: "grok",
|
|
77977
|
+
reasoning: true,
|
|
77978
|
+
temperature: true,
|
|
77979
|
+
toolCall: true,
|
|
77980
|
+
modalities: {
|
|
77981
|
+
input: [
|
|
77982
|
+
"text",
|
|
77983
|
+
"image"
|
|
77984
|
+
],
|
|
77985
|
+
output: [
|
|
77986
|
+
"text"
|
|
77987
|
+
]
|
|
77988
|
+
},
|
|
77989
|
+
limit: {
|
|
77990
|
+
context: 500000,
|
|
77991
|
+
output: 500000
|
|
77992
|
+
}
|
|
77993
|
+
},
|
|
77994
|
+
"xai/grok-4.6": {
|
|
77995
|
+
id: "xai/grok-4.6",
|
|
77996
|
+
family: "grok",
|
|
77997
|
+
reasoning: true,
|
|
77998
|
+
temperature: true,
|
|
77999
|
+
toolCall: true,
|
|
78000
|
+
modalities: {
|
|
78001
|
+
input: [
|
|
78002
|
+
"text",
|
|
78003
|
+
"image",
|
|
78004
|
+
"pdf"
|
|
78005
|
+
],
|
|
78006
|
+
output: [
|
|
78007
|
+
"text"
|
|
78008
|
+
]
|
|
78009
|
+
},
|
|
78010
|
+
limit: {
|
|
78011
|
+
context: 500000,
|
|
78012
|
+
output: 500000
|
|
78013
|
+
}
|
|
77852
78014
|
}
|
|
77853
78015
|
}
|
|
77854
78016
|
};
|
|
@@ -78022,24 +78184,14 @@ var init_agent_display_names = __esm(() => {
|
|
|
78022
78184
|
// packages/omo-opencode/src/tools/delegate-task/anthropic-categories.ts
|
|
78023
78185
|
var UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND = `<Category_Context>
|
|
78024
78186
|
You are working on tasks that don't fit specific categories but require substantial effort.
|
|
78025
|
-
|
|
78026
|
-
<Selection_Gate>
|
|
78027
|
-
BEFORE selecting this category, VERIFY ALL conditions:
|
|
78028
|
-
1. Task does NOT fit: quick (trivial), visual-engineering (UI), ultrabrain (deep logic), artistry (creative), writing (docs)
|
|
78029
|
-
2. Task requires substantial effort across multiple systems/modules
|
|
78030
|
-
3. Changes have broad impact or require careful coordination
|
|
78031
|
-
4. NOT just "complex" - must be genuinely unclassifiable AND high-effort
|
|
78032
|
-
|
|
78033
|
-
If task fits ANY other category, DO NOT select unspecified-high.
|
|
78034
|
-
If task is unclassifiable but moderate-effort, use unspecified-low instead.
|
|
78035
|
-
</Selection_Gate>
|
|
78036
|
-
</Category_Context>`, ANTHROPIC_CATEGORIES;
|
|
78187
|
+
</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>`, ANTHROPIC_CATEGORIES;
|
|
78037
78188
|
var init_anthropic_categories = __esm(() => {
|
|
78038
78189
|
ANTHROPIC_CATEGORIES = [
|
|
78039
78190
|
{
|
|
78040
78191
|
name: "unspecified-high",
|
|
78041
78192
|
config: { model: "kimi-for-coding/k3", variant: "max" },
|
|
78042
78193
|
description: "Tasks that don't fit other categories, high effort required",
|
|
78194
|
+
callerGuidance: UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE,
|
|
78043
78195
|
promptAppend: UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND
|
|
78044
78196
|
}
|
|
78045
78197
|
];
|
|
@@ -78296,64 +78448,10 @@ Approach:
|
|
|
78296
78448
|
- Minimal viable implementation
|
|
78297
78449
|
- Skip unnecessary abstractions
|
|
78298
78450
|
- Direct and concise
|
|
78299
|
-
</Category_Context>
|
|
78300
|
-
|
|
78301
|
-
<Caller_Warning>
|
|
78302
|
-
THIS CATEGORY USES A SMALLER/FASTER MODEL (gpt-5.6-luna-fast).
|
|
78303
|
-
|
|
78304
|
-
The model executing this task is optimized for speed over depth. Your prompt MUST be:
|
|
78305
|
-
|
|
78306
|
-
**EXHAUSTIVELY EXPLICIT** - Leave NOTHING to interpretation:
|
|
78307
|
-
1. MUST DO: List every required action as atomic, numbered steps
|
|
78308
|
-
2. MUST NOT DO: Explicitly forbid likely mistakes and deviations
|
|
78309
|
-
3. EXPECTED OUTPUT: Describe exact success criteria with concrete examples
|
|
78310
|
-
|
|
78311
|
-
**WHY THIS MATTERS:**
|
|
78312
|
-
- Smaller models benefit from explicit guardrails
|
|
78313
|
-
- Vague instructions may lead to unpredictable results
|
|
78314
|
-
- Implicit expectations may be missed
|
|
78315
|
-
**PROMPT STRUCTURE (MANDATORY):**
|
|
78316
|
-
\`\`\`
|
|
78317
|
-
TASK: [One-sentence goal]
|
|
78318
|
-
|
|
78319
|
-
MUST DO:
|
|
78320
|
-
1. [Specific action with exact details]
|
|
78321
|
-
2. [Another specific action]
|
|
78322
|
-
...
|
|
78323
|
-
|
|
78324
|
-
MUST NOT DO:
|
|
78325
|
-
- [Forbidden action + why]
|
|
78326
|
-
- [Another forbidden action]
|
|
78327
|
-
...
|
|
78328
|
-
|
|
78329
|
-
EXPECTED OUTPUT:
|
|
78330
|
-
- [Exact deliverable description]
|
|
78331
|
-
- [Success criteria / verification method]
|
|
78332
|
-
\`\`\`
|
|
78333
|
-
|
|
78334
|
-
If your prompt lacks this structure, REWRITE IT before delegating.
|
|
78335
|
-
</Caller_Warning>`, UNSPECIFIED_LOW_CATEGORY_PROMPT_APPEND = `<Category_Context>
|
|
78451
|
+
</Category_Context>`, QUICK_CATEGORY_CALLER_GUIDANCE = `<Caller_Warning>Small/fast model: before delegating, write an explicit prompt with numbered must-do steps, forbidden deviations, and concrete success criteria.</Caller_Warning>`, UNSPECIFIED_LOW_CATEGORY_PROMPT_APPEND = `<Category_Context>
|
|
78336
78452
|
You are working on tasks that don't fit specific categories but require moderate effort.
|
|
78337
|
-
|
|
78338
|
-
<
|
|
78339
|
-
BEFORE selecting this category, VERIFY ALL conditions:
|
|
78340
|
-
1. Task does NOT fit: quick (trivial), visual-engineering (UI), ultrabrain (deep logic), artistry (creative), writing (docs)
|
|
78341
|
-
2. Task requires more than trivial effort but is NOT system-wide
|
|
78342
|
-
3. Scope is contained within a few files/modules
|
|
78343
|
-
|
|
78344
|
-
If task fits ANY other category, DO NOT select unspecified-low.
|
|
78345
|
-
This is NOT a default choice - it's for genuinely unclassifiable moderate-effort work.
|
|
78346
|
-
</Selection_Gate>
|
|
78347
|
-
</Category_Context>
|
|
78348
|
-
|
|
78349
|
-
<Caller_Warning>
|
|
78350
|
-
THIS CATEGORY USES A LIGHTWEIGHT MODEL (gpt-5.6-luna).
|
|
78351
|
-
|
|
78352
|
-
**PROVIDE CLEAR STRUCTURE:**
|
|
78353
|
-
1. MUST DO: Enumerate required actions explicitly
|
|
78354
|
-
2. MUST NOT DO: State forbidden actions to prevent scope creep
|
|
78355
|
-
3. EXPECTED OUTPUT: Define concrete success criteria
|
|
78356
|
-
</Caller_Warning>`, OPENAI_CATEGORIES;
|
|
78453
|
+
</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>
|
|
78454
|
+
<Caller_Warning>Provide explicit must-do steps, forbidden scope, and concrete success criteria.</Caller_Warning>`, OPENAI_CATEGORIES;
|
|
78357
78455
|
var init_openai_categories = __esm(() => {
|
|
78358
78456
|
init_types6();
|
|
78359
78457
|
OPENAI_CATEGORIES = [
|
|
@@ -78375,12 +78473,14 @@ var init_openai_categories = __esm(() => {
|
|
|
78375
78473
|
name: "quick",
|
|
78376
78474
|
config: { model: "kimi-for-coding/kimi-for-coding-highspeed" },
|
|
78377
78475
|
description: "Trivial tasks - single file changes, typo fixes, simple modifications",
|
|
78476
|
+
callerGuidance: QUICK_CATEGORY_CALLER_GUIDANCE,
|
|
78378
78477
|
promptAppend: QUICK_CATEGORY_PROMPT_APPEND
|
|
78379
78478
|
},
|
|
78380
78479
|
{
|
|
78381
78480
|
name: "unspecified-low",
|
|
78382
|
-
config: { model: "
|
|
78481
|
+
config: { model: "xai/grok-4.6", variant: "xhigh" },
|
|
78383
78482
|
description: "Tasks that don't fit other categories, low effort required",
|
|
78483
|
+
callerGuidance: UNSPECIFIED_LOW_CATEGORY_CALLER_GUIDANCE,
|
|
78384
78484
|
promptAppend: UNSPECIFIED_LOW_CATEGORY_PROMPT_APPEND
|
|
78385
78485
|
}
|
|
78386
78486
|
];
|
|
@@ -78390,7 +78490,7 @@ var init_openai_categories = __esm(() => {
|
|
|
78390
78490
|
function buildCategoryRecord(selector) {
|
|
78391
78491
|
return Object.fromEntries(BUILTIN_CATEGORIES.map((definition2) => [definition2.name, selector(definition2)]));
|
|
78392
78492
|
}
|
|
78393
|
-
var BUILTIN_CATEGORIES, DEFAULT_CATEGORIES, CATEGORY_PROMPT_APPENDS, CATEGORY_DESCRIPTIONS, CATEGORY_PROMPT_APPEND_RESOLVERS, BUILTIN_CATEGORY_REQUIRES_MODEL;
|
|
78493
|
+
var BUILTIN_CATEGORIES, DEFAULT_CATEGORIES, CATEGORY_PROMPT_APPENDS, CATEGORY_DESCRIPTIONS, CATEGORY_CALLER_GUIDANCE, CATEGORY_PROMPT_APPEND_RESOLVERS, BUILTIN_CATEGORY_REQUIRES_MODEL;
|
|
78394
78494
|
var init_builtin_categories = __esm(() => {
|
|
78395
78495
|
init_anthropic_categories();
|
|
78396
78496
|
init_google_categories();
|
|
@@ -78405,6 +78505,7 @@ var init_builtin_categories = __esm(() => {
|
|
|
78405
78505
|
DEFAULT_CATEGORIES = buildCategoryRecord((definition2) => definition2.config);
|
|
78406
78506
|
CATEGORY_PROMPT_APPENDS = buildCategoryRecord((definition2) => definition2.promptAppend);
|
|
78407
78507
|
CATEGORY_DESCRIPTIONS = buildCategoryRecord((definition2) => definition2.description);
|
|
78508
|
+
CATEGORY_CALLER_GUIDANCE = buildCategoryRecord((definition2) => definition2.callerGuidance);
|
|
78408
78509
|
CATEGORY_PROMPT_APPEND_RESOLVERS = Object.fromEntries(BUILTIN_CATEGORIES.filter((definition2) => definition2.resolvePromptAppend !== undefined).map((definition2) => [definition2.name, definition2.resolvePromptAppend]));
|
|
78409
78510
|
BUILTIN_CATEGORY_REQUIRES_MODEL = Object.fromEntries(BUILTIN_CATEGORIES.filter((definition2) => definition2.requiresModel !== undefined).map((definition2) => [definition2.name, definition2.requiresModel]));
|
|
78410
78511
|
});
|