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.
Files changed (544) hide show
  1. package/README.md +122 -76
  2. package/README.zh.md +116 -70
  3. package/assets/agent-presets.png +0 -0
  4. package/assets/plugin-configure.png +0 -0
  5. package/assets/plugin-recommended.png +0 -0
  6. package/assets/plugin-roles.png +0 -0
  7. package/assets/session-preset.png +0 -0
  8. package/cordis.patch.yml +332 -24
  9. package/dist/budget.d.mts +82 -0
  10. package/dist/budget.mjs +293 -0
  11. package/dist/catalogue-wgVaGeUx.d.mts +27 -0
  12. package/dist/catalogue.d.mts +2 -0
  13. package/dist/catalogue.mjs +116 -0
  14. package/dist/client.js +4072 -0
  15. package/dist/index.d.mts +2 -87
  16. package/dist/index.mjs +3 -394
  17. package/dist/models.d.mts +11 -40
  18. package/dist/models.mjs +47 -107
  19. package/dist/paths.d.mts +13 -0
  20. package/dist/paths.mjs +26 -0
  21. package/dist/poteto-mode.d.mts +37 -0
  22. package/dist/poteto-mode.mjs +61 -0
  23. package/dist/preset-copy.d.mts +12 -0
  24. package/dist/preset-copy.mjs +64 -0
  25. package/dist/preset.d.mts +31 -0
  26. package/dist/preset.mjs +51 -0
  27. package/dist/pstack/docs/harness/dsh.md +40 -40
  28. package/dist/pstack/plugin.json +21 -0
  29. package/dist/pstack/skills/poteto-mode/scripts/bootstrap.ts +62 -0
  30. package/dist/pstack/skills/poteto-mode/scripts/bun.lock +67 -0
  31. package/dist/pstack/skills/poteto-mode/scripts/check-plan.mjs +70 -83
  32. package/dist/pstack/skills/poteto-mode/scripts/{check-plan.test.mjs → check-plan.test.ts} +24 -42
  33. package/dist/pstack/skills/poteto-mode/scripts/package.json +16 -0
  34. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/cli.test.ts +224 -0
  35. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/cli.ts +223 -0
  36. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/fakes.test-helper.ts +129 -0
  37. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/github.test.ts +498 -0
  38. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/github.ts +726 -0
  39. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/policy.test.ts +482 -0
  40. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/policy.ts +842 -0
  41. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/render.ts +169 -0
  42. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/tsconfig.json +13 -0
  43. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/types.compile.ts +93 -0
  44. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/types.ts +414 -0
  45. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/watch-pr +6 -0
  46. package/dist/pstack/skills/poteto-mode/scripts/worktree-audit.sh +134 -0
  47. package/dist/pstack/skills/show-me-your-work/scripts/log.sh +42 -0
  48. package/dist/pstack/skills/statechart/scripts/backends/cfg.ts +33 -0
  49. package/dist/pstack/skills/statechart/scripts/backends/mermaid.ts +201 -0
  50. package/dist/pstack/skills/statechart/scripts/backends/plain-text.ts +72 -0
  51. package/dist/pstack/skills/statechart/scripts/backends/report.ts +177 -0
  52. package/dist/pstack/skills/statechart/scripts/frontends/config.ts +276 -0
  53. package/dist/pstack/skills/statechart/scripts/frontends/dot.ts +74 -0
  54. package/dist/pstack/skills/statechart/scripts/frontends/marks.ts +93 -0
  55. package/dist/pstack/skills/statechart/scripts/frontends/messages.ts +52 -0
  56. package/dist/pstack/skills/statechart/scripts/frontends/spec.ts +114 -0
  57. package/dist/pstack/skills/statechart/scripts/frontends/trace.ts +24 -0
  58. package/dist/pstack/skills/statechart/scripts/frontends/value.ts +166 -0
  59. package/dist/pstack/skills/statechart/scripts/frontends/verdict.ts +40 -0
  60. package/dist/pstack/skills/statechart/scripts/frontends/view.ts +119 -0
  61. package/dist/pstack/skills/statechart/scripts/ir.ts +547 -0
  62. package/dist/pstack/skills/statechart/scripts/package.json +11 -0
  63. package/dist/pstack/skills/statechart/scripts/passes/annotate.ts +128 -0
  64. package/dist/pstack/skills/statechart/scripts/passes/label.ts +269 -0
  65. package/dist/pstack/skills/statechart/scripts/passes/lift.ts +85 -0
  66. package/dist/pstack/skills/statechart/scripts/passes/loop-check.ts +68 -0
  67. package/dist/pstack/skills/statechart/scripts/passes/paths.ts +60 -0
  68. package/dist/pstack/skills/statechart/scripts/passes/reach.ts +135 -0
  69. package/dist/pstack/skills/statechart/scripts/passes/region-check.ts +97 -0
  70. package/dist/pstack/skills/statechart/scripts/passes/regions.ts +295 -0
  71. package/dist/pstack/skills/statechart/scripts/pipeline.ts +76 -0
  72. package/dist/pstack/skills/statechart/scripts/run.ts +481 -0
  73. package/dist/pstack/skills/statechart/scripts/statechart +29 -0
  74. package/dist/pstack/skills/statechart/scripts/statechart.ts +164 -0
  75. package/dist/pstack/skills/statechart/scripts/test/ConfigOracle.java +63 -0
  76. package/dist/pstack/skills/statechart/scripts/test/chart.test.ts +1210 -0
  77. package/dist/pstack/skills/statechart/scripts/test/charts/Braces.mmd +7 -0
  78. package/dist/pstack/skills/statechart/scripts/test/charts/Escapes.mmd +11 -0
  79. package/dist/pstack/skills/statechart/scripts/test/charts/Phases.mmd +29 -0
  80. package/dist/pstack/skills/statechart/scripts/test/cli.test.ts +1314 -0
  81. package/dist/pstack/skills/statechart/scripts/test/config-fuzz.test.ts +263 -0
  82. package/dist/pstack/skills/statechart/scripts/test/corpus/Counter/ChartRun.out +57 -0
  83. package/dist/pstack/skills/statechart/scripts/test/corpus/Counter/Counter.cfg +3 -0
  84. package/dist/pstack/skills/statechart/scripts/test/corpus/Counter/Counter.tla +10 -0
  85. package/dist/pstack/skills/statechart/scripts/test/corpus/Counter/chart.mmd +9 -0
  86. package/dist/pstack/skills/statechart/scripts/test/corpus/Counter/graph.dot +16 -0
  87. package/dist/pstack/skills/statechart/scripts/test/corpus/Counter/report.md +7 -0
  88. package/dist/pstack/skills/statechart/scripts/test/corpus/Counter/sany.out +2 -0
  89. package/dist/pstack/skills/statechart/scripts/test/corpus/Counter/verdict-1.out +49 -0
  90. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/ChartRun.out +60 -0
  91. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/CounterAction.cfg +4 -0
  92. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/CounterAction.tla +22 -0
  93. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/chart.mmd +26 -0
  94. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/graph.dot +19 -0
  95. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/report.md +20 -0
  96. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/sany.out +2 -0
  97. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/verdict-1.exit +1 -0
  98. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/verdict-1.out +56 -0
  99. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/verdict-2.exit +1 -0
  100. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/verdict-2.out +82 -0
  101. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterAction/verdict-3.out +57 -0
  102. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/ChartRun.out +59 -0
  103. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/CounterDeadlock.cfg +3 -0
  104. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/CounterDeadlock.tla +11 -0
  105. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/chart.mmd +22 -0
  106. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/graph.dot +16 -0
  107. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/report.md +17 -0
  108. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/sany.out +2 -0
  109. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-1.exit +1 -0
  110. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-1.out +56 -0
  111. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-2.exit +1 -0
  112. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-2.out +77 -0
  113. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterFan/ChartRun.out +69 -0
  114. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterFan/CounterFan.cfg +2 -0
  115. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterFan/CounterFan.tla +11 -0
  116. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterFan/chart.mmd +85 -0
  117. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterFan/graph.dot +70 -0
  118. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterFan/report.md +12 -0
  119. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterFan/sany.out +2 -0
  120. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterFan/verdict-1.exit +1 -0
  121. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterFan/verdict-1.out +67 -0
  122. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterFan/verdict-2.out +57 -0
  123. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/ChartRun.exit +1 -0
  124. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/ChartRun.out +85 -0
  125. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/CounterGuard.cfg +6 -0
  126. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/CounterGuard.tla +13 -0
  127. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/chart.mmd +5 -0
  128. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/graph.dot +10 -0
  129. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/report.md +31 -0
  130. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/sany.out +2 -0
  131. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/verdict-1.exit +1 -0
  132. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/verdict-1.out +64 -0
  133. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/verdict-2.exit +1 -0
  134. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterGuard/verdict-2.out +77 -0
  135. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPast/ChartRun.out +55 -0
  136. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPast/CounterInitPast.cfg +3 -0
  137. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPast/CounterInitPast.tla +10 -0
  138. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPast/chart.mmd +12 -0
  139. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPast/graph.dot +6 -0
  140. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPast/report.md +12 -0
  141. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPast/sany.out +2 -0
  142. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-1.exit +1 -0
  143. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-1.out +33 -0
  144. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-2.out +54 -0
  145. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPastHolds/ChartRun.out +54 -0
  146. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPastHolds/CounterInitPastHolds.cfg +3 -0
  147. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPastHolds/CounterInitPastHolds.tla +10 -0
  148. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPastHolds/chart.mmd +1 -0
  149. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPastHolds/graph.dot +6 -0
  150. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPastHolds/report.md +7 -0
  151. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPastHolds/sany.out +2 -0
  152. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInitPastHolds/verdict-1.out +46 -0
  153. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInstance/ChartRun.out +59 -0
  154. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInstance/CounterInstance.cfg +2 -0
  155. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInstance/CounterInstance.tla +10 -0
  156. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInstance/CounterSteps.tla +6 -0
  157. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInstance/chart.mmd +17 -0
  158. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInstance/graph.dot +15 -0
  159. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInstance/report.md +14 -0
  160. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInstance/sany.out +3 -0
  161. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInstance/verdict-1.exit +1 -0
  162. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterInstance/verdict-1.out +78 -0
  163. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterJump/ChartRun.out +59 -0
  164. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterJump/CounterJump.cfg +3 -0
  165. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterJump/CounterJump.tla +19 -0
  166. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterJump/chart.mmd +26 -0
  167. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterJump/graph.dot +22 -0
  168. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterJump/report.md +12 -0
  169. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterJump/sany.out +2 -0
  170. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterJump/verdict-1.exit +1 -0
  171. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterJump/verdict-1.out +58 -0
  172. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterJump/verdict-2.out +57 -0
  173. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterLoop/ChartRun.out +57 -0
  174. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterLoop/CounterLoop.cfg +2 -0
  175. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterLoop/CounterLoop.tla +11 -0
  176. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterLoop/chart.mmd +17 -0
  177. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterLoop/graph.dot +15 -0
  178. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterLoop/report.md +14 -0
  179. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterLoop/sany.out +2 -0
  180. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterLoop/verdict-1.exit +1 -0
  181. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterLoop/verdict-1.out +76 -0
  182. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/ChartRun.out +59 -0
  183. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/CounterOrder.cfg +3 -0
  184. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/CounterOrder.tla +11 -0
  185. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/chart.mmd +19 -0
  186. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/graph.dot +10 -0
  187. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/report.md +15 -0
  188. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/sany.out +2 -0
  189. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/verdict-1.exit +1 -0
  190. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/verdict-1.out +56 -0
  191. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/verdict-2.exit +1 -0
  192. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterOrder/verdict-2.out +67 -0
  193. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/ChartRun.out +62 -0
  194. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/CounterRules.cfg +6 -0
  195. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/CounterRules.tla +24 -0
  196. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/Moves.tla +5 -0
  197. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/chart.mmd +22 -0
  198. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/graph.dot +10 -0
  199. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/report.md +23 -0
  200. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/sany.out +3 -0
  201. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/verdict-1.exit +1 -0
  202. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/verdict-1.out +58 -0
  203. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/verdict-2.exit +1 -0
  204. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/verdict-2.out +66 -0
  205. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/verdict-3.exit +1 -0
  206. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/verdict-3.out +74 -0
  207. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterRules/verdict-4.out +59 -0
  208. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStart/ChartRun.out +58 -0
  209. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStart/CounterStart.cfg +3 -0
  210. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStart/CounterStart.tla +15 -0
  211. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStart/chart.mmd +18 -0
  212. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStart/graph.dot +13 -0
  213. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStart/report.md +11 -0
  214. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStart/sany.out +2 -0
  215. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStart/verdict-1.exit +1 -0
  216. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStart/verdict-1.out +33 -0
  217. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStart/verdict-2.out +57 -0
  218. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStop/ChartRun.out +57 -0
  219. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStop/CounterStop.cfg +3 -0
  220. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStop/CounterStop.tla +15 -0
  221. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStop/chart.mmd +7 -0
  222. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStop/graph.dot +13 -0
  223. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStop/report.md +6 -0
  224. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStop/sany.out +2 -0
  225. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterStop/verdict-1.out +49 -0
  226. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/ChartRun.out +61 -0
  227. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/CounterTie.cfg +4 -0
  228. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/CounterTie.tla +14 -0
  229. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/chart.mmd +30 -0
  230. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/graph.dot +19 -0
  231. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/report.md +27 -0
  232. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/sany.out +2 -0
  233. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/verdict-1.exit +1 -0
  234. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/verdict-1.out +56 -0
  235. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/verdict-2.exit +1 -0
  236. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/verdict-2.out +64 -0
  237. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/verdict-3.exit +1 -0
  238. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/verdict-3.out +87 -0
  239. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTie/verdict-4.out +57 -0
  240. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTieInGraph/ChartRun.out +60 -0
  241. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTieInGraph/CounterTieInGraph.cfg +3 -0
  242. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTieInGraph/CounterTieInGraph.tla +12 -0
  243. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTieInGraph/chart.mmd +23 -0
  244. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTieInGraph/graph.dot +19 -0
  245. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTieInGraph/report.md +11 -0
  246. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTieInGraph/sany.out +2 -0
  247. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-1.exit +1 -0
  248. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-1.out +56 -0
  249. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-2.out +57 -0
  250. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/ChartRun.out +61 -0
  251. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/CounterView.cfg +4 -0
  252. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/CounterView.tla +14 -0
  253. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/chart.mmd +23 -0
  254. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/graph.dot +19 -0
  255. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/report.md +27 -0
  256. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/sany.out +2 -0
  257. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/verdict-1.exit +1 -0
  258. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/verdict-1.out +56 -0
  259. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/verdict-2.exit +1 -0
  260. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/verdict-2.out +64 -0
  261. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/verdict-3.exit +1 -0
  262. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/verdict-3.out +87 -0
  263. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/verdict-4.out +57 -0
  264. package/dist/pstack/skills/statechart/scripts/test/corpus/CounterView/view.mjs +1 -0
  265. package/dist/pstack/skills/statechart/scripts/test/corpus/DieHard/ChartRun.out +59 -0
  266. package/dist/pstack/skills/statechart/scripts/test/corpus/DieHard/DieHard.cfg +4 -0
  267. package/dist/pstack/skills/statechart/scripts/test/corpus/DieHard/DieHard.tla +38 -0
  268. package/dist/pstack/skills/statechart/scripts/test/corpus/DieHard/chart.mmd +92 -0
  269. package/dist/pstack/skills/statechart/scripts/test/corpus/DieHard/graph.dot +126 -0
  270. package/dist/pstack/skills/statechart/scripts/test/corpus/DieHard/report.md +17 -0
  271. package/dist/pstack/skills/statechart/scripts/test/corpus/DieHard/sany.out +2 -0
  272. package/dist/pstack/skills/statechart/scripts/test/corpus/DieHard/verdict-1.exit +1 -0
  273. package/dist/pstack/skills/statechart/scripts/test/corpus/DieHard/verdict-1.out +91 -0
  274. package/dist/pstack/skills/statechart/scripts/test/corpus/DieHard/verdict-2.out +57 -0
  275. package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/ChartRun.out +61 -0
  276. package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/FirstRule.cfg +6 -0
  277. package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/FirstRule.tla +11 -0
  278. package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/chart.mmd +22 -0
  279. package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/graph.dot +16 -0
  280. package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/report.md +25 -0
  281. package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/sany.out +2 -0
  282. package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/verdict-1.exit +1 -0
  283. package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/verdict-1.out +56 -0
  284. package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/verdict-2.exit +1 -0
  285. package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/verdict-2.out +64 -0
  286. package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/verdict-3.exit +1 -0
  287. package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/verdict-3.out +64 -0
  288. package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/verdict-4.exit +1 -0
  289. package/dist/pstack/skills/statechart/scripts/test/corpus/FirstRule/verdict-4.out +77 -0
  290. package/dist/pstack/skills/statechart/scripts/test/corpus/HiddenClock/ChartRun.out +57 -0
  291. package/dist/pstack/skills/statechart/scripts/test/corpus/HiddenClock/HiddenClock.cfg +4 -0
  292. package/dist/pstack/skills/statechart/scripts/test/corpus/HiddenClock/HiddenClock.tla +11 -0
  293. package/dist/pstack/skills/statechart/scripts/test/corpus/HiddenClock/chart.mmd +13 -0
  294. package/dist/pstack/skills/statechart/scripts/test/corpus/HiddenClock/graph.dot +12 -0
  295. package/dist/pstack/skills/statechart/scripts/test/corpus/HiddenClock/report.md +11 -0
  296. package/dist/pstack/skills/statechart/scripts/test/corpus/HiddenClock/sany.out +2 -0
  297. package/dist/pstack/skills/statechart/scripts/test/corpus/HiddenClock/verdict-1.exit +1 -0
  298. package/dist/pstack/skills/statechart/scripts/test/corpus/HiddenClock/verdict-1.out +72 -0
  299. package/dist/pstack/skills/statechart/scripts/test/corpus/Login/ChartRun.out +57 -0
  300. package/dist/pstack/skills/statechart/scripts/test/corpus/Login/Login.cfg +3 -0
  301. package/dist/pstack/skills/statechart/scripts/test/corpus/Login/Login.tla +62 -0
  302. package/dist/pstack/skills/statechart/scripts/test/corpus/Login/chart.mmd +27 -0
  303. package/dist/pstack/skills/statechart/scripts/test/corpus/Login/graph.dot +40 -0
  304. package/dist/pstack/skills/statechart/scripts/test/corpus/Login/report.md +7 -0
  305. package/dist/pstack/skills/statechart/scripts/test/corpus/Login/sany.out +1 -0
  306. package/dist/pstack/skills/statechart/scripts/test/corpus/Login/verdict-1.out +47 -0
  307. package/dist/pstack/skills/statechart/scripts/test/corpus/Login/view.mjs +1 -0
  308. package/dist/pstack/skills/statechart/scripts/test/corpus/LoginGuarded/ChartRun.out +57 -0
  309. package/dist/pstack/skills/statechart/scripts/test/corpus/LoginGuarded/LoginGuarded.cfg +2 -0
  310. package/dist/pstack/skills/statechart/scripts/test/corpus/LoginGuarded/LoginGuarded.tla +64 -0
  311. package/dist/pstack/skills/statechart/scripts/test/corpus/LoginGuarded/chart.mmd +28 -0
  312. package/dist/pstack/skills/statechart/scripts/test/corpus/LoginGuarded/graph.dot +37 -0
  313. package/dist/pstack/skills/statechart/scripts/test/corpus/LoginGuarded/report.md +8 -0
  314. package/dist/pstack/skills/statechart/scripts/test/corpus/LoginGuarded/sany.out +1 -0
  315. package/dist/pstack/skills/statechart/scripts/test/corpus/LoginGuarded/verdict-1.out +47 -0
  316. package/dist/pstack/skills/statechart/scripts/test/corpus/LoginGuarded/view.mjs +1 -0
  317. package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/ChartRun.out +60 -0
  318. package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/LoginParallel.cfg +3 -0
  319. package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/LoginParallel.tla +64 -0
  320. package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/chart.mmd +44 -0
  321. package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/graph.dot +58 -0
  322. package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/report.md +17 -0
  323. package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/sany.out +1 -0
  324. package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/verdict-1.exit +1 -0
  325. package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/verdict-1.out +83 -0
  326. package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/verdict-2.out +57 -0
  327. package/dist/pstack/skills/statechart/scripts/test/corpus/LoginParallel/view.mjs +1 -0
  328. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/ChartRun.out +60 -0
  329. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/MediaPlayer.cfg +3 -0
  330. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/MediaPlayer.tla +103 -0
  331. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/chart.mmd +43 -0
  332. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/graph.dot +93 -0
  333. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/report.md +14 -0
  334. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/sany.out +1 -0
  335. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-1.exit +1 -0
  336. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-1.out +59 -0
  337. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-2.out +72 -0
  338. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/view.mjs +3 -0
  339. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerFixed/ChartRun.out +57 -0
  340. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerFixed/MediaPlayerFixed.cfg +2 -0
  341. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerFixed/MediaPlayerFixed.tla +100 -0
  342. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerFixed/chart.mmd +31 -0
  343. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerFixed/graph.dot +85 -0
  344. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerFixed/report.md +9 -0
  345. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerFixed/sany.out +1 -0
  346. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerFixed/verdict-1.out +47 -0
  347. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerFixed/view.mjs +3 -0
  348. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/ChartRun.out +59 -0
  349. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayer.tla +103 -0
  350. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayerProps.cfg +3 -0
  351. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayerProps.tla +6 -0
  352. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/chart.mmd +42 -0
  353. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/graph.dot +93 -0
  354. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/report.md +19 -0
  355. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/sany.out +2 -0
  356. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-1.exit +1 -0
  357. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-1.out +61 -0
  358. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-2.out +59 -0
  359. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-3.out +61 -0
  360. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-4.exit +1 -0
  361. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-4.out +66 -0
  362. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-5.exit +1 -0
  363. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-5.out +58 -0
  364. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-6.out +49 -0
  365. package/dist/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/view.mjs +3 -0
  366. package/dist/pstack/skills/statechart/scripts/test/corpus/PickWorker/ChartRun.out +57 -0
  367. package/dist/pstack/skills/statechart/scripts/test/corpus/PickWorker/PickWorker.cfg +6 -0
  368. package/dist/pstack/skills/statechart/scripts/test/corpus/PickWorker/PickWorker.tla +11 -0
  369. package/dist/pstack/skills/statechart/scripts/test/corpus/PickWorker/chart.mmd +5 -0
  370. package/dist/pstack/skills/statechart/scripts/test/corpus/PickWorker/graph.dot +11 -0
  371. package/dist/pstack/skills/statechart/scripts/test/corpus/PickWorker/report.md +7 -0
  372. package/dist/pstack/skills/statechart/scripts/test/corpus/PickWorker/sany.out +5 -0
  373. package/dist/pstack/skills/statechart/scripts/test/corpus/PickWorker/verdict-1.out +70 -0
  374. package/dist/pstack/skills/statechart/scripts/test/corpus/Shadow/ChartRun.out +61 -0
  375. package/dist/pstack/skills/statechart/scripts/test/corpus/Shadow/Shadow.cfg +4 -0
  376. package/dist/pstack/skills/statechart/scripts/test/corpus/Shadow/Shadow.tla +11 -0
  377. package/dist/pstack/skills/statechart/scripts/test/corpus/Shadow/ShadowLib.tla +6 -0
  378. package/dist/pstack/skills/statechart/scripts/test/corpus/Shadow/ShadowSub.tla +3 -0
  379. package/dist/pstack/skills/statechart/scripts/test/corpus/Shadow/chart.mmd +9 -0
  380. package/dist/pstack/skills/statechart/scripts/test/corpus/Shadow/graph.dot +16 -0
  381. package/dist/pstack/skills/statechart/scripts/test/corpus/Shadow/report.md +8 -0
  382. package/dist/pstack/skills/statechart/scripts/test/corpus/Shadow/sany.out +4 -0
  383. package/dist/pstack/skills/statechart/scripts/test/corpus/Shadow/verdict-1.out +65 -0
  384. package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/ChartRun.out +59 -0
  385. package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/SpacedNames.cfg +2 -0
  386. package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/SpacedNames.tla +9 -0
  387. package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/chart.mmd +23 -0
  388. package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/graph.dot +17 -0
  389. package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/report.md +15 -0
  390. package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/sany.out +1 -0
  391. package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/verdict-1.exit +1 -0
  392. package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/verdict-1.out +65 -0
  393. package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/verdict-2.exit +1 -0
  394. package/dist/pstack/skills/statechart/scripts/test/corpus/SpacedNames/verdict-2.out +75 -0
  395. package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/ChartRun.out +69 -0
  396. package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/TwoPhase.cfg +3 -0
  397. package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/TwoPhase.tla +75 -0
  398. package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/chart.mmd +60 -0
  399. package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/graph.dot +297 -0
  400. package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/report.md +20 -0
  401. package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/sany.out +1 -0
  402. package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/verdict-1.exit +1 -0
  403. package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/verdict-1.out +95 -0
  404. package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/verdict-2.out +57 -0
  405. package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhase/view.mjs +1 -0
  406. package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhaseFixed/ChartRun.out +57 -0
  407. package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhaseFixed/TwoPhaseFixed.cfg +3 -0
  408. package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhaseFixed/TwoPhaseFixed.tla +75 -0
  409. package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhaseFixed/chart.mmd +37 -0
  410. package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhaseFixed/graph.dot +223 -0
  411. package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhaseFixed/report.md +11 -0
  412. package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhaseFixed/sany.out +1 -0
  413. package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhaseFixed/verdict-1.out +47 -0
  414. package/dist/pstack/skills/statechart/scripts/test/corpus/TwoPhaseFixed/view.mjs +1 -0
  415. package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/ChartRun.exit +1 -0
  416. package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/ChartRun.out +75 -0
  417. package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/TypeGuard.cfg +5 -0
  418. package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/TypeGuard.tla +11 -0
  419. package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/chart.mmd +18 -0
  420. package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/graph.dot +14 -0
  421. package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/report.md +29 -0
  422. package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/sany.out +2 -0
  423. package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/verdict-1.exit +1 -0
  424. package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/verdict-1.out +64 -0
  425. package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/verdict-2.exit +1 -0
  426. package/dist/pstack/skills/statechart/scripts/test/corpus/TypeGuard/verdict-2.out +75 -0
  427. package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/ChartRun.out +58 -0
  428. package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/UserNoDeadlock.cfg +2 -0
  429. package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/UserNoDeadlock.tla +8 -0
  430. package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/chart.mmd +22 -0
  431. package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/graph.dot +16 -0
  432. package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/report.md +15 -0
  433. package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/sany.out +2 -0
  434. package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-1.exit +1 -0
  435. package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-1.out +56 -0
  436. package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-2.exit +1 -0
  437. package/dist/pstack/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-2.out +77 -0
  438. package/dist/pstack/skills/statechart/scripts/test/corpus.test.ts +403 -0
  439. package/dist/pstack/skills/statechart/scripts/test/differential.test.ts +565 -0
  440. package/dist/pstack/skills/statechart/scripts/test/grid/Grid.cfg +2 -0
  441. package/dist/pstack/skills/statechart/scripts/test/grid/Grid.tla +9 -0
  442. package/dist/pstack/skills/statechart/scripts/test/grid/sany.out +2 -0
  443. package/dist/pstack/skills/statechart/scripts/test/java.ts +63 -0
  444. package/dist/pstack/skills/statechart/scripts/test/labels.ts +643 -0
  445. package/dist/pstack/skills/statechart/scripts/test/messages.test.ts +212 -0
  446. package/dist/pstack/skills/statechart/scripts/test/pipeline.test.ts +270 -0
  447. package/dist/pstack/skills/statechart/scripts/test/plain-tlc.test.ts +255 -0
  448. package/dist/pstack/skills/statechart/scripts/test/render.test.ts +81 -0
  449. package/dist/pstack/skills/statechart/scripts/test/tlc-out.test.ts +90 -0
  450. package/dist/pstack/skills/statechart/scripts/test/tlc.ts +158 -0
  451. package/dist/pstack/skills/statechart/scripts/tsconfig.json +11 -0
  452. package/dist/pstack/skills/statechart/scripts/worker.ts +35 -0
  453. package/dist/readonly.d.mts +3 -0
  454. package/dist/readonly.mjs +9 -0
  455. package/dist/role-catalog.d.mts +11 -24
  456. package/dist/role-catalog.mjs +17 -32
  457. package/dist/role-config.d.mts +41 -0
  458. package/dist/role-config.mjs +112 -0
  459. package/dist/role-editor.d.mts +25 -0
  460. package/dist/role-editor.mjs +372 -0
  461. package/dist/role-file-CIVHnhBg.d.mts +53 -0
  462. package/dist/role-file.d.mts +2 -0
  463. package/dist/role-file.mjs +121 -0
  464. package/dist/{role-manifest-8OERX9-s.d.mts → role-manifest-D1npMjqZ.d.mts} +21 -10
  465. package/dist/role-manifest.d.mts +2 -0
  466. package/dist/{role-manifest-79cnFfDM.mjs → role-manifest.mjs} +20 -16
  467. package/dist/role-remote.d.mts +23 -0
  468. package/dist/role-remote.mjs +106 -0
  469. package/dist/{roles.d.mts → role-service.d.mts} +8 -4
  470. package/dist/role-service.mjs +43 -0
  471. package/dist/role-wire.d.mts +54 -0
  472. package/dist/role-wire.mjs +127 -0
  473. package/dist/route-7SqXDYrL.d.mts +36 -0
  474. package/dist/route.d.mts +2 -0
  475. package/dist/route.mjs +78 -0
  476. package/dist/skill.d.mts +9 -23
  477. package/dist/skill.mjs +28 -37
  478. package/dist/skills/authored/docs-drift/SKILL.md +4 -4
  479. package/dist/skills/authored/docs-drift/SKILL.zh.md +4 -4
  480. package/dist/skills/vendored/control-cli/SKILL.md +109 -0
  481. package/dist/skills/vendored/control-ui/SKILL.md +109 -0
  482. package/dist/skills/vendored/deslop/SKILL.md +22 -0
  483. package/dist/subagent.d.mts +60 -169
  484. package/dist/subagent.mjs +344 -587
  485. package/dist/wire-error-D_r-UW4w.d.mts +5 -0
  486. package/dist/wire-error.d.mts +2 -0
  487. package/dist/wire-error.mjs +9 -0
  488. package/locale/en.json +1 -1
  489. package/package.json +51 -35
  490. package/assets/pstack-config-entry.png +0 -0
  491. package/dist/client.mjs +0 -2482
  492. package/dist/client.mjs.map +0 -1
  493. package/dist/host-contract-CUPSpeNk.d.mts +0 -22
  494. package/dist/paths-yji9SNak.mjs +0 -47
  495. package/dist/pstack/skills/poteto-mode/scripts/expect.mjs +0 -254
  496. package/dist/pstack/skills/poteto-mode/scripts/support.mjs +0 -93
  497. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/cli.mjs +0 -123
  498. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/cli.test.mjs +0 -217
  499. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/fakes.test-helper.mjs +0 -119
  500. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/github.mjs +0 -626
  501. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/github.test.mjs +0 -521
  502. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/policy.mjs +0 -657
  503. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/policy.test.mjs +0 -523
  504. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/render.mjs +0 -106
  505. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/types.mjs +0 -9
  506. package/dist/pstack/skills/poteto-mode/scripts/watch-pr/watch-pr.mjs +0 -5
  507. package/dist/pstack/skills/poteto-mode/scripts/worktree-audit.mjs +0 -668
  508. package/dist/pstack/skills/poteto-mode/scripts/worktree-audit.test.mjs +0 -134
  509. package/dist/pstack/skills/show-me-your-work/scripts/log.mjs +0 -106
  510. package/dist/pstack/skills/show-me-your-work/scripts/log.test.mjs +0 -56
  511. package/dist/pstack/skills/statechart/scripts/backends/cfg.mjs +0 -31
  512. package/dist/pstack/skills/statechart/scripts/backends/mermaid.mjs +0 -186
  513. package/dist/pstack/skills/statechart/scripts/backends/plain-text.mjs +0 -62
  514. package/dist/pstack/skills/statechart/scripts/backends/report.mjs +0 -84
  515. package/dist/pstack/skills/statechart/scripts/frontends/config.mjs +0 -268
  516. package/dist/pstack/skills/statechart/scripts/frontends/dot.mjs +0 -67
  517. package/dist/pstack/skills/statechart/scripts/frontends/marks.mjs +0 -94
  518. package/dist/pstack/skills/statechart/scripts/frontends/messages.mjs +0 -48
  519. package/dist/pstack/skills/statechart/scripts/frontends/spec.mjs +0 -101
  520. package/dist/pstack/skills/statechart/scripts/frontends/trace.mjs +0 -39
  521. package/dist/pstack/skills/statechart/scripts/frontends/value.mjs +0 -180
  522. package/dist/pstack/skills/statechart/scripts/frontends/verdict.mjs +0 -40
  523. package/dist/pstack/skills/statechart/scripts/frontends/view.mjs +0 -99
  524. package/dist/pstack/skills/statechart/scripts/ir.mjs +0 -277
  525. package/dist/pstack/skills/statechart/scripts/passes/annotate.mjs +0 -92
  526. package/dist/pstack/skills/statechart/scripts/passes/label.mjs +0 -210
  527. package/dist/pstack/skills/statechart/scripts/passes/lift.mjs +0 -84
  528. package/dist/pstack/skills/statechart/scripts/passes/loop-check.mjs +0 -47
  529. package/dist/pstack/skills/statechart/scripts/passes/paths.mjs +0 -72
  530. package/dist/pstack/skills/statechart/scripts/passes/reach.mjs +0 -135
  531. package/dist/pstack/skills/statechart/scripts/passes/region-check.mjs +0 -82
  532. package/dist/pstack/skills/statechart/scripts/passes/regions.mjs +0 -268
  533. package/dist/pstack/skills/statechart/scripts/pipeline.mjs +0 -72
  534. package/dist/pstack/skills/statechart/scripts/run.mjs +0 -440
  535. package/dist/pstack/skills/statechart/scripts/statechart.mjs +0 -155
  536. package/dist/pstack/skills/statechart/scripts/statechart.test.mjs +0 -198
  537. package/dist/pstack/skills/statechart/scripts/worker.mjs +0 -31
  538. package/dist/remote.d.mts +0 -27
  539. package/dist/remote.mjs +0 -235
  540. package/dist/role-config-a4JpVdc-.mjs +0 -379
  541. package/dist/role-wire-CAJsVA6e.d.mts +0 -54
  542. package/dist/roles.mjs +0 -293
  543. package/dist/script.d.mts +0 -91
  544. 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 "./models.mjs";
