@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,108 @@
|
|
|
1
|
+
/* 06-responsive.css — orc ui
|
|
2
|
+
The width breakpoints that cross panel boundaries (the rail becomes a strip,
|
|
3
|
+
the Learn rail becomes a scrollable row). They override rules from the shell
|
|
4
|
+
AND from four panels, so they load after every one of them — the same reason
|
|
5
|
+
04-motion.css is last. Breakpoints that only touch ONE panel stay in that
|
|
6
|
+
panel's file.
|
|
7
|
+
|
|
8
|
+
The <link> ORDER in app.html is the cascade order, and the numeric
|
|
9
|
+
prefix is that order. No @import: it would carry no session token and
|
|
10
|
+
401. */
|
|
11
|
+
|
|
12
|
+
/* --------------------------------------------------------------- RESPONSIVE */
|
|
13
|
+
|
|
14
|
+
@media (max-width: 1040px) {
|
|
15
|
+
/* The Learn rail stops being a rail and becomes a scrollable strip above the
|
|
16
|
+
reading pane — a 244px column plus prose does not fit twice over. */
|
|
17
|
+
.learn { grid-template-columns: 1fr; }
|
|
18
|
+
.learn-side { position: static; max-height: none; }
|
|
19
|
+
.learn-nav { flex-direction: row; overflow-x: auto; padding-bottom: 2px; }
|
|
20
|
+
.learn-nav-item { flex: 0 0 auto; max-width: 210px; }
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@media (max-width: 900px) {
|
|
24
|
+
.shell { grid-template-columns: 1fr; }
|
|
25
|
+
.rail {
|
|
26
|
+
position: static;
|
|
27
|
+
height: auto;
|
|
28
|
+
flex-direction: row;
|
|
29
|
+
align-items: center;
|
|
30
|
+
gap: var(--sp-4);
|
|
31
|
+
overflow-x: auto;
|
|
32
|
+
border-right: 0;
|
|
33
|
+
border-bottom: 1px solid var(--line-soft);
|
|
34
|
+
}
|
|
35
|
+
.nav { flex-direction: row; flex-wrap: nowrap; }
|
|
36
|
+
.nav a { white-space: nowrap; }
|
|
37
|
+
.rail-foot { flex-direction: row; align-items: center; }
|
|
38
|
+
.rail-project { max-width: 180px; }
|
|
39
|
+
.main { padding: var(--sp-4); }
|
|
40
|
+
.setting { grid-template-columns: 1fr; }
|
|
41
|
+
.setting-control { align-items: flex-start; }
|
|
42
|
+
/* Every `.run-card` VARIANT collapses explicitly. A variant that inherits a
|
|
43
|
+
column count it does not have is the v0.49.2 Overview collision again, just
|
|
44
|
+
at a narrower width. */
|
|
45
|
+
.run-card { grid-template-columns: 16px 80px minmax(0, 1fr); }
|
|
46
|
+
.run-card.no-caret { grid-template-columns: 80px minmax(0, 1fr); }
|
|
47
|
+
.run-card.has-extra { grid-template-columns: 16px 80px auto minmax(0, 1fr); }
|
|
48
|
+
.run-card.no-caret.has-extra { grid-template-columns: 80px auto minmax(0, 1fr); }
|
|
49
|
+
.run-age { grid-column: 3; }
|
|
50
|
+
.run-card.no-caret .run-age { grid-column: 2; }
|
|
51
|
+
.run-card.has-extra .run-age { grid-column: 4; }
|
|
52
|
+
.run-card.no-caret.has-extra .run-age { grid-column: 3; }
|
|
53
|
+
.todo { grid-template-columns: 4px minmax(0, 1fr); }
|
|
54
|
+
.todo-cta { grid-column: 2; margin-top: var(--sp-2); }
|
|
55
|
+
/* Extra. v0.50.0 brought the rail's segment floor down here so a band was
|
|
56
|
+
never squeezed to a sliver. v0.53.0 deleted that floor entirely: the band
|
|
57
|
+
ladder puts the proportional bar INSIDE a full-width row, so there is
|
|
58
|
+
nothing left to squeeze and nothing left to tune per viewport. What the
|
|
59
|
+
ladder does need at this width is for its head to stop pretending it has
|
|
60
|
+
five columns. */
|
|
61
|
+
.ex-band-head { grid-template-columns: minmax(0, 30%) minmax(0, auto) minmax(0, 1fr) 16px; }
|
|
62
|
+
/* v0.55.0 — EVERY VARIANT COLLAPSES EXPLICITLY. A position row has no bar, so
|
|
63
|
+
its first column is the slot name rather than a track; leaving it on the
|
|
64
|
+
band template here would put the target under the caret. */
|
|
65
|
+
.ex-slot-head { grid-template-columns: minmax(0, 40%) minmax(0, 1fr) 16px; }
|
|
66
|
+
.ex-slot-when { grid-column: 1 / -1; }
|
|
67
|
+
.ex-band-chips { grid-column: 1 / -1; justify-content: flex-start; }
|
|
68
|
+
.ex-route-controls { align-items: stretch; }
|
|
69
|
+
.ex-route-controls .btn { width: 100%; }
|
|
70
|
+
/* v0.53.0 — `.ex-tool` was the one `.ex-*` block with no entry here at all.
|
|
71
|
+
At this width a tool card's actions are the reason you opened the panel, so
|
|
72
|
+
they go full width rather than being squeezed onto the end of a row. */
|
|
73
|
+
.ex-tool > .row-actions:not(:first-child) { align-items: stretch; }
|
|
74
|
+
.ex-tool > .row-actions:not(:first-child) .btn { width: 100%; }
|
|
75
|
+
/* v0.54.0 — a recovery row's identity is the longest thing in it, so at this
|
|
76
|
+
width it takes its own line rather than truncating a profile and a model
|
|
77
|
+
into nothing. The row is a FLEX COLUMN, so this is a wrap rather than a
|
|
78
|
+
second grid template. */
|
|
79
|
+
.ex-rec-head { flex-wrap: wrap; }
|
|
80
|
+
.ex-rec-who { flex: 1 1 100%; white-space: normal; }
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
@media (max-width: 600px) {
|
|
84
|
+
/* Below this there is no honest way to keep a chip, a slug and an age on one
|
|
85
|
+
line, so the card stacks: chip, then the slug and where it stands, then the
|
|
86
|
+
age. One column, in reading order. */
|
|
87
|
+
.run-card,
|
|
88
|
+
.run-card.no-caret,
|
|
89
|
+
.run-card.has-extra,
|
|
90
|
+
.run-card.no-caret.has-extra {
|
|
91
|
+
grid-template-columns: minmax(0, 1fr);
|
|
92
|
+
gap: var(--sp-2);
|
|
93
|
+
}
|
|
94
|
+
.run-caret { display: none; }
|
|
95
|
+
.run-card .run-age { grid-column: 1; }
|
|
96
|
+
/* Extra: the provider catalog stops being a grid — below this a two-column
|
|
97
|
+
tile cannot hold a base URL and two links without wrapping mid-word — and
|
|
98
|
+
the connect form's two columns become one. */
|
|
99
|
+
.ex-provider-grid { grid-template-columns: minmax(0, 1fr); }
|
|
100
|
+
.ex-strip { gap: var(--sp-3); }
|
|
101
|
+
.ex-route-controls > * { flex: 1 1 100%; }
|
|
102
|
+
/* The tool card's head stops being a row: a label, a binary name and a state
|
|
103
|
+
chip cannot share a line honestly below this. */
|
|
104
|
+
.ex-tool > .row-actions:first-child { flex-direction: column; align-items: flex-start; }
|
|
105
|
+
/* A per-file position line cannot hold a path, a state word and a line delta
|
|
106
|
+
on one row below this — and the path is the half that must stay readable. */
|
|
107
|
+
.ex-rec-file { flex-direction: column; align-items: flex-start; }
|
|
108
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/* panels/boundary.css — orc ui
|
|
2
|
+
The checklist — what would make a REFUSE a yes. It is the product, so it is
|
|
3
|
+
the most legible thing on the card.
|
|
4
|
+
|
|
5
|
+
The <link> ORDER in app.html is the cascade order, and the numeric
|
|
6
|
+
prefix is that order. No @import: it would carry no session token and
|
|
7
|
+
401. */
|
|
8
|
+
|
|
9
|
+
.checklist {
|
|
10
|
+
background: var(--surface-2);
|
|
11
|
+
border-radius: var(--radius-sm);
|
|
12
|
+
padding: var(--sp-3);
|
|
13
|
+
}
|
|
14
|
+
.checklist-head {
|
|
15
|
+
font-size: 11.5px;
|
|
16
|
+
text-transform: uppercase;
|
|
17
|
+
letter-spacing: .07em;
|
|
18
|
+
color: var(--text-dim);
|
|
19
|
+
margin-bottom: var(--sp-2);
|
|
20
|
+
}
|
|
21
|
+
.checklist-row { display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap; font-size: 13px; }
|
|
22
|
+
.checklist-row + .checklist-row { margin-top: var(--sp-2); }
|
|
23
|
+
.checklist-box { color: var(--text-dim); font-family: var(--mono); }
|
|
24
|
+
|
|
25
|
+
/* A paid action. Deliberately quiet - it is not a call to action, it is an
|
|
26
|
+
honest statement that this panel cannot do the thing. */
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/* panels/challenge.css — orc ui
|
|
2
|
+
The iteration timeline, the convergence chart, the findings.
|
|
3
|
+
|
|
4
|
+
The <link> ORDER in app.html is the cascade order, and the numeric
|
|
5
|
+
prefix is that order. No @import: it would carry no session token and
|
|
6
|
+
401. */
|
|
7
|
+
|
|
8
|
+
/* ================================================================ CHALLENGE */
|
|
9
|
+
/* Reuses the existing palette tokens — no new colours. The convergence bar is
|
|
10
|
+
deliberately the same visual family as the budget cost bar, because both are
|
|
11
|
+
"one row, several kinds, stacked, and the KINDS must stay visibly separate". */
|
|
12
|
+
|
|
13
|
+
.ch-list .run-where { text-transform: none; }
|
|
14
|
+
|
|
15
|
+
/* --- the goal block, the reader score --- */
|
|
16
|
+
.ch-score { display: flex; align-items: baseline; gap: var(--sp-3); }
|
|
17
|
+
.ch-score-num {
|
|
18
|
+
font: 600 30px/1 var(--mono, ui-monospace, SFMono-Regular, Menlo, monospace);
|
|
19
|
+
color: var(--accent);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* --- the iteration timeline (the hero) ---------------------------------- */
|
|
23
|
+
/* The wrapper SCROLLS rather than squeezing: the SVG carries an intrinsic width
|
|
24
|
+
solved from the node box, so a 14-iteration cycle is legible sideways instead
|
|
25
|
+
of illegible in place. A transparent track, both syntaxes — neither falls back
|
|
26
|
+
to the other. */
|
|
27
|
+
.ch-rail-wrap {
|
|
28
|
+
overflow-x: auto;
|
|
29
|
+
overflow-y: hidden;
|
|
30
|
+
padding-bottom: var(--sp-2);
|
|
31
|
+
scrollbar-width: thin;
|
|
32
|
+
scrollbar-color: var(--line) transparent;
|
|
33
|
+
}
|
|
34
|
+
.ch-rail-wrap::-webkit-scrollbar { height: 8px; }
|
|
35
|
+
.ch-rail-wrap::-webkit-scrollbar-track { background: transparent; }
|
|
36
|
+
.ch-rail-wrap::-webkit-scrollbar-thumb { background: var(--line); border-radius: 4px; }
|
|
37
|
+
.ch-rail { display: block; }
|
|
38
|
+
.ch-rail-link { stroke: var(--line); stroke-width: 2; }
|
|
39
|
+
/* A version break: a comparison across one is not a comparison, so it is drawn,
|
|
40
|
+
not implied. */
|
|
41
|
+
.ch-rail-break { stroke: var(--warn); stroke-width: 2; stroke-dasharray: 3 3; }
|
|
42
|
+
.ch-rail-breaklabel { fill: var(--warn); font-size: 10px; }
|
|
43
|
+
.ch-rail-box { fill: var(--surface-2); stroke: var(--line); stroke-width: 1.5; }
|
|
44
|
+
.ch-rail-node.pass .ch-rail-box { stroke: var(--ok); fill: var(--ok-wash); }
|
|
45
|
+
.ch-rail-node.fail .ch-rail-box { stroke: var(--warn); fill: var(--warn-wash); }
|
|
46
|
+
.ch-rail-n { fill: var(--text); font: 600 15px/1 var(--mono, ui-monospace, monospace); }
|
|
47
|
+
.ch-rail-verdict { fill: var(--text-dim); font-size: 11px; }
|
|
48
|
+
/* Staggered entrance, `backwards` so the geometry lands once and the delay never
|
|
49
|
+
leaves a node invisible. */
|
|
50
|
+
.ch-rail-node { animation: ch-node-in .28s ease-out backwards; }
|
|
51
|
+
@keyframes ch-node-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
|
|
52
|
+
|
|
53
|
+
/* --- the convergence chart ---------------------------------------------- */
|
|
54
|
+
.ch-conv { margin-top: var(--sp-3); display: grid; gap: var(--sp-1); }
|
|
55
|
+
.ch-conv-row { display: grid; grid-template-columns: 2ch minmax(0, 1fr) 3ch; align-items: center; gap: var(--sp-2); }
|
|
56
|
+
.ch-conv-n, .ch-conv-blocking { font: 500 12px/1 var(--mono, ui-monospace, monospace); color: var(--text-faint); }
|
|
57
|
+
.ch-conv-blocking { text-align: right; color: var(--text-dim); }
|
|
58
|
+
.ch-conv-bar { display: flex; height: 12px; border-radius: 3px; overflow: hidden; background: var(--surface-3); }
|
|
59
|
+
/* Draws left to right on open, once: the SHAPE of the trend is the information,
|
|
60
|
+
so animating it is the fastest way to read it. */
|
|
61
|
+
.ch-conv-seg { width: var(--w); animation: ch-grow .5s ease-out backwards; }
|
|
62
|
+
@keyframes ch-grow { from { width: 0; } to { width: var(--w); } }
|
|
63
|
+
.ch-sev-p0 { background: var(--bad); }
|
|
64
|
+
.ch-sev-p1 { background: var(--warn); }
|
|
65
|
+
.ch-sev-p2 { background: var(--accent-dim); }
|
|
66
|
+
.ch-sev-p3 { background: var(--idle); }
|
|
67
|
+
|
|
68
|
+
/* --- findings ------------------------------------------------------------ */
|
|
69
|
+
.ch-finding {
|
|
70
|
+
border: 1px solid var(--line-soft);
|
|
71
|
+
border-radius: var(--radius-sm);
|
|
72
|
+
padding: var(--sp-3);
|
|
73
|
+
margin-top: var(--sp-3);
|
|
74
|
+
display: grid;
|
|
75
|
+
gap: var(--sp-2);
|
|
76
|
+
}
|
|
77
|
+
.ch-anchor { color: var(--text-faint); font-size: 12px; }
|
|
78
|
+
.ch-quote {
|
|
79
|
+
margin: 0;
|
|
80
|
+
padding-left: var(--sp-3);
|
|
81
|
+
border-left: 3px solid var(--line);
|
|
82
|
+
color: var(--text-dim);
|
|
83
|
+
overflow-wrap: anywhere;
|
|
84
|
+
}
|
|
85
|
+
/* The paste block is wide by nature. It scrolls INSIDE itself — the page body
|
|
86
|
+
never scrolls horizontally. */
|
|
87
|
+
.ch-prompt { max-height: 320px; overflow: auto; scrollbar-width: thin; scrollbar-color: var(--line) transparent; }
|
|
88
|
+
.ch-prompt::-webkit-scrollbar { width: 8px; height: 8px; }
|
|
89
|
+
.ch-prompt::-webkit-scrollbar-track { background: transparent; }
|
|
90
|
+
.ch-prompt::-webkit-scrollbar-thumb { background: var(--line); border-radius: 4px; }
|
|
91
|
+
|
|
92
|
+
/* --- the council (v0.49.1) ----------------------------------------------- */
|
|
93
|
+
/* One row per roster lens. A NOT-RUN row keeps its slot and a NOT-SELECTED row
|
|
94
|
+
renders muted (`.row-muted`, defined once in 03-components.css) — filtering
|
|
95
|
+
either out makes "the contrarian found nothing" and "the contrarian never
|
|
96
|
+
ran" look identical. Same reason an OFF phase keeps its slot in the Flow
|
|
97
|
+
stepper. */
|
|
98
|
+
.ch-lens-row {
|
|
99
|
+
border: 1px solid var(--line-soft);
|
|
100
|
+
border-radius: var(--radius-sm);
|
|
101
|
+
padding: var(--sp-3);
|
|
102
|
+
margin-top: var(--sp-2);
|
|
103
|
+
display: grid;
|
|
104
|
+
gap: var(--sp-1);
|
|
105
|
+
}
|
|
106
|
+
.ch-lens-name { font-weight: 600; }
|
|
107
|
+
.ch-lens-agent { font-size: 12px; }
|
|
108
|
+
.ch-monday-head { margin-top: var(--sp-2); font-weight: 600; font-size: 13px; }
|
|
109
|
+
.ch-monday { margin: 0; padding-left: var(--sp-4); color: var(--text-dim); display: grid; gap: 2px; }
|
|
110
|
+
|
|
111
|
+
/* The per-lens legend under the convergence chart. The bar keeps SEVERITY
|
|
112
|
+
stacking — a bar that works does not gain a second dimension — so "which lens
|
|
113
|
+
is earning its money" gets its own row instead. */
|
|
114
|
+
.ch-lens-legend {
|
|
115
|
+
display: flex;
|
|
116
|
+
flex-wrap: wrap;
|
|
117
|
+
gap: var(--sp-3);
|
|
118
|
+
margin-top: var(--sp-2);
|
|
119
|
+
font-size: 12px;
|
|
120
|
+
color: var(--text-faint);
|
|
121
|
+
}
|
|
122
|
+
.ch-lens-legend-item { display: inline-flex; gap: 6px; align-items: baseline; }
|
|
123
|
+
.ch-lens-legend-n { color: var(--text); font-variant-numeric: tabular-nums; }
|
|
124
|
+
|
|
125
|
+
/* --- premise challenges --------------------------------------------------- */
|
|
126
|
+
/* THE LOUDEST CARD ON THE PANEL when one is open, and it sits above the
|
|
127
|
+
findings: a premise disputes the yardstick every finding below it was
|
|
128
|
+
measured against. */
|
|
129
|
+
.ch-premise-loud { border-color: var(--bad); }
|
|
130
|
+
.ch-premise {
|
|
131
|
+
border: 1px solid var(--line-soft);
|
|
132
|
+
border-left: 3px solid var(--bad);
|
|
133
|
+
border-radius: var(--radius-sm);
|
|
134
|
+
padding: var(--sp-3);
|
|
135
|
+
margin-top: var(--sp-3);
|
|
136
|
+
display: grid;
|
|
137
|
+
gap: var(--sp-2);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/* --- opportunities -------------------------------------------------------- */
|
|
141
|
+
/* NO SEVERITY COLOUR ANYWHERE IN HERE. An opportunity never blocks and never has
|
|
142
|
+
a severity; colouring it like a defect is exactly the confusion the class
|
|
143
|
+
split exists to prevent. */
|
|
144
|
+
.ch-opportunity {
|
|
145
|
+
border: 1px dashed var(--line-soft);
|
|
146
|
+
border-radius: var(--radius-sm);
|
|
147
|
+
padding: var(--sp-3);
|
|
148
|
+
margin-top: var(--sp-3);
|
|
149
|
+
display: grid;
|
|
150
|
+
gap: var(--sp-2);
|
|
151
|
+
}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/* panels/crosslink.css — orc ui
|
|
2
|
+
The vault graph and the folder picker. .vault-node's box MUST stay the same
|
|
3
|
+
size as VAULT.W/H in js/panels/crosslink.js — a test asserts it.
|
|
4
|
+
|
|
5
|
+
The <link> ORDER in app.html is the cascade order, and the numeric
|
|
6
|
+
prefix is that order. No @import: it would carry no session token and
|
|
7
|
+
401. */
|
|
8
|
+
|
|
9
|
+
/* --- Crosslink ----------------------------------------------------------- */
|
|
10
|
+
|
|
11
|
+
/* Nothing is linked yet, so the Design tab has nothing to draw. The pulse points
|
|
12
|
+
at the tab that can fix that; it is dropped the moment a link exists. */
|
|
13
|
+
.tabs button.tab-spot { color: var(--accent); animation: tab-spot 2s ease-in-out infinite; }
|
|
14
|
+
@keyframes tab-spot {
|
|
15
|
+
0%, 100% { opacity: 1; }
|
|
16
|
+
50% { opacity: .5; }
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/* THE VAULT GRAPH. Absolutely-positioned repo boxes over a stretched SVG edge
|
|
20
|
+
layer — both use the same normalised coordinates, so they line up at any
|
|
21
|
+
width without measuring anything. */
|
|
22
|
+
/* Width and height are set inline by vaultCard — the canvas is sized to the
|
|
23
|
+
ring it has to hold, so it is never the thing that decides the spacing.
|
|
24
|
+
`margin: 0 auto` centres it when the panel is wider than the graph; when the
|
|
25
|
+
panel is NARROWER, the `.scroll-x` wrapper scrolls rather than compressing
|
|
26
|
+
the ring back into a collision. */
|
|
27
|
+
.vault {
|
|
28
|
+
position: relative;
|
|
29
|
+
margin: 0 auto;
|
|
30
|
+
border: 1px solid var(--line-soft);
|
|
31
|
+
border-radius: var(--radius);
|
|
32
|
+
background: radial-gradient(circle at 50% 50%, var(--surface-2) 0%, var(--surface) 62%);
|
|
33
|
+
}
|
|
34
|
+
.vault-edges { position: absolute; inset: 0; width: 100%; height: 100%; }
|
|
35
|
+
.vault-line {
|
|
36
|
+
stroke: var(--line);
|
|
37
|
+
stroke-width: 1.5;
|
|
38
|
+
/* pathLength="1" — the draw-in is written in fractions, not pixels. */
|
|
39
|
+
stroke-dasharray: 1;
|
|
40
|
+
animation: edge-draw var(--dur-slow) var(--ease) var(--d, 0ms) both;
|
|
41
|
+
}
|
|
42
|
+
/* A short dash running from → to. The direction of travel IS the direction of
|
|
43
|
+
the dependency, which is the whole point of a crosslink edge. */
|
|
44
|
+
.vault-pulse {
|
|
45
|
+
stroke: var(--accent);
|
|
46
|
+
stroke-width: 2.5;
|
|
47
|
+
stroke-linecap: round;
|
|
48
|
+
stroke-dasharray: .07 .93;
|
|
49
|
+
opacity: .85;
|
|
50
|
+
animation: edge-pulse 2.8s linear var(--d, 0ms) infinite;
|
|
51
|
+
}
|
|
52
|
+
@keyframes edge-draw {
|
|
53
|
+
from { stroke-dashoffset: 1; opacity: 0; }
|
|
54
|
+
to { stroke-dashoffset: 0; opacity: 1; }
|
|
55
|
+
}
|
|
56
|
+
@keyframes edge-pulse {
|
|
57
|
+
from { stroke-dashoffset: 1; }
|
|
58
|
+
to { stroke-dashoffset: 0; }
|
|
59
|
+
}
|
|
60
|
+
.vault-via { fill: var(--text-faint); font-family: var(--mono); font-size: 11px; }
|
|
61
|
+
|
|
62
|
+
/* Hover a repo: its edges brighten, every other edge steps back. */
|
|
63
|
+
.vault-edge { transition: opacity var(--dur) var(--ease); }
|
|
64
|
+
.vault-edge.edge-dim { opacity: .22; }
|
|
65
|
+
.vault-edge.edge-hi .vault-line { stroke: var(--accent-dim); }
|
|
66
|
+
.vault-edge.edge-hi .vault-pulse { stroke-width: 3.5; opacity: 1; }
|
|
67
|
+
|
|
68
|
+
/* THE BOX SIZE IS FIXED, AND THAT IS LOAD-BEARING. These two numbers are the
|
|
69
|
+
VAULT.W / VAULT.H the ring radii are solved from in app.js — change one and
|
|
70
|
+
you must change the other, or the arithmetic that guarantees no two repos
|
|
71
|
+
overlap is being done against the wrong box. A box that grew to fit its
|
|
72
|
+
longest repo name could not be spaced by arithmetic at all, only measured;
|
|
73
|
+
long names ellipsis instead. */
|
|
74
|
+
.vault-node {
|
|
75
|
+
position: absolute;
|
|
76
|
+
transform: translate(-50%, -50%);
|
|
77
|
+
box-sizing: border-box;
|
|
78
|
+
width: 156px;
|
|
79
|
+
height: 78px;
|
|
80
|
+
display: flex;
|
|
81
|
+
flex-direction: column;
|
|
82
|
+
align-items: flex-start;
|
|
83
|
+
justify-content: center;
|
|
84
|
+
gap: 2px;
|
|
85
|
+
padding: var(--sp-2) var(--sp-3);
|
|
86
|
+
overflow: hidden;
|
|
87
|
+
border: 1px solid var(--line);
|
|
88
|
+
border-radius: var(--radius);
|
|
89
|
+
background: var(--surface);
|
|
90
|
+
box-shadow: var(--shadow);
|
|
91
|
+
font: inherit;
|
|
92
|
+
text-align: left;
|
|
93
|
+
animation: vault-in var(--dur-slow) var(--ease) var(--d, 0ms) both;
|
|
94
|
+
transition: border-color var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease);
|
|
95
|
+
}
|
|
96
|
+
button.vault-node { cursor: pointer; }
|
|
97
|
+
/* A hovered repo lifts above its neighbours' shadows, never under them. */
|
|
98
|
+
.vault-node:hover, .vault-node.vault-hi { border-color: var(--accent); z-index: 3; }
|
|
99
|
+
button.vault-node:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; z-index: 3; }
|
|
100
|
+
.vault-name,
|
|
101
|
+
.vault-sub { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
102
|
+
.vault-name { font-family: var(--mono); font-size: 13px; color: var(--text); }
|
|
103
|
+
.vault-sub { font-size: 11px; color: var(--text-faint); }
|
|
104
|
+
/* The state chip must not push the box taller than the geometry assumes. */
|
|
105
|
+
.vault-node .chip { flex: none; margin-top: 2px; max-width: 100%; }
|
|
106
|
+
/* This repo is the hub — it is the one node that is not a link. */
|
|
107
|
+
.vault-hub { border-color: var(--accent); background: var(--accent-wash); z-index: 2; }
|
|
108
|
+
.vault-consume { border-left: 3px solid var(--accent); }
|
|
109
|
+
.vault-provide { border-left: 3px solid var(--ok); }
|
|
110
|
+
.vault-none { border-left: 3px solid var(--warn); }
|
|
111
|
+
@keyframes vault-in {
|
|
112
|
+
from { opacity: 0; transform: translate(-50%, -50%) scale(.88); }
|
|
113
|
+
to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/* Hovering a graph node lights its detail row, so the picture and the list are
|
|
117
|
+
visibly the same set of things. */
|
|
118
|
+
.linked-hi { border-color: var(--accent) !important; background: var(--surface-2); }
|
|
119
|
+
|
|
120
|
+
.linkform { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: var(--sp-3); }
|
|
121
|
+
.field { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
|
|
122
|
+
.field-label { font-size: 11px; text-transform: uppercase; letter-spacing: .06em; color: var(--text-faint); }
|
|
123
|
+
.field-hint { font-size: 11px; color: var(--text-faint); }
|
|
124
|
+
.field select.text-input { padding: 5px 8px; }
|
|
125
|
+
|
|
126
|
+
.kind-picker { display: flex; flex-wrap: wrap; gap: 4px; }
|
|
127
|
+
.kind {
|
|
128
|
+
border: 1px solid var(--line);
|
|
129
|
+
background: var(--surface-2);
|
|
130
|
+
color: var(--text-dim);
|
|
131
|
+
border-radius: 100px;
|
|
132
|
+
padding: 2px 9px;
|
|
133
|
+
font-size: 11px;
|
|
134
|
+
font-family: var(--mono);
|
|
135
|
+
cursor: pointer;
|
|
136
|
+
transition: background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease),
|
|
137
|
+
border-color var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease);
|
|
138
|
+
}
|
|
139
|
+
.kind:hover { border-color: var(--accent-dim); color: var(--text); }
|
|
140
|
+
.kind-on { background: var(--accent); border-color: var(--accent); color: #fff; transform: scale(1.04); }
|
|
141
|
+
|
|
142
|
+
/* --- Crosslink: the folder picker ---------------------------------------- */
|
|
143
|
+
/* A directory listing the SERVER walks, rendered as a list you click through.
|
|
144
|
+
Nothing here reads a file — the two chips are a single existsSync each. */
|
|
145
|
+
|
|
146
|
+
.path-row { display: flex; gap: var(--sp-2); align-items: center; }
|
|
147
|
+
.path-row .text-input { flex: 1 1 auto; min-width: 0; }
|
|
148
|
+
.path-row .btn { flex: none; }
|
|
149
|
+
|
|
150
|
+
.picker-crumbs { display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap; }
|
|
151
|
+
.picker-path {
|
|
152
|
+
font-family: var(--mono);
|
|
153
|
+
font-size: 11.5px;
|
|
154
|
+
color: var(--text-dim);
|
|
155
|
+
background: var(--surface-2);
|
|
156
|
+
border-radius: var(--radius-sm);
|
|
157
|
+
padding: 2px 8px;
|
|
158
|
+
overflow-wrap: anywhere;
|
|
159
|
+
}
|
|
160
|
+
.picker-list {
|
|
161
|
+
max-height: 46vh;
|
|
162
|
+
overflow-y: auto;
|
|
163
|
+
display: flex;
|
|
164
|
+
flex-direction: column;
|
|
165
|
+
gap: 2px;
|
|
166
|
+
border: 1px solid var(--line);
|
|
167
|
+
border-radius: var(--radius-sm);
|
|
168
|
+
padding: var(--sp-2);
|
|
169
|
+
background: var(--surface-2);
|
|
170
|
+
}
|
|
171
|
+
.picker-item {
|
|
172
|
+
display: grid;
|
|
173
|
+
grid-template-columns: 16px minmax(0, 1fr) auto;
|
|
174
|
+
align-items: center;
|
|
175
|
+
gap: var(--sp-3);
|
|
176
|
+
padding: 6px var(--sp-3);
|
|
177
|
+
border: 1px solid transparent;
|
|
178
|
+
border-radius: var(--radius-sm);
|
|
179
|
+
background: transparent;
|
|
180
|
+
text-align: left;
|
|
181
|
+
font: inherit;
|
|
182
|
+
color: inherit;
|
|
183
|
+
cursor: pointer;
|
|
184
|
+
transition: background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);
|
|
185
|
+
}
|
|
186
|
+
.picker-item:hover { background: var(--surface-3); border-color: var(--accent-dim); }
|
|
187
|
+
.picker-icon { color: var(--text-faint); font-size: 11px; }
|
|
188
|
+
.picker-item:hover .picker-icon { color: var(--accent); }
|
|
189
|
+
.picker-name { font-family: var(--mono); font-size: 13px; overflow: hidden; text-overflow: ellipsis; }
|
|
190
|
+
.picker-tags { display: flex; gap: 4px; flex-wrap: wrap; margin-top: 3px; }
|
|
191
|
+
.picker-into { color: var(--text-faint); opacity: 0; transition: opacity var(--dur-fast) var(--ease); }
|
|
192
|
+
.picker-item:hover .picker-into { opacity: 1; }
|
|
193
|
+
.picker-foot { display: flex; justify-content: flex-end; }
|
|
194
|
+
.picker-warn { color: var(--warn); }
|