@azure-id/orc 0.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2017 -0
- package/README-id.md +521 -0
- package/README.md +485 -0
- package/bin/build-agents.js +86 -0
- package/bin/cli.js +29050 -0
- package/bin/mockrun-catalog.js +267 -0
- package/bin/onboarding-content.js +172 -0
- package/bin/pricing.json +200 -0
- package/bin/providers.json +437 -0
- package/bin/ui.js +95 -0
- package/bin/verify-contracts.js +3277 -0
- package/bin/verify-package.js +498 -0
- package/bin/webui/api.js +1163 -0
- package/bin/webui/app.html +198 -0
- package/bin/webui/css/00-tokens.css +92 -0
- package/bin/webui/css/01-base.css +42 -0
- package/bin/webui/css/02-shell.css +103 -0
- package/bin/webui/css/03-components.css +462 -0
- package/bin/webui/css/04-motion.css +91 -0
- package/bin/webui/css/05-tour.css +100 -0
- package/bin/webui/css/06-responsive.css +108 -0
- package/bin/webui/css/panels/boundary.css +26 -0
- package/bin/webui/css/panels/challenge.css +151 -0
- package/bin/webui/css/panels/crosslink.css +194 -0
- package/bin/webui/css/panels/docs.css +254 -0
- package/bin/webui/css/panels/experiment.css +23 -0
- package/bin/webui/css/panels/extra.css +536 -0
- package/bin/webui/css/panels/flow.css +177 -0
- package/bin/webui/css/panels/handoff.css +67 -0
- package/bin/webui/css/panels/knowledge.css +86 -0
- package/bin/webui/css/panels/learn.css +154 -0
- package/bin/webui/css/panels/maintenance.css +55 -0
- package/bin/webui/css/panels/mockrun.css +268 -0
- package/bin/webui/css/panels/overview.css +100 -0
- package/bin/webui/css/panels/pact.css +43 -0
- package/bin/webui/css/panels/runs.css +105 -0
- package/bin/webui/css/panels/settings.css +227 -0
- package/bin/webui/css/panels/stats.css +87 -0
- package/bin/webui/fixtures/boundary.js +92 -0
- package/bin/webui/fixtures/challenge.js +825 -0
- package/bin/webui/fixtures/crosslink.js +31 -0
- package/bin/webui/fixtures/docs.js +982 -0
- package/bin/webui/fixtures/extra.js +1934 -0
- package/bin/webui/fixtures/flow.js +81 -0
- package/bin/webui/fixtures/handoff.js +35 -0
- package/bin/webui/fixtures/index.js +486 -0
- package/bin/webui/fixtures/knowledge.js +291 -0
- package/bin/webui/fixtures/maintenance.js +42 -0
- package/bin/webui/fixtures/mockrun.js +36 -0
- package/bin/webui/fixtures/pact.js +111 -0
- package/bin/webui/fixtures/runs.js +109 -0
- package/bin/webui/fixtures/settings.js +78 -0
- package/bin/webui/fixtures/shell.js +48 -0
- package/bin/webui/fixtures/stats.js +104 -0
- package/bin/webui/i18n/TERMS.md +134 -0
- package/bin/webui/i18n/en/banner.json +29 -0
- package/bin/webui/i18n/en/boundary.json +20 -0
- package/bin/webui/i18n/en/challenge.json +106 -0
- package/bin/webui/i18n/en/common.json +69 -0
- package/bin/webui/i18n/en/crosslink.json +69 -0
- package/bin/webui/i18n/en/docs.json +175 -0
- package/bin/webui/i18n/en/experiment.json +17 -0
- package/bin/webui/i18n/en/extra.json +313 -0
- package/bin/webui/i18n/en/flow.json +30 -0
- package/bin/webui/i18n/en/handoff.json +37 -0
- package/bin/webui/i18n/en/knowledge.json +141 -0
- package/bin/webui/i18n/en/learn.json +16 -0
- package/bin/webui/i18n/en/maintenance.json +52 -0
- package/bin/webui/i18n/en/mockrun.json +19 -0
- package/bin/webui/i18n/en/nav.json +19 -0
- package/bin/webui/i18n/en/overview.json +89 -0
- package/bin/webui/i18n/en/pact.json +36 -0
- package/bin/webui/i18n/en/runs.json +51 -0
- package/bin/webui/i18n/en/settings.json +49 -0
- package/bin/webui/i18n/en/stats.json +69 -0
- package/bin/webui/i18n/en/tour.json +33 -0
- package/bin/webui/i18n/id/banner.json +29 -0
- package/bin/webui/i18n/id/boundary.json +20 -0
- package/bin/webui/i18n/id/challenge.json +106 -0
- package/bin/webui/i18n/id/common.json +70 -0
- package/bin/webui/i18n/id/crosslink.json +69 -0
- package/bin/webui/i18n/id/docs.json +175 -0
- package/bin/webui/i18n/id/experiment.json +17 -0
- package/bin/webui/i18n/id/extra.json +313 -0
- package/bin/webui/i18n/id/flow.json +30 -0
- package/bin/webui/i18n/id/handoff.json +37 -0
- package/bin/webui/i18n/id/knowledge.json +141 -0
- package/bin/webui/i18n/id/learn.json +16 -0
- package/bin/webui/i18n/id/maintenance.json +52 -0
- package/bin/webui/i18n/id/mockrun.json +19 -0
- package/bin/webui/i18n/id/nav.json +19 -0
- package/bin/webui/i18n/id/overview.json +89 -0
- package/bin/webui/i18n/id/pact.json +36 -0
- package/bin/webui/i18n/id/runs.json +51 -0
- package/bin/webui/i18n/id/settings.json +49 -0
- package/bin/webui/i18n/id/stats.json +69 -0
- package/bin/webui/i18n/id/tour.json +33 -0
- package/bin/webui/js/00-core.js +115 -0
- package/bin/webui/js/01-i18n.js +149 -0
- package/bin/webui/js/02-ui.js +211 -0
- package/bin/webui/js/03-md.js +286 -0
- package/bin/webui/js/04-router.js +51 -0
- package/bin/webui/js/05-banners.js +172 -0
- package/bin/webui/js/06-edit.js +183 -0
- package/bin/webui/js/90-tour.js +488 -0
- package/bin/webui/js/91-shortcuts.js +126 -0
- package/bin/webui/js/99-boot.js +118 -0
- package/bin/webui/js/panels/boundary.js +104 -0
- package/bin/webui/js/panels/challenge.js +781 -0
- package/bin/webui/js/panels/crosslink.js +654 -0
- package/bin/webui/js/panels/docs.js +1338 -0
- package/bin/webui/js/panels/experiment.js +98 -0
- package/bin/webui/js/panels/extra.js +3011 -0
- package/bin/webui/js/panels/flow.js +297 -0
- package/bin/webui/js/panels/handoff.js +169 -0
- package/bin/webui/js/panels/knowledge.js +890 -0
- package/bin/webui/js/panels/learn.js +220 -0
- package/bin/webui/js/panels/maintenance.js +235 -0
- package/bin/webui/js/panels/mockrun.js +227 -0
- package/bin/webui/js/panels/overview.js +447 -0
- package/bin/webui/js/panels/pact.js +189 -0
- package/bin/webui/js/panels/runs.js +416 -0
- package/bin/webui/js/panels/settings.js +573 -0
- package/bin/webui/js/panels/stats.js +378 -0
- package/bin/webui/serve.js +557 -0
- package/mock-run/INDEX.md +106 -0
- package/mock-run/a-normal-day.md +587 -0
- package/mock-run/context-combiner.md +100 -0
- package/mock-run/extra-recovery.md +330 -0
- package/mock-run/extra-slots.md +177 -0
- package/mock-run/media/README.md +43 -0
- package/mock-run/orc-aftermath.md +392 -0
- package/mock-run/orc-boundary.md +356 -0
- package/mock-run/orc-brainstorm.md +177 -0
- package/mock-run/orc-budget.md +534 -0
- package/mock-run/orc-challenge-council.md +262 -0
- package/mock-run/orc-challenge.md +416 -0
- package/mock-run/orc-cli.md +200 -0
- package/mock-run/orc-diy.md +129 -0
- package/mock-run/orc-doc.md +448 -0
- package/mock-run/orc-explain.md +86 -0
- package/mock-run/orc-export.md +423 -0
- package/mock-run/orc-extra.md +392 -0
- package/mock-run/orc-fast.md +106 -0
- package/mock-run/orc-grill.md +151 -0
- package/mock-run/orc-handoff.md +480 -0
- package/mock-run/orc-pact.md +421 -0
- package/mock-run/orc-pattern.md +112 -0
- package/mock-run/orc-plan.md +108 -0
- package/mock-run/orc-pr-setup.md +126 -0
- package/mock-run/orc-quick.md +113 -0
- package/mock-run/orc-route.md +93 -0
- package/mock-run/orc-ui.md +125 -0
- package/mock-run/orc-ultra.md +103 -0
- package/mock-run/orc.md +157 -0
- package/mock-run/the-example-project.md +55 -0
- package/package.json +39 -0
- package/templates/agents/MODEL-MAPPING.md +168 -0
- package/templates/agents/orc-advisor-fable-5.md +50 -0
- package/templates/agents/orc-advisor-opus-5-xhigh.md +56 -0
- package/templates/agents/orc-analyst-fable-5.md +115 -0
- package/templates/agents/orc-analyze-mini-opus-5-med.md +60 -0
- package/templates/agents/orc-analyze-mini-sonnet-5-high.md +58 -0
- package/templates/agents/orc-challenge-advisor-opus-5-med.md +75 -0
- package/templates/agents/orc-challenge-contrarian-opus-5-high.md +110 -0
- package/templates/agents/orc-challenge-executor-opus-5-med.md +114 -0
- package/templates/agents/orc-challenge-expansionist-opus-5-med.md +112 -0
- package/templates/agents/orc-challenge-judge-opus-5-high.md +132 -0
- package/templates/agents/orc-challenge-outsider-opus-5-low.md +109 -0
- package/templates/agents/orc-challenge-principles-opus-5-high.md +109 -0
- package/templates/agents/orc-challenge-reader-opus-5-low.md +90 -0
- package/templates/agents/orc-claude-writer-opus-4-8-high.md +53 -0
- package/templates/agents/orc-claude-writer-opus-5-med.md +55 -0
- package/templates/agents/orc-context-combiner-opus-5-high.md +88 -0
- package/templates/agents/orc-doc-checker-opus-5-low.md +108 -0
- package/templates/agents/orc-doc-writer-opus-5-med.md +134 -0
- package/templates/agents/orc-executor-haiku-4-5.md +113 -0
- package/templates/agents/orc-executor-opus-4-7-high.md +114 -0
- package/templates/agents/orc-executor-opus-4-7-med.md +114 -0
- package/templates/agents/orc-executor-opus-4-8-high.md +114 -0
- package/templates/agents/orc-executor-opus-5-high.md +114 -0
- package/templates/agents/orc-executor-opus-5-low.md +114 -0
- package/templates/agents/orc-executor-opus-5-med.md +114 -0
- package/templates/agents/orc-executor-sonnet-4-6-high.md +114 -0
- package/templates/agents/orc-executor-sonnet-4-6-med.md +114 -0
- package/templates/agents/orc-executor-sonnet-5-high.md +114 -0
- package/templates/agents/orc-judge-fable-5.md +79 -0
- package/templates/agents/orc-judge-opus-5-xhigh.md +85 -0
- package/templates/agents/orc-learn-writer-opus-5-low.md +73 -0
- package/templates/agents/orc-pattern-codifier-opus-5-med.md +65 -0
- package/templates/agents/orc-pattern-codifier-sonnet-5-high.md +63 -0
- package/templates/agents/orc-planner-fable-5.md +152 -0
- package/templates/agents/orc-planner-mini-opus-5-med.md +69 -0
- package/templates/agents/orc-planner-mini-sonnet-5-high.md +67 -0
- package/templates/agents/orc-planner-opus-5-med.md +160 -0
- package/templates/agents/orc-retro-opus-5-med.md +73 -0
- package/templates/agents/orc-retro-sonnet-5-high.md +72 -0
- package/templates/agents/orc-reviewer-fable-5.md +57 -0
- package/templates/agents/orc-reviewer-opus-5-med.md +60 -0
- package/templates/agents/orc-scout-opus-5-low.md +40 -0
- package/templates/agents/orc-scout-sonnet-4-6-high.md +39 -0
- package/templates/agents/orc-system-analyst-opus-5-high.md +120 -0
- package/templates/agents/orc-test-author-opus-5-med.md +71 -0
- package/templates/agents/orc-trace-writer-haiku-4-5.md +107 -0
- package/templates/agents/orc-verifier-opus-5-med.md +69 -0
- package/templates/agents/orc-wiki-scanner-opus-4-8-high.md +79 -0
- package/templates/agents/orc-wiki-scanner-opus-5-med.md +81 -0
- package/templates/agents/orc-wiki-scanner-sonnet-5-high.md +106 -0
- package/templates/commands/orc-aftermath.md +49 -0
- package/templates/commands/orc-analyze.md +21 -0
- package/templates/commands/orc-boundary.md +46 -0
- package/templates/commands/orc-brainstorm.md +51 -0
- package/templates/commands/orc-budget.md +54 -0
- package/templates/commands/orc-challenge.md +58 -0
- package/templates/commands/orc-claude.md +14 -0
- package/templates/commands/orc-diy.md +13 -0
- package/templates/commands/orc-doc.md +128 -0
- package/templates/commands/orc-explain.md +20 -0
- package/templates/commands/orc-export.md +46 -0
- package/templates/commands/orc-fast.md +15 -0
- package/templates/commands/orc-grill.md +40 -0
- package/templates/commands/orc-handoff.md +52 -0
- package/templates/commands/orc-learn.md +17 -0
- package/templates/commands/orc-mini.md +12 -0
- package/templates/commands/orc-pact.md +44 -0
- package/templates/commands/orc-pattern.md +15 -0
- package/templates/commands/orc-plan.md +22 -0
- package/templates/commands/orc-poly.md +21 -0
- package/templates/commands/orc-pr-driver.md +30 -0
- package/templates/commands/orc-pr-setup.md +31 -0
- package/templates/commands/orc-quick.md +33 -0
- package/templates/commands/orc-retro.md +17 -0
- package/templates/commands/orc-route.md +41 -0
- package/templates/commands/orc-ultra.md +17 -0
- package/templates/commands/orc-verify.md +11 -0
- package/templates/commands/orc-wiki.md +42 -0
- package/templates/commands/orc.md +16 -0
- package/templates/hooks/orc-effort-guard.js +178 -0
- package/templates/hooks/orc-statusline.js +305 -0
- package/templates/hooks/orc-trace.js +471 -0
- package/templates/hooks/orc-update-lib.js +125 -0
- package/templates/skills/_shared/README.md +50 -0
- package/templates/skills/_shared/detecting-artifacts.md +90 -0
- package/templates/skills/_shared/drift-recovery.md +98 -0
- package/templates/skills/_shared/extra-dispatch.md +1051 -0
- package/templates/skills/_shared/fable5-override.md +56 -0
- package/templates/skills/_shared/fallback-handoff.md +42 -0
- package/templates/skills/_shared/gh-stack-commands.md +65 -0
- package/templates/skills/_shared/gotchas.md +177 -0
- package/templates/skills/_shared/interview.md +144 -0
- package/templates/skills/_shared/lane-suspend.md +82 -0
- package/templates/skills/_shared/opus5-only.md +131 -0
- package/templates/skills/_shared/pr-templates.md +106 -0
- package/templates/skills/_shared/read-ladder.md +54 -0
- package/templates/skills/_shared/return-validation.md +145 -0
- package/templates/skills/_shared/smoke-gate.md +28 -0
- package/templates/skills/_shared/stack-plan.md +135 -0
- package/templates/skills/_shared/untrusted-input.md +63 -0
- package/templates/skills/context-combiner/SKILL.md +187 -0
- package/templates/skills/context-combiner/schemas/combined-report.md +78 -0
- package/templates/skills/context-combiner/schemas/combined-requirement-spec.md +87 -0
- package/templates/skills/orc/README.md +150 -0
- package/templates/skills/orc/SKILL.md +526 -0
- package/templates/skills/orc/config.md +389 -0
- package/templates/skills/orc/examples/full-run-mock.md +73 -0
- package/templates/skills/orc/references/analyst-gates.md +124 -0
- package/templates/skills/orc/references/effort-and-mode.md +224 -0
- package/templates/skills/orc/references/house-rules.md +20 -0
- package/templates/skills/orc/references/intake.md +120 -0
- package/templates/skills/orc/references/log-protocol.md +39 -0
- package/templates/skills/orc/references/pattern-gate.md +89 -0
- package/templates/skills/orc/references/plan-handoff.md +84 -0
- package/templates/skills/orc/references/preflight-report.md +220 -0
- package/templates/skills/orc/references/security-checklist.md +39 -0
- package/templates/skills/orc/references/stop-and-resume.md +160 -0
- package/templates/skills/orc/references/trace-protocol.md +314 -0
- package/templates/skills/orc/references/ultra-mode.md +123 -0
- package/templates/skills/orc/references/wave-grouping.md +121 -0
- package/templates/skills/orc/references/wiki-consult.md +177 -0
- package/templates/skills/orc/schemas/checkpoint.md +122 -0
- package/templates/skills/orc/schemas/intent-spec.md +42 -0
- package/templates/skills/orc/schemas/planning-output.md +279 -0
- package/templates/skills/orc/subskills/orc-checkpoint/SKILL.md +55 -0
- package/templates/skills/orc/subskills/orc-execution/SKILL.md +72 -0
- package/templates/skills/orc/subskills/orc-execution/core.md +151 -0
- package/templates/skills/orc/subskills/orc-execution/subagent.md +13 -0
- package/templates/skills/orc/subskills/orc-planner/SKILL.md +264 -0
- package/templates/skills/orc/subskills/orc-planner-mini/SKILL.md +121 -0
- package/templates/skills/orc/subskills/orc-pr/SKILL.md +51 -0
- package/templates/skills/orc/subskills/orc-pr/pr.md +22 -0
- package/templates/skills/orc/subskills/orc-pr/stack-gate.md +108 -0
- package/templates/skills/orc/subskills/orc-review-verify/SKILL.md +76 -0
- package/templates/skills/orc/subskills/orc-review-verify/core.md +135 -0
- package/templates/skills/orc/subskills/orc-review-verify/subagent.md +7 -0
- package/templates/skills/orc/subskills/orc-testgen/SKILL.md +45 -0
- package/templates/skills/orc/subskills/orc-testgen/core.md +59 -0
- package/templates/skills/orc/subskills/orc-testgen/subagent.md +7 -0
- package/templates/skills/orc-advisor/SKILL.md +60 -0
- package/templates/skills/orc-aftermath/SKILL.md +136 -0
- package/templates/skills/orc-aftermath/references/report.md +95 -0
- package/templates/skills/orc-analyze/SKILL.md +220 -0
- package/templates/skills/orc-analyze/examples/analyze-mock.md +42 -0
- package/templates/skills/orc-analyze/references/branching.md +51 -0
- package/templates/skills/orc-analyze/references/deep-mode.md +27 -0
- package/templates/skills/orc-analyze/references/thin-input.md +77 -0
- package/templates/skills/orc-analyze/schemas/report-audit.md +83 -0
- package/templates/skills/orc-analyze/schemas/report-prose.md +63 -0
- package/templates/skills/orc-analyze/schemas/report-requirement.md +78 -0
- package/templates/skills/orc-analyze/schemas/requirement-spec.md +77 -0
- package/templates/skills/orc-analyze-mini/SKILL.md +112 -0
- package/templates/skills/orc-analyze-mini/examples/quick-analysis-mock.md +31 -0
- package/templates/skills/orc-boundary/SKILL.md +208 -0
- package/templates/skills/orc-boundary/references/card.md +78 -0
- package/templates/skills/orc-boundary/references/gate.md +113 -0
- package/templates/skills/orc-brainstorm/SKILL.md +339 -0
- package/templates/skills/orc-brainstorm/references/brainstorm-doc.md +133 -0
- package/templates/skills/orc-brainstorm/references/lenses.md +152 -0
- package/templates/skills/orc-budget/SKILL.md +225 -0
- package/templates/skills/orc-budget/references/corpus.md +87 -0
- package/templates/skills/orc-challenge/README.md +142 -0
- package/templates/skills/orc-challenge/SKILL.md +255 -0
- package/templates/skills/orc-challenge/examples/code-module.md +110 -0
- package/templates/skills/orc-challenge/examples/council-full-roster.md +273 -0
- package/templates/skills/orc-challenge/examples/tsd-two-iterations.md +213 -0
- package/templates/skills/orc-challenge/references/conservation.md +107 -0
- package/templates/skills/orc-challenge/references/council.md +315 -0
- package/templates/skills/orc-challenge/references/cycle-state.md +185 -0
- package/templates/skills/orc-challenge/references/dimensions.md +121 -0
- package/templates/skills/orc-challenge/references/fix-brief.md +130 -0
- package/templates/skills/orc-challenge/references/intake.md +171 -0
- package/templates/skills/orc-challenge/references/kinds.md +44 -0
- package/templates/skills/orc-challenge/references/plain-english.md +98 -0
- package/templates/skills/orc-challenge/references/rubric.md +109 -0
- package/templates/skills/orc-challenge/references/sealed-slice.md +97 -0
- package/templates/skills/orc-challenge/references/verdict-doc.md +154 -0
- package/templates/skills/orc-claude/SKILL.md +199 -0
- package/templates/skills/orc-claude/examples/claude-run-mock.md +65 -0
- package/templates/skills/orc-claude/references/refresh.md +76 -0
- package/templates/skills/orc-claude/references/template.md +109 -0
- package/templates/skills/orc-diy/README.md +142 -0
- package/templates/skills/orc-diy/SKILL.md +70 -0
- package/templates/skills/orc-diy/references/blocks/analyze.md +24 -0
- package/templates/skills/orc-diy/references/blocks/execution.md +42 -0
- package/templates/skills/orc-diy/references/blocks/extra.md +55 -0
- package/templates/skills/orc-diy/references/blocks/header.md +55 -0
- package/templates/skills/orc-diy/references/blocks/mock-example.md +22 -0
- package/templates/skills/orc-diy/references/blocks/pattern.md +18 -0
- package/templates/skills/orc-diy/references/blocks/planning.md +34 -0
- package/templates/skills/orc-diy/references/blocks/review.md +18 -0
- package/templates/skills/orc-diy/references/blocks/scoring.md +16 -0
- package/templates/skills/orc-diy/references/blocks/security.md +25 -0
- package/templates/skills/orc-diy/references/blocks/ship.md +25 -0
- package/templates/skills/orc-diy/references/blocks/summary.md +18 -0
- package/templates/skills/orc-diy/references/blocks/testgen.md +17 -0
- package/templates/skills/orc-diy/references/blocks/trace.md +28 -0
- package/templates/skills/orc-diy/references/blocks/verify.md +25 -0
- package/templates/skills/orc-diy/references/blocks/wiki.md +26 -0
- package/templates/skills/orc-diy/references/compile.md +59 -0
- package/templates/skills/orc-diy/references/flow-schema.md +100 -0
- package/templates/skills/orc-diy/references/locked-blocks.md +37 -0
- package/templates/skills/orc-doc/README.md +229 -0
- package/templates/skills/orc-doc/SKILL.md +444 -0
- package/templates/skills/orc-doc/examples/orc-doc-prd-run.md +325 -0
- package/templates/skills/orc-doc/references/chunking.md +527 -0
- package/templates/skills/orc-doc/references/gates.md +311 -0
- package/templates/skills/orc-doc/references/generation-rules.md +122 -0
- package/templates/skills/orc-doc/references/house-rules.md +170 -0
- package/templates/skills/orc-doc/references/import-targets.md +40 -0
- package/templates/skills/orc-doc/references/plain-language.md +66 -0
- package/templates/skills/orc-doc/references/portable-markdown.md +74 -0
- package/templates/skills/orc-doc/references/resume-protocol.md +228 -0
- package/templates/skills/orc-doc/references/templates/collaboration.md +118 -0
- package/templates/skills/orc-doc/references/templates/prd.md +133 -0
- package/templates/skills/orc-doc/references/templates/report.md +102 -0
- package/templates/skills/orc-doc/references/templates/tsd.md +122 -0
- package/templates/skills/orc-doc/references/templates/workflow.md +112 -0
- package/templates/skills/orc-explain/SKILL.md +57 -0
- package/templates/skills/orc-export/SKILL.md +154 -0
- package/templates/skills/orc-fast/SKILL.md +188 -0
- package/templates/skills/orc-grill/SKILL.md +207 -0
- package/templates/skills/orc-grill/references/grill-doc.md +105 -0
- package/templates/skills/orc-handoff/SKILL.md +204 -0
- package/templates/skills/orc-handoff/references/handoff-log.md +67 -0
- package/templates/skills/orc-handoff/references/surfaces.md +88 -0
- package/templates/skills/orc-judge/SKILL.md +82 -0
- package/templates/skills/orc-learn/SKILL.md +156 -0
- package/templates/skills/orc-learn/examples/learn-run-mock.md +61 -0
- package/templates/skills/orc-learn/references/deepen.md +70 -0
- package/templates/skills/orc-learn/references/refresh.md +65 -0
- package/templates/skills/orc-learn/references/template-knowledge.md +83 -0
- package/templates/skills/orc-learn/references/template-learning.md +67 -0
- package/templates/skills/orc-mini/SKILL.md +226 -0
- package/templates/skills/orc-mini/examples/mini-run-mock.md +50 -0
- package/templates/skills/orc-pact/SKILL.md +218 -0
- package/templates/skills/orc-pact/references/gate.md +70 -0
- package/templates/skills/orc-pact/references/ledger.md +99 -0
- package/templates/skills/orc-pattern/SKILL.md +124 -0
- package/templates/skills/orc-pattern/references/INDEX.md +73 -0
- package/templates/skills/orc-pattern/references/be-django.md +80 -0
- package/templates/skills/orc-pattern/references/be-express.md +82 -0
- package/templates/skills/orc-pattern/references/be-fastapi.md +107 -0
- package/templates/skills/orc-pattern/references/be-go.md +96 -0
- package/templates/skills/orc-pattern/references/be-nestjs.md +86 -0
- package/templates/skills/orc-pattern/references/be-postgres.md +98 -0
- package/templates/skills/orc-pattern/references/fe-a11y.md +36 -0
- package/templates/skills/orc-pattern/references/fe-angular.md +87 -0
- package/templates/skills/orc-pattern/references/fe-nextjs.md +65 -0
- package/templates/skills/orc-pattern/references/fe-perf.md +39 -0
- package/templates/skills/orc-pattern/references/fe-react.md +83 -0
- package/templates/skills/orc-pattern/references/fe-vue.md +75 -0
- package/templates/skills/orc-pattern/schemas/pattern-doc.md +62 -0
- package/templates/skills/orc-poly/SKILL.md +216 -0
- package/templates/skills/orc-poly/examples/poly-run-mock.md +51 -0
- package/templates/skills/orc-poly/references/gather.md +70 -0
- package/templates/skills/orc-poly/references/poly-spec.md +84 -0
- package/templates/skills/orc-pr-driver/README.md +349 -0
- package/templates/skills/orc-pr-driver/SKILL.md +167 -0
- package/templates/skills/orc-pr-driver/references/conflict-playbook.md +78 -0
- package/templates/skills/orc-pr-driver/references/green-gate.md +105 -0
- package/templates/skills/orc-pr-driver/references/orc-run-split.md +99 -0
- package/templates/skills/orc-pr-setup/README.md +436 -0
- package/templates/skills/orc-pr-setup/SKILL.md +184 -0
- package/templates/skills/orc-pr-setup/references/certainty-gate.md +66 -0
- package/templates/skills/orc-pr-setup/references/layer-taxonomy.md +67 -0
- package/templates/skills/orc-quick/README.md +423 -0
- package/templates/skills/orc-quick/SKILL.md +306 -0
- package/templates/skills/orc-quick/references/context-doc.md +114 -0
- package/templates/skills/orc-quick/references/dispatch-gate.md +163 -0
- package/templates/skills/orc-quick/references/gh-mode.md +127 -0
- package/templates/skills/orc-retro/SKILL.md +222 -0
- package/templates/skills/orc-retro/examples/retro-mock.md +171 -0
- package/templates/skills/orc-route/SKILL.md +165 -0
- package/templates/skills/orc-verify/SKILL.md +86 -0
- package/templates/skills/orc-verify/examples/verify-mock.md +33 -0
- package/templates/skills/orc-wiki/README.md +325 -0
- package/templates/skills/orc-wiki/SKILL.md +322 -0
- package/templates/skills/orc-wiki/examples/wiki-run-mock.md +37 -0
- package/templates/skills/orc-wiki/references/claude-md-injection.md +61 -0
- package/templates/skills/orc-wiki/references/crosslink-compile.md +39 -0
- package/templates/skills/orc-wiki/references/crosslink-kinds.md +57 -0
- package/templates/skills/orc-wiki/references/crosslink.md +284 -0
- package/templates/skills/orc-wiki/references/extra.md +79 -0
- package/templates/skills/orc-wiki/references/integrity-check.md +86 -0
- package/templates/skills/orc-wiki/references/orientation.md +51 -0
- package/templates/skills/orc-wiki/references/partial-refresh.md +203 -0
- package/templates/skills/orc-wiki/references/pattern-prewarm.md +19 -0
- package/templates/skills/orc-wiki/references/staleness.md +288 -0
- package/templates/skills/orc-wiki/schemas/crosslink-tag.md +166 -0
- package/templates/skills/orc-wiki/schemas/wiki-doc.md +120 -0
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* ORC statusline — a Claude Code statusLine command.
|
|
6
|
+
*
|
|
7
|
+
* The statusline is the ONLY place Claude Code exposes the live model id
|
|
8
|
+
* (`model.id`) together with the reasoning effort (`effort.level`). It is
|
|
9
|
+
* display-only — it cannot block — so this is the "model warn" half of the
|
|
10
|
+
* "run ORC on Opus 4.8 high" rule. When the session is NOT Opus 4.8 at high
|
|
11
|
+
* effort, it renders a loud warning so you never launch /orc on the wrong tier.
|
|
12
|
+
*
|
|
13
|
+
* The deterministic hard-stop for effort lives in orc-effort-guard.js.
|
|
14
|
+
*
|
|
15
|
+
* Wiring (installed by `orc init` ONLY if no statusLine already exists):
|
|
16
|
+
* settings.statusLine { type:"command", command:'node "<.claude>/hooks/orc-statusline.js"' }
|
|
17
|
+
*
|
|
18
|
+
* On Claude Code v2.1.80+ it also renders the official subscription-usage
|
|
19
|
+
* segment `5h N% (reset) ↔ wk N%`, read straight from the payload's
|
|
20
|
+
* `rate_limits.{five_hour,seven_day}` (Anthropic API headers, not estimated).
|
|
21
|
+
* A window ≥90% folds into the DEGRADE verdict; fail-silent when absent.
|
|
22
|
+
*
|
|
23
|
+
* Three-tier verdict (the "ORC-ready" acceptance matrix):
|
|
24
|
+
* ✅ ORC-ready Opus 4.8 high (the baseline)
|
|
25
|
+
* 🚀 ORC-boosted Opus 4.8 xhigh/max, or Opus 5 / Fable 5 medium…max
|
|
26
|
+
* ⛔ ORC WILL DEGRADE everything below (wrong model, sub-baseline effort, quota)
|
|
27
|
+
*
|
|
28
|
+
* This is the ONLY place Claude Code exposes the live model id, so it also
|
|
29
|
+
* writes a fail-silent session-model bridge (.claude/orc/session-model.json)
|
|
30
|
+
* that the PreToolUse effort guard reads — the guard can't see the model id
|
|
31
|
+
* on its own, so the bridge is how the Opus 5 / Fable 5 medium-effort allowance
|
|
32
|
+
* reaches it.
|
|
33
|
+
*
|
|
34
|
+
* Also appends a "newer orc version available" hint from the 24h update cache
|
|
35
|
+
* (cache-only here — never a network call in the statusline hot path; the
|
|
36
|
+
* PreToolUse guard refreshes the cache when /orc is invoked).
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
// Opus 4.8 / Opus 5 / Fable 5 are matched by tolerant regexes below (accept
|
|
40
|
+
// dated/suffixed ids and the display name), not strict strings. Effort ranks give
|
|
41
|
+
// the acceptance-matrix tiers (0 = unknown, never treated as a positive downgrade).
|
|
42
|
+
const EFFORT_RANK = { low: 1, medium: 2, high: 3, xhigh: 4, max: 5 };
|
|
43
|
+
|
|
44
|
+
// Shared update-check helper (sibling file). Degrade gracefully if absent.
|
|
45
|
+
let updater = null;
|
|
46
|
+
try {
|
|
47
|
+
updater = require("./orc-update-lib.js");
|
|
48
|
+
} catch (_) {
|
|
49
|
+
updater = null;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
let raw = "";
|
|
53
|
+
process.stdin.on("data", (c) => (raw += c));
|
|
54
|
+
process.stdin.on("end", () => {
|
|
55
|
+
let d = {};
|
|
56
|
+
try {
|
|
57
|
+
d = JSON.parse(raw || "{}");
|
|
58
|
+
} catch (_) {
|
|
59
|
+
d = {};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const model = (d.model && d.model.id) || "";
|
|
63
|
+
const display = (d.model && d.model.display_name) || model || "unknown";
|
|
64
|
+
const effort = String((d.effort && d.effort.level) || "").toLowerCase();
|
|
65
|
+
const pct =
|
|
66
|
+
d.context_window && typeof d.context_window.used_percentage === "number"
|
|
67
|
+
? `${d.context_window.used_percentage}% ctx`
|
|
68
|
+
: "";
|
|
69
|
+
|
|
70
|
+
// ── Session-model bridge (fail-silent) ─────────────────────────────────────
|
|
71
|
+
// The PreToolUse effort guard cannot see the model id; it can only read
|
|
72
|
+
// effort. Persist {model_id, effort, written_at} here so the guard can grant
|
|
73
|
+
// the Opus 5 / Fable 5 medium-effort allowance. The statusline re-renders constantly
|
|
74
|
+
// while a session is active, so written_at stays fresh; the guard treats a
|
|
75
|
+
// stale file (older than its freshness window) as absent and never blocks on
|
|
76
|
+
// it. Any error (no dir, read-only fs) is swallowed — this is a nicety, not a
|
|
77
|
+
// guarantee, and must never break the statusline render.
|
|
78
|
+
try {
|
|
79
|
+
if (model || effort) {
|
|
80
|
+
const fs = require("fs");
|
|
81
|
+
const path = require("path");
|
|
82
|
+
const projectDir =
|
|
83
|
+
(d.workspace && d.workspace.project_dir) || d.cwd || process.cwd();
|
|
84
|
+
const orcDir = path.join(projectDir, ".claude", "orc");
|
|
85
|
+
fs.mkdirSync(orcDir, { recursive: true });
|
|
86
|
+
fs.writeFileSync(
|
|
87
|
+
path.join(orcDir, "session-model.json"),
|
|
88
|
+
JSON.stringify({ model_id: model, effort, written_at: Date.now() }) + "\n"
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
} catch (_) {}
|
|
92
|
+
|
|
93
|
+
// ── Subscription usage (Claude Code v2.1.80+) ──────────────────────────────
|
|
94
|
+
// Official 5-hour + 7-day usage, surfaced by Claude Code straight from
|
|
95
|
+
// Anthropic's API headers into this payload's `rate_limits`. Display-only,
|
|
96
|
+
// fail-silent: an absent block (older Claude Code / no headers) → no segment,
|
|
97
|
+
// never `undefined`. A window at/above USAGE_CRIT contributes to the DEGRADE
|
|
98
|
+
// verdict — running low on quota is a real mid-run degradation risk.
|
|
99
|
+
const USAGE_WARN = 75;
|
|
100
|
+
const USAGE_CRIT = 90;
|
|
101
|
+
const fmtReset = (v) => {
|
|
102
|
+
// resets_at may be an ISO string or an epoch (seconds or ms). "" on anything odd.
|
|
103
|
+
let t = NaN;
|
|
104
|
+
if (typeof v === "number") t = v < 1e12 ? v * 1000 : v;
|
|
105
|
+
else if (typeof v === "string") {
|
|
106
|
+
const n = Number(v);
|
|
107
|
+
t = Number.isFinite(n) ? (n < 1e12 ? n * 1000 : n) : Date.parse(v);
|
|
108
|
+
}
|
|
109
|
+
if (!Number.isFinite(t)) return "";
|
|
110
|
+
const ms = t - Date.now();
|
|
111
|
+
if (ms <= 0) return "";
|
|
112
|
+
const mins = Math.round(ms / 60000);
|
|
113
|
+
if (mins < 60) return `${mins}m`;
|
|
114
|
+
const h = Math.floor(mins / 60);
|
|
115
|
+
const m = mins % 60;
|
|
116
|
+
return m ? `${h}h${m}m` : `${h}h`;
|
|
117
|
+
};
|
|
118
|
+
let rlSeg = "";
|
|
119
|
+
const usageBad = [];
|
|
120
|
+
try {
|
|
121
|
+
const rl = d.rate_limits || {};
|
|
122
|
+
const win = (obj, label) => {
|
|
123
|
+
if (!obj || typeof obj.used_percentage !== "number") return "";
|
|
124
|
+
const p = Math.round(obj.used_percentage);
|
|
125
|
+
const reset = fmtReset(obj.resets_at);
|
|
126
|
+
const mark = p >= USAGE_CRIT ? "⛔" : p >= USAGE_WARN ? "⚠" : "";
|
|
127
|
+
if (p >= USAGE_CRIT) usageBad.push(`${label}≥${USAGE_CRIT}%`);
|
|
128
|
+
// Reset shown for the short (5h) window always; weekly only when elevated.
|
|
129
|
+
const showReset = reset && (label === "5h" || p >= USAGE_WARN);
|
|
130
|
+
return `${mark}${label} ${p}%${showReset ? ` (${reset})` : ""}`;
|
|
131
|
+
};
|
|
132
|
+
const fh = win(rl.five_hour, "5h");
|
|
133
|
+
const sd = win(rl.seven_day, "wk");
|
|
134
|
+
if (fh && sd) rlSeg = `${fh} ↔ ${sd}`;
|
|
135
|
+
else rlSeg = fh || sd || "";
|
|
136
|
+
} catch (_) {
|
|
137
|
+
rlSeg = "";
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Tolerant tier detection. A strict `model === "claude-opus-4-8"` false-fired
|
|
141
|
+
// whenever Claude Code reported a dated/suffixed id (e.g. claude-opus-4-8-
|
|
142
|
+
// YYYYMMDD) or only a display name — even on the correct tier. Match Opus 4.8
|
|
143
|
+
// and Fable 5 by normalized id OR display name, accepting any variant; the
|
|
144
|
+
// trailing \b keeps 4.7 / 4.85 / Sonnet etc. correctly warning.
|
|
145
|
+
const hay = `${model} ${display}`.toLowerCase();
|
|
146
|
+
const isOpus48 = /opus[\s._-]?4[\s._-]?8\b/.test(hay);
|
|
147
|
+
const isFable5 = /fable[\s._-]?5\b/.test(hay);
|
|
148
|
+
// Opus 5 (v0.34.0) — strictly above the baseline, so it boosts from medium up,
|
|
149
|
+
// exactly like Fable 5. The `\b` keeps opus 4.8 / 4.7 out of this branch.
|
|
150
|
+
const isOpus5 = /opus[\s._-]?5\b/.test(hay);
|
|
151
|
+
const modelKnown = model !== "" || (display !== "" && display !== "unknown");
|
|
152
|
+
// Effort rank; 0 = unknown. A missing/empty effort field is NOT proof of a
|
|
153
|
+
// downgrade — the PreToolUse guard already hard-blocks a real low-effort /orc
|
|
154
|
+
// — so an unknown effort never forces DEGRADE on effort grounds here.
|
|
155
|
+
const er = EFFORT_RANK[effort] || 0;
|
|
156
|
+
|
|
157
|
+
const tier = `${display}${effort ? "/" + effort : ""}`;
|
|
158
|
+
|
|
159
|
+
// Verdict per the acceptance matrix. Only a POSITIVELY-known bad tier degrades.
|
|
160
|
+
let verdict = "ready";
|
|
161
|
+
const reasons = [];
|
|
162
|
+
if (isOpus48) {
|
|
163
|
+
if (er >= 4) verdict = "boosted"; // xhigh / max
|
|
164
|
+
else if (er === 3 || er === 0) verdict = "ready"; // high (or unknown → lenient)
|
|
165
|
+
else {
|
|
166
|
+
verdict = "degrade"; // opus 4.8 below high
|
|
167
|
+
reasons.push("effort≠high");
|
|
168
|
+
}
|
|
169
|
+
} else if (isOpus5 || isFable5) {
|
|
170
|
+
const label = isOpus5 ? "Opus-5" : "Fable-5";
|
|
171
|
+
if (er >= 2 || er === 0) verdict = "boosted"; // medium…max (or unknown → lenient)
|
|
172
|
+
else {
|
|
173
|
+
verdict = "degrade"; // opus 5 / fable 5 below medium
|
|
174
|
+
reasons.push(`${label} effort<medium`);
|
|
175
|
+
}
|
|
176
|
+
} else if (modelKnown) {
|
|
177
|
+
verdict = "degrade";
|
|
178
|
+
reasons.push("model≠Opus5/Opus4.8/Fable5");
|
|
179
|
+
} // else model unknown → stay lenient (the guard enforces effort)
|
|
180
|
+
|
|
181
|
+
// A quota window at/above the crit threshold folds into DEGRADE regardless.
|
|
182
|
+
if (usageBad.length) {
|
|
183
|
+
verdict = "degrade";
|
|
184
|
+
for (const u of usageBad) reasons.push(u);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
let line;
|
|
188
|
+
if (verdict === "ready") {
|
|
189
|
+
line = `✅ ORC-ready ${tier}${pct ? " · " + pct : ""}`;
|
|
190
|
+
} else if (verdict === "boosted") {
|
|
191
|
+
line = `🚀 ORC-boosted ${tier}${pct ? " · " + pct : ""}`;
|
|
192
|
+
} else {
|
|
193
|
+
line = `⛔ ORC WILL DEGRADE (${reasons.join(", ")}) — now: ${tier}${pct ? " · " + pct : ""}`;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// Subscription-usage segment (rendered after ctx, before wiki). Empty on
|
|
197
|
+
// older Claude Code that doesn't surface `rate_limits`.
|
|
198
|
+
if (rlSeg) line += " · " + rlSeg;
|
|
199
|
+
|
|
200
|
+
// Wiki freshness tier (computed on read from wiki-meta.json — zero model
|
|
201
|
+
// tokens; the manifest is written only by `orc wiki sync`). Fail-silent: no
|
|
202
|
+
// wiki / no git / any error → no segment. Thresholds mirror the config
|
|
203
|
+
// defaults (wiki_fresh_max 10 / wiki_aging_max 30); the hook can't read the
|
|
204
|
+
// resolved config, so a user override shifts skill behavior, not this label.
|
|
205
|
+
try {
|
|
206
|
+
const fs = require("fs");
|
|
207
|
+
const path = require("path");
|
|
208
|
+
const { execSync } = require("child_process");
|
|
209
|
+
const projectDir =
|
|
210
|
+
(d.workspace && d.workspace.project_dir) || d.cwd || process.cwd();
|
|
211
|
+
const metaPath = path.join(projectDir, ".claude", "orc", "wiki-meta.json");
|
|
212
|
+
if (!fs.existsSync(metaPath)) {
|
|
213
|
+
// Docs but no manifest = UNREGISTERED: a real wiki nothing has indexed
|
|
214
|
+
// (usually a scan stopped at a 5-area pause). It is otherwise invisible —
|
|
215
|
+
// consumers and `orc crosslink` read the manifest — so surface it here,
|
|
216
|
+
// with the free fix. Never say "no wiki": these docs are already paid for.
|
|
217
|
+
const wikiDir = path.join(projectDir, "wiki");
|
|
218
|
+
const docs =
|
|
219
|
+
fs.existsSync(wikiDir) &&
|
|
220
|
+
fs.readdirSync(wikiDir).some((f) => f.startsWith("orc-") && f.endsWith(".md"));
|
|
221
|
+
if (docs) line += " · wiki: UNREGISTERED (run `orc wiki sync`)";
|
|
222
|
+
} else {
|
|
223
|
+
const meta = JSON.parse(fs.readFileSync(metaPath, "utf8"));
|
|
224
|
+
if (meta && meta.scan_commit) {
|
|
225
|
+
const distance = parseInt(
|
|
226
|
+
execSync(`git rev-list --count ${meta.scan_commit}..HEAD`, {
|
|
227
|
+
cwd: projectDir,
|
|
228
|
+
timeout: 3000,
|
|
229
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
230
|
+
})
|
|
231
|
+
.toString()
|
|
232
|
+
.trim(),
|
|
233
|
+
10
|
|
234
|
+
);
|
|
235
|
+
if (Number.isFinite(distance)) {
|
|
236
|
+
if (distance >= 10 && distance <= 30)
|
|
237
|
+
line += ` · wiki: AGING (${distance}c)`;
|
|
238
|
+
else if (distance > 30) line += ` · wiki: STALE (${distance}c)`;
|
|
239
|
+
else line += " · wiki: fresh";
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
} catch (_) {}
|
|
244
|
+
|
|
245
|
+
// orc-diy gate segment (only when a flow exists). Recomputes the same
|
|
246
|
+
// staleness checks as `orc diy status` from flow.lock.json — written only
|
|
247
|
+
// by the `orc diy` CLI. Fail-silent: any error → no segment.
|
|
248
|
+
try {
|
|
249
|
+
const fs = require("fs");
|
|
250
|
+
const path = require("path");
|
|
251
|
+
const crypto = require("crypto");
|
|
252
|
+
const projectDir =
|
|
253
|
+
(d.workspace && d.workspace.project_dir) || d.cwd || process.cwd();
|
|
254
|
+
const lockPath = path.join(projectDir, ".claude", "orc", "diy", "flow.lock.json");
|
|
255
|
+
if (fs.existsSync(lockPath)) {
|
|
256
|
+
const lock = JSON.parse(
|
|
257
|
+
fs.readFileSync(lockPath, "utf8").replace(/^\uFEFF/, "")
|
|
258
|
+
);
|
|
259
|
+
const sha = (p) =>
|
|
260
|
+
crypto.createHash("sha256").update(fs.readFileSync(p, "utf8")).digest("hex");
|
|
261
|
+
const cfgPath = path.join(projectDir, ".claude", "orc-diy.config.yaml");
|
|
262
|
+
const compiledPath = path.join(projectDir, ".claude", "orc", "diy", "FLOW-COMPILED.md");
|
|
263
|
+
let installedV = null;
|
|
264
|
+
try {
|
|
265
|
+
installedV = JSON.parse(
|
|
266
|
+
fs.readFileSync(path.join(__dirname, "orc-version.json"), "utf8")
|
|
267
|
+
).version;
|
|
268
|
+
} catch (_) {}
|
|
269
|
+
const ready =
|
|
270
|
+
lock.compiled_hash &&
|
|
271
|
+
fs.existsSync(cfgPath) &&
|
|
272
|
+
lock.config_hash === sha(cfgPath) &&
|
|
273
|
+
fs.existsSync(compiledPath) &&
|
|
274
|
+
lock.compiled_hash === sha(compiledPath) &&
|
|
275
|
+
(!installedV || lock.orc_version === installedV);
|
|
276
|
+
let seg = `diy:${lock.flow_name || "flow"} ${ready ? "READY" : "STALE→recompile"}`;
|
|
277
|
+
// Model half of the compiled session_tier — warn-only (hooks can't block on
|
|
278
|
+
// model). Keyed by the slug's MODEL part, so the full tier grid (sonnet-4-6,
|
|
279
|
+
// opus-4-7, opus-4-8, fable-5 at any effort) is covered without enumerating
|
|
280
|
+
// every effort slug.
|
|
281
|
+
if (ready && modelKnown && lock.session_tier) {
|
|
282
|
+
const modelPart = String(lock.session_tier).replace(/-(med|high|xhigh|max)$/, "");
|
|
283
|
+
const want = {
|
|
284
|
+
"sonnet-4-6": /sonnet[\s._-]?4[\s._-]?6\b/,
|
|
285
|
+
"opus-4-7": /opus[\s._-]?4[\s._-]?7\b/,
|
|
286
|
+
"opus-4-8": /opus[\s._-]?4[\s._-]?8\b/,
|
|
287
|
+
"opus-5": /opus[\s._-]?5\b/,
|
|
288
|
+
"fable-5": /fable[\s._-]?5\b/,
|
|
289
|
+
}[modelPart];
|
|
290
|
+
if (want && !want.test(hay)) seg += ` ⛔model≠${lock.session_tier}`;
|
|
291
|
+
}
|
|
292
|
+
line += " · " + seg;
|
|
293
|
+
}
|
|
294
|
+
} catch (_) {}
|
|
295
|
+
|
|
296
|
+
// Append an update hint from the cache (instant, no network here).
|
|
297
|
+
if (updater) {
|
|
298
|
+
try {
|
|
299
|
+
const nudge = updater.readCachedNudge(updater.installedVersion(__dirname));
|
|
300
|
+
if (nudge) line += " · " + nudge;
|
|
301
|
+
} catch (_) {}
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
process.stdout.write(line);
|
|
305
|
+
});
|