dsh-super-code 0.3.11 → 0.4.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/LICENSE +1 -1
- package/README.en.md +50 -18
- package/README.md +50 -18
- package/builtin/README.md +22 -0
- package/builtin/skills/mattpocock/LICENSE +21 -0
- package/builtin/skills/mattpocock/UPSTREAM.md +11 -0
- package/builtin/skills/mattpocock/distribution.json +352 -0
- package/builtin/skills/mattpocock/skills/ask-matt/PHASE-BOUNDARIES.md +55 -0
- package/builtin/skills/mattpocock/skills/ask-matt/SKILL.md +97 -0
- package/builtin/skills/mattpocock/skills/ask-matt/agents/openai.yaml +5 -0
- package/builtin/skills/mattpocock/skills/code-review/SKILL.md +89 -0
- package/builtin/skills/mattpocock/skills/code-review/agents/openai.yaml +3 -0
- package/builtin/skills/mattpocock/skills/codebase-design/DEEPENING.md +37 -0
- package/builtin/skills/mattpocock/skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
- package/builtin/skills/mattpocock/skills/codebase-design/SKILL.md +114 -0
- package/builtin/skills/mattpocock/skills/codebase-design/agents/openai.yaml +3 -0
- package/builtin/skills/mattpocock/skills/diagnosing-bugs/SKILL.md +138 -0
- package/builtin/skills/mattpocock/skills/diagnosing-bugs/agents/openai.yaml +3 -0
- package/builtin/skills/mattpocock/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +44 -0
- package/builtin/skills/mattpocock/skills/domain-modeling/ADR-FORMAT.md +47 -0
- package/builtin/skills/mattpocock/skills/domain-modeling/GLOSSARY-FORMAT.md +60 -0
- package/builtin/skills/mattpocock/skills/domain-modeling/SKILL.md +74 -0
- package/builtin/skills/mattpocock/skills/domain-modeling/agents/openai.yaml +3 -0
- package/builtin/skills/mattpocock/skills/grill-me/SKILL.md +7 -0
- package/builtin/skills/mattpocock/skills/grill-me/agents/openai.yaml +5 -0
- package/builtin/skills/mattpocock/skills/grill-with-docs/SKILL.md +7 -0
- package/builtin/skills/mattpocock/skills/grill-with-docs/agents/openai.yaml +5 -0
- package/builtin/skills/mattpocock/skills/grilling/SKILL.md +30 -0
- package/builtin/skills/mattpocock/skills/grilling/agents/openai.yaml +3 -0
- package/builtin/skills/mattpocock/skills/handoff/SKILL.md +16 -0
- package/builtin/skills/mattpocock/skills/handoff/agents/openai.yaml +5 -0
- package/builtin/skills/mattpocock/skills/implement/SKILL.md +17 -0
- package/builtin/skills/mattpocock/skills/implement/agents/openai.yaml +5 -0
- package/builtin/skills/mattpocock/skills/implement-spec/SKILL.md +42 -0
- package/builtin/skills/mattpocock/skills/implement-spec/agents/openai.yaml +5 -0
- package/builtin/skills/mattpocock/skills/improve-codebase-architecture/HTML-REPORT.md +123 -0
- package/builtin/skills/mattpocock/skills/improve-codebase-architecture/SKILL.md +71 -0
- package/builtin/skills/mattpocock/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
- package/builtin/skills/mattpocock/skills/pr/CREDITS.md +3 -0
- package/builtin/skills/mattpocock/skills/pr/SKILL.md +170 -0
- package/builtin/skills/mattpocock/skills/pr/agents/openai.yaml +3 -0
- package/builtin/skills/mattpocock/skills/prototype/LOGIC.md +67 -0
- package/builtin/skills/mattpocock/skills/prototype/SKILL.md +26 -0
- package/builtin/skills/mattpocock/skills/prototype/UI.md +112 -0
- package/builtin/skills/mattpocock/skills/prototype/agents/openai.yaml +3 -0
- package/builtin/skills/mattpocock/skills/research/SKILL.md +12 -0
- package/builtin/skills/mattpocock/skills/research/agents/openai.yaml +3 -0
- package/builtin/skills/mattpocock/skills/retro/SKILL.md +44 -0
- package/builtin/skills/mattpocock/skills/retro/agents/openai.yaml +5 -0
- package/builtin/skills/mattpocock/skills/setup-matt-pocock-skills/SKILL.md +120 -0
- package/builtin/skills/mattpocock/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
- package/builtin/skills/mattpocock/skills/setup-matt-pocock-skills/domain.md +51 -0
- package/builtin/skills/mattpocock/skills/setup-matt-pocock-skills/issue-tracker-github.md +50 -0
- package/builtin/skills/mattpocock/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +46 -0
- package/builtin/skills/mattpocock/skills/setup-matt-pocock-skills/issue-tracker-local.md +30 -0
- package/builtin/skills/mattpocock/skills/setup-matt-pocock-skills/triage-labels.md +15 -0
- package/builtin/skills/mattpocock/skills/tdd/SKILL.md +38 -0
- package/builtin/skills/mattpocock/skills/tdd/agents/openai.yaml +3 -0
- package/builtin/skills/mattpocock/skills/tdd/mocking.md +59 -0
- package/builtin/skills/mattpocock/skills/tdd/tests.md +77 -0
- package/builtin/skills/mattpocock/skills/teach/GLOSSARY-FORMAT.md +35 -0
- package/builtin/skills/mattpocock/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/builtin/skills/mattpocock/skills/teach/MISSION-FORMAT.md +31 -0
- package/builtin/skills/mattpocock/skills/teach/RESOURCES-FORMAT.md +32 -0
- package/builtin/skills/mattpocock/skills/teach/SKILL.md +140 -0
- package/builtin/skills/mattpocock/skills/teach/agents/openai.yaml +5 -0
- package/builtin/skills/mattpocock/skills/to-questionnaire/SKILL.md +54 -0
- package/builtin/skills/mattpocock/skills/to-questionnaire/agents/openai.yaml +5 -0
- package/builtin/skills/mattpocock/skills/to-spec/SKILL.md +75 -0
- package/builtin/skills/mattpocock/skills/to-spec/agents/openai.yaml +5 -0
- package/builtin/skills/mattpocock/skills/to-tickets/SKILL.md +105 -0
- package/builtin/skills/mattpocock/skills/to-tickets/agents/openai.yaml +5 -0
- package/builtin/skills/mattpocock/skills/triage/AGENT-BRIEF.md +207 -0
- package/builtin/skills/mattpocock/skills/triage/OUT-OF-SCOPE.md +105 -0
- package/builtin/skills/mattpocock/skills/triage/SKILL.md +112 -0
- package/builtin/skills/mattpocock/skills/triage/agents/openai.yaml +5 -0
- package/builtin/skills/mattpocock/skills/wait-what/SKILL.md +7 -0
- package/builtin/skills/mattpocock/skills/wait-what/agents/openai.yaml +5 -0
- package/builtin/skills/mattpocock/skills/wayfinder/SKILL.md +128 -0
- package/builtin/skills/mattpocock/skills/wayfinder/agents/openai.yaml +5 -0
- package/builtin/skills/mattpocock/skills/wizard/SKILL.md +44 -0
- package/builtin/skills/mattpocock/skills/wizard/agents/openai.yaml +3 -0
- package/builtin/skills/mattpocock/skills/wizard/template.sh +223 -0
- package/builtin/skills/mattpocock/skills/writing-for-agents/SKILL-MECHANICS.md +22 -0
- package/builtin/skills/mattpocock/skills/writing-for-agents/SKILL.md +81 -0
- package/builtin/skills/mattpocock/skills/writing-for-agents/agents/openai.yaml +3 -0
- package/builtin/skills/oil-ui/LICENSE +21 -0
- package/builtin/skills/oil-ui/SKILL.md +163 -0
- package/builtin/skills/oil-ui/UPSTREAM.md +14 -0
- package/builtin/skills/oil-ui/assets/fonts/instrument-serif/InstrumentSerif-Regular.ttf +0 -0
- package/builtin/skills/oil-ui/assets/fonts/instrument-serif/OFL.txt +93 -0
- package/builtin/skills/oil-ui/assets/logo.png +0 -0
- package/builtin/skills/oil-ui/assets/style-explorer.html +433 -0
- package/builtin/skills/oil-ui/distribution.json +5 -0
- package/builtin/skills/oil-ui/references/design-direction.md +233 -0
- package/builtin/skills/oil-ui/references/direction-persuasion.md +25 -0
- package/builtin/skills/oil-ui/references/image-ideation.md +130 -0
- package/builtin/skills/oil-ui/references/layout-and-viewport.md +24 -0
- package/builtin/skills/oil-ui/references/media.md +158 -0
- package/builtin/skills/oil-ui/references/motion.md +123 -0
- package/builtin/skills/oil-ui/references/play.md +29 -0
- package/builtin/skills/oil-ui/references/reviewer-manual.md +73 -0
- package/builtin/skills/oil-ui/references/scroll-narrative.md +97 -0
- package/builtin/skills/oil-ui/references/style-explorer.md +48 -0
- package/builtin/skills/oil-ui/references/task-explore.md +28 -0
- package/builtin/skills/oil-ui/references/task-review.md +8 -0
- package/builtin/skills/oil-ui/references/tools.md +75 -0
- package/builtin/skills/oil-ui/references/ux-review.md +23 -0
- package/builtin/skills/oil-ui/references/ux-reviewer.md +10 -0
- package/builtin/skills/oil-ui/references/visual-language.md +103 -0
- package/builtin/skills/oil-ui/references/visual-review.md +35 -0
- package/builtin/skills/oil-ui/references/workdir.md +64 -0
- package/builtin/skills/oil-ui/scripts/build_explorer.py +958 -0
- package/builtin/skills/oil-ui/scripts/chrome.mjs +115 -0
- package/builtin/skills/oil-ui/scripts/curate-media.mjs +726 -0
- package/builtin/skills/oil-ui/scripts/measure_reference.py +543 -0
- package/builtin/skills/oil-ui/scripts/oiloil-image.mjs +388 -0
- package/builtin/skills/oil-ui/scripts/prep-image.mjs +287 -0
- package/builtin/skills/oil-ui/scripts/recommend_once.py +65 -0
- package/builtin/skills/oil-ui/scripts/shoot.mjs +2067 -0
- package/builtin/skills/openspec/LICENSE +22 -0
- package/builtin/skills/openspec/UPSTREAM.md +11 -0
- package/builtin/skills/openspec/distribution.json +73 -0
- package/builtin/skills/openspec/skills/README.md +19 -0
- package/builtin/skills/openspec/skills/openspec-apply-change/SKILL.md +205 -0
- package/builtin/skills/openspec/skills/openspec-archive-change/SKILL.md +220 -0
- package/builtin/skills/openspec/skills/openspec-bulk-archive-change/SKILL.md +376 -0
- package/builtin/skills/openspec/skills/openspec-continue-change/SKILL.md +137 -0
- package/builtin/skills/openspec/skills/openspec-explore/SKILL.md +355 -0
- package/builtin/skills/openspec/skills/openspec-ff-change/SKILL.md +128 -0
- package/builtin/skills/openspec/skills/openspec-new-change/SKILL.md +87 -0
- package/builtin/skills/openspec/skills/openspec-onboard/SKILL.md +574 -0
- package/builtin/skills/openspec/skills/openspec-propose/SKILL.md +174 -0
- package/builtin/skills/openspec/skills/openspec-sync-specs/SKILL.md +289 -0
- package/builtin/skills/openspec/skills/openspec-update-change/SKILL.md +108 -0
- package/builtin/skills/openspec/skills/openspec-verify-change/SKILL.md +222 -0
- package/builtin/skills/pstack/LICENSE +21 -0
- package/builtin/skills/pstack/UPSTREAM.md +17 -0
- package/builtin/skills/pstack/distribution.json +2299 -0
- package/builtin/skills/pstack/dsh/DSH.md +59 -0
- package/builtin/skills/pstack/dsh/LICENSE +21 -0
- package/builtin/skills/pstack/dsh/README.md +9 -0
- package/builtin/skills/pstack/dsh/adaptation.json +2930 -0
- package/builtin/skills/pstack/dsh/agents/comment-sicko.md +32 -0
- package/builtin/skills/pstack/dsh/agents/poteto-agent.md +5 -0
- package/builtin/skills/pstack/dsh/assets/logo.png +0 -0
- package/builtin/skills/pstack/dsh/authoring.md +7 -0
- package/builtin/skills/pstack/dsh/docs/guide/01-setup.md +68 -0
- package/builtin/skills/pstack/dsh/docs/guide/02-poteto-mode.md +141 -0
- package/builtin/skills/pstack/dsh/docs/guide/03-understand.md +81 -0
- package/builtin/skills/pstack/dsh/docs/guide/04-design.md +135 -0
- package/builtin/skills/pstack/dsh/docs/guide/05-build-and-clean.md +85 -0
- package/builtin/skills/pstack/dsh/docs/guide/06-verify-and-ship.md +164 -0
- package/builtin/skills/pstack/dsh/docs/guide/07-overnight.md +124 -0
- package/builtin/skills/pstack/dsh/docs/guide/08-principles.md +74 -0
- package/builtin/skills/pstack/dsh/docs/guide/09-make-it-yours.md +102 -0
- package/builtin/skills/pstack/dsh/docs/guide/10-recipes-and-pitfalls.md +184 -0
- package/builtin/skills/pstack/dsh/docs/guide/README.md +40 -0
- package/builtin/skills/pstack/dsh/docs/guide/images/design.jpg +0 -0
- package/builtin/skills/pstack/dsh/docs/guide/images/overnight.jpg +0 -0
- package/builtin/skills/pstack/dsh/docs/guide/images/recipes.jpg +0 -0
- package/builtin/skills/pstack/dsh/docs/guide/images/router.jpg +0 -0
- package/builtin/skills/pstack/dsh/docs/guide/images/understanding.jpg +0 -0
- package/builtin/skills/pstack/dsh/docs/guide/images/verification.jpg +0 -0
- package/builtin/skills/pstack/dsh/docs/harness/claude-code.md +69 -0
- package/builtin/skills/pstack/dsh/scripts/capture.mjs +80 -0
- package/builtin/skills/pstack/dsh/skills/architect/SKILL.md +82 -0
- package/builtin/skills/pstack/dsh/skills/architect/references/design-red-flags.md +57 -0
- package/builtin/skills/pstack/dsh/skills/architect/references/rationale-template.md +35 -0
- package/builtin/skills/pstack/dsh/skills/architect/references/runner-prompt.md +20 -0
- package/builtin/skills/pstack/dsh/skills/arena/SKILL.md +51 -0
- package/builtin/skills/pstack/dsh/skills/automate-me/SKILL.md +19 -0
- package/builtin/skills/pstack/dsh/skills/benchmark-checklist/SKILL.md +42 -0
- package/builtin/skills/pstack/dsh/skills/blast-radius/SKILL.md +53 -0
- package/builtin/skills/pstack/dsh/skills/bro/SKILL.md +10 -0
- package/builtin/skills/pstack/dsh/skills/correct/SKILL.md +35 -0
- package/builtin/skills/pstack/dsh/skills/create-formal-verification-skill/SKILL.md +46 -0
- package/builtin/skills/pstack/dsh/skills/create-verification-skill/SKILL.md +47 -0
- package/builtin/skills/pstack/dsh/skills/create-verification-skill/references/feature-map-example/README.md +47 -0
- package/builtin/skills/pstack/dsh/skills/create-verification-skill/references/feature-map-example/create-note.md +39 -0
- package/builtin/skills/pstack/dsh/skills/create-verification-skill/references/feature-map-example/search.md +45 -0
- package/builtin/skills/pstack/dsh/skills/figure-it-out/SKILL.md +55 -0
- package/builtin/skills/pstack/dsh/skills/how/SKILL.md +39 -0
- package/builtin/skills/pstack/dsh/skills/how/references/explainer-prompt.md +55 -0
- package/builtin/skills/pstack/dsh/skills/how/references/explorer-prompt.md +35 -0
- package/builtin/skills/pstack/dsh/skills/in-your-own-words/SKILL.md +10 -0
- package/builtin/skills/pstack/dsh/skills/interrogate/SKILL.md +34 -0
- package/builtin/skills/pstack/dsh/skills/ketchup/SKILL.md +46 -0
- package/builtin/skills/pstack/dsh/skills/ketchup-video/SKILL.md +32 -0
- package/builtin/skills/pstack/dsh/skills/maintain-formal-verification-skill/SKILL.md +61 -0
- package/builtin/skills/pstack/dsh/skills/maintain-verification-skill/SKILL.md +42 -0
- package/builtin/skills/pstack/dsh/skills/make-bot-ui/SKILL.md +22 -0
- package/builtin/skills/pstack/dsh/skills/make-bot-ui/references/submissions.md +44 -0
- package/builtin/skills/pstack/dsh/skills/make-bot-ui/scripts/submissions.mjs +86 -0
- package/builtin/skills/pstack/dsh/skills/no-comments/SKILL.md +27 -0
- package/builtin/skills/pstack/dsh/skills/poteto-help/SKILL.md +42 -0
- package/builtin/skills/pstack/dsh/skills/poteto-help/references/prompting.md +51 -0
- package/builtin/skills/pstack/dsh/skills/poteto-help/references/recipes.md +51 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/SKILL.md +153 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/authoring-a-skill.md +8 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/autonomous-run.md +12 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/autopilot-full.md +25 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/autopilot-stack.md +8 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/babysit.md +23 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/bug-fix.md +15 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/eval.md +25 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/feature.md +21 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/hillclimb.md +21 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/investigation.md +14 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/multi-phase-plan.md +155 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/opening-a-pr.md +34 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/orchestrate.md +14 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/pause-safely.md +8 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/perf-issue.md +25 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/prototype.md +14 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/refactoring.md +16 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/runtime-forensics.md +11 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/session-pickup.md +9 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/shipping.md +12 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/trace-forensics.md +14 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/visual-parity.md +11 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/worktree-cleanup.md +9 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/references/bugbot-triage.md +142 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/bootstrap.ts +62 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/bun.lock +67 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/check-plan.mjs +205 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/check-plan.test.ts +110 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/package.json +16 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/cli.test.ts +224 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/cli.ts +223 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/fakes.test-helper.ts +129 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/github.test.ts +498 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/github.ts +726 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/policy.test.ts +482 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/policy.ts +842 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/render.ts +169 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/tsconfig.json +13 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/types.compile.ts +93 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/types.ts +414 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/watch-pr +6 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/worktree-audit.mjs +52 -0
- package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/worktree-audit.sh +4 -0
- package/builtin/skills/pstack/dsh/skills/principle-attack-the-premise/SKILL.md +24 -0
- package/builtin/skills/pstack/dsh/skills/principle-boundary-discipline/SKILL.md +37 -0
- package/builtin/skills/pstack/dsh/skills/principle-build-the-lever/SKILL.md +26 -0
- package/builtin/skills/pstack/dsh/skills/principle-encode-lessons-in-structure/SKILL.md +14 -0
- package/builtin/skills/pstack/dsh/skills/principle-exhaust-the-design-space/SKILL.md +12 -0
- package/builtin/skills/pstack/dsh/skills/principle-experience-first/SKILL.md +22 -0
- package/builtin/skills/pstack/dsh/skills/principle-explain-the-number/SKILL.md +21 -0
- package/builtin/skills/pstack/dsh/skills/principle-fix-root-causes/SKILL.md +24 -0
- package/builtin/skills/pstack/dsh/skills/principle-foundational-thinking/SKILL.md +24 -0
- package/builtin/skills/pstack/dsh/skills/principle-guard-the-context-window/SKILL.md +15 -0
- package/builtin/skills/pstack/dsh/skills/principle-laziness-protocol/SKILL.md +13 -0
- package/builtin/skills/pstack/dsh/skills/principle-make-operations-idempotent/SKILL.md +25 -0
- package/builtin/skills/pstack/dsh/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md +17 -0
- package/builtin/skills/pstack/dsh/skills/principle-minimize-reader-load/SKILL.md +21 -0
- package/builtin/skills/pstack/dsh/skills/principle-model-the-domain/SKILL.md +27 -0
- package/builtin/skills/pstack/dsh/skills/principle-never-block-on-the-human/SKILL.md +18 -0
- package/builtin/skills/pstack/dsh/skills/principle-outcome-oriented-execution/SKILL.md +24 -0
- package/builtin/skills/pstack/dsh/skills/principle-prove-it-works/SKILL.md +25 -0
- package/builtin/skills/pstack/dsh/skills/principle-redesign-from-first-principles/SKILL.md +19 -0
- package/builtin/skills/pstack/dsh/skills/principle-separate-before-serializing-shared-state/SKILL.md +19 -0
- package/builtin/skills/pstack/dsh/skills/principle-sequence-verifiable-units/SKILL.md +20 -0
- package/builtin/skills/pstack/dsh/skills/principle-subtract-before-you-add/SKILL.md +21 -0
- package/builtin/skills/pstack/dsh/skills/principle-test-behavior-not-implementation/SKILL.md +23 -0
- package/builtin/skills/pstack/dsh/skills/principle-type-system-discipline/SKILL.md +16 -0
- package/builtin/skills/pstack/dsh/skills/recall/SKILL.md +19 -0
- package/builtin/skills/pstack/dsh/skills/reflect/SKILL.md +19 -0
- package/builtin/skills/pstack/dsh/skills/reflect/references/divergent-reviewer.md +38 -0
- package/builtin/skills/pstack/dsh/skills/reflect/references/judgment-reviewer.md +37 -0
- package/builtin/skills/pstack/dsh/skills/reflect/references/synthesizer.md +56 -0
- package/builtin/skills/pstack/dsh/skills/reflect/references/tooling-reviewer.md +48 -0
- package/builtin/skills/pstack/dsh/skills/setup-pstack/SKILL.md +80 -0
- package/builtin/skills/pstack/dsh/skills/sharpen/SKILL.md +19 -0
- package/builtin/skills/pstack/dsh/skills/show-me-your-work/SKILL.md +85 -0
- package/builtin/skills/pstack/dsh/skills/show-me-your-work/references/decision-log-template.tsv +1 -0
- package/builtin/skills/pstack/dsh/skills/show-me-your-work/scripts/audit-log.mjs +43 -0
- package/builtin/skills/pstack/dsh/skills/show-me-your-work/scripts/log.sh +42 -0
- package/builtin/skills/pstack/dsh/skills/statechart/SKILL.md +85 -0
- package/builtin/skills/pstack/dsh/skills/statechart/references/render.md +93 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/backends/cfg.mjs +31 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/backends/cfg.ts +33 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/backends/mermaid.mjs +223 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/backends/mermaid.ts +201 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/backends/plain-text.mjs +68 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/backends/plain-text.ts +72 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/backends/report.mjs +123 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/backends/report.ts +177 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/config.mjs +258 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/config.ts +276 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/dot.mjs +68 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/dot.ts +74 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/marks.mjs +102 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/marks.ts +93 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/messages.mjs +53 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/messages.ts +52 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/spec.mjs +89 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/spec.ts +114 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/trace.mjs +24 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/trace.ts +24 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/value.mjs +181 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/value.ts +166 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/verdict.mjs +38 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/verdict.ts +40 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/view.mjs +107 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/view.ts +119 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/ir.mjs +317 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/ir.ts +547 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/package.json +11 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/annotate.mjs +102 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/annotate.ts +128 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/label.mjs +217 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/label.ts +269 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/lift.mjs +89 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/lift.ts +85 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/loop-check.mjs +57 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/loop-check.ts +68 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/paths.mjs +50 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/paths.ts +60 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/reach.mjs +134 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/reach.ts +135 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/region-check.mjs +94 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/region-check.ts +97 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/regions.mjs +296 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/regions.ts +295 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/pipeline.mjs +63 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/pipeline.ts +76 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/run.mjs +432 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/run.ts +481 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/statechart +29 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/statechart.mjs +149 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/statechart.ts +164 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/ConfigOracle.java +63 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/chart.test.ts +1210 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/charts/Braces.mmd +7 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/charts/Escapes.mmd +11 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/charts/Phases.mmd +29 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/cli.test.ts +1314 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/config-fuzz.test.ts +263 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Counter/ChartRun.out +57 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Counter/Counter.cfg +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Counter/Counter.tla +10 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Counter/chart.mmd +9 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Counter/graph.dot +16 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Counter/report.md +7 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Counter/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Counter/verdict-1.out +49 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/ChartRun.out +60 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/CounterAction.cfg +4 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/CounterAction.tla +22 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/chart.mmd +26 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/graph.dot +19 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/report.md +20 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/verdict-1.out +56 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/verdict-2.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/verdict-2.out +82 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/verdict-3.out +57 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/ChartRun.out +59 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/CounterDeadlock.cfg +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/CounterDeadlock.tla +11 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/chart.mmd +22 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/graph.dot +16 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/report.md +17 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-1.out +56 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-2.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-2.out +77 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterFan/ChartRun.out +69 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterFan/CounterFan.cfg +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterFan/CounterFan.tla +11 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterFan/chart.mmd +85 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterFan/graph.dot +70 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterFan/report.md +12 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterFan/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterFan/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterFan/verdict-1.out +67 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterFan/verdict-2.out +57 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/ChartRun.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/ChartRun.out +85 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/CounterGuard.cfg +6 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/CounterGuard.tla +13 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/chart.mmd +5 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/graph.dot +10 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/report.md +31 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/verdict-1.out +64 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/verdict-2.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/verdict-2.out +77 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPast/ChartRun.out +55 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPast/CounterInitPast.cfg +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPast/CounterInitPast.tla +10 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPast/chart.mmd +12 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPast/graph.dot +6 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPast/report.md +12 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPast/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-1.out +33 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-2.out +54 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPastHolds/ChartRun.out +54 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPastHolds/CounterInitPastHolds.cfg +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPastHolds/CounterInitPastHolds.tla +10 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPastHolds/chart.mmd +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPastHolds/graph.dot +6 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPastHolds/report.md +7 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPastHolds/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPastHolds/verdict-1.out +46 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInstance/ChartRun.out +59 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInstance/CounterInstance.cfg +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInstance/CounterInstance.tla +10 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInstance/CounterSteps.tla +6 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInstance/chart.mmd +17 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInstance/graph.dot +15 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInstance/report.md +14 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInstance/sany.out +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInstance/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInstance/verdict-1.out +78 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterJump/ChartRun.out +59 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterJump/CounterJump.cfg +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterJump/CounterJump.tla +19 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterJump/chart.mmd +26 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterJump/graph.dot +22 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterJump/report.md +12 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterJump/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterJump/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterJump/verdict-1.out +58 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterJump/verdict-2.out +57 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterLoop/ChartRun.out +57 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterLoop/CounterLoop.cfg +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterLoop/CounterLoop.tla +11 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterLoop/chart.mmd +17 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterLoop/graph.dot +15 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterLoop/report.md +14 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterLoop/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterLoop/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterLoop/verdict-1.out +76 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/ChartRun.out +59 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/CounterOrder.cfg +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/CounterOrder.tla +11 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/chart.mmd +19 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/graph.dot +10 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/report.md +15 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/verdict-1.out +56 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/verdict-2.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/verdict-2.out +67 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/ChartRun.out +62 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/CounterRules.cfg +6 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/CounterRules.tla +24 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/Moves.tla +5 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/chart.mmd +22 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/graph.dot +10 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/report.md +23 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/sany.out +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/verdict-1.out +58 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/verdict-2.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/verdict-2.out +66 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/verdict-3.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/verdict-3.out +74 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/verdict-4.out +59 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStart/ChartRun.out +58 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStart/CounterStart.cfg +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStart/CounterStart.tla +15 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStart/chart.mmd +18 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStart/graph.dot +13 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStart/report.md +11 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStart/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStart/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStart/verdict-1.out +33 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStart/verdict-2.out +57 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStop/ChartRun.out +57 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStop/CounterStop.cfg +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStop/CounterStop.tla +15 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStop/chart.mmd +7 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStop/graph.dot +13 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStop/report.md +6 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStop/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStop/verdict-1.out +49 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/ChartRun.out +61 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/CounterTie.cfg +4 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/CounterTie.tla +14 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/chart.mmd +30 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/graph.dot +19 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/report.md +27 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/verdict-1.out +56 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/verdict-2.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/verdict-2.out +64 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/verdict-3.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/verdict-3.out +87 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/verdict-4.out +57 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTieInGraph/ChartRun.out +60 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTieInGraph/CounterTieInGraph.cfg +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTieInGraph/CounterTieInGraph.tla +12 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTieInGraph/chart.mmd +23 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTieInGraph/graph.dot +19 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTieInGraph/report.md +11 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTieInGraph/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-1.out +56 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-2.out +57 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/ChartRun.out +61 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/CounterView.cfg +4 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/CounterView.tla +14 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/chart.mmd +23 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/graph.dot +19 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/report.md +27 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/verdict-1.out +56 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/verdict-2.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/verdict-2.out +64 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/verdict-3.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/verdict-3.out +87 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/verdict-4.out +57 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/view.mjs +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/DieHard/ChartRun.out +59 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/DieHard/DieHard.cfg +4 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/DieHard/DieHard.tla +38 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/DieHard/chart.mmd +92 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/DieHard/graph.dot +126 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/DieHard/report.md +17 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/DieHard/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/DieHard/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/DieHard/verdict-1.out +91 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/DieHard/verdict-2.out +57 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/ChartRun.out +61 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/FirstRule.cfg +6 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/FirstRule.tla +11 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/chart.mmd +22 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/graph.dot +16 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/report.md +25 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/verdict-1.out +56 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/verdict-2.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/verdict-2.out +64 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/verdict-3.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/verdict-3.out +64 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/verdict-4.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/verdict-4.out +77 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/HiddenClock/ChartRun.out +57 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/HiddenClock/HiddenClock.cfg +4 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/HiddenClock/HiddenClock.tla +11 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/HiddenClock/chart.mmd +13 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/HiddenClock/graph.dot +12 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/HiddenClock/report.md +11 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/HiddenClock/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/HiddenClock/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/HiddenClock/verdict-1.out +72 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Login/ChartRun.out +57 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Login/Login.cfg +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Login/Login.tla +62 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Login/chart.mmd +27 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Login/graph.dot +40 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Login/report.md +7 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Login/sany.out +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Login/verdict-1.out +47 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Login/view.mjs +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginGuarded/ChartRun.out +57 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginGuarded/LoginGuarded.cfg +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginGuarded/LoginGuarded.tla +64 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginGuarded/chart.mmd +28 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginGuarded/graph.dot +37 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginGuarded/report.md +8 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginGuarded/sany.out +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginGuarded/verdict-1.out +47 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginGuarded/view.mjs +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/ChartRun.out +60 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/LoginParallel.cfg +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/LoginParallel.tla +64 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/chart.mmd +44 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/graph.dot +58 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/report.md +17 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/sany.out +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/verdict-1.out +83 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/verdict-2.out +57 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/view.mjs +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/ChartRun.out +60 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/MediaPlayer.cfg +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/MediaPlayer.tla +103 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/chart.mmd +43 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/graph.dot +93 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/report.md +14 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/sany.out +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-1.out +59 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-2.out +72 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/view.mjs +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerFixed/ChartRun.out +57 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerFixed/MediaPlayerFixed.cfg +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerFixed/MediaPlayerFixed.tla +100 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerFixed/chart.mmd +31 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerFixed/graph.dot +85 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerFixed/report.md +9 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerFixed/sany.out +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerFixed/verdict-1.out +47 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerFixed/view.mjs +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/ChartRun.out +59 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayer.tla +103 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayerProps.cfg +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayerProps.tla +6 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/chart.mmd +42 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/graph.dot +93 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/report.md +19 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-1.out +61 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-2.out +59 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-3.out +61 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-4.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-4.out +66 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-5.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-5.out +58 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-6.out +49 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/view.mjs +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/PickWorker/ChartRun.out +57 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/PickWorker/PickWorker.cfg +6 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/PickWorker/PickWorker.tla +11 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/PickWorker/chart.mmd +5 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/PickWorker/graph.dot +11 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/PickWorker/report.md +7 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/PickWorker/sany.out +5 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/PickWorker/verdict-1.out +70 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Shadow/ChartRun.out +61 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Shadow/Shadow.cfg +4 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Shadow/Shadow.tla +11 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Shadow/ShadowLib.tla +6 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Shadow/ShadowSub.tla +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Shadow/chart.mmd +9 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Shadow/graph.dot +16 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Shadow/report.md +8 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Shadow/sany.out +4 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Shadow/verdict-1.out +65 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/ChartRun.out +59 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/SpacedNames.cfg +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/SpacedNames.tla +9 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/chart.mmd +23 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/graph.dot +17 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/report.md +15 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/sany.out +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/verdict-1.out +65 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/verdict-2.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/verdict-2.out +75 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/ChartRun.out +69 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/TwoPhase.cfg +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/TwoPhase.tla +75 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/chart.mmd +60 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/graph.dot +297 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/report.md +20 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/sany.out +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/verdict-1.out +95 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/verdict-2.out +57 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/view.mjs +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhaseFixed/ChartRun.out +57 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhaseFixed/TwoPhaseFixed.cfg +3 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhaseFixed/TwoPhaseFixed.tla +75 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhaseFixed/chart.mmd +37 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhaseFixed/graph.dot +223 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhaseFixed/report.md +11 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhaseFixed/sany.out +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhaseFixed/verdict-1.out +47 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhaseFixed/view.mjs +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/ChartRun.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/ChartRun.out +75 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/TypeGuard.cfg +5 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/TypeGuard.tla +11 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/chart.mmd +18 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/graph.dot +14 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/report.md +29 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/verdict-1.out +64 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/verdict-2.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/verdict-2.out +75 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/ChartRun.out +58 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/UserNoDeadlock.cfg +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/UserNoDeadlock.tla +8 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/chart.mmd +22 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/graph.dot +16 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/report.md +15 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-1.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-1.out +56 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-2.exit +1 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-2.out +77 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus.test.ts +403 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/differential.test.ts +565 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/grid/Grid.cfg +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/grid/Grid.tla +9 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/grid/sany.out +2 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/java.ts +63 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/labels.ts +643 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/messages.test.ts +212 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/pipeline.test.ts +270 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/plain-tlc.test.ts +255 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/render.test.ts +81 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/tlc-out.test.ts +90 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/tlc.ts +158 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/tsconfig.json +11 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/worker.mjs +32 -0
- package/builtin/skills/pstack/dsh/skills/statechart/scripts/worker.ts +35 -0
- package/builtin/skills/pstack/dsh/skills/swarm/SKILL.md +44 -0
- package/builtin/skills/pstack/dsh/skills/tdd/SKILL.md +45 -0
- package/builtin/skills/pstack/dsh/skills/teach/SKILL.md +24 -0
- package/builtin/skills/pstack/dsh/skills/technical-writing/SKILL.md +109 -0
- package/builtin/skills/pstack/dsh/skills/typescript-best-practices/SKILL.md +34 -0
- package/builtin/skills/pstack/dsh/skills/typescript-best-practices/references/patterns.md +328 -0
- package/builtin/skills/pstack/dsh/skills/unslop/SKILL.md +65 -0
- package/builtin/skills/pstack/dsh/skills/why/SKILL.md +99 -0
- package/builtin/skills/pstack/dsh/skills/why/references/epistemics.md +71 -0
- package/builtin/skills/pstack/dsh/skills/why/references/investigator-prompt.md +84 -0
- package/builtin/skills/pstack/dsh/skills/why/references/source-playbook.md +17 -0
- package/builtin/skills/pstack/dsh/skills/why/references/sources/code-archaeology.md +51 -0
- package/builtin/skills/pstack/dsh/skills/why/references/sources/databricks.md +70 -0
- package/builtin/skills/pstack/dsh/skills/why/references/sources/datadog.md +97 -0
- package/builtin/skills/pstack/dsh/skills/why/references/sources/incident-postmortem.md +5 -0
- package/builtin/skills/pstack/dsh/skills/why/references/sources/linear.md +48 -0
- package/builtin/skills/pstack/dsh/skills/why/references/sources/notion.md +55 -0
- package/builtin/skills/pstack/dsh/skills/why/references/sources/sentry.md +66 -0
- package/builtin/skills/pstack/dsh/skills/why/references/sources/slack.md +17 -0
- package/builtin/skills/pstack/dsh/skills/why/references/synthesizer-prompt.md +129 -0
- package/client/index.js +350 -85
- package/cordis.patch.yml +5 -13
- package/docs/Acknowledgements.md +24 -12
- package/docs/Changelog.md +27 -0
- package/docs/Compatibility.md +66 -3
- package/docs/EvaluationResults.md +8 -6
- package/docs/UsageGuide.md +61 -7
- package/docs/en/Acknowledgements.md +24 -12
- package/docs/en/Changelog.md +27 -0
- package/docs/en/Compatibility.md +66 -3
- package/docs/en/EvaluationResults.md +8 -6
- package/docs/en/UsageGuide.md +61 -7
- package/docs/images/agent-tree-preview.png +0 -0
- package/docs/images/agent-tree.png +0 -0
- package/docs/images/install-tgz-preview.png +0 -0
- package/docs/images/install-tgz.png +0 -0
- package/docs/images/npm-downloads-dark.svg +22 -0
- package/docs/images/npm-downloads.svg +22 -0
- package/docs/images/preset-settings-preview.png +0 -0
- package/docs/images/star-history-dark.svg +22 -0
- package/docs/images/star-history.svg +22 -0
- package/docs/images/task-status-preview.png +0 -0
- package/docs/images/task-status.png +0 -0
- package/lib/connection/approvals.d.ts +4 -0
- package/lib/connection/approvals.d.ts.map +1 -1
- package/lib/connection/approvals.js.map +1 -1
- package/lib/connection/client.d.ts.map +1 -1
- package/lib/connection/client.js +20 -3
- package/lib/connection/client.js.map +1 -1
- package/lib/connection/git.d.ts.map +1 -1
- package/lib/connection/git.js +17 -12
- package/lib/connection/git.js.map +1 -1
- package/lib/connection/http.d.ts.map +1 -1
- package/lib/connection/http.js +20 -1
- package/lib/connection/http.js.map +1 -1
- package/lib/connection/service.d.ts +3 -2
- package/lib/connection/service.d.ts.map +1 -1
- package/lib/connection/service.js +8 -3
- package/lib/connection/service.js.map +1 -1
- package/lib/connection/store.d.ts +1 -0
- package/lib/connection/store.d.ts.map +1 -1
- package/lib/connection/store.js +84 -35
- package/lib/connection/store.js.map +1 -1
- package/lib/connection/tasks.d.ts +4 -2
- package/lib/connection/tasks.d.ts.map +1 -1
- package/lib/connection/tasks.js +47 -42
- package/lib/connection/tasks.js.map +1 -1
- package/lib/connection/types.d.ts +2 -1
- package/lib/connection/types.d.ts.map +1 -1
- package/lib/core/batch-policy.js +2 -2
- package/lib/core/batch-policy.js.map +1 -1
- package/lib/core/delegation.d.ts +3 -0
- package/lib/core/delegation.d.ts.map +1 -1
- package/lib/core/delegation.js +2 -2
- package/lib/core/delegation.js.map +1 -1
- package/lib/core/deletion-command.d.ts.map +1 -1
- package/lib/core/deletion-command.js +192 -19
- package/lib/core/deletion-command.js.map +1 -1
- package/lib/core/tool-evidence.d.ts.map +1 -1
- package/lib/core/tool-evidence.js +9 -2
- package/lib/core/tool-evidence.js.map +1 -1
- package/lib/dsh/budget-settings.d.ts +11 -0
- package/lib/dsh/budget-settings.d.ts.map +1 -1
- package/lib/dsh/budget-settings.js +43 -9
- package/lib/dsh/budget-settings.js.map +1 -1
- package/lib/dsh/budgets.d.ts +5 -0
- package/lib/dsh/budgets.d.ts.map +1 -1
- package/lib/dsh/budgets.js +15 -0
- package/lib/dsh/budgets.js.map +1 -1
- package/lib/dsh/bundled-skills.d.ts +17 -0
- package/lib/dsh/bundled-skills.d.ts.map +1 -0
- package/lib/dsh/bundled-skills.js +94 -0
- package/lib/dsh/bundled-skills.js.map +1 -0
- package/lib/dsh/connection-approval.d.ts.map +1 -1
- package/lib/dsh/connection-approval.js +24 -2
- package/lib/dsh/connection-approval.js.map +1 -1
- package/lib/dsh/connection-history.d.ts +2 -1
- package/lib/dsh/connection-history.d.ts.map +1 -1
- package/lib/dsh/connection-history.js +22 -4
- package/lib/dsh/connection-history.js.map +1 -1
- package/lib/dsh/connection-host.d.ts +0 -1
- package/lib/dsh/connection-host.d.ts.map +1 -1
- package/lib/dsh/connection-host.js +59 -26
- package/lib/dsh/connection-host.js.map +1 -1
- package/lib/dsh/connection.d.ts.map +1 -1
- package/lib/dsh/connection.js +10 -5
- package/lib/dsh/connection.js.map +1 -1
- package/lib/dsh/directory-metadata.d.ts +4 -0
- package/lib/dsh/directory-metadata.d.ts.map +1 -0
- package/lib/dsh/directory-metadata.js +4 -0
- package/lib/dsh/directory-metadata.js.map +1 -0
- package/lib/dsh/index.d.ts.map +1 -1
- package/lib/dsh/index.js +2 -0
- package/lib/dsh/index.js.map +1 -1
- package/lib/dsh/memory-library.d.ts.map +1 -1
- package/lib/dsh/memory-library.js +8 -4
- package/lib/dsh/memory-library.js.map +1 -1
- package/lib/dsh/official-budgets.d.ts.map +1 -1
- package/lib/dsh/official-budgets.js +3 -2
- package/lib/dsh/official-budgets.js.map +1 -1
- package/lib/dsh/openspec-shell.d.ts +3 -0
- package/lib/dsh/openspec-shell.d.ts.map +1 -0
- package/lib/dsh/openspec-shell.js +25 -0
- package/lib/dsh/openspec-shell.js.map +1 -0
- package/lib/dsh/preset-declaration.d.ts +3 -0
- package/lib/dsh/preset-declaration.d.ts.map +1 -1
- package/lib/dsh/preset-declaration.js +39 -36
- package/lib/dsh/preset-declaration.js.map +1 -1
- package/lib/dsh/preset-files.d.ts.map +1 -1
- package/lib/dsh/preset-files.js +16 -1
- package/lib/dsh/preset-files.js.map +1 -1
- package/lib/dsh/preset-installation.d.ts +1 -0
- package/lib/dsh/preset-installation.d.ts.map +1 -1
- package/lib/dsh/preset-installation.js +5 -3
- package/lib/dsh/preset-installation.js.map +1 -1
- package/lib/dsh/preset-metadata.d.ts.map +1 -1
- package/lib/dsh/preset-metadata.js +18 -6
- package/lib/dsh/preset-metadata.js.map +1 -1
- package/lib/dsh/preset-recovery-runtime.d.ts.map +1 -1
- package/lib/dsh/preset-recovery-runtime.js +34 -12
- package/lib/dsh/preset-recovery-runtime.js.map +1 -1
- package/lib/dsh/preset-recovery.d.ts.map +1 -1
- package/lib/dsh/preset-recovery.js +79 -13
- package/lib/dsh/preset-recovery.js.map +1 -1
- package/lib/dsh/preset-version.d.ts +1 -0
- package/lib/dsh/preset-version.d.ts.map +1 -1
- package/lib/dsh/preset-version.js +1 -1
- package/lib/dsh/preset-version.js.map +1 -1
- package/lib/dsh/ptc-budget.d.ts.map +1 -1
- package/lib/dsh/ptc-budget.js +4 -2
- package/lib/dsh/ptc-budget.js.map +1 -1
- package/lib/dsh/skill-directory.d.ts +45 -0
- package/lib/dsh/skill-directory.d.ts.map +1 -0
- package/lib/dsh/skill-directory.js +113 -0
- package/lib/dsh/skill-directory.js.map +1 -0
- package/lib/dsh/skill-installation.d.ts +8 -0
- package/lib/dsh/skill-installation.d.ts.map +1 -0
- package/lib/dsh/skill-installation.js +131 -0
- package/lib/dsh/skill-installation.js.map +1 -0
- package/lib/dsh/skill-packages.d.ts +6 -0
- package/lib/dsh/skill-packages.d.ts.map +1 -0
- package/lib/dsh/skill-packages.js +8 -0
- package/lib/dsh/skill-packages.js.map +1 -0
- package/lib/dsh/super-code.d.ts.map +1 -1
- package/lib/dsh/super-code.js +143 -166
- package/lib/dsh/super-code.js.map +1 -1
- package/lib/dsh/tool-contracts.d.ts +53 -0
- package/lib/dsh/tool-contracts.d.ts.map +1 -0
- package/lib/dsh/tool-contracts.js +129 -0
- package/lib/dsh/tool-contracts.js.map +1 -0
- package/lib/dsh/windows-shell.d.ts +2 -2
- package/lib/dsh/windows-shell.d.ts.map +1 -1
- package/lib/dsh/windows-shell.js +11 -1
- package/lib/dsh/windows-shell.js.map +1 -1
- package/lib/long-memory.d.ts +2 -2
- package/lib/long-memory.d.ts.map +1 -1
- package/lib/long-memory.js +16 -9
- package/lib/long-memory.js.map +1 -1
- package/lib/memory-usage-projection.d.ts.map +1 -1
- package/lib/memory-usage-projection.js +13 -9
- package/lib/memory-usage-projection.js.map +1 -1
- package/lib/task-feedback-projection.d.ts +1 -0
- package/lib/task-feedback-projection.d.ts.map +1 -1
- package/lib/task-feedback-projection.js +65 -21
- package/lib/task-feedback-projection.js.map +1 -1
- package/lib/task-memory-store.d.ts.map +1 -1
- package/lib/task-memory-store.js +7 -1
- package/lib/task-memory-store.js.map +1 -1
- package/package.json +24 -4
- package/presets/super-code/agent.cordis.yml +4 -6
- package/runtime/skills/openspec/bin/openspec +2 -0
- package/runtime/skills/openspec/bin/openspec.cmd +6 -0
- package/presets/super-code/skills/super-code-frontend/SKILL.md +0 -33
- package/presets/super-code/skills/super-code-frontend/references/browser-validation.md +0 -59
- package/presets/super-code/skills/super-code-frontend/references/interaction-states.md +0 -51
- package/presets/super-code/skills/super-code-frontend/references/visual-design.md +0 -43
package/client/index.js
CHANGED
|
@@ -14,6 +14,7 @@ const icons = require('@deepseek-ai/dsh-client-ui-primitives')
|
|
|
14
14
|
const IconChevronDownOutline14 = icons.IconChevronDownOutlineRegular ?? icons.IconChevronDownOutline14
|
|
15
15
|
const IconRefreshOutline16 = icons.IconRefreshOutlineRegular ?? icons.IconRefreshOutline16
|
|
16
16
|
const { SessionEventStream } = require('@deepseek-ai/dsh-api-session-controller')
|
|
17
|
+
const skillUi = require('@deepseek-ai/dsh-client-ui-skill')
|
|
17
18
|
|
|
18
19
|
/* Shared controls use public React APIs without host-private dependencies. */
|
|
19
20
|
let selectControlSequence = 0
|
|
@@ -44,10 +45,12 @@ function SelectControl({ id, label, value, choices, onChange, disabled = false }
|
|
|
44
45
|
setOpen(true)
|
|
45
46
|
}
|
|
46
47
|
const choose = index => {
|
|
48
|
+
if (unavailable) return
|
|
47
49
|
onChange(choices[index][0])
|
|
48
50
|
setOpen(false)
|
|
49
51
|
trigger.current.focus({ preventScroll: true })
|
|
50
52
|
}
|
|
53
|
+
useLayoutEffect(() => { if (unavailable) setOpen(false) }, [unavailable])
|
|
51
54
|
useLayoutEffect(() => {
|
|
52
55
|
if (!open) return
|
|
53
56
|
const place = () => setPlacement(selectControlPlacement(trigger.current.getBoundingClientRect(), choices.length))
|
|
@@ -301,6 +304,23 @@ const zh = {
|
|
|
301
304
|
'feedback.agentsPartial': '任务条目超过显示上限,可在动作执行中查看其他 Agent。',
|
|
302
305
|
'status.blocked': '受阻',
|
|
303
306
|
|
|
307
|
+
'settings.skillsTab': '预设 Skill',
|
|
308
|
+
'skills.title': '预设 Skill', 'skills.scope': '开启后同步到 DSH 的 Skill 目录,按需加载,自动保存并在当前对话实时生效。',
|
|
309
|
+
'skills.openDirectory': '打开 Skill 目录', 'skills.openFailed': '无法打开 Skill 目录,请确认 DSH 所在设备支持文件管理器。',
|
|
310
|
+
'skills.directoryUnavailable': '当前 DSH 所在环境不支持打开文件管理器。',
|
|
311
|
+
'skills.directoryError': '部分 Skill 未能同步。已有的用户文件和修改已保留,请打开 Skill 目录检查后重试。',
|
|
312
|
+
'skills.retry': '重试同步',
|
|
313
|
+
'skills.individual': 'Skill', 'skills.workflows': '工作流',
|
|
314
|
+
'skills.grillMeSkill': 'grill-me', 'skills.grillMeSkillHint': '需求还不清楚或想检验方案时,输入 /grill-me,通过逐轮追问理清关键决策。',
|
|
315
|
+
'skills.oilUiSkill': 'oil-ui', 'skills.oilUiSkillHint': '设计或改进页面时,输入 /oil-ui,获得布局、配色和交互方面的设计建议。',
|
|
316
|
+
'skills.openspecSkills': 'OpenSpec', 'skills.openspecSkillsHint': '需要先明确规范再开发时,输入 /openspec-propose,生成包含需求、设计和任务的变更提案。',
|
|
317
|
+
'skills.mattpocockSkills': 'Matt Pocock Skills', 'skills.mattpocockSkillsHint': '规划、开发、测试或排查代码问题时,输入 /mattpocock 搜索并选择对应工作流。',
|
|
318
|
+
'skills.pstackSkills': 'PStack', 'skills.pstackSkillsHint': '需要规划、协作开发或代码评审时,输入 /pstack 选择工作流,也可用 /poteto-mode 启用整套工作方式。',
|
|
319
|
+
'skills.commands': '输入 / 选择 Skill,也可输入 /pstack、/mattpocock 等包名查找,选择后使用真实 Skill 命令。开关保存后实时生效,不撤回已进入上下文的内容。',
|
|
320
|
+
'skills.pstackRequirement': 'PStack 已针对 DSH 0.2.1-alpha.1 及之后版本适配;部分流程仍需 Git、Bun 或模型检查器等外部工具。',
|
|
321
|
+
'skills.openspecRequirement': 'OpenSpec CLI 随插件安装就绪。开关不改动项目,仅在你明确要求时初始化项目。',
|
|
322
|
+
'skills.upgrade': '当前预设尚未接入 Skill 包开关,请在“预设配置”中重新安装预设后使用。',
|
|
323
|
+
'skills.missing': '安装 Super Code 预设后即可使用这些 Skill 包。',
|
|
304
324
|
'settings.homeTab': '首页', 'settings.presetTab': '预设配置', 'settings.protectionTab': '删除保护',
|
|
305
325
|
'shell.title': '命令环境', 'shell.enabled': '使用内置 Bash(Windows)',
|
|
306
326
|
'shell.hint': '无需安装 Git。新启动的会话生效,子 Agent 继承。Windows 限权模式下需由 DSH 逐条审批,不自动修改会话权限。',
|
|
@@ -392,6 +412,7 @@ const zh = {
|
|
|
392
412
|
'tree.collapsedLabel': '已收起', 'tree.organizeLabel': '自动整理',
|
|
393
413
|
'detail.toolCall': '工具调用', 'detail.toolResult': '工具结果', 'detail.toolError': '工具失败',
|
|
394
414
|
'detail.authError': '模型身份验证失败,请检查模型配置。',
|
|
415
|
+
'detail.maxTokens': '模型输出达到 Token 上限,可继续对话。',
|
|
395
416
|
'detail.copy': '复制', 'detail.copied': '已复制', 'detail.footnotes': '脚注',
|
|
396
417
|
'detail.cache': '缓存', 'detail.info': '详情', 'tree.countCompact': '{shown}/{total} · 运行 {running}',
|
|
397
418
|
'memory.loading': '正在读取记忆…', 'memory.topics': '知识主题', 'memory.allTopics': '全部主题', 'memory.related': '同主题知识', 'preset.configuration': '预设配置',
|
|
@@ -495,6 +516,23 @@ const en = {
|
|
|
495
516
|
'feedback.agentsPartial': 'The task list reached its limit; view other Agents in the execution tree.',
|
|
496
517
|
'status.blocked': 'Blocked',
|
|
497
518
|
|
|
519
|
+
'settings.skillsTab': 'Preset Skills',
|
|
520
|
+
'skills.title': 'Preset Skills', 'skills.scope': 'Enabled packages sync to the DSH Skill directory. Skills load on demand; changes save automatically and apply to current conversations.',
|
|
521
|
+
'skills.openDirectory': 'Open Skill directory', 'skills.openFailed': 'Could not open the Skill directory. Check that the device running DSH supports a file manager.',
|
|
522
|
+
'skills.directoryUnavailable': 'The device running DSH does not support opening a file manager.',
|
|
523
|
+
'skills.directoryError': 'Some Skills could not be synced. Existing user files and edits were preserved. Check the Skill directory and retry.',
|
|
524
|
+
'skills.retry': 'Retry sync',
|
|
525
|
+
'skills.individual': 'Skills', 'skills.workflows': 'Workflows',
|
|
526
|
+
'skills.grillMeSkill': 'grill-me', 'skills.grillMeSkillHint': 'When requirements are unclear or a plan needs scrutiny, use /grill-me to clarify key decisions through focused questions.',
|
|
527
|
+
'skills.oilUiSkill': 'oil-ui', 'skills.oilUiSkillHint': 'When designing or improving a page, use /oil-ui for layout, color and interaction design guidance.',
|
|
528
|
+
'skills.openspecSkills': 'OpenSpec', 'skills.openspecSkillsHint': 'When a change needs a specification before development, use /openspec-propose to generate a proposal with requirements, design and tasks.',
|
|
529
|
+
'skills.mattpocockSkills': 'Matt Pocock Skills', 'skills.mattpocockSkillsHint': 'For planning, development, testing or debugging, type /mattpocock to search for and select the appropriate workflow.',
|
|
530
|
+
'skills.pstackSkills': 'PStack', 'skills.pstackSkillsHint': 'For planning, collaborative development or code review, type /pstack to select a workflow, or use /poteto-mode to adopt the full working approach.',
|
|
531
|
+
'skills.commands': 'Type / to select a Skill, or search by package with /pstack or /mattpocock. Picking inserts the real Skill command. Saved switches take effect immediately; instructions already in context remain.',
|
|
532
|
+
'skills.pstackRequirement': 'PStack is adapted for DSH 0.2.1-alpha.1 and later; some workflows still need external tools such as Git, Bun or a model checker.',
|
|
533
|
+
'skills.openspecRequirement': 'The OpenSpec CLI is installed with the plugin. Switches do not change projects; initialization runs only when you explicitly request it.',
|
|
534
|
+
'skills.upgrade': 'This preset does not support Skill package switches yet. Reinstall it in Preset configuration to apply these choices.',
|
|
535
|
+
'skills.missing': 'Install the Super Code preset to use these Skill packages.',
|
|
498
536
|
'settings.homeTab': 'Home', 'settings.presetTab': 'Preset configuration', 'settings.protectionTab': 'Deletion protection',
|
|
499
537
|
'shell.title': 'Command environment', 'shell.enabled': 'Use bundled Bash (Windows)',
|
|
500
538
|
'shell.hint': 'No Git installation required. Takes effect when a conversation starts; child Agents inherit it. Confined Windows modes require DSH approval for each command without changing session permissions.',
|
|
@@ -586,6 +624,7 @@ const en = {
|
|
|
586
624
|
'tree.collapsedLabel': 'Collapsed', 'tree.organizeLabel': 'Organize',
|
|
587
625
|
'detail.toolCall': 'Tool call', 'detail.toolResult': 'Tool result', 'detail.toolError': 'Tool failed',
|
|
588
626
|
'detail.authError': 'Model authentication failed. Check the model settings.',
|
|
627
|
+
'detail.maxTokens': 'The model reached its output token limit. Continue the conversation to proceed.',
|
|
589
628
|
'detail.copy': 'Copy', 'detail.copied': 'Copied', 'detail.footnotes': 'Footnotes',
|
|
590
629
|
'detail.cache': 'Cache', 'detail.info': 'Details', 'tree.countCompact': '{shown}/{total} · Running {running}',
|
|
591
630
|
'memory.loading': 'Loading memories…', 'memory.topics': 'Knowledge topics', 'memory.allTopics': 'All topics', 'memory.related': 'More in this topic', 'preset.configuration': 'Preset configuration',
|
|
@@ -1254,9 +1293,13 @@ function TaskFeedback({ useSessions, useSessionStatus, sessionId, useTabInfo, tr
|
|
|
1254
1293
|
if (!value || value.root !== view.root) { value = { root: view.root, limit: 200, focused: state.current, expanded: new Set(), collapsed: new Set() }; treeStates.set(tab.signal, value) }
|
|
1255
1294
|
return value
|
|
1256
1295
|
}, [treeStates, tab.signal, view.root])
|
|
1296
|
+
const catalogs = state.subagentsByParent
|
|
1297
|
+
return React.createElement(TaskFeedbackBody, { key: view.root, view, catalogs, saved, openDetail, refresh, watchCatalog, onToggle, t })
|
|
1298
|
+
}
|
|
1299
|
+
function TaskFeedbackBody({ view, catalogs, saved, openDetail, refresh, watchCatalog, onToggle, t }) {
|
|
1257
1300
|
const [busy, setBusy] = useState(false), [error, setError] = useState(false)
|
|
1258
1301
|
const model = useMemo(() => taskFeedbackRows(view), [view])
|
|
1259
|
-
const partial = model.partial ||
|
|
1302
|
+
const partial = model.partial || [...view.nodes.keys()].some(id => catalogs?.[id]?.state === 'error')
|
|
1260
1303
|
const items = useMemo(() => {
|
|
1261
1304
|
const rows = feedbackListItems(model, view.root, partial)
|
|
1262
1305
|
if (!view.root) rows.unshift({ kind: 'note', key: 'empty', label: 'tree.empty', signature: 'empty' })
|
|
@@ -1276,7 +1319,7 @@ function TaskFeedback({ useSessions, useSessionStatus, sessionId, useTabInfo, tr
|
|
|
1276
1319
|
React.createElement('header', null,
|
|
1277
1320
|
React.createElement(WorkspaceSectionToggle, { section: 'tasks', expanded: true, onToggle, t }),
|
|
1278
1321
|
React.createElement(ActionButton, { type: 'button', className: 'dsh-super-code-icon-button', title: text(t, 'feedback.refresh'), 'aria-label': text(t, 'feedback.refresh'), disabled: busy || !view.root, onClick: () => void reload() }, React.createElement(IconRefreshOutline16))),
|
|
1279
|
-
React.createElement(FeedbackVirtualList, {
|
|
1322
|
+
React.createElement(FeedbackVirtualList, { items, root: view.root, saved, openDetail, t, watchCatalog }))
|
|
1280
1323
|
}
|
|
1281
1324
|
|
|
1282
1325
|
function WorkspaceSectionToggle({ section, expanded, onToggle, children, t }) {
|
|
@@ -1528,7 +1571,7 @@ function AgentTreeBody({ state, view, saved, openDetail, refresh, watchCatalog,
|
|
|
1528
1571
|
const parent = positions.get(edge.parent), child = positions.get(edge.child)
|
|
1529
1572
|
return React.createElement('path', { key: edge.child, d: `M ${parent.x} ${parent.y + agentTreeNodeHeight} V ${child.y - 16} H ${child.x} V ${child.y - 10}`, fill: 'none' })
|
|
1530
1573
|
})),
|
|
1531
|
-
rows.map(row => {
|
|
1574
|
+
rows.map((row, index) => {
|
|
1532
1575
|
const node = view.nodes.get(row.id)
|
|
1533
1576
|
const title = node.title || node.displayTitle || text(t, 'main.agent')
|
|
1534
1577
|
const { label: status, tone } = agentExecutionStatus(node, row.id === view.root, t)
|
|
@@ -1548,7 +1591,7 @@ function AgentTreeBody({ state, view, saved, openDetail, refresh, watchCatalog,
|
|
|
1548
1591
|
onFocus: () => setFocused(row.id), onClick: () => { if (!node.unavailable) open(node) },
|
|
1549
1592
|
onKeyDown: event => { if (event.target === event.currentTarget) keyDown(event, row) },
|
|
1550
1593
|
},
|
|
1551
|
-
React.createElement('span', { className: 'dsh-super-code-circle ' + tone, 'aria-hidden': true }, row.id === view.root ? text(t, 'main.agent').slice(0, 1) : String(
|
|
1594
|
+
React.createElement('span', { className: 'dsh-super-code-circle ' + tone, 'aria-hidden': true }, row.id === view.root ? text(t, 'main.agent').slice(0, 1) : String(index)),
|
|
1552
1595
|
React.createElement('span', { className: 'dsh-super-code-tree-content' },
|
|
1553
1596
|
React.createElement('span', { className: 'dsh-super-code-tree-title' }, title),
|
|
1554
1597
|
React.createElement('span', { className: 'dsh-super-code-node-status', 'data-tone': tone }, React.createElement('i', { 'aria-hidden': true }), status),
|
|
@@ -1638,10 +1681,10 @@ function detailRecord(entry, t = key => zh[key] || key) {
|
|
|
1638
1681
|
label: text(t, failed ? 'detail.toolError' : 'detail.toolResult'),
|
|
1639
1682
|
text: contentText(direct ? data.message.content : blocks.flatMap(block => block.content || []), t) }
|
|
1640
1683
|
}
|
|
1641
|
-
if (event.type === 'turn/end' && data.reason?.kind
|
|
1684
|
+
if (event.type === 'turn/end' && ['error', 'max-tokens'].includes(data.reason?.kind)) {
|
|
1642
1685
|
const failure = data.reason.error
|
|
1643
1686
|
// Match the host's AUTH handling: provider diagnostics can echo credentials.
|
|
1644
|
-
const message = failure?.code === 'AUTH' ? text(t, 'detail.authError')
|
|
1687
|
+
const message = data.reason.kind === 'max-tokens' ? text(t, 'detail.maxTokens') : failure?.code === 'AUTH' ? text(t, 'detail.authError')
|
|
1645
1688
|
: (typeof failure?.message === 'string' && failure.message) || text(t, 'detail.incomplete')
|
|
1646
1689
|
return { ...base, kind: 'error', format: 'text', label: text(t, 'detail.error'), text: message }
|
|
1647
1690
|
}
|
|
@@ -1766,10 +1809,12 @@ function memoryLibraryTarget(address, current) {
|
|
|
1766
1809
|
/** A repeated explicit navigation reopens its entry; ordinary remounts retain reading state. */
|
|
1767
1810
|
function memoryLibraryNavigation(saved, tab, current) {
|
|
1768
1811
|
const address = typeof tab.navigation?.params?.memory === 'string' ? tab.navigation.params.memory : tab.contentId
|
|
1769
|
-
const navigationKey = `${address}/${tab.navigation?.revision || 0}`
|
|
1770
|
-
if (saved.navigationKey === navigationKey) return saved
|
|
1771
1812
|
const target = memoryLibraryTarget(address, current)
|
|
1772
|
-
|
|
1813
|
+
const navigationKey = `${address}/${tab.navigation?.revision || 0}/${target.sessionId}`
|
|
1814
|
+
if (saved.navigationKey === navigationKey) return saved
|
|
1815
|
+
return { ...saved, navigationKey, sessionId: target.sessionId,
|
|
1816
|
+
...(!target.id && saved.sessionId && saved.sessionId !== target.sessionId && saved.scope !== 'global'
|
|
1817
|
+
? { selected: null, query: '', topicFilter: '', top: 0, detailTop: 0 } : {}), ...(target.id ? {
|
|
1773
1818
|
scope: target.scope, selected: { topic: target.topic, id: target.id }, detailTop: 0,
|
|
1774
1819
|
...(saved.scope && saved.scope !== target.scope ? { topicFilter: '', top: 0 } : {}),
|
|
1775
1820
|
} : {}) }
|
|
@@ -1872,7 +1917,8 @@ function MemoryLibrary({ useTabInfo, useSessions, sessionId: scopeSessionId, api
|
|
|
1872
1917
|
const target = memoryLibraryTarget(address, current)
|
|
1873
1918
|
const saved = useMemo(() => {
|
|
1874
1919
|
const value = memoryStates.get(tab.signal) || {}
|
|
1875
|
-
|
|
1920
|
+
const editing = value.editorStore?.getSnapshot()
|
|
1921
|
+
if (!editing?.draft && !editing?.confirmation && !editing?.busy) Object.assign(value, memoryLibraryNavigation(value, tab, current))
|
|
1876
1922
|
memoryStates.set(tab.signal, value)
|
|
1877
1923
|
return value
|
|
1878
1924
|
}, [memoryStates, tab.signal])
|
|
@@ -1894,10 +1940,11 @@ function MemoryLibrary({ useTabInfo, useSessions, sessionId: scopeSessionId, api
|
|
|
1894
1940
|
if (next === saved) return
|
|
1895
1941
|
Object.assign(saved, next)
|
|
1896
1942
|
setScope(saved.scope || target.scope); setSelected(saved.selected || null)
|
|
1943
|
+
setQuery(saved.query || '')
|
|
1897
1944
|
setTopicFilter(saved.topicFilter || '')
|
|
1898
1945
|
setViewport(value => ({ ...value, top: saved.top || 0 }))
|
|
1899
1946
|
if (detailBody.current) detailBody.current.scrollTop = 0
|
|
1900
|
-
}, [saved, address, tab.navigation?.revision, editing.draft, editing.confirmation, editing.busy])
|
|
1947
|
+
}, [saved, address, current, tab.navigation?.revision, editing.draft, editing.confirmation, editing.busy])
|
|
1901
1948
|
useLayoutEffect(() => {
|
|
1902
1949
|
if (!editing.refresh) return
|
|
1903
1950
|
setScope(saved.scope); setSelected(saved.selected); setRevision(value => value + 1)
|
|
@@ -1922,13 +1969,13 @@ function MemoryLibrary({ useTabInfo, useSessions, sessionId: scopeSessionId, api
|
|
|
1922
1969
|
}, [api, tab.visible, sessionId, scope, selectionKey, revision])
|
|
1923
1970
|
useLayoutEffect(() => {
|
|
1924
1971
|
const element = list.current
|
|
1925
|
-
if (!element) return
|
|
1972
|
+
if (!element || visibleState.loading) return
|
|
1926
1973
|
element.scrollTop = saved.top || 0
|
|
1927
1974
|
const resize = () => setViewport({ top: element.scrollTop, height: element.clientHeight || 600 })
|
|
1928
1975
|
resize()
|
|
1929
1976
|
const observer = new ResizeObserver(resize); observer.observe(element)
|
|
1930
1977
|
return () => observer.disconnect()
|
|
1931
|
-
}, [selected, key, tab.visible, Boolean(editing.draft)])
|
|
1978
|
+
}, [selected, key, tab.visible, Boolean(editing.draft), visibleState])
|
|
1932
1979
|
useLayoutEffect(() => {
|
|
1933
1980
|
if (detailBody.current) detailBody.current.scrollTop = saved.detailTop || 0
|
|
1934
1981
|
}, [selectionKey, detail?.key, tab.visible, Boolean(editing.draft)])
|
|
@@ -1991,7 +2038,7 @@ function MemoryLibrary({ useTabInfo, useSessions, sessionId: scopeSessionId, api
|
|
|
1991
2038
|
React.createElement('div', { className: 'dsh-super-code-memory-results' },
|
|
1992
2039
|
React.createElement('div', { className: 'dsh-super-code-memory-list-heading' }, React.createElement('strong', null, topicFilter || text(t, 'memory.allTopics')), React.createElement('small', null, text(t, 'memory.count', { count: page.count }))),
|
|
1993
2040
|
React.createElement('div', { ref: list, className: 'dsh-super-code-memory-list', role: 'list', 'aria-busy': visibleState.loading, onScroll: event => { saved.top = event.currentTarget.scrollTop; setViewport(value => ({ ...value, top: saved.top })) } },
|
|
1994
|
-
visibleState.loading && !visibleState.error && React.createElement('p', { role: 'status', className: 'dsh-super-code-memory-empty' }, text(t, 'memory.loading')),
|
|
2041
|
+
visibleState.loading && !visibleState.error && !visibleState.items.length && React.createElement('p', { role: 'status', className: 'dsh-super-code-memory-empty' }, text(t, 'memory.loading')),
|
|
1995
2042
|
visibleState.error && React.createElement('p', { role: 'alert' }, text(t, 'memory.error')),
|
|
1996
2043
|
!visibleState.error && !visibleState.loading && !page.count && React.createElement('p', { className: 'dsh-super-code-memory-empty' }, text(t, query || topicFilter ? 'memory.noMatches' : 'memory.empty')),
|
|
1997
2044
|
React.createElement('div', { 'aria-hidden': true, style: { height: page.before } }),
|
|
@@ -2054,7 +2101,7 @@ function AgentDetail({ useTabInfo, useSessions, useSessionStatus, sessionId, cre
|
|
|
2054
2101
|
const input = totals ? (totals.uncachedInputTokens || 0) + (totals.cacheReadTokens || 0) + (totals.cacheWriteTokens || 0) : 0
|
|
2055
2102
|
const format = value => value === undefined ? text(t, 'detail.unavailable') : value.toLocaleString(localeCode(t))
|
|
2056
2103
|
const tasks = projections.superCodeTasks
|
|
2057
|
-
const toolNames = new Map(
|
|
2104
|
+
const toolNames = new Map()
|
|
2058
2105
|
const task = tasks?.current?.kind === 'task' ? tasks.current : undefined
|
|
2059
2106
|
const title = node?.title || node?.displayTitle || text(t, 'detail.title')
|
|
2060
2107
|
const metrics = [
|
|
@@ -2094,7 +2141,12 @@ function AgentDetail({ useTabInfo, useSessions, useSessionStatus, sessionId, cre
|
|
|
2094
2141
|
snapshot.hasMore && React.createElement(ActionButton, { type: 'button', disabled: snapshot.status === 'paging', onClick: inspector.older }, snapshot.status === 'paging' ? text(t, 'detail.read') : text(t, 'detail.older')),
|
|
2095
2142
|
(snapshot.earlier || snapshot.truncated) && React.createElement(ActionButton, { type: 'button', onClick: latest }, text(t, 'detail.latest')),
|
|
2096
2143
|
snapshot.status === 'ready' && !snapshot.items.length && React.createElement('p', null, text(t, 'detail.empty')),
|
|
2097
|
-
snapshot.items.map(record =>
|
|
2144
|
+
snapshot.items.map(record => {
|
|
2145
|
+
const data = record.entry?.event?.data
|
|
2146
|
+
const key = JSON.stringify([data?.turn, data?.step, record.callId])
|
|
2147
|
+
if (record.toolName && record.callId) toolNames.set(key, record.toolName)
|
|
2148
|
+
return React.createElement(AgentMessage, { key: record.seq, record, saved, t, toolName: toolNames.get(key) })
|
|
2149
|
+
})),
|
|
2098
2150
|
unread && React.createElement(ActionButton, { type: 'button', className: 'dsh-super-code-new-content', onClick: () => {
|
|
2099
2151
|
saved.following = true; log.current.scrollTop = log.current.scrollHeight; markUnread(false)
|
|
2100
2152
|
} }, text(t, 'detail.new')))
|
|
@@ -2128,7 +2180,7 @@ const memoryRemoteContribution = {
|
|
|
2128
2180
|
|
|
2129
2181
|
// Budget settings use the same public Remote transport as the preset settings.
|
|
2130
2182
|
const budgetRemoteContribution = {
|
|
2131
|
-
package: 'dsh-super-code', descriptors: ['readConfig', 'saveConfig', 'resetConfig'].map(method => ({
|
|
2183
|
+
package: 'dsh-super-code', descriptors: ['readConfig', 'saveConfig', 'resetConfig', 'openSkillsDirectory', 'syncSkills'].map(method => ({
|
|
2132
2184
|
id: `dsh-super-code:superCodeBudgets/${method}`, service: 'superCodeBudgets', namespace: 'superCodeBudgets', method, invocation: { kind: 'direct' },
|
|
2133
2185
|
parameters: (method === 'saveConfig' ? ['content', 'expected'] : method === 'resetConfig' ? ['expected'] : [])
|
|
2134
2186
|
.map(name => ({ name, wire: name, source: 'json', codec: remoteStringCodec })), result: { mode: 'src-json' },
|
|
@@ -2143,6 +2195,11 @@ const connectionRemoteContribution = {
|
|
|
2143
2195
|
})),
|
|
2144
2196
|
}
|
|
2145
2197
|
|
|
2198
|
+
const skillGroups = [
|
|
2199
|
+
{ id: 'individual', keys: ['grillMeSkill', 'openspecSkills', 'oilUiSkill'] },
|
|
2200
|
+
{ id: 'workflows', keys: ['mattpocockSkills', 'pstackSkills'] },
|
|
2201
|
+
]
|
|
2202
|
+
const skillPackageKeys = skillGroups.flatMap(group => group.keys)
|
|
2146
2203
|
const budgetFields = [
|
|
2147
2204
|
{ key: 'thresholdRatio', group: 'context', factor: 0.01, min: 1, max: 100, step: 'any' },
|
|
2148
2205
|
{ key: 'retainRatio', group: 'context', factor: 0.01, min: 0, max: 100, step: 'any' },
|
|
@@ -2156,14 +2213,15 @@ const budgetFields = [
|
|
|
2156
2213
|
]
|
|
2157
2214
|
function budgetDraft(configuration) {
|
|
2158
2215
|
const deletion = configuration.deletionProtection
|
|
2159
|
-
return Object.fromEntries([['windowsBash', configuration.windowsBash ?? true], ['windowsBashForOfficialPresets', configuration.windowsBashForOfficialPresets ?? false], ['deletionProtection', deletion === true ? 'strict' : deletion === false ? 'off' : deletion ?? 'relaxed'], ['deletionProtectionForOfficialPresets', configuration.deletionProtectionForOfficialPresets ?? false], ['applyToOfficialPresets', configuration.applyToOfficialPresets ?? false], ['pressureBasis', configuration.budgets?.pressureBasis ?? ''],
|
|
2216
|
+
return Object.fromEntries([...skillPackageKeys.map(key => [key, configuration[key] ?? false]), ['windowsBash', configuration.windowsBash ?? true], ['windowsBashForOfficialPresets', configuration.windowsBashForOfficialPresets ?? false], ['deletionProtection', deletion === true ? 'strict' : deletion === false ? 'off' : deletion ?? 'relaxed'], ['deletionProtectionForOfficialPresets', configuration.deletionProtectionForOfficialPresets ?? false], ['applyToOfficialPresets', configuration.applyToOfficialPresets ?? false], ['pressureBasis', configuration.budgets?.pressureBasis ?? ''],
|
|
2160
2217
|
...budgetFields.map(field => {
|
|
2161
2218
|
const value = field.root ? configuration[field.key] : configuration.budgets?.[field.key]
|
|
2162
2219
|
return [field.key, value === undefined ? '' : String(value / field.factor)]
|
|
2163
2220
|
})])
|
|
2164
2221
|
}
|
|
2165
|
-
function budgetConfiguration(draft) {
|
|
2222
|
+
function budgetConfiguration(draft, previous = {}) {
|
|
2166
2223
|
const config = {}, budgets = {}
|
|
2224
|
+
const before = budgetDraft(previous)
|
|
2167
2225
|
if (draft.deletionProtection !== undefined) {
|
|
2168
2226
|
if (!['off', 'relaxed', 'strict'].includes(draft.deletionProtection)) return { ok: false, error: 'invalid' }
|
|
2169
2227
|
config.deletionProtection = draft.deletionProtection
|
|
@@ -2186,8 +2244,11 @@ function budgetConfiguration(draft) {
|
|
|
2186
2244
|
const value = Number(input)
|
|
2187
2245
|
if (!Number.isFinite(value) || value < field.min || (field.max !== undefined && value > field.max)) return { ok: false, error: 'invalid' }
|
|
2188
2246
|
const scaled = value * field.factor
|
|
2189
|
-
const
|
|
2190
|
-
|
|
2247
|
+
const stored = field.root ? previous[field.key] : previous.budgets?.[field.key]
|
|
2248
|
+
// Percent/seconds formatting must not change an untouched stored number.
|
|
2249
|
+
const unchanged = stored !== undefined && input === before[field.key]
|
|
2250
|
+
const selected = unchanged ? stored : field.step === 'any' ? scaled : Math.round(scaled)
|
|
2251
|
+
if (field.step !== 'any' && ((!unchanged && Math.abs(selected - scaled) > 1e-7) || !Number.isSafeInteger(selected))) return { ok: false, error: 'invalid' }
|
|
2191
2252
|
;(field.root ? config : budgets)[field.key] = selected
|
|
2192
2253
|
}
|
|
2193
2254
|
if ((budgets.retainRatio ?? 0.16) >= (budgets.thresholdRatio ?? 0.8)) return { ok: false, error: 'retain' }
|
|
@@ -2241,20 +2302,152 @@ function ChoiceCards({ name, label, value, choices, onChange, disabled = false }
|
|
|
2241
2302
|
|
|
2242
2303
|
/** Each budget tab writes only its own fields and carries the other tab's stored values through. */
|
|
2243
2304
|
function budgetSectionConfiguration(section, draft, snapshot) {
|
|
2305
|
+
if (section === 'skills') return skillPackageKeys.every(key => typeof draft[key] === 'boolean')
|
|
2306
|
+
? { ok: true, configuration: { ...snapshot.configuration, ...Object.fromEntries(skillPackageKeys.map(key => [key, draft[key]])) } }
|
|
2307
|
+
: { ok: false, error: 'invalid' }
|
|
2244
2308
|
if (section === 'shell') return typeof draft.windowsBash === 'boolean' && typeof draft.windowsBashForOfficialPresets === 'boolean'
|
|
2245
2309
|
? { ok: true, configuration: { ...snapshot.configuration, windowsBash: draft.windowsBash, windowsBashForOfficialPresets: draft.windowsBashForOfficialPresets } }
|
|
2246
2310
|
: { ok: false, error: 'invalid' }
|
|
2247
|
-
const parsed = budgetConfiguration(draft)
|
|
2311
|
+
const parsed = budgetConfiguration(draft, snapshot.configuration)
|
|
2248
2312
|
if (!parsed.ok) return parsed
|
|
2249
2313
|
const current = snapshot.configuration
|
|
2250
2314
|
return { ok: true, configuration: section === 'protection'
|
|
2251
2315
|
? { ...current, deletionProtection: draft.deletionProtection, deletionProtectionForOfficialPresets: draft.deletionProtectionForOfficialPresets }
|
|
2252
|
-
: { ...parsed.configuration, windowsBash: current.windowsBash, windowsBashForOfficialPresets: current.windowsBashForOfficialPresets, deletionProtection: current.deletionProtection, deletionProtectionForOfficialPresets: current.deletionProtectionForOfficialPresets } }
|
|
2316
|
+
: { ...parsed.configuration, ...Object.fromEntries(skillPackageKeys.map(key => [key, current[key]])), windowsBash: current.windowsBash, windowsBashForOfficialPresets: current.windowsBashForOfficialPresets, deletionProtection: current.deletionProtection, deletionProtectionForOfficialPresets: current.deletionProtectionForOfficialPresets } }
|
|
2253
2317
|
}
|
|
2254
2318
|
function createBudgetAutosave(api, section = 'context') {
|
|
2255
2319
|
return createAutosave(api, { draft: budgetDraft({}), toDraft: budgetDraft,
|
|
2256
2320
|
toConfiguration: (draft, snapshot) => budgetSectionConfiguration(section, draft, snapshot) })
|
|
2257
2321
|
}
|
|
2322
|
+
|
|
2323
|
+
/** All budget tabs edit one document; finish local writes before another tab reads it. */
|
|
2324
|
+
function createBudgetEditors(api) {
|
|
2325
|
+
return { ...createSettingsEditors(api, Object.fromEntries(['context', 'shell', 'protection', 'skills']
|
|
2326
|
+
.map(section => [section, source => createBudgetAutosave(source, section)]))),
|
|
2327
|
+
openSkillsDirectory: () => api.openSkillsDirectory(), syncSkills: () => api.syncSkills() }
|
|
2328
|
+
}
|
|
2329
|
+
|
|
2330
|
+
/** Recreate only the native Skill UI cache; Agent and input lifetimes stay owned by DSH. */
|
|
2331
|
+
async function refreshNativeSkillMenus(ctx, plugin, signal) {
|
|
2332
|
+
for (const fiber of [...ctx.registry.get(plugin)?.fibers ?? []]) {
|
|
2333
|
+
if (signal.aborted) return
|
|
2334
|
+
await fiber.restart()
|
|
2335
|
+
}
|
|
2336
|
+
if (signal.aborted) return
|
|
2337
|
+
for (const id of Object.keys(ctx.sessions.list.getSnapshot().byId)) {
|
|
2338
|
+
const scope = ctx.sessions.scope(id)
|
|
2339
|
+
if (scope) ctx.inputTriggers.sessionOf(scope).refreshOpenMenu()
|
|
2340
|
+
}
|
|
2341
|
+
}
|
|
2342
|
+
|
|
2343
|
+
/** Observe accepted host settings, including writes from other connected clients. */
|
|
2344
|
+
function synchronizeSkillMenus(ctx, api, plugin, onError) {
|
|
2345
|
+
const lifetime = new AbortController()
|
|
2346
|
+
let namespace, applied = '', dirty = false, running = false
|
|
2347
|
+
const refresh = ns => {
|
|
2348
|
+
if (lifetime.signal.aborted || (ns && namespace && ns !== namespace)) return
|
|
2349
|
+
dirty = true
|
|
2350
|
+
if (running) return
|
|
2351
|
+
running = true
|
|
2352
|
+
void (async () => {
|
|
2353
|
+
while (dirty && !lifetime.signal.aborted) {
|
|
2354
|
+
dirty = false
|
|
2355
|
+
const response = await api.readConfig()
|
|
2356
|
+
if (lifetime.signal.aborted) return
|
|
2357
|
+
if (!response.ok) throw new Error('Skill settings could not be read')
|
|
2358
|
+
if (dirty) continue
|
|
2359
|
+
namespace = response.value.namespace
|
|
2360
|
+
const draft = budgetDraft(response.value.configuration)
|
|
2361
|
+
const next = JSON.stringify(skillPackageKeys.map(key => draft[key]))
|
|
2362
|
+
if (next !== applied) {
|
|
2363
|
+
await refreshNativeSkillMenus(ctx, plugin, lifetime.signal)
|
|
2364
|
+
if (lifetime.signal.aborted) return
|
|
2365
|
+
applied = next
|
|
2366
|
+
}
|
|
2367
|
+
}
|
|
2368
|
+
})().catch(error => { if (!lifetime.signal.aborted) onError(error) })
|
|
2369
|
+
.finally(() => { running = false; if (dirty && !lifetime.signal.aborted) refresh() })
|
|
2370
|
+
}
|
|
2371
|
+
const off = ctx.remote.$on('settings/document-updated', refresh)
|
|
2372
|
+
const offReset = ctx.on('connection/reset', () => { namespace = undefined; refresh() })
|
|
2373
|
+
refresh()
|
|
2374
|
+
return () => { lifetime.abort(); off(); offReset() }
|
|
2375
|
+
}
|
|
2376
|
+
|
|
2377
|
+
// 只补充包名搜索;真实命令、覆盖优先级和加载仍由宿主负责。
|
|
2378
|
+
function skillPackageSource(ctx) {
|
|
2379
|
+
const packages = [
|
|
2380
|
+
{ name: 'grill-me', label: 'grill-me', directory: 'mattpocock/skills/', names: ['grill-me', 'grilling'] },
|
|
2381
|
+
{ name: 'openspec', label: 'OpenSpec', directory: 'openspec/skills/' },
|
|
2382
|
+
{ name: 'oil-ui', label: 'oil-ui', directory: '', names: ['oil-ui'] },
|
|
2383
|
+
{ name: 'mattpocock', label: 'Matt Pocock Skills', directory: 'mattpocock/skills/' },
|
|
2384
|
+
{ name: 'pstack', label: 'PStack', directory: 'pstack/dsh/skills/' },
|
|
2385
|
+
]
|
|
2386
|
+
return {
|
|
2387
|
+
trigger: '/', name: 'Super Code', order: 3,
|
|
2388
|
+
async candidates(session, { query, signal }) {
|
|
2389
|
+
if (!query || signal.aborted || ctx.sessions.subagentAddress(session.sessionId) !== undefined) return []
|
|
2390
|
+
const matching = icons.rankByName(packages, query)
|
|
2391
|
+
if (!matching.length) return []
|
|
2392
|
+
const response = await ctx.remote.skills.list({ sessionId: session.sessionId }, signal)
|
|
2393
|
+
if (signal.aborted) return []
|
|
2394
|
+
if (!response.ok) throw new Error('Skill catalog could not be read')
|
|
2395
|
+
const skills = response.value.skills
|
|
2396
|
+
const native = new Set(icons.rankByName(skills, query).map(skill => skill.name))
|
|
2397
|
+
return skills.flatMap(skill => {
|
|
2398
|
+
if (native.has(skill.name)) return []
|
|
2399
|
+
const relative = skill.path?.replaceAll('\\', '/').match(/(?:^|\/)(?:skills\/dsh-super-code|builtin\/skills)\/(.+)$/i)?.[1]
|
|
2400
|
+
const pack = matching.find(pack => relative === `${pack.directory}${skill.name}/SKILL.md`
|
|
2401
|
+
&& (!pack.names || pack.names.includes(skill.name)))
|
|
2402
|
+
return pack ? [{ name: skill.name, description: skill.description, section: pack.label }] : []
|
|
2403
|
+
})
|
|
2404
|
+
},
|
|
2405
|
+
onPick({ candidate }) { return { text: `/${candidate.name} ` } },
|
|
2406
|
+
}
|
|
2407
|
+
}
|
|
2408
|
+
|
|
2409
|
+
function settingsRevision(snapshot) {
|
|
2410
|
+
return snapshot.generation ? `${snapshot.revision}:${snapshot.generation}` : String(snapshot.revision)
|
|
2411
|
+
}
|
|
2412
|
+
function createSettingsEditors(api, factories) {
|
|
2413
|
+
let writing = Promise.resolve(), saved, saveCount = 0, readCount = 0, latestRead
|
|
2414
|
+
const saveConfig = (content, expected) => {
|
|
2415
|
+
const result = api.saveConfig(content, expected).then(response => {
|
|
2416
|
+
if (response.ok && response.value.ok) {
|
|
2417
|
+
saved = response.value.snapshot; saveCount++
|
|
2418
|
+
// Carry local, disjoint edits forward without rebasing an external conflict.
|
|
2419
|
+
for (const editor of Object.values(editors)) {
|
|
2420
|
+
const previous = editor.getSnapshot().snapshot
|
|
2421
|
+
if (previous && settingsRevision(previous) === expected) editor.revision(saved)
|
|
2422
|
+
}
|
|
2423
|
+
}
|
|
2424
|
+
return response
|
|
2425
|
+
})
|
|
2426
|
+
writing = Promise.allSettled([writing, result]).then(() => {})
|
|
2427
|
+
return result
|
|
2428
|
+
}
|
|
2429
|
+
const editors = Object.fromEntries(Object.entries(factories)
|
|
2430
|
+
.map(([section, create]) => [section, create({ saveConfig })]))
|
|
2431
|
+
const flush = async () => {
|
|
2432
|
+
await Promise.all(Object.values(editors).map(editor => editor.flush()))
|
|
2433
|
+
await writing
|
|
2434
|
+
}
|
|
2435
|
+
return { editors, saveConfig, readConfig: async () => {
|
|
2436
|
+
const sequence = ++readCount
|
|
2437
|
+
await flush()
|
|
2438
|
+
const before = saveCount, response = await api.readConfig()
|
|
2439
|
+
await flush()
|
|
2440
|
+
if (!response.ok) return response
|
|
2441
|
+
// A newer read may already belong to a restarted service. Never let an
|
|
2442
|
+
// older request bring the previous instance back into a form.
|
|
2443
|
+
if (!latestRead || sequence > latestRead.sequence) latestRead = { sequence, snapshot: response.value }
|
|
2444
|
+
const snapshot = latestRead.snapshot
|
|
2445
|
+
// A read already in flight must not undo a newer local save. A fresh read
|
|
2446
|
+
// still accepts a lower revision after the host restarts its settings service.
|
|
2447
|
+
return { ...response, value: saveCount !== before && saved.generation === snapshot.generation && saved.revision > snapshot.revision
|
|
2448
|
+
? saved : snapshot }
|
|
2449
|
+
} }
|
|
2450
|
+
}
|
|
2258
2451
|
function budgetFieldValid(field, input) {
|
|
2259
2452
|
const value = String(input ?? '').trim()
|
|
2260
2453
|
if (!value) return true
|
|
@@ -2270,29 +2463,42 @@ function autosaveState(editing) {
|
|
|
2270
2463
|
: editing.error ? 'error' : editing.notice === 'saved' ? 'saved' : 'idle'
|
|
2271
2464
|
}
|
|
2272
2465
|
|
|
2273
|
-
function BudgetSettings({ api, t, active, section = 'context', onSaved = () => {} }) {
|
|
2466
|
+
function BudgetSettings({ api, t, active, section = 'context', presetStatus, onSaved = () => {} }) {
|
|
2274
2467
|
const protection = section === 'protection'
|
|
2275
|
-
const shell = section === 'shell'
|
|
2276
|
-
const editor =
|
|
2468
|
+
const shell = section === 'shell', skills = section === 'skills'
|
|
2469
|
+
const editor = api.editors[section]
|
|
2277
2470
|
const editing = useSyncExternalStore(editor.subscribe, editor.getSnapshot, editor.getSnapshot)
|
|
2278
2471
|
const { snapshot, draft } = editing
|
|
2279
2472
|
const [loading, setLoading] = useState(false), [failure, setFailure] = useState(''), [notice, setNotice] = useState('')
|
|
2280
2473
|
const [confirmReset, setConfirmReset] = useState(false)
|
|
2474
|
+
const [openingSkills, setOpeningSkills] = useState(false), [directoryError, setDirectoryError] = useState(false)
|
|
2475
|
+
const openSkills = async () => {
|
|
2476
|
+
if (openingSkills) return
|
|
2477
|
+
setOpeningSkills(true); setDirectoryError(false)
|
|
2478
|
+
try {
|
|
2479
|
+
const result = await api.openSkillsDirectory()
|
|
2480
|
+
if (!result.ok || !result.value?.opened) throw new Error('Open failed')
|
|
2481
|
+
} catch { if (alive.current) setDirectoryError(true) }
|
|
2482
|
+
finally { if (alive.current) setOpeningSkills(false) }
|
|
2483
|
+
}
|
|
2281
2484
|
const alive = useRef(false), pending = useRef(false)
|
|
2282
2485
|
const load = async (discard = false) => {
|
|
2283
|
-
if (pending.current
|
|
2486
|
+
if (pending.current) return
|
|
2284
2487
|
pending.current = true; setLoading(true); setFailure('')
|
|
2285
2488
|
try {
|
|
2286
2489
|
const response = await api.readConfig()
|
|
2287
2490
|
if (!response.ok) throw new Error('Remote unavailable')
|
|
2288
|
-
if (alive.current)
|
|
2491
|
+
if (alive.current) {
|
|
2492
|
+
if (discard || !editor.hasChanges()) editor.receive(response.value)
|
|
2493
|
+
else editor.permissions(response.value.writable)
|
|
2494
|
+
}
|
|
2289
2495
|
} catch { if (alive.current) setFailure('connection') }
|
|
2290
2496
|
finally { pending.current = false; if (alive.current) setLoading(false) }
|
|
2291
2497
|
}
|
|
2292
2498
|
useEffect(() => { alive.current = true; return () => { alive.current = false; void editor.flush() } }, [editor])
|
|
2293
2499
|
useEffect(() => { if (editing.saveCount) onSaved() }, [editing.saveCount])
|
|
2294
2500
|
// Other tabs write the same document, so reread on every visit; leaving flushes pending input.
|
|
2295
|
-
|
|
2501
|
+
useLayoutEffect(() => { if (active) load(); else { setConfirmReset(false); void editor.flush() } }, [editor, active])
|
|
2296
2502
|
const reset = async () => {
|
|
2297
2503
|
setConfirmReset(false)
|
|
2298
2504
|
if (pending.current) return
|
|
@@ -2305,8 +2511,8 @@ function BudgetSettings({ api, t, active, section = 'context', onSaved = () => {
|
|
|
2305
2511
|
const base = current.configuration
|
|
2306
2512
|
const configuration = protection
|
|
2307
2513
|
? { ...base, deletionProtection: 'relaxed', deletionProtectionForOfficialPresets: false }
|
|
2308
|
-
: { windowsBash: base.windowsBash, windowsBashForOfficialPresets: base.windowsBashForOfficialPresets, deletionProtection: base.deletionProtection, deletionProtectionForOfficialPresets: base.deletionProtectionForOfficialPresets }
|
|
2309
|
-
const response = await api.saveConfig(JSON.stringify(configuration),
|
|
2514
|
+
: { ...Object.fromEntries(skillPackageKeys.map(key => [key, base[key]])), windowsBash: base.windowsBash, windowsBashForOfficialPresets: base.windowsBashForOfficialPresets, deletionProtection: base.deletionProtection, deletionProtectionForOfficialPresets: base.deletionProtectionForOfficialPresets }
|
|
2515
|
+
const response = await api.saveConfig(JSON.stringify(configuration), settingsRevision(current))
|
|
2310
2516
|
if (!response.ok) throw new Error('Remote unavailable')
|
|
2311
2517
|
if (!alive.current) return
|
|
2312
2518
|
if (response.value.ok) { editor.receive(response.value.snapshot); onSaved(); setNotice('resetDone') }
|
|
@@ -2316,8 +2522,9 @@ function BudgetSettings({ api, t, active, section = 'context', onSaved = () => {
|
|
|
2316
2522
|
}
|
|
2317
2523
|
const disabled = loading || !snapshot?.writable
|
|
2318
2524
|
const edit = (key, value, delay = 0) => { setNotice(''); setFailure(''); editor.change({ [key]: value }, delay) }
|
|
2319
|
-
const parsed = budgetConfiguration(draft)
|
|
2320
|
-
const
|
|
2525
|
+
const parsed = budgetConfiguration(draft, snapshot?.configuration)
|
|
2526
|
+
const storedDraft = budgetDraft(snapshot?.configuration ?? {})
|
|
2527
|
+
const fieldError = field => draft[field.key] !== storedDraft[field.key] && !budgetFieldValid(field, draft[field.key]) ? t('budget.error.range')
|
|
2321
2528
|
: field.key === 'retainRatio' && parsed.error === 'retain' ? t('budget.error.retain')
|
|
2322
2529
|
: field.key === 'ptcTimeoutMs' && parsed.error === 'ptc-order' ? t('budget.error.ptc-order') : ''
|
|
2323
2530
|
const defaultOf = field => {
|
|
@@ -2341,7 +2548,24 @@ function BudgetSettings({ api, t, active, section = 'context', onSaved = () => {
|
|
|
2341
2548
|
const shellStatus = snapshot?.shell
|
|
2342
2549
|
const windowsHost = shellStatus?.platform === 'win32'
|
|
2343
2550
|
const shellTooltip = shellStatus && !windowsHost ? t('shell.windowsOnly') : undefined
|
|
2344
|
-
const content =
|
|
2551
|
+
const content = skills ? React.createElement(React.Fragment, null,
|
|
2552
|
+
React.createElement('div', { className: 'dsh-super-code-settings-footer-actions' },
|
|
2553
|
+
button(t('skills.openDirectory'), openSkills, { disabled: openingSkills || !snapshot?.skills?.canOpen, title: snapshot?.skills?.canOpen ? t('skills.openDirectory') : t('skills.directoryUnavailable') })),
|
|
2554
|
+
directoryError && React.createElement(Callout, { tone: 'error' }, React.createElement('p', null, t('skills.openFailed'))),
|
|
2555
|
+
snapshot?.skills?.state === 'error' && React.createElement(Callout, { tone: 'warning', action: button(t('skills.retry'), async () => {
|
|
2556
|
+
try { await editor.flush(); const result = await api.syncSkills(); if (!result.ok) throw new Error('Sync failed'); if (alive.current) await load() }
|
|
2557
|
+
catch { if (alive.current) setDirectoryError(true) }
|
|
2558
|
+
}) }, React.createElement('p', null, t('skills.directoryError'))),
|
|
2559
|
+
...skillGroups.map((group, index) => React.createElement(SettingsSection, { key: group.id, id: `super-code-skills-${group.id}`, title: t(`skills.${group.id}`), description: index === 0 ? t('skills.scope') : undefined },
|
|
2560
|
+
...group.keys.map(key => React.createElement(SettingRow, { key, id: `super-code-skill-${key}`,
|
|
2561
|
+
label: React.createElement(React.Fragment, null, t(`skills.${key}`), snapshot?.skillPackages?.[key]?.version &&
|
|
2562
|
+
React.createElement('span', { className: 'dsh-super-code-skill-version' }, `v${snapshot.skillPackages[key].version}`)), hint: t(`skills.${key}Hint`) }, described =>
|
|
2563
|
+
React.createElement(ConnectionSwitch, { id: `super-code-skill-${key}`, checked: draft[key], disabled, 'aria-describedby': described, onChange: value => edit(key, value) }))))),
|
|
2564
|
+
!snapshot?.skills && presetStatus && !presetStatus.skillPacks && React.createElement(Callout, { tone: 'warning' }, React.createElement('p', null, t(presetStatus.state === 'missing' ? 'skills.missing' : 'skills.upgrade'))),
|
|
2565
|
+
React.createElement('div', { className: 'dsh-super-code-settings-guidance' },
|
|
2566
|
+
...['commands', 'openspecRequirement', 'pstackRequirement'].map(key =>
|
|
2567
|
+
React.createElement('p', { key }, t(`skills.${key}`)))))
|
|
2568
|
+
: shell ? React.createElement(SettingsSection, { id: 'super-code-shell', title: t('shell.title') },
|
|
2345
2569
|
React.createElement(SettingRow, { id: 'super-code-windows-bash', label: t('shell.enabled'),
|
|
2346
2570
|
hint: !windowsHost ? t('shell.otherPlatform') : t('shell.hint') }, described =>
|
|
2347
2571
|
React.createElement(ConnectionSwitch, { id: 'super-code-windows-bash', checked: draft.windowsBash,
|
|
@@ -2384,18 +2608,18 @@ function BudgetSettings({ api, t, active, section = 'context', onSaved = () => {
|
|
|
2384
2608
|
snapshot?.ptcMaxTimeoutMs && text(t, 'budget.ptcCeiling', { seconds: snapshot.ptcMaxTimeoutMs / 1000 })] }, ...rows('execution')),
|
|
2385
2609
|
React.createElement(SettingsSection, { id: 'super-code-budget-exclusive', title: t('budget.superCode'), description: t('budget.superCodeHint') }, ...rows('superCode')))
|
|
2386
2610
|
return React.createElement('section', { className: 'dsh-super-code-budgets' },
|
|
2387
|
-
React.createElement('form', { className: 'dsh-super-code-stack', 'aria-label': t(shell ? 'shell.title' : protection ? 'delete.title' : 'budget.title'), 'aria-busy': loading || editing.saving,
|
|
2611
|
+
React.createElement('form', { className: 'dsh-super-code-stack', 'aria-label': t(skills ? 'skills.title' : shell ? 'shell.title' : protection ? 'delete.title' : 'budget.title'), 'aria-busy': loading || editing.saving,
|
|
2388
2612
|
onSubmit: event => { event.preventDefault(); void editor.flush() } },
|
|
2389
2613
|
problem && React.createElement(Callout, { tone: 'error',
|
|
2390
2614
|
action: failure === 'connection' || problem === 'conflict' ? button(t('budget.reload'), () => load(true))
|
|
2391
|
-
: saveError ? button(t('save.retry'), () => { void editor.retry() }) : null },
|
|
2615
|
+
: saveError ? button(t('save.retry'), () => { void editor.retry() }, { disabled }) : null },
|
|
2392
2616
|
React.createElement('p', null, t(`budget.error.${problem}`))),
|
|
2393
2617
|
snapshot && !snapshot.writable && React.createElement(Callout, { tone: 'warning' }, React.createElement('p', null, t('budget.error.read-only'))),
|
|
2394
2618
|
notice && React.createElement(Callout, { tone: 'success' }, React.createElement('p', null, t(`budget.${notice}`))),
|
|
2395
2619
|
content,
|
|
2396
2620
|
React.createElement('div', { className: 'dsh-super-code-settings-footer' },
|
|
2397
2621
|
React.createElement(SaveIndicator, { state: autosaveState(editing), t }),
|
|
2398
|
-
!shell && React.createElement('div', { className: 'dsh-super-code-settings-footer-actions' },
|
|
2622
|
+
!shell && !skills && React.createElement('div', { className: 'dsh-super-code-settings-footer-actions' },
|
|
2399
2623
|
confirmReset ? React.createElement(React.Fragment, null,
|
|
2400
2624
|
React.createElement('span', null, t('budget.resetQuestion')),
|
|
2401
2625
|
button(t('preset.cancel'), () => setConfirmReset(false)),
|
|
@@ -2432,7 +2656,7 @@ function synchronizePresetDisplay(api, locale, reload, onError, preferenceScope)
|
|
|
2432
2656
|
last = language
|
|
2433
2657
|
needsReload ||= result.value.changed
|
|
2434
2658
|
}
|
|
2435
|
-
if (!disposed && settled && needsReload && pending === last) reload()
|
|
2659
|
+
if (!disposed && settled && needsReload && pending === last) { reload(); needsReload = false }
|
|
2436
2660
|
} catch (error) { if (!disposed) onError(error) }
|
|
2437
2661
|
finally { running = false }
|
|
2438
2662
|
})()
|
|
@@ -2472,7 +2696,7 @@ function createAutosave(api, { draft: initialDraft, toDraft, toConfiguration })
|
|
|
2472
2696
|
while (acknowledged < version) {
|
|
2473
2697
|
const sent = version, parsed = toConfiguration(state.draft, state.snapshot)
|
|
2474
2698
|
if (!parsed.ok) { blocked = version; update({ error: parsed.error || 'invalid' }); break }
|
|
2475
|
-
const result = await api.saveConfig(JSON.stringify(parsed.configuration),
|
|
2699
|
+
const result = await api.saveConfig(JSON.stringify(parsed.configuration), settingsRevision(state.snapshot))
|
|
2476
2700
|
if (!result.ok) throw new Error('Remote unavailable')
|
|
2477
2701
|
if (!result.value.ok) { blocked = version; update({ error: result.value.error }); break }
|
|
2478
2702
|
acknowledged = sent
|
|
@@ -2492,7 +2716,18 @@ function createAutosave(api, { draft: initialDraft, toDraft, toConfiguration })
|
|
|
2492
2716
|
acknowledged = ++version
|
|
2493
2717
|
update({ snapshot, draft, error: '', notice: '' })
|
|
2494
2718
|
},
|
|
2495
|
-
|
|
2719
|
+
permissions: writable => {
|
|
2720
|
+
// Keep the draft and its CAS baseline while reflecting current host permissions.
|
|
2721
|
+
if (state.snapshot && state.snapshot.writable !== writable) update({ snapshot: { ...state.snapshot, writable } })
|
|
2722
|
+
},
|
|
2723
|
+
revision: snapshot => {
|
|
2724
|
+
const previous = state.snapshot ? toDraft(state.snapshot.configuration) : initialDraft
|
|
2725
|
+
const next = toDraft(snapshot.configuration)
|
|
2726
|
+
// A local save may change an untouched field in this page (for example
|
|
2727
|
+
// the Home switch). Carry it forward while preserving actual edits.
|
|
2728
|
+
update({ snapshot, draft: Object.fromEntries(Object.entries(next).map(([key, value]) =>
|
|
2729
|
+
[key, JSON.stringify(state.draft[key]) === JSON.stringify(previous[key]) ? value : state.draft[key]])) })
|
|
2730
|
+
},
|
|
2496
2731
|
change: (patch, delay = 0) => {
|
|
2497
2732
|
version++
|
|
2498
2733
|
update({ draft: { ...state.draft, ...patch }, error: '', notice: '' })
|
|
@@ -2554,22 +2789,27 @@ function connectionSessions(overview) {
|
|
|
2554
2789
|
}
|
|
2555
2790
|
function ConnectionActivity({ api, t, active, openSession }) {
|
|
2556
2791
|
const [overview, setOverview] = useState(null), [busy, setBusy] = useState(false), [error, setError] = useState(false)
|
|
2557
|
-
const alive = useRef(false), pending = useRef(false)
|
|
2558
|
-
const load =
|
|
2559
|
-
if (pending.current) return
|
|
2560
|
-
pending.current =
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
finally { pending.current = false }
|
|
2792
|
+
const alive = useRef(false), pending = useRef(false), disconnecting = useRef(false)
|
|
2793
|
+
const load = () => {
|
|
2794
|
+
if (pending.current || disconnecting.current) return pending.current
|
|
2795
|
+
pending.current = (async () => {
|
|
2796
|
+
try { const result = await api.overview(); if (!result.ok) throw new Error(); if (alive.current) { setOverview(result.value); setError(false) } }
|
|
2797
|
+
catch { if (alive.current) setError(true) }
|
|
2798
|
+
})().finally(() => { pending.current = false })
|
|
2799
|
+
return pending.current
|
|
2564
2800
|
}
|
|
2565
2801
|
useEffect(() => { alive.current = true; return () => { alive.current = false } }, [api])
|
|
2566
2802
|
useEffect(() => { if (!active) return; load(); const timer = setInterval(load, 2000); return () => clearInterval(timer) }, [active, api])
|
|
2567
2803
|
const disconnect = async id => {
|
|
2568
|
-
if (
|
|
2569
|
-
|
|
2570
|
-
try {
|
|
2804
|
+
if (disconnecting.current) return
|
|
2805
|
+
disconnecting.current = true; setBusy(true)
|
|
2806
|
+
try {
|
|
2807
|
+
await pending.current
|
|
2808
|
+
if (!alive.current) return
|
|
2809
|
+
const result = await api.disconnectClient(id); if (!result.ok) throw new Error()
|
|
2810
|
+
}
|
|
2571
2811
|
catch { if (alive.current) setError(true); return }
|
|
2572
|
-
finally {
|
|
2812
|
+
finally { disconnecting.current = false; if (alive.current) setBusy(false) }
|
|
2573
2813
|
if (alive.current) load()
|
|
2574
2814
|
}
|
|
2575
2815
|
const groups = overview ? connectionSessions(overview) : { connected: [], history: [] }
|
|
@@ -2588,8 +2828,8 @@ function ConnectionActivity({ api, t, active, openSession }) {
|
|
|
2588
2828
|
error && React.createElement('p', { role: 'alert' }, t('home.error')))
|
|
2589
2829
|
}
|
|
2590
2830
|
|
|
2591
|
-
function ConnectionSettings({ api, t, active, openSession, onSaved = () => {} }) {
|
|
2592
|
-
const editor =
|
|
2831
|
+
function ConnectionSettings({ api, settings, t, active, openSession, onSaved = () => {} }) {
|
|
2832
|
+
const editor = settings.editors.connection
|
|
2593
2833
|
const editing = useSyncExternalStore(editor.subscribe, editor.getSnapshot, editor.getSnapshot)
|
|
2594
2834
|
const { snapshot, draft, saving } = editing
|
|
2595
2835
|
const [catalog, setCatalog] = useState({ items: [], picker: 'unavailable' }), [browser, setBrowser] = useState(false)
|
|
@@ -2606,30 +2846,39 @@ function ConnectionSettings({ api, t, active, openSession, onSaved = () => {} })
|
|
|
2606
2846
|
if (pending.current || (discard && editor.getSnapshot().saving)) return
|
|
2607
2847
|
pending.current = true; setBusy(true); setError('')
|
|
2608
2848
|
try {
|
|
2609
|
-
const [config, directories, credential] = await Promise.all([
|
|
2610
|
-
|
|
2849
|
+
const [config, directories, credential] = await Promise.all([
|
|
2850
|
+
settings.readConfig(), api.directories().catch(() => ({ ok: false })), api.revealToken().catch(() => ({ ok: false })),
|
|
2851
|
+
])
|
|
2852
|
+
if (!config.ok) throw new Error()
|
|
2611
2853
|
if (!alive.current) return
|
|
2612
|
-
setCatalog(directories.value)
|
|
2613
|
-
|
|
2614
|
-
if (
|
|
2854
|
+
if (directories.ok) setCatalog(directories.value)
|
|
2855
|
+
else setError('unavailable')
|
|
2856
|
+
if (discard || !editor.hasChanges()) receive(config.value, directories.ok ? directories.value : catalog)
|
|
2857
|
+
else editor.permissions(config.value.writable)
|
|
2858
|
+
if (visible.current) {
|
|
2859
|
+
setToken(credential.ok ? credential.value.token : '')
|
|
2860
|
+
if (!credential.ok && config.value.url) setError('unavailable')
|
|
2861
|
+
}
|
|
2615
2862
|
} catch { if (alive.current) setError('unavailable') }
|
|
2616
2863
|
finally { pending.current = false; if (alive.current) setBusy(false) }
|
|
2617
2864
|
}
|
|
2618
2865
|
const action = async kind => {
|
|
2619
2866
|
if (pending.current) return
|
|
2620
2867
|
pending.current = true; setBusy(true); setError(''); setNotice('')
|
|
2868
|
+
if (kind === 'rotate') setToken('')
|
|
2621
2869
|
try {
|
|
2622
2870
|
const response = kind === 'rotate' ? await api.rotateToken(String(snapshot.revision)) : await api.revealToken()
|
|
2623
2871
|
if (!response.ok) throw new Error()
|
|
2624
2872
|
if (!alive.current) return
|
|
2625
2873
|
if (kind === 'token') { if (visible.current) setToken(response.value.token) }
|
|
2626
2874
|
else if (response.value.ok) {
|
|
2627
|
-
|
|
2628
|
-
|
|
2629
|
-
|
|
2630
|
-
|
|
2631
|
-
|
|
2632
|
-
|
|
2875
|
+
editor.revision(response.value.snapshot)
|
|
2876
|
+
onSaved()
|
|
2877
|
+
const credential = await api.revealToken()
|
|
2878
|
+
if (!credential.ok) throw new Error()
|
|
2879
|
+
if (!alive.current) return
|
|
2880
|
+
if (visible.current) setToken(credential.value.token)
|
|
2881
|
+
setNotice('rotated')
|
|
2633
2882
|
} else setError(response.value.error)
|
|
2634
2883
|
} catch { if (alive.current) setError('unavailable') }
|
|
2635
2884
|
finally { pending.current = false; if (alive.current) setBusy(false) }
|
|
@@ -2750,36 +2999,38 @@ function SegmentedControl({ label, value, choices, onChange, disabled = false, b
|
|
|
2750
2999
|
...choices.map(([choice, text], index) => React.createElement('button', { key: choice, type: 'button', role: 'radio',
|
|
2751
3000
|
'aria-checked': index === selected, tabIndex: index === focusable ? 0 : -1, disabled, onClick: () => pick(choice) }, text)))
|
|
2752
3001
|
}
|
|
2753
|
-
function SettingsHome({ budgetApi, connectionApi, t, active, revision, navigate, children }) {
|
|
3002
|
+
function SettingsHome({ budgetApi, connectionApi, connectionSettings, t, active, revision, navigate, children }) {
|
|
2754
3003
|
const [budget, setBudget] = useState(null), [connection, setConnection] = useState(null), [overview, setOverview] = useState({ connections: [], sessions: [] })
|
|
2755
3004
|
// Keep the choice visible until the save is acknowledged.
|
|
2756
3005
|
const [saving, setSaving] = useState(null), [failure, setFailure] = useState('')
|
|
3006
|
+
const [refreshing, setRefreshing] = useState(false)
|
|
2757
3007
|
const alive = useRef(false), request = useRef(0), loading = useRef(false), writing = useRef(false)
|
|
2758
|
-
const load = async (force = false) => {
|
|
3008
|
+
const load = async (force = false, blockControls = false) => {
|
|
2759
3009
|
if (!force && (loading.current || writing.current)) return
|
|
2760
3010
|
const sequence = ++request.current
|
|
2761
|
-
loading.current =
|
|
3011
|
+
loading.current = { blocking: blockControls }
|
|
3012
|
+
if (blockControls) setRefreshing(true)
|
|
2762
3013
|
try {
|
|
2763
|
-
const [b, c, o] = await Promise.all([budgetApi.readConfig(),
|
|
3014
|
+
const [b, c, o] = await Promise.all([budgetApi.readConfig(), connectionSettings.readConfig(), connectionApi.overview()])
|
|
2764
3015
|
if (!b.ok || !c.ok || !o.ok) throw new Error()
|
|
2765
3016
|
if (alive.current && sequence === request.current) {
|
|
2766
3017
|
setBudget(b.value); setConnection(c.value); setOverview(o.value); setFailure(value => value === 'load' ? '' : value)
|
|
2767
3018
|
}
|
|
2768
3019
|
} catch { if (alive.current && sequence === request.current) setFailure('load') }
|
|
2769
|
-
finally { if (sequence === request.current) loading.current = false }
|
|
3020
|
+
finally { if (sequence === request.current) { loading.current = false; if (alive.current) setRefreshing(false) } }
|
|
2770
3021
|
}
|
|
2771
3022
|
useEffect(() => { alive.current = true; return () => { alive.current = false } }, [budgetApi, connectionApi])
|
|
2772
|
-
|
|
3023
|
+
useLayoutEffect(() => { if (!active) return; load(true, true); const timer = setInterval(load, 2000); return () => clearInterval(timer) }, [active, revision, budgetApi, connectionApi])
|
|
2773
3024
|
const change = async (kind, value) => {
|
|
2774
3025
|
const current = kind === 'protection' ? budget : connection
|
|
2775
|
-
if (writing.current || !current?.writable) return
|
|
3026
|
+
if (loading.current?.blocking || writing.current || !current?.writable) return
|
|
2776
3027
|
// A save supersedes any poll in flight, so a stale read cannot undo the choice.
|
|
2777
3028
|
writing.current = true; request.current++; loading.current = false
|
|
2778
3029
|
setSaving({ kind, value }); setFailure('')
|
|
2779
3030
|
let saved = false
|
|
2780
3031
|
try {
|
|
2781
3032
|
const configuration = kind === 'protection' ? { ...current.configuration, deletionProtection: value } : { ...current.configuration, enabled: value }
|
|
2782
|
-
const response = await (kind === 'protection' ? budgetApi :
|
|
3033
|
+
const response = await (kind === 'protection' ? budgetApi : connectionSettings).saveConfig(JSON.stringify(configuration), settingsRevision(current))
|
|
2783
3034
|
saved = Boolean(response.ok && response.value.ok)
|
|
2784
3035
|
if (saved && alive.current) {
|
|
2785
3036
|
if (kind === 'protection') setBudget(response.value.snapshot)
|
|
@@ -2811,7 +3062,7 @@ function SettingsHome({ budgetApi, connectionApi, t, active, revision, navigate,
|
|
|
2811
3062
|
row({ key: 'protection', icon: 'shield', title: t('delete.title'), target: 'protection', on: Boolean(mode) && mode !== 'off',
|
|
2812
3063
|
body: budget ? React.createElement('p', { id: 'super-code-home-protection-hint', className: 'dsh-super-code-home-row-hint' }, t(`delete.hint.${mode}`)) : placeholder('text'),
|
|
2813
3064
|
control: budget ? React.createElement(SegmentedControl, { label: t('delete.mode'), value: mode, describedBy: 'super-code-home-protection-hint',
|
|
2814
|
-
choices: ['off', 'relaxed', 'strict'].map(value => [value, t(`delete.${value}`)]), disabled: !budget.writable, busy: saving?.kind === 'protection',
|
|
3065
|
+
choices: ['off', 'relaxed', 'strict'].map(value => [value, t(`delete.${value}`)]), disabled: refreshing || Boolean(saving) || !budget.writable, busy: saving?.kind === 'protection',
|
|
2815
3066
|
onChange: value => change('protection', value) }) : placeholder('control') }),
|
|
2816
3067
|
row({ key: 'connection', icon: 'plug', title: t('home.mcp'), target: 'connection', on: enabled,
|
|
2817
3068
|
body: connection ? React.createElement('p', { className: 'dsh-super-code-home-row-status', 'data-tone': state === 'listening' ? 'success' : state === 'error' ? 'error' : 'idle' },
|
|
@@ -2820,7 +3071,7 @@ function SettingsHome({ budgetApi, connectionApi, t, active, revision, navigate,
|
|
|
2820
3071
|
listening && React.createElement('span', null, t('home.connectionCount', { count: overview.connections.length, max: connection.configuration.maxConnections })),
|
|
2821
3072
|
listening && React.createElement('span', null, t('home.activeSessions', { count: connectionSessions(overview).connected.length }))) : placeholder('text'),
|
|
2822
3073
|
control: needsSetup ? React.createElement(ActionButton, { type: 'button', onClick: () => navigate('connection') }, t('home.setupConnection'))
|
|
2823
|
-
: connection ? React.createElement(ConnectionSwitch, { checked: enabled, disabled: !connection.writable, 'aria-label': t('home.mcp'),
|
|
3074
|
+
: connection ? React.createElement(ConnectionSwitch, { checked: enabled, disabled: refreshing || Boolean(saving) || !connection.writable, 'aria-label': t('home.mcp'),
|
|
2824
3075
|
onChange: value => value && !connection.configuration.allowedDirectories.length ? navigate('connection') : change('connection', value) })
|
|
2825
3076
|
: placeholder('control') })))
|
|
2826
3077
|
}
|
|
@@ -2867,7 +3118,7 @@ function ConnectionConsent({ api, t }) {
|
|
|
2867
3118
|
React.createElement(ActionButton, { type: 'button', disabled: busy, className: 'dsh-super-code-primary-button', onClick: () => resolve('approved') }, t('connection.approveDirectory'))))
|
|
2868
3119
|
}
|
|
2869
3120
|
|
|
2870
|
-
function PresetSettings({ api, budgetApi, connectionApi, openSession = () => {}, t }) {
|
|
3121
|
+
function PresetSettings({ api, budgetApi: budgets, connectionApi, connectionSettings, openSession = () => {}, t }) {
|
|
2871
3122
|
const [tab, setTab] = useState('home')
|
|
2872
3123
|
const [status, setStatus] = useState(null), [customId, setCustomId] = useState(null)
|
|
2873
3124
|
const reinstall = status?.reinstallable ?? status?.state === 'installed'
|
|
@@ -2914,7 +3165,7 @@ function PresetSettings({ api, budgetApi, connectionApi, openSession = () => {},
|
|
|
2914
3165
|
if (!install || value.ok) {
|
|
2915
3166
|
const synced = await api.synchronize(localeCode(t))
|
|
2916
3167
|
if (!synced.ok) throw new Error('Preset display synchronization failed')
|
|
2917
|
-
if (install || synced.value.changed) window.location.reload()
|
|
3168
|
+
if (alive.current && (install || synced.value.changed)) window.location.reload()
|
|
2918
3169
|
}
|
|
2919
3170
|
} catch {
|
|
2920
3171
|
if (alive.current) setError('preset.error.connection')
|
|
@@ -2937,7 +3188,7 @@ function PresetSettings({ api, budgetApi, connectionApi, openSession = () => {},
|
|
|
2937
3188
|
const versionProblem = Boolean(status) && status.state !== 'missing' && versionState !== 'match'
|
|
2938
3189
|
const [overviewRevision, setOverviewRevision] = useState(0)
|
|
2939
3190
|
const onSaved = () => setOverviewRevision(value => value + 1)
|
|
2940
|
-
const tabs = ['home', 'preset', 'context', 'protection', 'connection']
|
|
3191
|
+
const tabs = ['home', 'preset', 'skills', 'context', 'protection', 'connection']
|
|
2941
3192
|
return React.createElement('section', { className: 'dsh-super-code-settings' },
|
|
2942
3193
|
React.createElement('div', { className: 'dsh-super-code-settings-tabs', role: 'tablist', 'aria-label': t('settings.tabs'), onKeyDown: event => {
|
|
2943
3194
|
if (!['ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key)) return
|
|
@@ -2950,7 +3201,7 @@ function PresetSettings({ api, budgetApi, connectionApi, openSession = () => {},
|
|
|
2950
3201
|
tabIndex: tab === value ? 0 : -1, onClick: () => setTab(value) }, t(`settings.${value}Tab`)))),
|
|
2951
3202
|
React.createElement('div', { className: 'dsh-super-code-settings-body' },
|
|
2952
3203
|
React.createElement('div', { role: 'tabpanel', id: 'super-code-panel-home', 'aria-labelledby': 'super-code-tab-home', hidden: tab !== 'home' },
|
|
2953
|
-
React.createElement(SettingsHome, { budgetApi, connectionApi, t, active: tab === 'home', revision: overviewRevision, navigate: setTab },
|
|
3204
|
+
React.createElement(SettingsHome, { budgetApi: budgets, connectionApi, connectionSettings, t, active: tab === 'home', revision: overviewRevision, navigate: setTab },
|
|
2954
3205
|
// Healthy state collapses to one status line; problems expand into a notice with its fix.
|
|
2955
3206
|
React.createElement('header', { className: 'dsh-super-code-settings-header' },
|
|
2956
3207
|
React.createElement('span', { className: 'dsh-super-code-settings-mark', 'aria-hidden': true }, React.createElement(Glyph, { type: 'code' })),
|
|
@@ -3000,13 +3251,15 @@ function PresetSettings({ api, budgetApi, connectionApi, openSession = () => {},
|
|
|
3000
3251
|
status?.delivery === 'declaration' && !status.authorable && React.createElement('p', { role: 'note' }, t('preset.declaredReadonly')),
|
|
3001
3252
|
status?.delivery === 'directory' && !status.authorable && React.createElement('p', { role: 'note' }, t('preset.readonly'))),
|
|
3002
3253
|
error && React.createElement('p', { role: 'alert' }, t(error)),
|
|
3003
|
-
React.createElement(BudgetSettings, { api:
|
|
3254
|
+
React.createElement(BudgetSettings, { api: budgets, t, section: 'shell', active: tab === 'preset', onSaved })),
|
|
3255
|
+
React.createElement('div', { role: 'tabpanel', id: 'super-code-panel-skills', 'aria-labelledby': 'super-code-tab-skills', hidden: tab !== 'skills' },
|
|
3256
|
+
React.createElement(BudgetSettings, { api: budgets, t, section: 'skills', presetStatus: status, active: tab === 'skills', onSaved })),
|
|
3004
3257
|
React.createElement('div', { role: 'tabpanel', id: 'super-code-panel-context', 'aria-labelledby': 'super-code-tab-context', hidden: tab !== 'context' },
|
|
3005
|
-
React.createElement(BudgetSettings, { api:
|
|
3258
|
+
React.createElement(BudgetSettings, { api: budgets, t, active: tab === 'context', onSaved })),
|
|
3006
3259
|
React.createElement('div', { role: 'tabpanel', id: 'super-code-panel-protection', 'aria-labelledby': 'super-code-tab-protection', hidden: tab !== 'protection' },
|
|
3007
|
-
React.createElement(BudgetSettings, { api:
|
|
3260
|
+
React.createElement(BudgetSettings, { api: budgets, t, section: 'protection', active: tab === 'protection', onSaved })),
|
|
3008
3261
|
React.createElement('div', { role: 'tabpanel', id: 'super-code-panel-connection', 'aria-labelledby': 'super-code-tab-connection', hidden: tab !== 'connection' },
|
|
3009
|
-
React.createElement(ConnectionSettings, { api: connectionApi, t, active: tab === 'connection', openSession, onSaved }))),
|
|
3262
|
+
React.createElement(ConnectionSettings, { api: connectionApi, settings: connectionSettings, t, active: tab === 'connection', openSession, onSaved }))),
|
|
3010
3263
|
confirmation && React.createElement('dialog', { ref: dialog, className: 'dsh-super-code-confirm',
|
|
3011
3264
|
'aria-labelledby': 'super-code-confirm-title', 'aria-describedby': 'super-code-confirm-hint',
|
|
3012
3265
|
onKeyDown: event => { if (event.key === 'Escape') event.stopPropagation() },
|
|
@@ -3055,6 +3308,13 @@ function apply(ctx) {
|
|
|
3055
3308
|
}
|
|
3056
3309
|
ready.effect(() => () => { navigation.openSession = () => {} })
|
|
3057
3310
|
})
|
|
3311
|
+
ctx.inject(['remote.superCodeBudgets', 'inputTriggers'], ready => {
|
|
3312
|
+
ready.effect(() => synchronizeSkillMenus(ready, ready.remote.superCodeBudgets, skillUi,
|
|
3313
|
+
error => console.warn('Super Code Skill menu refresh:', error)), 'super-code: live skill menus')
|
|
3314
|
+
})
|
|
3315
|
+
ctx.inject(['remote.skills', 'inputTriggers'], ready => {
|
|
3316
|
+
ready.effect(() => ready.inputTriggers.registerSource(skillPackageSource(ready)), 'super-code: skill package search')
|
|
3317
|
+
})
|
|
3058
3318
|
ctx.inject(['remote.superCodeConnection'], ready => {
|
|
3059
3319
|
ready.slots.inject('shell.overlay', () => ready.slots.register({
|
|
3060
3320
|
name: 'shell.overlay', id: 'super-code-directory-consent', order: 180, locale: LOCALE_NS,
|
|
@@ -3065,13 +3325,17 @@ function apply(ctx) {
|
|
|
3065
3325
|
// service here: Cordis rejects even optional reads without an injection.
|
|
3066
3326
|
const preferenceService = 'configForms' in ctx ? 'configForms' : 'settingsScope'
|
|
3067
3327
|
ctx.inject(['remote.superCodePresets', 'remote.superCodeBudgets', 'remote.superCodeConnection', preferenceService], ready => {
|
|
3328
|
+
// Settings windows may close while a save is pending. Keep each document's
|
|
3329
|
+
// editor with its Remote service so reopening waits for that same save.
|
|
3330
|
+
const budgets = createBudgetEditors(ready.remote.superCodeBudgets)
|
|
3331
|
+
const connections = createSettingsEditors(ready.remote.superCodeConnection, { connection: createConnectionAutosave })
|
|
3068
3332
|
const preferenceScope = preferenceService === 'configForms'
|
|
3069
3333
|
? ready.configForms.get('locale') : ready.settingsScope.bind({ namespace: 'locale' })
|
|
3070
3334
|
ready.effect(() => synchronizePresetDisplay(ready.remote.superCodePresets, locale,
|
|
3071
3335
|
() => window.location.reload(), error => console.warn('Super Code preset display:', error), preferenceScope), 'super-code: preset display')
|
|
3072
3336
|
ready.slots.inject('settings.section', () => ready.slots.register({
|
|
3073
3337
|
name: 'settings.section', id: 'super-code', order: 120, label: () => t('preset.title'), locale: LOCALE_NS,
|
|
3074
|
-
inject: () => ({ api: ready.remote.superCodePresets, budgetApi:
|
|
3338
|
+
inject: () => ({ api: ready.remote.superCodePresets, budgetApi: budgets, connectionApi: ready.remote.superCodeConnection, connectionSettings: connections, openSession: id => navigation.openSession(id) }),
|
|
3075
3339
|
}, PresetSettings))
|
|
3076
3340
|
})
|
|
3077
3341
|
ctx.effect(() => {
|
|
@@ -3125,6 +3389,7 @@ function apply(ctx) {
|
|
|
3125
3389
|
.dsh-super-code-settings-mark svg{width:22px;height:22px;color:var(--sc-text)}
|
|
3126
3390
|
.dsh-super-code-settings-head-text{display:grid;gap:4px;min-width:0}
|
|
3127
3391
|
.dsh-super-code-settings-name{font-size:16px;font-weight:600;line-height:1.4;margin:0}
|
|
3392
|
+
.dsh-super-code-skill-version{margin-left:8px;font-size:12px;font-weight:400;color:var(--sc-muted);font-variant-numeric:tabular-nums}
|
|
3128
3393
|
.dsh-super-code-settings-body{padding:20px 24px 24px}
|
|
3129
3394
|
.dsh-super-code-settings-status-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
|
|
3130
3395
|
.dsh-super-code-preset-status{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:4px 0;font-size:13px;min-width:0;flex:1}
|
|
@@ -3153,7 +3418,7 @@ function apply(ctx) {
|
|
|
3153
3418
|
.dsh-super-code-settings-guidance{margin-top:20px;padding-top:12px;border-top:1px solid var(--sc-line);color:var(--sc-muted);font-size:12px}
|
|
3154
3419
|
.dsh-super-code-settings-guidance p{margin:0 0 4px}
|
|
3155
3420
|
.dsh-super-code-settings-tabs{display:flex;gap:24px;padding:0 24px;border-bottom:1px solid var(--sc-line)}
|
|
3156
|
-
.dsh-super-code-settings-tabs>[role=tab]{border:0;border-bottom:2px solid transparent;background:none;color:var(--sc-muted);padding:12px 0;font-size:13px;cursor:pointer}
|
|
3421
|
+
.dsh-super-code-settings-tabs>[role=tab]{flex:none;border:0;border-bottom:2px solid transparent;background:none;color:var(--sc-muted);padding:12px 0;font-size:13px;cursor:pointer}
|
|
3157
3422
|
.dsh-super-code-settings-tabs>[role=tab][aria-selected=true]{border-bottom-color:var(--sc-text);color:var(--sc-text);font-weight:600}
|
|
3158
3423
|
.dsh-super-code-settings-tabs>[role=tab]:focus-visible{outline:2px solid var(--sc-active);outline-offset:3px;border-radius:2px}
|
|
3159
3424
|
.dsh-super-code-settings [role=tabpanel][hidden]{display:none}
|
|
@@ -3799,5 +4064,5 @@ function apply(ctx) {
|
|
|
3799
4064
|
ctx.effect(() => disposeMemoryType, 'super-code: memory library tab')
|
|
3800
4065
|
}
|
|
3801
4066
|
|
|
3802
|
-
return { inject, apply, taskFeedbackRows, feedbackStatus, feedbackListItems, feedbackListLayout, feedbackListIndex, feedbackListWindow, feedbackListAnchor, connectionSessions, createConnectionAutosave, createBudgetAutosave, connectionDraft, connectionConfiguration, budgetDraft, budgetConfiguration, synchronizePresetDisplay, agentSessionState, buildAgentView, visibleAgentRows, agentTreeDisplay, agentTreeTotals, agentTreeLayout, agentExecutionStatus, agentDetailAddress, agentDetailTarget, agentPath, detailRecord, createAgentInspector, agentHistoryRange, agentHistoryRows, agentHistoryWindow, memoryLibraryAddress, memoryLibraryTarget, memoryLibraryNavigation, memoryLibraryWindow, createMemoryEditor, MemoryLibrary }
|
|
4067
|
+
return { inject, apply, skillPackageSource, synchronizeSkillMenus, refreshNativeSkillMenus, taskFeedbackRows, feedbackStatus, feedbackListItems, feedbackListLayout, feedbackListIndex, feedbackListWindow, feedbackListAnchor, connectionSessions, createConnectionAutosave, createBudgetAutosave, createBudgetEditors, connectionDraft, connectionConfiguration, budgetDraft, budgetConfiguration, synchronizePresetDisplay, agentSessionState, buildAgentView, visibleAgentRows, agentTreeDisplay, agentTreeTotals, agentTreeLayout, agentExecutionStatus, agentDetailAddress, agentDetailTarget, agentPath, detailRecord, createAgentInspector, agentHistoryRange, agentHistoryRows, agentHistoryWindow, memoryLibraryAddress, memoryLibraryTarget, memoryLibraryNavigation, memoryLibraryWindow, createMemoryEditor, MemoryLibrary }
|
|
3803
4068
|
} })
|