2
- import { n as SaveRoleRequest, r as SaveRoleResult, t as RoleFileSnapshot } from "./role-wire-CAJsVA6e.mjs";
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 the role file for the Plugins configuration page. */
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 offers for its provider/model/effort selects. */
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 };
@@ -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 { _ as ToolsHost, g as ToolDefinition, l as SkillDefinition, p as SkillResourceBase, t as Agent } from "./host-contract-CUPSpeNk.mjs";
2
- /** Model-facing tool name. */
3
- export declare const TOOL_NAME = "pstack_skill";
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
- /** The slice of `ctx.skills` this tool reads. */
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 canonical `<skill_content>` shape. */
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 below a directory skill, refusing traversal and absolute paths. */
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 definition. Exported so tests can drive `execute` directly. */
36
- export declare function createPstackSkillTool(skills: SkillsHost): ToolDefinition;
37
- /** Register `pstack_skill` on one row. */
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`: the trusted skill loader for pstack's own instructions.
5
+ * `pstack_skill`: trusted loading of pstack skills by name.
6
6
  *
7
- * pstack hides most of its skills from the model catalog: `how`, `why`, `architect`,
8
- * `arena`, and the principle skills all declare `disable-model-invocation: true`, so
9
- * `poteto-mode` cannot route to them through DSH's `skill` tool. The registry's
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 canonical `<skill_content>` shape. */
15
+ /** Render one loaded skill in the shape DSH skill tools use. */
27
16
  function renderLoadedSkill(result) {
28
- const lines = [`<skill_content name="${escapeAttr(result.name)}">`, "<skill_resources>"];
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="${escapeAttr(result.resource.path)}">`, result.resource.content, "</skill_resource>");
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
- function escapeAttr(value) {
39
- return value.replaceAll("&", "&amp;").replaceAll("\"", "&quot;").replaceAll("<", "&lt;");
40
- }
41
- function escapeText(value) {
42
- return value.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
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 (for example how, why, or architect) and the `skill` tool reports that it is unavailable because the skill disables model invocation.",
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. The path cannot leave the skill directory."
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 definition. Exported so tests can drive `execute` directly. */
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, such as `references/explorer-prompt.md`."
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
- if (typeof args.name !== "string" || !SKILL_NAME.test(args.name)) throw new Error(`invalid skill name "${String(args.name)}"`);
163
- if (args.resource !== void 0 && typeof args.resource !== "string") throw new Error("resource must be a string when present");
164
- const definition = await skills.get(args.name, {
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 "${args.name}" is unknown or no longer available`);
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
- ...args.resource === void 0 ? {} : { resource: await readSkillResource(definition, args.resource) }
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("&", "&amp;").replaceAll("\"", "&quot;").replaceAll("<", "&lt;");
170
+ }
171
+ function escapeText(value) {
172
+ return value.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
173
+ }
183
174
  export { TOOL_NAME, apply, createPstackSkillTool, inject, name, readSkillResource, renderLoadedSkill };