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,372 @@
1
+ import { collectCatalogue } from "./models.mjs";
2
+ import { isBudgetRowBlocked, parseBudgetApplyRequest, planBudget, renderBudgetText } from "./budget.mjs";
3
+ import { isRoleLineFor, parseRoleFileDocument } from "./role-file.mjs";
4
+ import { parseRoleConfiguration, readRoleConfiguration } from "./role-config.mjs";
5
+ import { ROLE_MANIFEST, findRole } from "./role-manifest.mjs";
6
+ import { renderRouteValue, validateRoleRouteShape, validateRouteParts } from "./route.mjs";
7
+ import { parseSaveRoleRequest } from "./role-wire.mjs";
8
+ import { dirname } from "node:path";
9
+ import { mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
10
+ import { randomUUID } from "node:crypto";
11
+ // src/role-editor.ts
12
+ /**
13
+ * Role-file editing behind the settings page.
14
+ *
15
+ * A save changes or removes one logical role entry and preserves the other
16
+ * logical lines. The editor normalizes line endings and the final newline.
17
+ * Concrete routes are validated against the live model catalogue before the
18
+ * first byte is written, so a rejected save leaves the file unchanged.
19
+ */
20
+ /** Project one parsed file onto the manifest. */
21
+ function snapshotFromConfiguration(config) {
22
+ if (config.status === "unreadable") return {
23
+ path: config.path,
24
+ status: "unreadable",
25
+ reason: config.reason,
26
+ roles: ROLE_MANIFEST.map((role) => roleView(role.key, role.shape, void 0)),
27
+ issues: [],
28
+ canSave: false
29
+ };
30
+ if (config.status === "missing") return {
31
+ path: config.path,
32
+ status: "missing",
33
+ roles: ROLE_MANIFEST.map((role) => roleView(role.key, role.shape, void 0)),
34
+ issues: [],
35
+ canSave: true
36
+ };
37
+ return {
38
+ path: config.path,
39
+ status: "loaded",
40
+ ...config.budget === void 0 ? {} : { budget: config.budget },
41
+ roles: ROLE_MANIFEST.map((role) => roleView(role.key, role.shape, config.roles.get(role.key))),
42
+ issues: config.issues.map((issue) => ({
43
+ ...issue.line === void 0 ? {} : { line: issue.line },
44
+ message: issue.message
45
+ })),
46
+ canSave: true
47
+ };
48
+ }
49
+ function roleView(key, shape, entry) {
50
+ return {
51
+ key,
52
+ shape,
53
+ configured: entry !== void 0,
54
+ ...entry === void 0 ? {} : { line: entry.line },
55
+ routes: entry === void 0 ? [] : entry.routes.map(routeView),
56
+ issues: entry === void 0 ? [] : [...entry.issues]
57
+ };
58
+ }
59
+ function routeView(route) {
60
+ if (route.kind === "inherit") return {
61
+ kind: "inherit",
62
+ alias: route.alias
63
+ };
64
+ return {
65
+ kind: "route",
66
+ provider: route.provider,
67
+ model: route.model,
68
+ ...route.effort === void 0 ? {} : { effort: route.effort }
69
+ };
70
+ }
71
+ /** Validate a save against the manifest and the live model catalogue. */
72
+ function validateSaveRequest(request, catalogue) {
73
+ const spec = findRole(request.key);
74
+ if (spec === void 0) return {
75
+ ok: false,
76
+ reason: `unknown pstack role ${JSON.stringify(request.key)}`
77
+ };
78
+ const shapeIssue = validateRoleRouteShape(spec, request.routes);
79
+ if (shapeIssue !== void 0) return {
80
+ ok: false,
81
+ reason: shapeIssue
82
+ };
83
+ if (request.routes.length === 0) return {
84
+ ok: true,
85
+ key: spec.key,
86
+ routes: []
87
+ };
88
+ const routes = [];
89
+ for (const [index, route] of request.routes.entries()) {
90
+ if (route.kind === "inherit") {
91
+ routes.push({
92
+ kind: "inherit",
93
+ alias: route.alias
94
+ });
95
+ continue;
96
+ }
97
+ const provider = route.provider.trim();
98
+ const model = route.model.trim();
99
+ if (provider === "" || model === "") return {
100
+ ok: false,
101
+ reason: `route ${index + 1} needs both a provider and a model`
102
+ };
103
+ const effort = route.effort?.trim();
104
+ const routeIssue = validateRouteParts(provider, model, effort);
105
+ if (routeIssue !== void 0) return {
106
+ ok: false,
107
+ reason: `route ${index + 1} ${routeIssue}`
108
+ };
109
+ const providerEntry = catalogue.providers.find((entry) => entry.provider === provider);
110
+ if (providerEntry === void 0) return {
111
+ ok: false,
112
+ reason: `provider ${JSON.stringify(provider)} is not in the live model directory`
113
+ };
114
+ if (providerEntry.error !== void 0) return {
115
+ ok: false,
116
+ reason: `provider ${JSON.stringify(provider)} failed discovery: ${providerEntry.error}`
117
+ };
118
+ const modelEntry = providerEntry.models.find((entry) => entry.id === model);
119
+ if (modelEntry === void 0) return {
120
+ ok: false,
121
+ reason: `provider ${JSON.stringify(provider)} does not advertise ${JSON.stringify(model)}`
122
+ };
123
+ if (modelEntry.error !== void 0) return {
124
+ ok: false,
125
+ reason: `model ${JSON.stringify(`${provider}/${model}`)} failed discovery: ${modelEntry.error}`
126
+ };
127
+ if (effort !== void 0 && effort !== "" && !modelEntry.efforts.includes(effort)) return {
128
+ ok: false,
129
+ reason: `model ${JSON.stringify(`${provider}/${model}`)} does not advertise effort ${JSON.stringify(effort)}`
130
+ };
131
+ routes.push({
132
+ kind: "route",
133
+ provider,
134
+ model,
135
+ ...effort === void 0 || effort === "" ? {} : { effort }
136
+ });
137
+ }
138
+ return {
139
+ ok: true,
140
+ key: spec.key,
141
+ routes
142
+ };
143
+ }
144
+ /** Replace or append one role line, preserving the other logical lines. */
145
+ function updateRoleText(text, key, value) {
146
+ const { bom, eol, body } = splitDocumentText(text);
147
+ const document = parseRoleFileDocument(stripTrailingEol(body), "");
148
+ const matches = [];
149
+ document.lines.forEach((line, index) => {
150
+ if (isRoleLineFor(line, key)) matches.push(index);
151
+ });
152
+ const target = matches.at(-1) ?? -1;
153
+ const matching = new Set(matches);
154
+ const lines = document.lines.flatMap((line, index) => {
155
+ if (index === target) return [`${key}: ${value}`];
156
+ if (matching.has(index)) return [];
157
+ return [line.raw];
158
+ });
159
+ if (target === -1) {
160
+ if (lines.length > 0 && lines[lines.length - 1] === "") lines.pop();
161
+ lines.push(`${key}: ${value}`);
162
+ }
163
+ return `${bom}${lines.join(eol)}${eol}`;
164
+ }
165
+ /** Remove every matching role line. Clearing an absent role is a no-op. */
166
+ function removeRoleText(text, key) {
167
+ const { bom, eol, body } = splitDocumentText(text);
168
+ const document = parseRoleFileDocument(stripTrailingEol(body), "");
169
+ const remaining = document.lines.filter((line) => !isRoleLineFor(line, key)).map((line) => line.raw);
170
+ if (remaining.length === document.lines.length) return text;
171
+ return remaining.length === 0 ? "" : `${bom}${remaining.join(eol)}${eol}`;
172
+ }
173
+ /** Split a document into BOM, dominant EOL, and body. */
174
+ function splitDocumentText(text) {
175
+ const bom = text.startsWith("") ? "" : "";
176
+ const body = bom === "" ? text : text.slice(1);
177
+ return {
178
+ bom,
179
+ eol: body.includes("\r\n") ? "\r\n" : "\n",
180
+ body
181
+ };
182
+ }
183
+ function stripTrailingEol(body) {
184
+ return body.replace(/\r?\n$/, "");
185
+ }
186
+ /** Save one role and return the reloaded snapshot. */
187
+ async function saveRoleConfiguration(path, request, llm, signal) {
188
+ signal.throwIfAborted();
189
+ let parsed;
190
+ try {
191
+ parsed = parseSaveRoleRequest(request);
192
+ } catch (error) {
193
+ return {
194
+ ok: false,
195
+ reason: describeError(error)
196
+ };
197
+ }
198
+ const current = readRoleConfiguration(path);
199
+ if (current.status === "unreadable") return {
200
+ ok: false,
201
+ reason: `the role file is unreadable: ${current.reason}`
202
+ };
203
+ let text = "";
204
+ const readText = () => {
205
+ if (current.status !== "loaded") return {
206
+ ok: true,
207
+ text: ""
208
+ };
209
+ try {
210
+ return {
211
+ ok: true,
212
+ text: readFileSync(path, "utf8")
213
+ };
214
+ } catch (error) {
215
+ return {
216
+ ok: false,
217
+ reason: `the role file could not be read: ${describeError(error)}`
218
+ };
219
+ }
220
+ };
221
+ let next;
222
+ if (parsed.routes.length === 0) {
223
+ const validation = validateSaveRequest(parsed, {
224
+ providers: [],
225
+ truncated: false
226
+ });
227
+ if (!validation.ok) return validation;
228
+ const read = readText();
229
+ if (!read.ok) return read;
230
+ text = read.text;
231
+ next = removeRoleText(text, validation.key);
232
+ } else if (parsed.routes.every((route) => route.kind === "inherit")) {
233
+ const validation = validateSaveRequest(parsed, {
234
+ providers: [],
235
+ truncated: false
236
+ });
237
+ if (!validation.ok) return validation;
238
+ const read = readText();
239
+ if (!read.ok) return read;
240
+ text = read.text;
241
+ next = updateRoleText(text, validation.key, renderRouteValue(validation.routes));
242
+ } else {
243
+ let catalogue;
244
+ try {
245
+ catalogue = await collectCatalogue(llm, void 0, signal);
246
+ } catch (error) {
247
+ signal.throwIfAborted();
248
+ return {
249
+ ok: false,
250
+ reason: `the model catalogue could not be loaded: ${describeError(error)}`
251
+ };
252
+ }
253
+ signal.throwIfAborted();
254
+ const validation = validateSaveRequest(parsed, catalogue);
255
+ if (!validation.ok) return validation;
256
+ const read = readText();
257
+ if (!read.ok) return read;
258
+ text = read.text;
259
+ next = updateRoleText(text, validation.key, renderRouteValue(validation.routes));
260
+ }
261
+ if (next === text) return {
262
+ ok: true,
263
+ snapshot: snapshotFromConfiguration(readRoleConfiguration(path))
264
+ };
265
+ try {
266
+ writeAtomically(path, next);
267
+ } catch (error) {
268
+ return {
269
+ ok: false,
270
+ reason: `the role file could not be written: ${describeError(error)}`
271
+ };
272
+ }
273
+ return {
274
+ ok: true,
275
+ snapshot: snapshotFromConfiguration(parseRoleConfiguration(next, path))
276
+ };
277
+ }
278
+ /** Apply one global budget target to the role file in a single atomic write. */
279
+ async function saveBudgetConfiguration(path, request, llm, signal) {
280
+ signal.throwIfAborted();
281
+ let parsed;
282
+ try {
283
+ parsed = parseBudgetApplyRequest(request);
284
+ } catch (error) {
285
+ return {
286
+ ok: false,
287
+ reason: describeError(error)
288
+ };
289
+ }
290
+ const initial = readRoleConfiguration(path);
291
+ if (initial.status === "unreadable") return {
292
+ ok: false,
293
+ reason: `the role file is unreadable: ${initial.reason}`
294
+ };
295
+ let catalogue;
296
+ try {
297
+ catalogue = await collectCatalogue(llm, void 0, signal);
298
+ } catch (error) {
299
+ signal.throwIfAborted();
300
+ return {
301
+ ok: false,
302
+ reason: `the model catalogue could not be loaded: ${describeError(error)}`
303
+ };
304
+ }
305
+ signal.throwIfAborted();
306
+ const current = readRoleConfiguration(path);
307
+ if (current.status === "unreadable") return {
308
+ ok: false,
309
+ reason: `the role file is unreadable: ${current.reason}`
310
+ };
311
+ let text = "";
312
+ if (current.status === "loaded") try {
313
+ text = readFileSync(path, "utf8");
314
+ } catch (error) {
315
+ return {
316
+ ok: false,
317
+ reason: `the role file could not be read: ${describeError(error)}`
318
+ };
319
+ }
320
+ try {
321
+ const document = parseRoleFileDocument(text, path);
322
+ const inputs = ROLE_MANIFEST.map((spec) => ({
323
+ key: spec.key,
324
+ shape: spec.shape,
325
+ autoPanel: spec.autoPanel,
326
+ configured: document.roles.has(spec.key),
327
+ routes: document.roles.get(spec.key)?.routes ?? [{
328
+ kind: "inherit",
329
+ alias: "inherit-parent"
330
+ }],
331
+ hasIssues: (document.roles.get(spec.key)?.issues.length ?? 0) > 0
332
+ }));
333
+ const plan = planBudget(inputs, catalogue, parsed);
334
+ const blocked = plan.rows.filter(isBudgetRowBlocked);
335
+ if (blocked.length > 0) return {
336
+ ok: false,
337
+ reason: `the budget needs attention for: ${blocked.map((row) => row.key).join(", ")}`
338
+ };
339
+ const next = renderBudgetText(text, plan, updateRoleText);
340
+ if (next === text) return {
341
+ ok: true,
342
+ snapshot: snapshotFromConfiguration(readRoleConfiguration(path))
343
+ };
344
+ writeAtomically(path, next);
345
+ return {
346
+ ok: true,
347
+ snapshot: snapshotFromConfiguration(parseRoleConfiguration(next, path))
348
+ };
349
+ } catch (error) {
350
+ return {
351
+ ok: false,
352
+ reason: describeError(error)
353
+ };
354
+ }
355
+ }
356
+ function writeAtomically(path, text) {
357
+ mkdirSync(dirname(path), { recursive: true });
358
+ const temporary = `${path}.${process.pid}.${randomUUID()}.tmp`;
359
+ try {
360
+ writeFileSync(temporary, text, "utf8");
361
+ renameSync(temporary, path);
362
+ } catch (error) {
363
+ try {
364
+ rmSync(temporary, { force: true });
365
+ } catch {}
366
+ throw error;
367
+ }
368
+ }
369
+ function describeError(error) {
370
+ return error instanceof Error ? error.message : String(error);
371
+ }
372
+ export { removeRoleText, saveBudgetConfiguration, saveRoleConfiguration, snapshotFromConfiguration, updateRoleText, validateSaveRequest };
@@ -0,0 +1,53 @@
1
+ import { c as RoleSpec } from "./role-manifest-D1npMjqZ.mjs";
2
+ import { n as Route } from "./route-7SqXDYrL.mjs";
3
+ /** One recognized role line. */
4
+ interface RoleEntry {
5
+ readonly line: number;
6
+ readonly key: string;
7
+ readonly spec: RoleSpec;
8
+ readonly routes: readonly Route[];
9
+ readonly issues: readonly string[];
10
+ }
11
+ /** A file-level issue. Unknown and malformed lines are reported, never dropped. */
12
+ interface RoleFileIssue {
13
+ readonly line?: number;
14
+ readonly message: string;
15
+ }
16
+ /** One physical line, classified once for parsing and editing. */
17
+ type RoleFileLine = {
18
+ readonly kind: "blank";
19
+ readonly line: number;
20
+ readonly raw: string;
21
+ } | {
22
+ readonly kind: "comment";
23
+ readonly line: number;
24
+ readonly raw: string;
25
+ } | {
26
+ readonly kind: "role";
27
+ readonly line: number;
28
+ readonly raw: string;
29
+ readonly key: string;
30
+ readonly spec: RoleSpec;
31
+ readonly routes: readonly Route[];
32
+ readonly issues: readonly string[];
33
+ } | {
34
+ readonly kind: "other";
35
+ readonly line: number;
36
+ readonly raw: string;
37
+ readonly issue?: string;
38
+ };
39
+ /** Parsed role file with its original lines preserved for the editor. */
40
+ interface RoleFileDocument {
41
+ readonly path: string;
42
+ readonly budget?: string;
43
+ readonly lines: readonly RoleFileLine[];
44
+ readonly roles: ReadonlyMap<string, RoleEntry>;
45
+ readonly issues: readonly RoleFileIssue[];
46
+ }
47
+ /** Parse role-file text into a document and its semantic view. */
48
+ declare function parseRoleFileDocument(text: string, path: string): RoleFileDocument;
49
+ /** Whether a line is the role entry the editor is looking for. */
50
+ declare function isRoleLineFor(line: RoleFileLine, key: string): line is Extract<RoleFileLine, {
51
+ kind: "role";
52
+ }>;
53
+ export { isRoleLineFor as a, RoleFileLine as i, RoleFileDocument as n, parseRoleFileDocument as o, RoleFileIssue as r, RoleEntry as t };
@@ -0,0 +1,2 @@
1
+ import { a as isRoleLineFor, i as RoleFileLine, n as RoleFileDocument, o as parseRoleFileDocument, r as RoleFileIssue, t as RoleEntry } from "./role-file-CIVHnhBg.mjs";
2
+ export { RoleEntry, RoleFileDocument, RoleFileIssue, RoleFileLine, isRoleLineFor, parseRoleFileDocument };
@@ -0,0 +1,121 @@
1
+ import { budgetLineValue } from "./budget.mjs";
2
+ import { findRole, normalizeRoleName } from "./role-manifest.mjs";
3
+ import { parseRouteValue, validateRoleRouteShape } from "./route.mjs";
4
+ // src/role-file.ts
5
+ /** The parsed line model behind the role file and its editor. */
6
+ /** Parse role-file text into a document and its semantic view. */
7
+ function parseRoleFileDocument(text, path) {
8
+ const roles = /* @__PURE__ */ new Map();
9
+ const issues = [];
10
+ const lines = [];
11
+ let budget;
12
+ if (text !== "") text.split(/\r?\n/).forEach((rawLine, index) => {
13
+ const line = index + 1;
14
+ const trimmed = rawLine.trim();
15
+ if (trimmed === "") {
16
+ lines.push({
17
+ kind: "blank",
18
+ line,
19
+ raw: rawLine
20
+ });
21
+ return;
22
+ }
23
+ if (trimmed.startsWith("#")) {
24
+ const value = budgetLineValue(rawLine);
25
+ if (value !== void 0 && value !== "") budget = value;
26
+ lines.push({
27
+ kind: "comment",
28
+ line,
29
+ raw: rawLine
30
+ });
31
+ return;
32
+ }
33
+ const colon = rawLine.indexOf(":");
34
+ if (colon === -1) {
35
+ const message = `expected \`<role>: <value>\`, found ${JSON.stringify(trimmed)}`;
36
+ issues.push({
37
+ line,
38
+ message
39
+ });
40
+ lines.push({
41
+ kind: "other",
42
+ line,
43
+ raw: rawLine,
44
+ issue: message
45
+ });
46
+ return;
47
+ }
48
+ const rawKey = rawLine.slice(0, colon).trim();
49
+ if (rawKey === "") {
50
+ const message = "the role key is empty";
51
+ issues.push({
52
+ line,
53
+ message
54
+ });
55
+ lines.push({
56
+ kind: "other",
57
+ line,
58
+ raw: rawLine,
59
+ issue: message
60
+ });
61
+ return;
62
+ }
63
+ const spec = findRole(rawKey);
64
+ if (spec === void 0) {
65
+ const message = `unknown pstack role ${JSON.stringify(rawKey)}`;
66
+ issues.push({
67
+ line,
68
+ message
69
+ });
70
+ lines.push({
71
+ kind: "other",
72
+ line,
73
+ raw: rawLine,
74
+ issue: message
75
+ });
76
+ return;
77
+ }
78
+ const parsed = parseRouteValue(rawLine.slice(colon + 1));
79
+ const entryIssues = [...parsed.issues];
80
+ const shapeIssue = validateRoleRouteShape(spec, parsed.routes);
81
+ if (shapeIssue !== void 0) entryIssues.push(shapeIssue);
82
+ for (const issue of entryIssues) issues.push({
83
+ line,
84
+ message: `${rawKey}: ${issue}`
85
+ });
86
+ lines.push({
87
+ kind: "role",
88
+ line,
89
+ raw: rawLine,
90
+ key: spec.key,
91
+ spec,
92
+ routes: parsed.routes,
93
+ issues: entryIssues
94
+ });
95
+ if (parsed.routes.length === 0) return;
96
+ const previous = roles.get(spec.key);
97
+ if (previous !== void 0) issues.push({
98
+ line,
99
+ message: `role "${spec.key}" is already configured on line ${previous.line}; line ${line} wins`
100
+ });
101
+ roles.set(spec.key, {
102
+ line,
103
+ key: spec.key,
104
+ spec,
105
+ routes: parsed.routes,
106
+ issues: entryIssues
107
+ });
108
+ });
109
+ return {
110
+ path,
111
+ ...budget === void 0 ? {} : { budget },
112
+ lines,
113
+ roles,
114
+ issues
115
+ };
116
+ }
117
+ /** Whether a line is the role entry the editor is looking for. */
118
+ function isRoleLineFor(line, key) {
119
+ return line.kind === "role" && normalizeRoleName(line.key) === normalizeRoleName(key);
120
+ }
121
+ export { isRoleLineFor, parseRoleFileDocument };
@@ -1,22 +1,27 @@
1
1
  /**
2
- * The one pstack role manifest.
2
+ * The pstack role manifest.
3
3
  *
4
- * Keys are matched exactly after normalization, and commas belong to some keys
5
- * (`feature, refactoring`, `reflect judgment, divergent, synthesizer`), so nothing here
6
- * may split a key on a comma. A second literal role list anywhere is a bug.
7
- *
8
- * This module has no Node imports: the bundle imports it directly.
4
+ * Role keys are matched exactly after whitespace and comma normalization. Commas
5
+ * belong to some keys (`feature, refactoring`), so the key is never split on a
6
+ * comma. Role behavior comes from `pstack/skills/setup-pstack/SKILL.md`.
9
7
  */
10
8
  /** Whether a role holds one route or a comma-separated list of routes. */
11
- type RoleValueShape = "single" | "list";
9
+ declare const ROLE_SHAPES: readonly ["single", "list"];
10
+ type RoleShape = (typeof ROLE_SHAPES)[number];
11
+ /** One role accepted by `pstack_subagent`'s `role` field. */
12
12
  interface RoleSpec {
13
13
  /** Exact key as written in the role file. Commas belong to the key. */
14
14
  readonly key: string;
15
- readonly shape: RoleValueShape;
15
+ readonly shape: RoleShape;
16
16
  /** A list role that starts one child per entry automatically. */
17
17
  readonly autoPanel: boolean;
18
18
  }
19
- /** The 17 roles, in manifest order. */
19
+ /** Role file name under `$DSH_HOME`. DSH never loads `.mdc`; this plugin does. */
20
+ declare const PSTACK_MODELS_FILENAME = "pstack-models.mdc";
21
+ /** Values that resolve to "send no route override and inherit the parent route". */
22
+ declare const INHERIT_ALIASES: readonly ["inherit-parent", "auto"];
23
+ type InheritAlias = (typeof INHERIT_ALIASES)[number];
24
+ /** The 17 roles, in the order `setup-pstack` documents them. */
20
25
  declare const ROLE_MANIFEST: readonly [{
21
26
  readonly key: "feature, refactoring";
22
27
  readonly shape: "single";
@@ -87,4 +92,10 @@ declare const ROLE_MANIFEST: readonly [{
87
92
  readonly autoPanel: true;
88
93
  }];
89
94
  type RoleKey = (typeof ROLE_MANIFEST)[number]["key"];
90
- export { RoleSpec as n, RoleValueShape as r, RoleKey as t };
95
+ /** Normalize spacing and comma formatting without splitting the key. */
96
+ declare function normalizeRoleName(raw: string): string;
97
+ /** Look up one role by its exact normalized key. */
98
+ declare function findRole(raw: string): RoleSpec | undefined;
99
+ /** Whether a string is one of the manifest keys. */
100
+ declare function isRoleKey(raw: string): raw is RoleKey;
101
+ export { ROLE_SHAPES as a, RoleSpec as c, normalizeRoleName as d, ROLE_MANIFEST as i, findRole as l, InheritAlias as n, RoleKey as o, PSTACK_MODELS_FILENAME as r, RoleShape as s, INHERIT_ALIASES as t, isRoleKey as u };
@@ -0,0 +1,2 @@
1
+ import { a as ROLE_SHAPES, c as RoleSpec, d as normalizeRoleName, i as ROLE_MANIFEST, l as findRole, n as InheritAlias, o as RoleKey, r as PSTACK_MODELS_FILENAME, s as RoleShape, t as INHERIT_ALIASES, u as isRoleKey } from "./role-manifest-D1npMjqZ.mjs";
2
+ export { INHERIT_ALIASES, InheritAlias, PSTACK_MODELS_FILENAME, ROLE_MANIFEST, ROLE_SHAPES, RoleKey, RoleShape, RoleSpec, findRole, isRoleKey, normalizeRoleName };
@@ -1,15 +1,18 @@
1
- // src/internal/role-manifest.ts
1
+ // src/role-manifest.ts
2
2
  /**
3
- * File name the role configuration lives under inside `$DSH_HOME`.
3
+ * The pstack role manifest.
4
4
  *
5
- * It keeps the upstream name `pstack-models.mdc`, so a reader moving from the Cursor docs
6
- * recognizes it, but stores it directly under `$DSH_HOME`; DSH does not load `.mdc` files
7
- * on its own, and `pstack_subagent` is the only reader.
5
+ * Role keys are matched exactly after whitespace and comma normalization. Commas
6
+ * belong to some keys (`feature, refactoring`), so the key is never split on a
7
+ * comma. Role behavior comes from `pstack/skills/setup-pstack/SKILL.md`.
8
8
  */
9
+ /** Whether a role holds one route or a comma-separated list of routes. */
10
+ const ROLE_SHAPES = ["single", "list"];
11
+ /** Role file name under `$DSH_HOME`. DSH never loads `.mdc`; this plugin does. */
9
12
  const PSTACK_MODELS_FILENAME = "pstack-models.mdc";
10
- /** Values that resolve to "send no `agentOptions` and inherit the parent route". */
11
- const INHERIT_PARENT_ALIASES = ["inherit-parent", "auto"];
12
- /** The 17 roles, in manifest order. */
13
+ /** Values that resolve to "send no route override and inherit the parent route". */
14
+ const INHERIT_ALIASES = ["inherit-parent", "auto"];
15
+ /** The 17 roles, in the order `setup-pstack` documents them. */
13
16
  const ROLE_MANIFEST = [
14
17
  {
15
18
  key: "feature, refactoring",
@@ -97,16 +100,17 @@ const ROLE_MANIFEST = [
97
100
  autoPanel: true
98
101
  }
99
102
  ];
100
- function isRoleKey(value) {
101
- return ROLE_MANIFEST.some((role) => role.key === value);
102
- }
103
- /** Normalize formatting while keeping commas that belong to a role name. */
103
+ /** Normalize spacing and comma formatting without splitting the key. */
104
104
  function normalizeRoleName(raw) {
105
105
  return raw.normalize("NFC").trim().toLowerCase().replace(/\s+/g, " ").replace(/\s*,\s*/g, ", ").replace(/:+$/, "").trim();
106
106
  }
107
- /** Exact manifest lookup. Callers normalize the key first. */
108
- function findRoleSpec(key) {
109
- if (!isRoleKey(key)) return void 0;
107
+ /** Look up one role by its exact normalized key. */
108
+ function findRole(raw) {
109
+ const key = normalizeRoleName(raw);
110
110
  return ROLE_MANIFEST.find((role) => role.key === key);
111
111
  }
112
- export { isRoleKey as a, findRoleSpec as i, PSTACK_MODELS_FILENAME as n, normalizeRoleName as o, ROLE_MANIFEST as r, INHERIT_PARENT_ALIASES as t };
112
+ /** Whether a string is one of the manifest keys. */
113
+ function isRoleKey(raw) {
114
+ return findRole(raw) !== void 0;
115
+ }
116
+ export { INHERIT_ALIASES, PSTACK_MODELS_FILENAME, ROLE_MANIFEST, ROLE_SHAPES, findRole, isRoleKey, normalizeRoleName };
@@ -0,0 +1,23 @@
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";
5
+ import { RemoteResult, TypertRemoteInfo } from "@deepseek-ai/dsh-typert-protocol";
6
+ import { TypertContribution } from "@deepseek-ai/dsh-typert-registry";
7
+ /** npm package owning these methods. */
8
+ export declare const REMOTE_PACKAGE = "dsh-pstack";
9
+ /** Cordis service key and wire namespace. */
10
+ export declare const ROLES_SERVICE = "pstackRoles";
11
+ /** Typed Client face installed by `$mount()`. */
12
+ export interface PstackRolesNamespace {
13
+ readonly pstackRoles: {
14
+ status(): Promise<RemoteResult<RoleFileSnapshot>>;
15
+ catalogue(signal?: AbortSignal): Promise<RemoteResult<CatalogueResult>>;
16
+ save(request: SaveRoleRequest, signal?: AbortSignal): Promise<RemoteResult<SaveRoleResult>>;
17
+ budget(request: BudgetApplyRequest, signal?: AbortSignal): Promise<RemoteResult<BudgetApplyResult>>;
18
+ };
19
+ }
20
+ /** Mountable contribution shared by Host registration and Client `$mount`. */
21
+ export declare const pstackRolesRemote: TypertRemoteInfo;
22
+ /** Register the Host's strict invocation definitions in `ctx.typert.local`. */
23
+ export declare const pstackRolesHostContribution: TypertContribution;