dsh-pstack 0.3.0-beta.1 → 0.3.1
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/README.md +122 -76
- package/README.zh.md +116 -70
- package/assets/agent-presets.png +0 -0
- package/assets/plugin-configure.png +0 -0
- package/assets/plugin-recommended.png +0 -0
- package/assets/plugin-roles.png +0 -0
- package/assets/session-preset.png +0 -0
- package/cordis.patch.yml +332 -24
- package/dist/budget.d.mts +82 -0
- package/dist/budget.mjs +293 -0
- package/dist/catalogue-wgVaGeUx.d.mts +27 -0
- package/dist/catalogue.d.mts +2 -0
- package/dist/catalogue.mjs +116 -0
- package/dist/client.js +4072 -0
- package/dist/index.d.mts +2 -87
- package/dist/index.mjs +3 -394
- package/dist/models.d.mts +11 -40
- package/dist/models.mjs +47 -107
- package/dist/paths.d.mts +13 -0
- package/dist/paths.mjs +26 -0
- package/dist/poteto-mode.d.mts +37 -0
- package/dist/poteto-mode.mjs +61 -0
- package/dist/preset-copy.d.mts +12 -0
- package/dist/preset-copy.mjs +64 -0
- package/dist/preset.d.mts +31 -0
- package/dist/preset.mjs +51 -0
- package/dist/pstack/docs/harness/dsh.md +40 -40
- package/dist/pstack/plugin.json +21 -0
- package/dist/pstack/skills/poteto-mode/scripts/bootstrap.ts +62 -0
- package/dist/pstack/skills/poteto-mode/scripts/bun.lock +67 -0
- package/dist/pstack/skills/poteto-mode/scripts/check-plan.mjs +70 -83
- package/dist/pstack/skills/poteto-mode/scripts/{check-plan.test.mjs → check-plan.test.ts} +24 -42
- package/dist/pstack/skills/poteto-mode/scripts/package.json +16 -0
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/cli.test.ts +224 -0
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/cli.ts +223 -0
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/fakes.test-helper.ts +129 -0
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/github.test.ts +498 -0
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/github.ts +726 -0
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/policy.test.ts +482 -0
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/policy.ts +842 -0
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/render.ts +169 -0
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/tsconfig.json +13 -0
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/types.compile.ts +93 -0
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/types.ts +414 -0
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/watch-pr +6 -0
- package/dist/pstack/skills/poteto-mode/scripts/worktree-audit.sh +134 -0
- package/dist/pstack/skills/show-me-your-work/scripts/log.sh +42 -0
- package/dist/pstack/skills/statechart/scripts/backends/cfg.ts +33 -0
- package/dist/pstack/skills/statechart/scripts/backends/mermaid.ts +201 -0
- package/dist/pstack/skills/statechart/scripts/backends/plain-text.ts +72 -0
- package/dist/pstack/skills/statechart/scripts/backends/report.ts +177 -0
- package/dist/pstack/skills/statechart/scripts/frontends/config.ts +276 -0
- package/dist/pstack/skills/statechart/scripts/frontends/dot.ts +74 -0
- package/dist/pstack/skills/statechart/scripts/frontends/marks.ts +93 -0
- package/dist/pstack/skills/statechart/scripts/frontends/messages.ts +52 -0
- package/dist/pstack/skills/statechart/scripts/frontends/spec.ts +114 -0
- package/dist/pstack/skills/statechart/scripts/frontends/trace.ts +24 -0
- package/dist/pstack/skills/statechart/scripts/frontends/value.ts +166 -0
- package/dist/pstack/skills/statechart/scripts/frontends/verdict.ts +40 -0
- package/dist/pstack/skills/statechart/scripts/frontends/view.ts +119 -0
- package/dist/pstack/skills/statechart/scripts/ir.ts +547 -0
- package/dist/pstack/skills/statechart/scripts/package.json +11 -0
- package/dist/pstack/skills/statechart/scripts/passes/annotate.ts +128 -0
- package/dist/pstack/skills/statechart/scripts/passes/label.ts +269 -0
- package/dist/pstack/skills/statechart/scripts/passes/lift.ts +85 -0
- package/dist/pstack/skills/statechart/scripts/passes/loop-check.ts +68 -0
- package/dist/pstack/skills/statechart/scripts/passes/paths.ts +60 -0
- package/dist/pstack/skills/statechart/scripts/passes/reach.ts +135 -0
- package/dist/pstack/skills/statechart/scripts/passes/region-check.ts +97 -0
- package/dist/pstack/skills/statechart/scripts/passes/regions.ts +295 -0
- package/dist/pstack/skills/statechart/scripts/pipeline.ts +76 -0
- package/dist/pstack/skills/statechart/scripts/run.ts +481 -0
- package/dist/pstack/skills/statechart/scripts/statechart +29 -0
- package/dist/pstack/skills/statechart/scripts/statechart.ts +164 -0
- package/dist/pstack/skills/statechart/scripts/test/ConfigOracle.java +63 -0
- package/dist/pstack/skills/statechart/scripts/test/chart.test.ts +1210 -0
- package/dist/pstack/skills/statechart/scripts/test/charts/Braces.mmd +7 -0
- package/dist/pstack/skills/statechart/scripts/test/charts/Escapes.mmd +11 -0
- package/dist/pstack/skills/statechart/scripts/test/charts/Phases.mmd +29 -0
- package/dist/pstack/skills/statechart/scripts/test/cli.test.ts +1314 -0
- package/dist/pstack/skills/statechart/scripts/test/config-fuzz.test.ts +263 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Counter/ChartRun.out +57 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Counter/Counter.cfg +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Counter/Counter.tla +10 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Counter/chart.mmd +9 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Counter/graph.dot +16 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Counter/report.md +7 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Counter/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Counter/verdict-1.out +49 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/ChartRun.out +60 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/CounterAction.cfg +4 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/CounterAction.tla +22 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/chart.mmd +26 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/graph.dot +19 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/report.md +20 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/verdict-1.out +56 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/verdict-2.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/verdict-2.out +82 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/verdict-3.out +57 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/ChartRun.out +59 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/CounterDeadlock.cfg +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/CounterDeadlock.tla +11 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/chart.mmd +22 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/graph.dot +16 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/report.md +17 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-1.out +56 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-2.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-2.out +77 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterFan/ChartRun.out +69 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterFan/CounterFan.cfg +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterFan/CounterFan.tla +11 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterFan/chart.mmd +85 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterFan/graph.dot +70 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterFan/report.md +12 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterFan/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterFan/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterFan/verdict-1.out +67 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterFan/verdict-2.out +57 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/ChartRun.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/ChartRun.out +85 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/CounterGuard.cfg +6 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/CounterGuard.tla +13 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/chart.mmd +5 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/graph.dot +10 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/report.md +31 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/verdict-1.out +64 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/verdict-2.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/verdict-2.out +77 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPast/ChartRun.out +55 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPast/CounterInitPast.cfg +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPast/CounterInitPast.tla +10 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPast/chart.mmd +12 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPast/graph.dot +6 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPast/report.md +12 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPast/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-1.out +33 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-2.out +54 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPastHolds/ChartRun.out +54 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPastHolds/CounterInitPastHolds.cfg +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPastHolds/CounterInitPastHolds.tla +10 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPastHolds/chart.mmd +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPastHolds/graph.dot +6 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPastHolds/report.md +7 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPastHolds/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPastHolds/verdict-1.out +46 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInstance/ChartRun.out +59 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInstance/CounterInstance.cfg +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInstance/CounterInstance.tla +10 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInstance/CounterSteps.tla +6 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInstance/chart.mmd +17 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInstance/graph.dot +15 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInstance/report.md +14 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInstance/sany.out +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInstance/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInstance/verdict-1.out +78 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterJump/ChartRun.out +59 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterJump/CounterJump.cfg +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterJump/CounterJump.tla +19 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterJump/chart.mmd +26 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterJump/graph.dot +22 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterJump/report.md +12 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterJump/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterJump/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterJump/verdict-1.out +58 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterJump/verdict-2.out +57 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterLoop/ChartRun.out +57 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterLoop/CounterLoop.cfg +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterLoop/CounterLoop.tla +11 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterLoop/chart.mmd +17 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterLoop/graph.dot +15 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterLoop/report.md +14 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterLoop/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterLoop/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterLoop/verdict-1.out +76 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/ChartRun.out +59 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/CounterOrder.cfg +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/CounterOrder.tla +11 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/chart.mmd +19 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/graph.dot +10 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/report.md +15 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/verdict-1.out +56 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/verdict-2.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/verdict-2.out +67 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/ChartRun.out +62 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/CounterRules.cfg +6 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/CounterRules.tla +24 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/Moves.tla +5 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/chart.mmd +22 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/graph.dot +10 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/report.md +23 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/sany.out +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/verdict-1.out +58 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/verdict-2.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/verdict-2.out +66 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/verdict-3.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/verdict-3.out +74 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/verdict-4.out +59 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStart/ChartRun.out +58 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStart/CounterStart.cfg +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStart/CounterStart.tla +15 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStart/chart.mmd +18 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStart/graph.dot +13 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStart/report.md +11 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStart/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStart/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStart/verdict-1.out +33 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStart/verdict-2.out +57 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStop/ChartRun.out +57 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStop/CounterStop.cfg +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStop/CounterStop.tla +15 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStop/chart.mmd +7 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStop/graph.dot +13 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStop/report.md +6 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStop/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStop/verdict-1.out +49 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/ChartRun.out +61 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/CounterTie.cfg +4 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/CounterTie.tla +14 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/chart.mmd +30 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/graph.dot +19 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/report.md +27 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/verdict-1.out +56 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/verdict-2.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/verdict-2.out +64 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/verdict-3.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/verdict-3.out +87 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/verdict-4.out +57 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTieInGraph/ChartRun.out +60 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTieInGraph/CounterTieInGraph.cfg +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTieInGraph/CounterTieInGraph.tla +12 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTieInGraph/chart.mmd +23 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTieInGraph/graph.dot +19 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTieInGraph/report.md +11 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTieInGraph/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-1.out +56 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-2.out +57 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/ChartRun.out +61 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/CounterView.cfg +4 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/CounterView.tla +14 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/chart.mmd +23 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/graph.dot +19 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/report.md +27 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/verdict-1.out +56 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/verdict-2.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/verdict-2.out +64 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/verdict-3.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/verdict-3.out +87 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/verdict-4.out +57 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/view.mjs +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/DieHard/ChartRun.out +59 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/DieHard/DieHard.cfg +4 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/DieHard/DieHard.tla +38 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/DieHard/chart.mmd +92 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/DieHard/graph.dot +126 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/DieHard/report.md +17 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/DieHard/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/DieHard/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/DieHard/verdict-1.out +91 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/DieHard/verdict-2.out +57 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/ChartRun.out +61 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/FirstRule.cfg +6 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/FirstRule.tla +11 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/chart.mmd +22 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/graph.dot +16 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/report.md +25 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/verdict-1.out +56 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/verdict-2.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/verdict-2.out +64 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/verdict-3.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/verdict-3.out +64 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/verdict-4.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/verdict-4.out +77 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/HiddenClock/ChartRun.out +57 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/HiddenClock/HiddenClock.cfg +4 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/HiddenClock/HiddenClock.tla +11 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/HiddenClock/chart.mmd +13 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/HiddenClock/graph.dot +12 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/HiddenClock/report.md +11 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/HiddenClock/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/HiddenClock/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/HiddenClock/verdict-1.out +72 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Login/ChartRun.out +57 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Login/Login.cfg +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Login/Login.tla +62 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Login/chart.mmd +27 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Login/graph.dot +40 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Login/report.md +7 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Login/sany.out +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Login/verdict-1.out +47 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Login/view.mjs +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/LoginGuarded/ChartRun.out +57 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/LoginGuarded/LoginGuarded.cfg +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/LoginGuarded/LoginGuarded.tla +64 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/LoginGuarded/chart.mmd +28 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/LoginGuarded/graph.dot +37 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/LoginGuarded/report.md +8 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/LoginGuarded/sany.out +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/LoginGuarded/verdict-1.out +47 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/LoginGuarded/view.mjs +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/ChartRun.out +60 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/LoginParallel.cfg +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/LoginParallel.tla +64 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/chart.mmd +44 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/graph.dot +58 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/report.md +17 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/sany.out +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/verdict-1.out +83 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/verdict-2.out +57 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/view.mjs +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/ChartRun.out +60 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/MediaPlayer.cfg +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/MediaPlayer.tla +103 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/chart.mmd +43 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/graph.dot +93 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/report.md +14 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/sany.out +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-1.out +59 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-2.out +72 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/view.mjs +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerFixed/ChartRun.out +57 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerFixed/MediaPlayerFixed.cfg +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerFixed/MediaPlayerFixed.tla +100 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerFixed/chart.mmd +31 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerFixed/graph.dot +85 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerFixed/report.md +9 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerFixed/sany.out +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerFixed/verdict-1.out +47 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerFixed/view.mjs +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/ChartRun.out +59 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayer.tla +103 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayerProps.cfg +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayerProps.tla +6 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/chart.mmd +42 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/graph.dot +93 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/report.md +19 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-1.out +61 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-2.out +59 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-3.out +61 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-4.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-4.out +66 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-5.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-5.out +58 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-6.out +49 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/view.mjs +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/PickWorker/ChartRun.out +57 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/PickWorker/PickWorker.cfg +6 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/PickWorker/PickWorker.tla +11 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/PickWorker/chart.mmd +5 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/PickWorker/graph.dot +11 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/PickWorker/report.md +7 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/PickWorker/sany.out +5 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/PickWorker/verdict-1.out +70 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Shadow/ChartRun.out +61 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Shadow/Shadow.cfg +4 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Shadow/Shadow.tla +11 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Shadow/ShadowLib.tla +6 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Shadow/ShadowSub.tla +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Shadow/chart.mmd +9 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Shadow/graph.dot +16 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Shadow/report.md +8 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Shadow/sany.out +4 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/Shadow/verdict-1.out +65 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/ChartRun.out +59 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/SpacedNames.cfg +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/SpacedNames.tla +9 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/chart.mmd +23 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/graph.dot +17 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/report.md +15 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/sany.out +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/verdict-1.out +65 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/verdict-2.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/verdict-2.out +75 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/ChartRun.out +69 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/TwoPhase.cfg +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/TwoPhase.tla +75 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/chart.mmd +60 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/graph.dot +297 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/report.md +20 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/sany.out +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/verdict-1.out +95 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/verdict-2.out +57 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/view.mjs +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhaseFixed/ChartRun.out +57 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhaseFixed/TwoPhaseFixed.cfg +3 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhaseFixed/TwoPhaseFixed.tla +75 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhaseFixed/chart.mmd +37 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhaseFixed/graph.dot +223 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhaseFixed/report.md +11 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhaseFixed/sany.out +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhaseFixed/verdict-1.out +47 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhaseFixed/view.mjs +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/ChartRun.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/ChartRun.out +75 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/TypeGuard.cfg +5 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/TypeGuard.tla +11 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/chart.mmd +18 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/graph.dot +14 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/report.md +29 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/verdict-1.out +64 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/verdict-2.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/verdict-2.out +75 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/ChartRun.out +58 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/UserNoDeadlock.cfg +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/UserNoDeadlock.tla +8 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/chart.mmd +22 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/graph.dot +16 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/report.md +15 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-1.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-1.out +56 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-2.exit +1 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-2.out +77 -0
- package/dist/pstack/skills/statechart/scripts/test/corpus.test.ts +403 -0
- package/dist/pstack/skills/statechart/scripts/test/differential.test.ts +565 -0
- package/dist/pstack/skills/statechart/scripts/test/grid/Grid.cfg +2 -0
- package/dist/pstack/skills/statechart/scripts/test/grid/Grid.tla +9 -0
- package/dist/pstack/skills/statechart/scripts/test/grid/sany.out +2 -0
- package/dist/pstack/skills/statechart/scripts/test/java.ts +63 -0
- package/dist/pstack/skills/statechart/scripts/test/labels.ts +643 -0
- package/dist/pstack/skills/statechart/scripts/test/messages.test.ts +212 -0
- package/dist/pstack/skills/statechart/scripts/test/pipeline.test.ts +270 -0
- package/dist/pstack/skills/statechart/scripts/test/plain-tlc.test.ts +255 -0
- package/dist/pstack/skills/statechart/scripts/test/render.test.ts +81 -0
- package/dist/pstack/skills/statechart/scripts/test/tlc-out.test.ts +90 -0
- package/dist/pstack/skills/statechart/scripts/test/tlc.ts +158 -0
- package/dist/pstack/skills/statechart/scripts/tsconfig.json +11 -0
- package/dist/pstack/skills/statechart/scripts/worker.ts +35 -0
- package/dist/readonly.d.mts +3 -0
- package/dist/readonly.mjs +9 -0
- package/dist/role-catalog.d.mts +11 -24
- package/dist/role-catalog.mjs +17 -32
- package/dist/role-config.d.mts +41 -0
- package/dist/role-config.mjs +112 -0
- package/dist/role-editor.d.mts +25 -0
- package/dist/role-editor.mjs +372 -0
- package/dist/role-file-CIVHnhBg.d.mts +53 -0
- package/dist/role-file.d.mts +2 -0
- package/dist/role-file.mjs +121 -0
- package/dist/{role-manifest-8OERX9-s.d.mts → role-manifest-D1npMjqZ.d.mts} +21 -10
- package/dist/role-manifest.d.mts +2 -0
- package/dist/{role-manifest-79cnFfDM.mjs → role-manifest.mjs} +20 -16
- package/dist/role-remote.d.mts +23 -0
- package/dist/role-remote.mjs +106 -0
- package/dist/{roles.d.mts → role-service.d.mts} +8 -4
- package/dist/role-service.mjs +43 -0
- package/dist/role-wire.d.mts +54 -0
- package/dist/role-wire.mjs +127 -0
- package/dist/route-7SqXDYrL.d.mts +36 -0
- package/dist/route.d.mts +2 -0
- package/dist/route.mjs +78 -0
- package/dist/skill.d.mts +9 -23
- package/dist/skill.mjs +28 -37
- package/dist/skills/authored/docs-drift/SKILL.md +4 -4
- package/dist/skills/authored/docs-drift/SKILL.zh.md +4 -4
- package/dist/skills/vendored/control-cli/SKILL.md +109 -0
- package/dist/skills/vendored/control-ui/SKILL.md +109 -0
- package/dist/skills/vendored/deslop/SKILL.md +22 -0
- package/dist/subagent.d.mts +60 -169
- package/dist/subagent.mjs +344 -587
- package/dist/wire-error-D_r-UW4w.d.mts +5 -0
- package/dist/wire-error.d.mts +2 -0
- package/dist/wire-error.mjs +9 -0
- package/locale/en.json +1 -1
- package/package.json +51 -35
- package/assets/pstack-config-entry.png +0 -0
- package/dist/client.mjs +0 -2482
- package/dist/client.mjs.map +0 -1
- package/dist/host-contract-CUPSpeNk.d.mts +0 -22
- package/dist/paths-yji9SNak.mjs +0 -47
- package/dist/pstack/skills/poteto-mode/scripts/expect.mjs +0 -254
- package/dist/pstack/skills/poteto-mode/scripts/support.mjs +0 -93
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/cli.mjs +0 -123
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/cli.test.mjs +0 -217
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/fakes.test-helper.mjs +0 -119
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/github.mjs +0 -626
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/github.test.mjs +0 -521
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/policy.mjs +0 -657
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/policy.test.mjs +0 -523
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/render.mjs +0 -106
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/types.mjs +0 -9
- package/dist/pstack/skills/poteto-mode/scripts/watch-pr/watch-pr.mjs +0 -5
- package/dist/pstack/skills/poteto-mode/scripts/worktree-audit.mjs +0 -668
- package/dist/pstack/skills/poteto-mode/scripts/worktree-audit.test.mjs +0 -134
- package/dist/pstack/skills/show-me-your-work/scripts/log.mjs +0 -106
- package/dist/pstack/skills/show-me-your-work/scripts/log.test.mjs +0 -56
- package/dist/pstack/skills/statechart/scripts/backends/cfg.mjs +0 -31
- package/dist/pstack/skills/statechart/scripts/backends/mermaid.mjs +0 -186
- package/dist/pstack/skills/statechart/scripts/backends/plain-text.mjs +0 -62
- package/dist/pstack/skills/statechart/scripts/backends/report.mjs +0 -84
- package/dist/pstack/skills/statechart/scripts/frontends/config.mjs +0 -268
- package/dist/pstack/skills/statechart/scripts/frontends/dot.mjs +0 -67
- package/dist/pstack/skills/statechart/scripts/frontends/marks.mjs +0 -94
- package/dist/pstack/skills/statechart/scripts/frontends/messages.mjs +0 -48
- package/dist/pstack/skills/statechart/scripts/frontends/spec.mjs +0 -101
- package/dist/pstack/skills/statechart/scripts/frontends/trace.mjs +0 -39
- package/dist/pstack/skills/statechart/scripts/frontends/value.mjs +0 -180
- package/dist/pstack/skills/statechart/scripts/frontends/verdict.mjs +0 -40
- package/dist/pstack/skills/statechart/scripts/frontends/view.mjs +0 -99
- package/dist/pstack/skills/statechart/scripts/ir.mjs +0 -277
- package/dist/pstack/skills/statechart/scripts/passes/annotate.mjs +0 -92
- package/dist/pstack/skills/statechart/scripts/passes/label.mjs +0 -210
- package/dist/pstack/skills/statechart/scripts/passes/lift.mjs +0 -84
- package/dist/pstack/skills/statechart/scripts/passes/loop-check.mjs +0 -47
- package/dist/pstack/skills/statechart/scripts/passes/paths.mjs +0 -72
- package/dist/pstack/skills/statechart/scripts/passes/reach.mjs +0 -135
- package/dist/pstack/skills/statechart/scripts/passes/region-check.mjs +0 -82
- package/dist/pstack/skills/statechart/scripts/passes/regions.mjs +0 -268
- package/dist/pstack/skills/statechart/scripts/pipeline.mjs +0 -72
- package/dist/pstack/skills/statechart/scripts/run.mjs +0 -440
- package/dist/pstack/skills/statechart/scripts/statechart.mjs +0 -155
- package/dist/pstack/skills/statechart/scripts/statechart.test.mjs +0 -198
- package/dist/pstack/skills/statechart/scripts/worker.mjs +0 -31
- package/dist/remote.d.mts +0 -27
- package/dist/remote.mjs +0 -235
- package/dist/role-config-a4JpVdc-.mjs +0 -379
- package/dist/role-wire-CAJsVA6e.d.mts +0 -54
- package/dist/roles.mjs +0 -293
- package/dist/script.d.mts +0 -91
- package/dist/script.mjs +0 -485
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { parseBudgetApplyRequest } from "./budget.mjs";
|
|
2
|
+
import { parseCatalogueResult } from "./catalogue.mjs";
|
|
3
|
+
import { parseBudgetApplyResult, parseRoleFileSnapshot, parseSaveRoleRequest, parseSaveRoleResult } from "./role-wire.mjs";
|
|
4
|
+
// src/role-remote.ts
|
|
5
|
+
/** npm package owning these methods. */
|
|
6
|
+
const REMOTE_PACKAGE = "dsh-pstack";
|
|
7
|
+
/** Cordis service key and wire namespace. */
|
|
8
|
+
const ROLES_SERVICE = "pstackRoles";
|
|
9
|
+
function codec(typeSymbol, parse) {
|
|
10
|
+
return {
|
|
11
|
+
mode: "strict",
|
|
12
|
+
typeSymbol,
|
|
13
|
+
create: () => ({ parse }),
|
|
14
|
+
decode: parse
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function parameter(name, typeSymbol, parse) {
|
|
18
|
+
return {
|
|
19
|
+
name,
|
|
20
|
+
wire: name,
|
|
21
|
+
source: "json",
|
|
22
|
+
codec: codec(typeSymbol, parse)
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function directMethod(options) {
|
|
26
|
+
return {
|
|
27
|
+
id: `${REMOTE_PACKAGE}#${ROLES_SERVICE}/${options.method}`,
|
|
28
|
+
service: ROLES_SERVICE,
|
|
29
|
+
namespace: ROLES_SERVICE,
|
|
30
|
+
method: options.method,
|
|
31
|
+
invocation: { kind: "direct" },
|
|
32
|
+
parameters: options.parameters,
|
|
33
|
+
result: options.result,
|
|
34
|
+
...options.cancellation === true ? { cancellation: { parameter: "signal" } } : {},
|
|
35
|
+
input() {
|
|
36
|
+
return { create: () => ({ parse(value) {
|
|
37
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) throw new TypeError("the method input must be an object");
|
|
38
|
+
const record = value;
|
|
39
|
+
const parsed = {};
|
|
40
|
+
for (const item of options.parameters) {
|
|
41
|
+
if (item.codec.mode !== "strict") throw new TypeError("expected a strict codec");
|
|
42
|
+
parsed[item.wire] = item.codec.create().parse(record[item.wire]);
|
|
43
|
+
}
|
|
44
|
+
return parsed;
|
|
45
|
+
} }) };
|
|
46
|
+
},
|
|
47
|
+
invoke(remote, input, signal) {
|
|
48
|
+
const namespace = Reflect.get(remote, ROLES_SERVICE);
|
|
49
|
+
const values = options.parameters.map((item) => input[item.wire]);
|
|
50
|
+
if (options.cancellation === true) values.push(signal);
|
|
51
|
+
return namespace[options.method](...values);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const statusMethod = directMethod({
|
|
56
|
+
method: "status",
|
|
57
|
+
parameters: [],
|
|
58
|
+
result: codec("PstackRoleFileSnapshot", parseRoleFileSnapshot)
|
|
59
|
+
});
|
|
60
|
+
const catalogueMethod = directMethod({
|
|
61
|
+
method: "catalogue",
|
|
62
|
+
parameters: [],
|
|
63
|
+
result: codec("PstackRoleCatalogue", parseCatalogueResult),
|
|
64
|
+
cancellation: true
|
|
65
|
+
});
|
|
66
|
+
const saveMethod = directMethod({
|
|
67
|
+
method: "save",
|
|
68
|
+
parameters: [parameter("request", "PstackSaveRoleRequest", parseSaveRoleRequest)],
|
|
69
|
+
result: codec("PstackSaveRoleResult", parseSaveRoleResult),
|
|
70
|
+
cancellation: true
|
|
71
|
+
});
|
|
72
|
+
const budgetMethod = directMethod({
|
|
73
|
+
method: "budget",
|
|
74
|
+
parameters: [parameter("request", "PstackBudgetApplyRequest", parseBudgetApplyRequest)],
|
|
75
|
+
result: codec("PstackBudgetApplyResult", parseBudgetApplyResult),
|
|
76
|
+
cancellation: true
|
|
77
|
+
});
|
|
78
|
+
/** Mountable contribution shared by Host registration and Client `$mount`. */
|
|
79
|
+
const pstackRolesRemote = {
|
|
80
|
+
package: REMOTE_PACKAGE,
|
|
81
|
+
descriptors: [
|
|
82
|
+
statusMethod,
|
|
83
|
+
catalogueMethod,
|
|
84
|
+
saveMethod,
|
|
85
|
+
budgetMethod
|
|
86
|
+
],
|
|
87
|
+
methods: {
|
|
88
|
+
[`${ROLES_SERVICE}/status`]: statusMethod,
|
|
89
|
+
[`${ROLES_SERVICE}/catalogue`]: catalogueMethod,
|
|
90
|
+
[`${ROLES_SERVICE}/save`]: saveMethod,
|
|
91
|
+
[`${ROLES_SERVICE}/budget`]: budgetMethod
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
/** Register the Host's strict invocation definitions in `ctx.typert.local`. */
|
|
95
|
+
const pstackRolesHostContribution = {
|
|
96
|
+
package: REMOTE_PACKAGE,
|
|
97
|
+
face: "host",
|
|
98
|
+
schemas: [],
|
|
99
|
+
model: {
|
|
100
|
+
services: [],
|
|
101
|
+
events: [],
|
|
102
|
+
objects: []
|
|
103
|
+
},
|
|
104
|
+
invocations: pstackRolesRemote.descriptors
|
|
105
|
+
};
|
|
106
|
+
export { REMOTE_PACKAGE, ROLES_SERVICE, pstackRolesHostContribution, pstackRolesRemote };
|
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
import { CatalogueResult } from "./
|
|
2
|
-
import
|
|
1
|
+
import { n as CatalogueResult } from "./catalogue-wgVaGeUx.mjs";
|
|
2
|
+
import "./models.mjs";
|
|
3
|
+
import { BudgetApplyRequest } from "./budget.mjs";
|
|
4
|
+
import { BudgetApplyResult, RoleFileSnapshot, SaveRoleRequest, SaveRoleResult } from "./role-wire.mjs";
|
|
3
5
|
import { Context, Service } from "@deepseek-ai/cordis";
|
|
4
6
|
import { TypertRemoteService } from "@deepseek-ai/dsh-typert-protocol";
|
|
5
|
-
/** Read and write
|
|
7
|
+
/** Read and write `$DSH_HOME/pstack-models.mdc` for the Web settings page. */
|
|
6
8
|
export declare class PstackRolesService extends TypertRemoteService {
|
|
7
9
|
static inject: string[];
|
|
8
10
|
constructor(ctx: Context);
|
|
9
11
|
protected [Service.init](): void;
|
|
10
12
|
/** Current path, status, values, and per-line issues. */
|
|
11
13
|
status(): RoleFileSnapshot;
|
|
12
|
-
/** The live directory the page
|
|
14
|
+
/** The live model directory used by the page's selectors. */
|
|
13
15
|
catalogue(signal: AbortSignal): Promise<CatalogueResult>;
|
|
14
16
|
/** Validate and save one role, then return the reloaded snapshot. */
|
|
15
17
|
save(request: SaveRoleRequest, signal: AbortSignal): Promise<SaveRoleResult>;
|
|
18
|
+
/** Apply a global budget target and return the reloaded snapshot. */
|
|
19
|
+
budget(request: BudgetApplyRequest, signal: AbortSignal): Promise<BudgetApplyResult>;
|
|
16
20
|
private get llm();
|
|
17
21
|
}
|
|
18
22
|
export { PstackRolesService as default };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { collectCatalogue } from "./models.mjs";
|
|
2
|
+
import { modelsFilePath, readRoleConfiguration, resolveDshHome } from "./role-config.mjs";
|
|
3
|
+
import { saveBudgetConfiguration, saveRoleConfiguration, snapshotFromConfiguration } from "./role-editor.mjs";
|
|
4
|
+
import { ROLES_SERVICE, pstackRolesHostContribution } from "./role-remote.mjs";
|
|
5
|
+
import { Service } from "@deepseek-ai/cordis";
|
|
6
|
+
import { TypertRemoteService } from "@deepseek-ai/dsh-typert-protocol";
|
|
7
|
+
// src/role-service.ts
|
|
8
|
+
/** Host role configuration service for the pstack settings page. */
|
|
9
|
+
/** Read and write `$DSH_HOME/pstack-models.mdc` for the Web settings page. */
|
|
10
|
+
var PstackRolesService = class extends TypertRemoteService {
|
|
11
|
+
static inject = ["llm", "typert"];
|
|
12
|
+
constructor(ctx) {
|
|
13
|
+
super(ctx, ROLES_SERVICE);
|
|
14
|
+
}
|
|
15
|
+
[Service.init]() {
|
|
16
|
+
this.ctx.typert.register(pstackRolesHostContribution);
|
|
17
|
+
}
|
|
18
|
+
/** Current path, status, values, and per-line issues. */
|
|
19
|
+
status() {
|
|
20
|
+
return snapshotFromConfiguration(readRoleConfiguration(roleFilePath()));
|
|
21
|
+
}
|
|
22
|
+
/** The live model directory used by the page's selectors. */
|
|
23
|
+
async catalogue(signal) {
|
|
24
|
+
return collectCatalogue(this.llm, void 0, signal);
|
|
25
|
+
}
|
|
26
|
+
/** Validate and save one role, then return the reloaded snapshot. */
|
|
27
|
+
async save(request, signal) {
|
|
28
|
+
signal.throwIfAborted();
|
|
29
|
+
return saveRoleConfiguration(roleFilePath(), request, this.llm, signal);
|
|
30
|
+
}
|
|
31
|
+
/** Apply a global budget target and return the reloaded snapshot. */
|
|
32
|
+
async budget(request, signal) {
|
|
33
|
+
signal.throwIfAborted();
|
|
34
|
+
return saveBudgetConfiguration(roleFilePath(), request, this.llm, signal);
|
|
35
|
+
}
|
|
36
|
+
get llm() {
|
|
37
|
+
return this.ctx.llm;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
function roleFilePath() {
|
|
41
|
+
return modelsFilePath(resolveDshHome());
|
|
42
|
+
}
|
|
43
|
+
export { PstackRolesService, PstackRolesService as default };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { n as InheritAlias, s as RoleShape } from "./role-manifest-D1npMjqZ.mjs";
|
|
2
|
+
import { n as Route } from "./route-7SqXDYrL.mjs";
|
|
3
|
+
import { a as parseCatalogueResult, n as CatalogueResult } from "./catalogue-wgVaGeUx.mjs";
|
|
4
|
+
import { BudgetApplyRequest, parseBudgetApplyRequest } from "./budget.mjs";
|
|
5
|
+
import { t as WireTypeError } from "./wire-error-D_r-UW4w.mjs";
|
|
6
|
+
export type RouteView = Route;
|
|
7
|
+
export interface RoleView {
|
|
8
|
+
readonly key: string;
|
|
9
|
+
readonly shape: RoleShape;
|
|
10
|
+
readonly configured: boolean;
|
|
11
|
+
readonly line?: number;
|
|
12
|
+
readonly routes: readonly RouteView[];
|
|
13
|
+
readonly issues: readonly string[];
|
|
14
|
+
}
|
|
15
|
+
export interface RoleFileIssueView {
|
|
16
|
+
readonly line?: number;
|
|
17
|
+
readonly message: string;
|
|
18
|
+
}
|
|
19
|
+
export interface RoleFileSnapshot {
|
|
20
|
+
readonly path: string;
|
|
21
|
+
readonly status: "missing" | "loaded" | "unreadable";
|
|
22
|
+
readonly reason?: string;
|
|
23
|
+
readonly budget?: string;
|
|
24
|
+
readonly roles: readonly RoleView[];
|
|
25
|
+
readonly issues: readonly RoleFileIssueView[];
|
|
26
|
+
readonly canSave: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface SaveRoleRequest {
|
|
29
|
+
readonly key: string;
|
|
30
|
+
readonly routes: readonly RouteView[];
|
|
31
|
+
}
|
|
32
|
+
export type SaveRoleResult = {
|
|
33
|
+
readonly ok: true;
|
|
34
|
+
readonly snapshot: RoleFileSnapshot;
|
|
35
|
+
} | {
|
|
36
|
+
readonly ok: false;
|
|
37
|
+
readonly reason: string;
|
|
38
|
+
};
|
|
39
|
+
export type BudgetApplyResult = {
|
|
40
|
+
readonly ok: true;
|
|
41
|
+
readonly snapshot: RoleFileSnapshot;
|
|
42
|
+
} | {
|
|
43
|
+
readonly ok: false;
|
|
44
|
+
readonly reason: string;
|
|
45
|
+
};
|
|
46
|
+
/** Parse one save request. An empty route list removes the role line. */
|
|
47
|
+
export declare function parseSaveRoleRequest(value: unknown): SaveRoleRequest;
|
|
48
|
+
/** Parse one role-file snapshot returned by the Host. */
|
|
49
|
+
export declare function parseRoleFileSnapshot(value: unknown): RoleFileSnapshot;
|
|
50
|
+
/** Parse one role-save result returned by the Host. */
|
|
51
|
+
export declare function parseSaveRoleResult(value: unknown): SaveRoleResult;
|
|
52
|
+
/** Parse one budget-apply result returned by the Host. */
|
|
53
|
+
export declare function parseBudgetApplyResult(value: unknown): BudgetApplyResult;
|
|
54
|
+
export { type BudgetApplyRequest, type CatalogueResult, type InheritAlias, WireTypeError, parseBudgetApplyRequest, parseCatalogueResult };
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { INHERIT_ALIASES, ROLE_SHAPES, isRoleKey } from "./role-manifest.mjs";
|
|
2
|
+
import { validateRouteParts } from "./route.mjs";
|
|
3
|
+
import { WireTypeError } from "./wire-error.mjs";
|
|
4
|
+
import { parseBudgetApplyRequest } from "./budget.mjs";
|
|
5
|
+
import { parseCatalogueResult } from "./catalogue.mjs";
|
|
6
|
+
// src/role-wire.ts
|
|
7
|
+
/** Wire shapes shared by the role settings Host service and Client page. */
|
|
8
|
+
function parseRecord(value, path) {
|
|
9
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) throw new WireTypeError(path, "an object");
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
function optionalString(record, key, path) {
|
|
13
|
+
const value = record[key];
|
|
14
|
+
if (value !== void 0 && typeof value !== "string") throw new WireTypeError(`${path}.${key}`, "a string when present");
|
|
15
|
+
return value;
|
|
16
|
+
}
|
|
17
|
+
function parseRouteView(value, path) {
|
|
18
|
+
const record = parseRecord(value, path);
|
|
19
|
+
if (record["kind"] === "inherit") {
|
|
20
|
+
const alias = record["alias"] ?? "inherit-parent";
|
|
21
|
+
if (typeof alias !== "string" || !INHERIT_ALIASES.includes(alias)) throw new WireTypeError(`${path}.alias`, "\"inherit-parent\" or \"auto\"");
|
|
22
|
+
return {
|
|
23
|
+
kind: "inherit",
|
|
24
|
+
alias
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
if (record["kind"] !== "route") throw new WireTypeError(`${path}.kind`, "\"route\" or \"inherit\"");
|
|
28
|
+
const provider = record["provider"];
|
|
29
|
+
const model = record["model"];
|
|
30
|
+
const effort = record["effort"];
|
|
31
|
+
if (typeof provider !== "string" || provider.trim() === "") throw new WireTypeError(`${path}.provider`, "a non-empty string");
|
|
32
|
+
if (typeof model !== "string" || model.trim() === "") throw new WireTypeError(`${path}.model`, "a non-empty string");
|
|
33
|
+
if (effort !== void 0 && (typeof effort !== "string" || effort.trim() === "")) throw new WireTypeError(`${path}.effort`, "a non-empty string when present");
|
|
34
|
+
const providerValue = provider.trim();
|
|
35
|
+
const modelValue = model.trim();
|
|
36
|
+
const effortValue = typeof effort === "string" ? effort.trim() : void 0;
|
|
37
|
+
const issue = validateRouteParts(providerValue, modelValue, effortValue);
|
|
38
|
+
if (issue !== void 0) throw new WireTypeError(path, issue);
|
|
39
|
+
return {
|
|
40
|
+
kind: "route",
|
|
41
|
+
provider: providerValue,
|
|
42
|
+
model: modelValue,
|
|
43
|
+
...effortValue === void 0 ? {} : { effort: effortValue }
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/** Parse one save request. An empty route list removes the role line. */
|
|
47
|
+
function parseSaveRoleRequest(value) {
|
|
48
|
+
const record = parseRecord(value, "request");
|
|
49
|
+
if (typeof record["key"] !== "string" || record["key"].trim() === "") throw new WireTypeError("request.key", "a non-empty string");
|
|
50
|
+
if (!Array.isArray(record["routes"])) throw new WireTypeError("request.routes", "an array");
|
|
51
|
+
return {
|
|
52
|
+
key: record["key"],
|
|
53
|
+
routes: record["routes"].map((route, index) => parseRouteView(route, `request.routes[${index}]`))
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function parseRoleFileIssue(value, path) {
|
|
57
|
+
const record = parseRecord(value, path);
|
|
58
|
+
if (typeof record["message"] !== "string") throw new WireTypeError(`${path}.message`, "a string");
|
|
59
|
+
const line = record["line"];
|
|
60
|
+
if (line !== void 0 && typeof line !== "number") throw new WireTypeError(`${path}.line`, "a number when present");
|
|
61
|
+
return {
|
|
62
|
+
...typeof line === "number" ? { line } : {},
|
|
63
|
+
message: record["message"]
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function parseRoleView(value, index) {
|
|
67
|
+
const path = `snapshot.roles[${index}]`;
|
|
68
|
+
const record = parseRecord(value, path);
|
|
69
|
+
if (typeof record["key"] !== "string" || !isRoleKey(record["key"])) throw new WireTypeError(`${path}.key`, "a role in the manifest");
|
|
70
|
+
if (typeof record["shape"] !== "string" || !ROLE_SHAPES.includes(record["shape"])) throw new WireTypeError(`${path}.shape`, "\"single\" or \"list\"");
|
|
71
|
+
if (typeof record["configured"] !== "boolean") throw new WireTypeError(`${path}.configured`, "a boolean");
|
|
72
|
+
if (!Array.isArray(record["routes"]) || !Array.isArray(record["issues"])) throw new WireTypeError(path, "routes and issues arrays");
|
|
73
|
+
const line = record["line"];
|
|
74
|
+
if (line !== void 0 && typeof line !== "number") throw new WireTypeError(`${path}.line`, "a number when present");
|
|
75
|
+
return {
|
|
76
|
+
key: record["key"],
|
|
77
|
+
shape: record["shape"],
|
|
78
|
+
configured: record["configured"],
|
|
79
|
+
...typeof line === "number" ? { line } : {},
|
|
80
|
+
routes: record["routes"].map((route, routeIndex) => parseRouteView(route, `${path}.routes[${routeIndex}]`)),
|
|
81
|
+
issues: record["issues"].map((issue, issueIndex) => {
|
|
82
|
+
if (typeof issue !== "string") throw new WireTypeError(`${path}.issues[${issueIndex}]`, "a string");
|
|
83
|
+
return issue;
|
|
84
|
+
})
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/** Parse one role-file snapshot returned by the Host. */
|
|
88
|
+
function parseRoleFileSnapshot(value) {
|
|
89
|
+
const record = parseRecord(value, "snapshot");
|
|
90
|
+
const status = record["status"];
|
|
91
|
+
if (status !== "missing" && status !== "loaded" && status !== "unreadable") throw new WireTypeError("snapshot.status", "\"missing\", \"loaded\", or \"unreadable\"");
|
|
92
|
+
if (typeof record["path"] !== "string") throw new WireTypeError("snapshot.path", "a string");
|
|
93
|
+
if (typeof record["canSave"] !== "boolean") throw new WireTypeError("snapshot.canSave", "a boolean");
|
|
94
|
+
if (!Array.isArray(record["roles"]) || !Array.isArray(record["issues"])) throw new WireTypeError("snapshot", "roles and issues arrays");
|
|
95
|
+
const reason = optionalString(record, "reason", "snapshot");
|
|
96
|
+
const budget = optionalString(record, "budget", "snapshot");
|
|
97
|
+
return {
|
|
98
|
+
path: record["path"],
|
|
99
|
+
status,
|
|
100
|
+
...typeof reason === "string" ? { reason } : {},
|
|
101
|
+
...typeof budget === "string" ? { budget } : {},
|
|
102
|
+
roles: record["roles"].map((role, index) => parseRoleView(role, index)),
|
|
103
|
+
issues: record["issues"].map((issue, index) => parseRoleFileIssue(issue, `snapshot.issues[${index}]`)),
|
|
104
|
+
canSave: record["canSave"]
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function parseSnapshotResult(value) {
|
|
108
|
+
const record = parseRecord(value, "result");
|
|
109
|
+
if (record["ok"] === true) return {
|
|
110
|
+
ok: true,
|
|
111
|
+
snapshot: parseRoleFileSnapshot(record["snapshot"])
|
|
112
|
+
};
|
|
113
|
+
if (record["ok"] === false && typeof record["reason"] === "string") return {
|
|
114
|
+
ok: false,
|
|
115
|
+
reason: record["reason"]
|
|
116
|
+
};
|
|
117
|
+
throw new WireTypeError("result", "a successful snapshot or a refusal reason");
|
|
118
|
+
}
|
|
119
|
+
/** Parse one role-save result returned by the Host. */
|
|
120
|
+
function parseSaveRoleResult(value) {
|
|
121
|
+
return parseSnapshotResult(value);
|
|
122
|
+
}
|
|
123
|
+
/** Parse one budget-apply result returned by the Host. */
|
|
124
|
+
function parseBudgetApplyResult(value) {
|
|
125
|
+
return parseSnapshotResult(value);
|
|
126
|
+
}
|
|
127
|
+
export { WireTypeError, parseBudgetApplyRequest, parseBudgetApplyResult, parseCatalogueResult, parseRoleFileSnapshot, parseSaveRoleRequest, parseSaveRoleResult };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { c as RoleSpec, n as InheritAlias } from "./role-manifest-D1npMjqZ.mjs";
|
|
2
|
+
/** One resolved child route. */
|
|
3
|
+
type Route = {
|
|
4
|
+
readonly kind: "inherit";
|
|
5
|
+
readonly alias: InheritAlias;
|
|
6
|
+
} | {
|
|
7
|
+
readonly kind: "route";
|
|
8
|
+
readonly provider: string;
|
|
9
|
+
readonly model: string;
|
|
10
|
+
readonly effort?: string;
|
|
11
|
+
};
|
|
12
|
+
/** One parsed route token. */
|
|
13
|
+
interface ParsedRoute {
|
|
14
|
+
readonly route?: Route;
|
|
15
|
+
readonly issue: string;
|
|
16
|
+
}
|
|
17
|
+
/** Parse one route token. */
|
|
18
|
+
declare function parseRoute(raw: string): ParsedRoute;
|
|
19
|
+
/** Parse one role value: a single route or a comma-separated list. */
|
|
20
|
+
declare function parseRouteValue(raw: string): {
|
|
21
|
+
routes: readonly Route[];
|
|
22
|
+
issues: readonly string[];
|
|
23
|
+
};
|
|
24
|
+
/** Validate route parts shared by the text and wire parsers. */
|
|
25
|
+
declare function validateRouteParts(provider: string, model: string, effort: string | undefined): string | undefined;
|
|
26
|
+
/** Render one role value in the file grammar. */
|
|
27
|
+
declare function renderRouteValue(routes: readonly Route[]): string;
|
|
28
|
+
/** Type guard for a concrete route. */
|
|
29
|
+
declare function isRoute(route: Route): route is Extract<Route, {
|
|
30
|
+
kind: "route";
|
|
31
|
+
}>;
|
|
32
|
+
/** The single-route shape rule shared by the file parser and the save validator. */
|
|
33
|
+
declare function validateRoleRouteShape(spec: RoleSpec, routes: {
|
|
34
|
+
readonly length: number;
|
|
35
|
+
}): string | undefined;
|
|
36
|
+
export { parseRouteValue as a, validateRouteParts as c, parseRoute as i, Route as n, renderRouteValue as o, isRoute as r, validateRoleRouteShape as s, ParsedRoute as t };
|
package/dist/route.d.mts
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as parseRouteValue, c as validateRouteParts, i as parseRoute, n as Route, o as renderRouteValue, r as isRoute, s as validateRoleRouteShape, t as ParsedRoute } from "./route-7SqXDYrL.mjs";
|
|
2
|
+
export { ParsedRoute, Route, isRoute, parseRoute, parseRouteValue, renderRouteValue, validateRoleRouteShape, validateRouteParts };
|
package/dist/route.mjs
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { INHERIT_ALIASES } from "./role-manifest.mjs";
|
|
2
|
+
// src/route.ts
|
|
3
|
+
/** The shared route grammar for the role file, wire codec, and editor. */
|
|
4
|
+
/** Parse one route token. */
|
|
5
|
+
function parseRoute(raw) {
|
|
6
|
+
const value = raw.trim();
|
|
7
|
+
if (value === "") return { issue: "the value is empty" };
|
|
8
|
+
const alias = value.toLowerCase();
|
|
9
|
+
if (INHERIT_ALIASES.includes(alias)) return {
|
|
10
|
+
route: {
|
|
11
|
+
kind: "inherit",
|
|
12
|
+
alias
|
|
13
|
+
},
|
|
14
|
+
issue: ""
|
|
15
|
+
};
|
|
16
|
+
const slash = value.indexOf("/");
|
|
17
|
+
if (slash <= 0 || slash === value.length - 1) return { issue: `${JSON.stringify(value)} is not a route; use \`inherit-parent\`, \`auto\`, or \`<provider>/<model> [effort]\`` };
|
|
18
|
+
const provider = value.slice(0, slash).trim();
|
|
19
|
+
let rest = value.slice(slash + 1).trim();
|
|
20
|
+
let effort;
|
|
21
|
+
const bracket = /\s*\[([^[\]]*)\]\s*$/.exec(rest);
|
|
22
|
+
if (bracket !== null) {
|
|
23
|
+
effort = bracket[1].trim();
|
|
24
|
+
rest = rest.slice(0, bracket.index).trim();
|
|
25
|
+
}
|
|
26
|
+
const model = rest;
|
|
27
|
+
const problem = validateRouteParts(provider, model, effort);
|
|
28
|
+
if (problem !== void 0) return { issue: `${JSON.stringify(value)} ${problem}` };
|
|
29
|
+
return {
|
|
30
|
+
route: {
|
|
31
|
+
kind: "route",
|
|
32
|
+
provider,
|
|
33
|
+
model,
|
|
34
|
+
...effort === void 0 ? {} : { effort }
|
|
35
|
+
},
|
|
36
|
+
issue: ""
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** Parse one role value: a single route or a comma-separated list. */
|
|
40
|
+
function parseRouteValue(raw) {
|
|
41
|
+
const routes = [];
|
|
42
|
+
const issues = [];
|
|
43
|
+
const segments = raw.split(",");
|
|
44
|
+
segments.forEach((segment, index) => {
|
|
45
|
+
const value = segment.trim();
|
|
46
|
+
if (value === "") {
|
|
47
|
+
if (index !== segments.length - 1) issues.push(`entry ${index + 1} of the list is empty`);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const parsed = parseRoute(value);
|
|
51
|
+
if (parsed.route === void 0) issues.push(parsed.issue);
|
|
52
|
+
else routes.push(parsed.route);
|
|
53
|
+
});
|
|
54
|
+
if (routes.length === 0 && issues.length === 0) issues.push("the value is empty; use `inherit-parent`, `auto`, or `<provider>/<model> [effort]`");
|
|
55
|
+
return {
|
|
56
|
+
routes,
|
|
57
|
+
issues
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/** Validate route parts shared by the text and wire parsers. */
|
|
61
|
+
function validateRouteParts(provider, model, effort) {
|
|
62
|
+
if (provider === "" || model === "" || /\s/.test(provider) || /\s/.test(model)) return "is not a route; provider and model cannot contain spaces";
|
|
63
|
+
if (effort !== void 0 && effort === "") return "has empty brackets; drop them or name an effort";
|
|
64
|
+
if (effort !== void 0 && /\s/.test(effort)) return "has a multi-word effort; an effort is one token";
|
|
65
|
+
}
|
|
66
|
+
/** Render one role value in the file grammar. */
|
|
67
|
+
function renderRouteValue(routes) {
|
|
68
|
+
return routes.map((route) => route.kind === "inherit" ? route.alias : route.effort === void 0 ? `${route.provider}/${route.model}` : `${route.provider}/${route.model} [${route.effort}]`).join(", ");
|
|
69
|
+
}
|
|
70
|
+
/** Type guard for a concrete route. */
|
|
71
|
+
function isRoute(route) {
|
|
72
|
+
return route.kind === "route";
|
|
73
|
+
}
|
|
74
|
+
/** The single-route shape rule shared by the file parser and the save validator. */
|
|
75
|
+
function validateRoleRouteShape(spec, routes) {
|
|
76
|
+
if (spec.shape === "single" && routes.length > 1) return "a single-route role cannot hold a comma-separated list";
|
|
77
|
+
}
|
|
78
|
+
export { isRoute, parseRoute, parseRouteValue, renderRouteValue, validateRoleRouteShape, validateRouteParts };
|
package/dist/skill.d.mts
CHANGED
|
@@ -1,22 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
/** Cordis row name, used by Loader diagnostics. */
|
|
1
|
+
import { Context } from "@deepseek-ai/cordis";
|
|
2
|
+
import { ToolDefinition } from "@deepseek-ai/dsh-tools";
|
|
3
|
+
import { SkillDefinition, SkillRegistry, SkillResourceBase } from "@deepseek-ai/dsh-skill";
|
|
5
4
|
export declare const name = "pstack-skill";
|
|
6
|
-
/** The tool registry and the skill registry. */
|
|
7
5
|
export declare const inject: string[];
|
|
8
|
-
|
|
9
|
-
export interface SkillsHost {
|
|
10
|
-
get(name: string, options?: {
|
|
11
|
-
readonly cwd?: string;
|
|
12
|
-
readonly signal?: AbortSignal;
|
|
13
|
-
readonly scope?: Agent;
|
|
14
|
-
}): Promise<SkillDefinition | undefined>;
|
|
15
|
-
}
|
|
16
|
-
export interface PstackSkillHost {
|
|
17
|
-
readonly skills: SkillsHost;
|
|
18
|
-
readonly tools: ToolsHost;
|
|
19
|
-
}
|
|
6
|
+
export declare const TOOL_NAME = "pstack_skill";
|
|
20
7
|
export interface SkillResourceResult {
|
|
21
8
|
readonly path: string;
|
|
22
9
|
readonly content: string;
|
|
@@ -28,11 +15,10 @@ export interface LoadSkillResult {
|
|
|
28
15
|
readonly content: string;
|
|
29
16
|
readonly resource?: SkillResourceResult;
|
|
30
17
|
}
|
|
31
|
-
/** Render one loaded skill in the
|
|
18
|
+
/** Render one loaded skill in the shape DSH skill tools use. */
|
|
32
19
|
export declare function renderLoadedSkill(result: LoadSkillResult): string;
|
|
33
|
-
/** Read one resource
|
|
20
|
+
/** Read one resource relative to a directory-backed skill. */
|
|
34
21
|
export declare function readSkillResource(definition: SkillDefinition, resource: string): Promise<SkillResourceResult>;
|
|
35
|
-
/** Build the tool
|
|
36
|
-
export declare function createPstackSkillTool(skills:
|
|
37
|
-
|
|
38
|
-
export declare function apply(ctx: PstackSkillHost): void;
|
|
22
|
+
/** Build the tool for one skills registry. */
|
|
23
|
+
export declare function createPstackSkillTool(skills: SkillRegistry): ToolDefinition;
|
|
24
|
+
export declare function apply(ctx: Context): void;
|
package/dist/skill.mjs
CHANGED
|
@@ -1,47 +1,30 @@
|
|
|
1
|
-
import { resolve, sep } from "node:path";
|
|
2
1
|
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { resolve, sep } from "node:path";
|
|
3
3
|
// src/skill.ts
|
|
4
4
|
/**
|
|
5
|
-
* `pstack_skill`:
|
|
5
|
+
* `pstack_skill`: trusted loading of pstack skills by name.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
* `
|
|
9
|
-
*
|
|
10
|
-
* `get()` is deliberately usable by trusted callers without that policy, which is the
|
|
11
|
-
* public seam this tool consumes. It accepts a skill name, not a path, so a call can
|
|
12
|
-
* only load a skill the package itself registered.
|
|
13
|
-
*
|
|
14
|
-
* The optional `resource` argument reads one file below the skill's directory. It is a
|
|
15
|
-
* convenience for the references and playbooks that live beside `SKILL.md`; the path is
|
|
16
|
-
* resolved and checked against the skill directory before reading, so `../` cannot
|
|
17
|
-
* escape it.
|
|
7
|
+
* `dsh-tool-skill` applies the model-invocation policy at the catalog boundary.
|
|
8
|
+
* `ctx.skills.get()` is invocation-neutral, which is the seam this tool uses to
|
|
9
|
+
* load a skill that `disable-model-invocation: true` hides from the model.
|
|
18
10
|
*/
|
|
19
|
-
/** Model-facing tool name. */
|
|
20
|
-
const TOOL_NAME = "pstack_skill";
|
|
21
|
-
/** Cordis row name, used by Loader diagnostics. */
|
|
22
11
|
const name = "pstack-skill";
|
|
23
|
-
/** The tool registry and the skill registry. */
|
|
24
12
|
const inject = ["skills", "tools"];
|
|
13
|
+
const TOOL_NAME = "pstack_skill";
|
|
25
14
|
const SKILL_NAME = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
26
|
-
/** Render one loaded skill in the
|
|
15
|
+
/** Render one loaded skill in the shape DSH skill tools use. */
|
|
27
16
|
function renderLoadedSkill(result) {
|
|
28
|
-
const lines = [`<skill_content name="${
|
|
17
|
+
const lines = [`<skill_content name="${escapeAttribute(result.name)}">`, "<skill_resources>"];
|
|
29
18
|
if (result.resourceBase === void 0) lines.push(`Resources for this skill are managed by provider "${escapeText(result.provider)}".`, "Load referenced resources only as needed.");
|
|
30
19
|
else if (result.resourceBase.kind === "directory") lines.push(`Base directory for this skill: ${escapeText(result.resourceBase.path)}`, "Resolve relative paths mentioned by this skill against the base directory before using them. Load referenced resources only as needed.");
|
|
31
20
|
else if (result.resourceBase.kind === "url") lines.push(`Base URL for this skill: ${escapeText(result.resourceBase.url)}`, "Resolve relative URLs mentioned by this skill against the base URL before using them. Load referenced resources only as needed.");
|
|
32
21
|
else lines.push(`Resources for this skill: ${escapeText(result.resourceBase.description)}`, "Load referenced resources only as needed.");
|
|
33
22
|
lines.push("</skill_resources>", "", "<skill_instructions>", result.content, "</skill_instructions>");
|
|
34
|
-
if (result.resource !== void 0) lines.push("", `<skill_resource path="${
|
|
23
|
+
if (result.resource !== void 0) lines.push("", `<skill_resource path="${escapeAttribute(result.resource.path)}">`, result.resource.content, "</skill_resource>");
|
|
35
24
|
lines.push("</skill_content>");
|
|
36
25
|
return lines.join("\n");
|
|
37
26
|
}
|
|
38
|
-
|
|
39
|
-
return value.replaceAll("&", "&").replaceAll("\"", """).replaceAll("<", "<");
|
|
40
|
-
}
|
|
41
|
-
function escapeText(value) {
|
|
42
|
-
return value.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">");
|
|
43
|
-
}
|
|
44
|
-
/** Read one resource below a directory skill, refusing traversal and absolute paths. */
|
|
27
|
+
/** Read one resource relative to a directory-backed skill. */
|
|
45
28
|
async function readSkillResource(definition, resource) {
|
|
46
29
|
const base = definition.resourceBase;
|
|
47
30
|
if (base === void 0 || base.kind !== "directory") throw new Error(`skill "${definition.name}" does not expose a directory resource base`);
|
|
@@ -125,11 +108,11 @@ const OUTPUT_SCHEMA = {
|
|
|
125
108
|
const TOOL_DESCRIPTION = [
|
|
126
109
|
"Load the full instructions of any pstack skill by name, including skills hidden from the model catalog.",
|
|
127
110
|
"",
|
|
128
|
-
"Use this when a pstack skill tells you to route through another pstack skill
|
|
111
|
+
"Use this when a pstack skill tells you to route through another pstack skill and the `skill` tool cannot see it because the skill disables model invocation.",
|
|
129
112
|
"",
|
|
130
|
-
"Pass `resource` with a path relative to the skill directory to read one reference or playbook beside its SKILL.md
|
|
113
|
+
"Pass `resource` with a path relative to the skill directory to read one reference or playbook beside its `SKILL.md`. The path cannot leave the skill directory."
|
|
131
114
|
].join("\n");
|
|
132
|
-
/** Build the tool
|
|
115
|
+
/** Build the tool for one skills registry. */
|
|
133
116
|
function createPstackSkillTool(skills) {
|
|
134
117
|
return {
|
|
135
118
|
name: TOOL_NAME,
|
|
@@ -144,7 +127,7 @@ function createPstackSkillTool(skills) {
|
|
|
144
127
|
},
|
|
145
128
|
resource: {
|
|
146
129
|
type: "string",
|
|
147
|
-
description: "Optional path relative to the skill directory
|
|
130
|
+
description: "Optional path relative to the skill directory."
|
|
148
131
|
}
|
|
149
132
|
},
|
|
150
133
|
required: ["name"]
|
|
@@ -158,26 +141,34 @@ function createPstackSkillTool(skills) {
|
|
|
158
141
|
},
|
|
159
142
|
isConcurrencySafe: () => true,
|
|
160
143
|
async execute(rawArgs, exec) {
|
|
144
|
+
if (typeof rawArgs !== "object" || rawArgs === null || Array.isArray(rawArgs)) throw new Error("pstack_skill takes an object argument");
|
|
161
145
|
const args = rawArgs;
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
146
|
+
const skillName = args["name"];
|
|
147
|
+
const resource = args["resource"];
|
|
148
|
+
if (typeof skillName !== "string" || !SKILL_NAME.test(skillName)) throw new Error(`invalid skill name "${String(skillName)}"`);
|
|
149
|
+
if (resource !== void 0 && typeof resource !== "string") throw new Error("resource must be a string when present");
|
|
150
|
+
const definition = await skills.get(skillName, {
|
|
165
151
|
signal: exec.signal,
|
|
166
152
|
...exec.agent === void 0 ? {} : { scope: exec.agent }
|
|
167
153
|
});
|
|
168
|
-
if (definition === void 0) throw new Error(`skill "${
|
|
154
|
+
if (definition === void 0) throw new Error(`skill "${skillName}" is unknown or no longer available`);
|
|
169
155
|
return {
|
|
170
156
|
name: definition.name,
|
|
171
157
|
provider: definition.provider,
|
|
172
158
|
...definition.resourceBase === void 0 ? {} : { resourceBase: definition.resourceBase },
|
|
173
159
|
content: definition.content,
|
|
174
|
-
...
|
|
160
|
+
...resource === void 0 ? {} : { resource: await readSkillResource(definition, resource) }
|
|
175
161
|
};
|
|
176
162
|
}
|
|
177
163
|
};
|
|
178
164
|
}
|
|
179
|
-
/** Register `pstack_skill` on one row. */
|
|
180
165
|
function apply(ctx) {
|
|
181
166
|
ctx.tools.register(createPstackSkillTool(ctx.skills));
|
|
182
167
|
}
|
|
168
|
+
function escapeAttribute(value) {
|
|
169
|
+
return value.replaceAll("&", "&").replaceAll("\"", """).replaceAll("<", "<");
|
|
170
|
+
}
|
|
171
|
+
function escapeText(value) {
|
|
172
|
+
return value.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">");
|
|
173
|
+
}
|
|
183
174
|
export { TOOL_NAME, apply, createPstackSkillTool, inject, name, readSkillResource, renderLoadedSkill };
|