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
@@ -1,134 +0,0 @@
1
- import { expect } from "./expect.mjs";
2
- import "./support.mjs";
3
- import { ageColumn, bucketFor, dirtyColumn, formatSize, lastChatColumn, mergedColumn, prColumn, remoteColumn, renderTable, sizeColumn, sortRows } from "./worktree-audit.mjs";
4
- import { mkdirSync, mkdtempSync, rmSync, symlinkSync, writeFileSync } from "node:fs";
5
- import { tmpdir } from "node:os";
6
- import { join } from "node:path";
7
- import { test } from "node:test";
8
- // runtime/skills/poteto-mode/scripts/worktree-audit.test.ts
9
- const now = Date.UTC(2026, 9, 28, 12, 0, 0) / 1e3;
10
- test("renders the documented worktree columns", () => {
11
- const table = renderTable(sortRows([{
12
- size: "2.0G",
13
- age: "1d",
14
- merged: "YES",
15
- dirty: "clean",
16
- remote: "pushed",
17
- pr: "#12/OPEN",
18
- lastChat: "2026-10-28",
19
- bucket: "hold-open-pr",
20
- worktree: "/repo/wt-a"
21
- }, {
22
- size: "10.0M",
23
- age: "10d",
24
- merged: "NO",
25
- dirty: "wip:2",
26
- remote: "ahead1",
27
- pr: "-",
28
- lastChat: "-",
29
- bucket: "hold-wip",
30
- worktree: "/repo/wt-b"
31
- }]), "origin/main");
32
- expect(table.split("\n")[0]).toBe("# base: origin/main");
33
- expect(table).toContain("SIZE AGE MERGED DIRTY REMOTE PR LAST_CHAT BUCKET WORKTREE");
34
- expect(table).toContain("/repo/wt-a");
35
- expect(table).toContain("/repo/wt-b");
36
- });
37
- test("classifies the individual columns", () => {
38
- expect(formatSize(2 * 1024 ** 3)).toBe("2.0G");
39
- expect(ageColumn(now - 86400, now)).toBe("1d");
40
- expect(dirtyColumn("")).toBe("clean");
41
- expect(dirtyColumn(" M a\n?? b\n")).toBe("wip:1");
42
- expect(dirtyColumn("?? b\n")).toBe("scratch:1");
43
- expect(mergedColumn(true)).toBe("YES");
44
- expect(mergedColumn(false)).toBe("no");
45
- expect(remoteColumn({
46
- branch: "feature/x",
47
- hasRemote: true,
48
- remoteSha: "abc",
49
- head: "abc",
50
- aheadCount: 0
51
- })).toBe("pushed");
52
- expect(remoteColumn({
53
- branch: "feature/x",
54
- hasRemote: true,
55
- remoteSha: "abc",
56
- head: "def",
57
- aheadCount: 2
58
- })).toBe("ahead2");
59
- expect(remoteColumn({
60
- branch: "feature/x",
61
- hasRemote: false,
62
- remoteSha: void 0,
63
- head: "def",
64
- aheadCount: 2
65
- })).toBe("no-remote");
66
- expect(remoteColumn({
67
- branch: void 0,
68
- hasRemote: true,
69
- remoteSha: "abc",
70
- head: "abc",
71
- aheadCount: 0
72
- })).toBe("detached");
73
- expect(prColumn("feature/x", [{
74
- number: 12,
75
- head: "feature/x",
76
- state: "OPEN"
77
- }])).toBe("#12/OPEN");
78
- expect(lastChatColumn({
79
- sessionId: "s-1",
80
- lastEventTime: Date.UTC(2026, 9, 27, 23, 30) / 1e3
81
- })).toBe("2026-10-27");
82
- expect(lastChatColumn({ sessionId: "s-1" })).toBe("-");
83
- expect(lastChatColumn(void 0)).toBe("-");
84
- });
85
- test("never marks an unknown usage signal safe", () => {
86
- expect(bucketFor({
87
- merged: "YES",
88
- dirty: "clean",
89
- pr: "-",
90
- usageKnown: false,
91
- usedRecently: false
92
- })).toBe("unknown-usage");
93
- expect(bucketFor({
94
- merged: "YES",
95
- dirty: "clean",
96
- pr: "-",
97
- usageKnown: true,
98
- usedRecently: true
99
- })).toBe("verify-recent-chat");
100
- });
101
- const sizeInBytes = (text) => {
102
- const match = /^([\d.]+)([BKMGTP]?)$/.exec(text);
103
- if (match === null) throw new Error(`cannot read size ${text}`);
104
- const power = {
105
- "": 0,
106
- B: 0,
107
- K: 1,
108
- M: 2,
109
- G: 3,
110
- T: 4,
111
- P: 5
112
- }[match[2]] ?? 0;
113
- return Number(match[1]) * 1024 ** power;
114
- };
115
- test("counts a directory symlink as its own entry and never traverses it", () => {
116
- const root = mkdtempSync(join(tmpdir(), "worktree-audit-size-"));
117
- try {
118
- const external = join(root, "external");
119
- mkdirSync(external);
120
- writeFileSync(join(external, "big.bin"), Buffer.alloc(2097152, 1));
121
- const worktree = join(root, "worktree");
122
- mkdirSync(worktree);
123
- writeFileSync(join(worktree, "small.txt"), "small");
124
- symlinkSync(external, join(worktree, "external-link"), "dir");
125
- expect(sizeInBytes(sizeColumn(external)) >= 2097152).toBe(true);
126
- expect(sizeInBytes(sizeColumn(worktree)) < 1048576).toBe(true);
127
- } finally {
128
- rmSync(root, {
129
- recursive: true,
130
- force: true
131
- });
132
- }
133
- });
134
- export {};
@@ -1,106 +0,0 @@
1
- import { appendFileSync, existsSync, mkdirSync, statSync } from "node:fs";
2
- import { dirname, resolve } from "node:path";
3
- import { fileURLToPath } from "node:url";
4
- // runtime/skills/show-me-your-work/scripts/log.ts
5
- /**
6
- * Append one well-formed row to a show-me-your-work decision log (TSV).
7
- *
8
- * A Node replacement for the upstream `scripts/log.sh`. The observable rules are
9
- * the shell script's, because `skills/show-me-your-work/SKILL.md` tells the model
10
- * to read this file in a spreadsheet:
11
- *
12
- * - The header is written once, and only when the file is missing or empty.
13
- * - Rows are appended, never rewritten. A network mount can make the emptiness
14
- * test lie for a file that exists, and the cost is one stray header line, not
15
- * the rows.
16
- * - Tabs, CRs, and LFs inside a cell become spaces, so a cell always stays on one
17
- * line and a row always has exactly six columns.
18
- * - A cell starting with `=`, `+`, `-`, or `@` gets one leading quote. Evidence
19
- * is attacker-controlled (PR titles, filenames, generated text), and a
20
- * spreadsheet parses those four characters as a formula.
21
- * - The row ends with a newline.
22
- *
23
- * No shell, no `date` process, and no `tr`/`printf` semantics to reproduce.
24
- */
25
- /** The exact header line, including its trailing newline. */
26
- const HEADER = "ts phase decision why evidence result\n";
27
- /**
28
- * Usage text.
29
- *
30
- * The shell script printed `log.sh` here because that was its own name. The
31
- * shipped file is `log.mjs`, and an error that tells the reader to run a script
32
- * this package no longer contains is worse than one that names the real path. The
33
- * exit code and the stream are unchanged.
34
- */
35
- const USAGE = "usage: log.mjs <logfile> <phase> <decision> <why> <evidence> <result>\n";
36
- /** Formula-leading characters a spreadsheet would evaluate. */
37
- const FORMULA_PREFIXES = [
38
- "=",
39
- "+",
40
- "-",
41
- "@"
42
- ];
43
- /**
44
- * One cell as the spreadsheet sees it.
45
- *
46
- * Exported because the skill's own contract is worth a unit test: the rules are
47
- * about what lands in a cell, not about how a row is assembled.
48
- */
49
- function cleanCell(value) {
50
- const flat = value.replaceAll(/[\t\n\r]/g, " ");
51
- return FORMULA_PREFIXES.some((prefix) => flat.startsWith(prefix)) ? `'${flat}` : flat;
52
- }
53
- /** `YYYY-MM-DDTHH:MM:SSZ`, the format `date -u +%Y-%m-%dT%H:%M:%SZ` prints. */
54
- function timestamp(now = /* @__PURE__ */ new Date()) {
55
- return now.toISOString().replace(/\.\d{3}Z$/, "Z");
56
- }
57
- /** Read whether a file is missing or empty, treating any read failure as empty. */
58
- function isEmptyOrMissing(logfile) {
59
- if (!existsSync(logfile)) return true;
60
- try {
61
- return statSync(logfile).size === 0;
62
- } catch {
63
- return true;
64
- }
65
- }
66
- /**
67
- * Append one row.
68
- *
69
- * @param logfile - target TSV; its parent directories are created as needed.
70
- * @param cells - exactly five cell values: phase, decision, why, evidence, result.
71
- * @param now - injectable clock, so the timestamp format is testable.
72
- * @returns the row written, without re-reading the file.
73
- * @throws {TypeError} when `cells` does not hold exactly five values.
74
- */
75
- function appendDecisionRow(logfile, cells, now = /* @__PURE__ */ new Date()) {
76
- if (cells.length !== 5) throw new TypeError(`expected 5 cells after the logfile, received ${cells.length}`);
77
- const absolute = resolve(logfile);
78
- const directory = dirname(absolute);
79
- if (directory !== "" && !existsSync(directory)) mkdirSync(directory, { recursive: true });
80
- if (isEmptyOrMissing(absolute)) appendFileSync(absolute, HEADER);
81
- const row = `${[timestamp(now), ...cells.map(cleanCell)].join(" ")}\n`;
82
- appendFileSync(absolute, row);
83
- return row;
84
- }
85
- /** Run the CLI. Returns the process exit code. */
86
- function main(argv, io = {
87
- stdout: (value) => process.stdout.write(value),
88
- stderr: (value) => process.stderr.write(value)
89
- }) {
90
- if (argv.length !== 6) {
91
- io.stderr(USAGE);
92
- return 1;
93
- }
94
- const [logfile, ...cells] = argv;
95
- try {
96
- appendDecisionRow(logfile, cells);
97
- return 0;
98
- } catch (error) {
99
- const message = error instanceof Error ? error.message : String(error);
100
- io.stderr(`log.mjs: ${message}\n`);
101
- return 1;
102
- }
103
- }
104
- const entryPoint = process.argv[1];
105
- if (entryPoint !== void 0 && resolve(entryPoint) === fileURLToPath(import.meta.url)) process.exitCode = main(process.argv.slice(2));
106
- export { HEADER, USAGE, appendDecisionRow, cleanCell, main, timestamp };
@@ -1,56 +0,0 @@
1
- import { expect } from "../../poteto-mode/scripts/expect.mjs";
2
- import "../../poteto-mode/scripts/support.mjs";
3
- import { HEADER, appendDecisionRow, cleanCell, main, timestamp } from "./log.mjs";
4
- import { mkdtempSync, readFileSync, rmSync } from "node:fs";
5
- import { tmpdir } from "node:os";
6
- import { join } from "node:path";
7
- import { test } from "node:test";
8
- // runtime/skills/show-me-your-work/scripts/log.test.ts
9
- test("writes the header once and appends a clean row", () => {
10
- const directory = mkdtempSync(join(tmpdir(), "pstack-log-"));
11
- const file = join(directory, "nested", "decisions.tsv");
12
- try {
13
- appendDecisionRow(file, [
14
- "build",
15
- "=cmd",
16
- "why here",
17
- "ev\nidence",
18
- "@result"
19
- ], /* @__PURE__ */ new Date("2026-10-28T10:00:00.123Z"));
20
- appendDecisionRow(file, [
21
- "build",
22
- "second",
23
- "why",
24
- "evidence",
25
- "result"
26
- ], /* @__PURE__ */ new Date("2026-10-28T10:00:01Z"));
27
- const lines = readFileSync(file, "utf8").split("\n");
28
- expect(lines[0]).toBe(HEADER.trimEnd());
29
- expect(lines[1]).toBe("2026-10-28T10:00:00Z build '=cmd why here ev idence '@result");
30
- expect(lines[2]).toBe("2026-10-28T10:00:01Z build second why evidence result");
31
- expect(lines.filter((line) => line === HEADER.trimEnd())).toHaveLength(1);
32
- } finally {
33
- rmSync(directory, {
34
- recursive: true,
35
- force: true
36
- });
37
- }
38
- });
39
- test("cleans spreadsheet-sensitive cells and stamps UTC", () => {
40
- expect(cleanCell("=SUM(A1)")).toBe("'=SUM(A1)");
41
- expect(cleanCell("+1")).toBe("'+1");
42
- expect(cleanCell("-1")).toBe("'-1");
43
- expect(cleanCell("@x")).toBe("'@x");
44
- expect(cleanCell("plain")).toBe("plain");
45
- expect(timestamp(/* @__PURE__ */ new Date("2026-10-28T10:00:00.999Z"))).toBe("2026-10-28T10:00:00Z");
46
- });
47
- test("usage errors exit 1", () => {
48
- const errors = [];
49
- const code = main([], {
50
- stdout: () => {},
51
- stderr: (value) => errors.push(value)
52
- });
53
- expect(code).toBe(1);
54
- expect(errors.join("")).toContain("usage: log.mjs");
55
- });
56
- export {};
@@ -1,31 +0,0 @@
1
- import { RERUN_STATES } from "../ir.mjs";
2
- // runtime/skills/statechart/scripts/backends/cfg.ts
3
- function configText(sections, extra) {
4
- const lines = [];
5
- for (const s of sections) lines.push(`${s.key} ${s.tokens.join(" ")}`);
6
- lines.push(...extra);
7
- return lines.join("\n");
8
- }
9
- const boundRun = (module) => [
10
- `---- MODULE ChartBound ----`,
11
- `EXTENDS ${module}`,
12
- `ChartTLC == INSTANCE TLC`,
13
- `ChartNaturals == INSTANCE Naturals`,
14
- `ChartBound == ChartNaturals!<(ChartTLC!TLCGet("distinct"), ${RERUN_STATES})`,
15
- `====`
16
- ].join("\n");
17
- function chartRun({ module, variables, invariants }, tag) {
18
- const every = [];
19
- for (const name of invariants) every.push(`(IF ~${name} THEN {"${name}"} ELSE {}) \\cup `);
20
- return [
21
- `---- MODULE ChartRun ----`,
22
- `EXTENDS ${module}`,
23
- `ChartTLC == INSTANCE TLC`,
24
- `ChartNaturals == INSTANCE Naturals`,
25
- `ChartBudget == ChartNaturals!<=(ChartTLC!TLCGet("distinct"), 500)`,
26
- `ChartBroken == ${every.join("")}{}`,
27
- `ChartMark == ChartBroken = {} \\/ ChartTLC!PrintT(<<"${tag}", <<${variables.join(", ")}>>, ChartBroken>>)`,
28
- `====`
29
- ].join("\n");
30
- }
31
- export { boundRun, chartRun, configText };
@@ -1,186 +0,0 @@
1
- import { append, byText, tupleKey } from "../ir.mjs";
2
- // runtime/skills/statechart/scripts/backends/mermaid.ts
3
- const BLANK = /\p{White_Space}/u;
4
- const SAFE = /^[\p{L}\p{N} !'()+,\-./=?[\]"_|@{}:\\^%<>]$/u;
5
- const HAZARD = /:(?=:|$|\S*#)|\\(?=n)|%(?=%)|<(?=[\p{L}/!?])|_(?![\p{L}\p{N}])|(?<![\p{L}\p{N}])_/giu;
6
- const DIRECTION = /(direction)\s+(?=LR|RL|TB|BT)/gi;
7
- const DOUBLE_BRACKET = /\[(?=\[)/g;
8
- const C4 = /C4(?=Container|Component|Dynamic|Deployment)/g;
9
- const UNDRAWN = /[\0\x80-\x9f]/;
10
- const REWRITTEN = ["fl°", "¶ß"];
11
- const MARKER = /(?<=marker-end=)"/g;
12
- const firstOf = /* @__PURE__ */ new Map();
13
- for (const pair of REWRITTEN) {
14
- const [first, second] = [...pair].map((c) => c.codePointAt(0) ?? 0);
15
- firstOf.set(second, first);
16
- }
17
- const KEPT = 0;
18
- const BLANKED = 1;
19
- const DROPPED = 2;
20
- const CODED = 3;
21
- const JOINS = 4;
22
- const kindOf = (n) => {
23
- const c = String.fromCodePoint(n);
24
- const kind = c === " " ? KEPT : BLANK.test(c) ? BLANKED : UNDRAWN.test(c) ? DROPPED : SAFE.test(c) ? KEPT : CODED;
25
- return firstOf.has(n) ? kind | JOINS : kind;
26
- };
27
- const ASCII = Uint8Array.from({ length: 128 }, (_, n) => kindOf(n));
28
- const wide = /* @__PURE__ */ new Map();
29
- const kindAt = (n) => {
30
- if (n < 128) return ASCII[n];
31
- let kind = wide.get(n);
32
- if (kind === void 0) wide.set(n, kind = kindOf(n));
33
- return kind;
34
- };
35
- const encode = (s, ref) => {
36
- let out = "";
37
- let run = 0;
38
- let last = -1;
39
- for (let i = 0; i < s.length;) {
40
- let n = s.charCodeAt(i);
41
- let width = 1;
42
- if (n >= 55296 && n <= 57343) {
43
- const low = s.charCodeAt(i + 1);
44
- if (n <= 56319 && low >= 56320 && low <= 57343) {
45
- n = 65536 + (n - 55296 << 10) + (low - 56320);
46
- width = 2;
47
- } else n = 65533;
48
- }
49
- let kind = kindAt(n);
50
- if (kind === DROPPED) {
51
- out += s.slice(run, i);
52
- run = i + width;
53
- } else {
54
- const joined = kind >= JOINS && firstOf.get(n) === last;
55
- kind &= -5;
56
- if (joined || kind !== KEPT) {
57
- out += s.slice(run, i);
58
- if (joined) out += ref(8288);
59
- if (kind === KEPT) run = i;
60
- else {
61
- out += kind === BLANKED ? " " : ref(n);
62
- run = i + width;
63
- }
64
- }
65
- last = n;
66
- }
67
- i += width;
68
- }
69
- return out + s.slice(run);
70
- };
71
- const code = (s, ref) => encode(s, ref).replace(MARKER, `${ref(8288)}"`).replace(HAZARD, (c) => ref(c.charCodeAt(0)));
72
- const esc = (s, quoted = false) => {
73
- const plain = code(s, (n) => `#${n};`);
74
- const out = quoted ? plain.replaceAll("\"", "#34;") : plain;
75
- if (!out.trim()) return "#32;";
76
- const turned = out.replace(DIRECTION, "$1#32;");
77
- const opened = turned.includes("[[") ? turned.replace(DOUBLE_BRACKET, "#91;") : turned;
78
- return opened.includes("C4") ? opened.replace(C4, "C#52;") : opened;
79
- };
80
- const or = (names) => [...names].sort(byText).join(" or ");
81
- const MARK_STYLES = {
82
- breaks: "fill:#ffecee,stroke:#e72e3b,stroke-width:2.5px,color:#cd2834",
83
- mayBreak: "fill:#fff3e6,stroke:#e8730c,stroke-width:2.5px,color:#b85a06"
84
- };
85
- function mermaidLines(chart) {
86
- let next = 0;
87
- const marks = [];
88
- const used = /* @__PURE__ */ new Set();
89
- const rules = {
90
- breaks: /* @__PURE__ */ new Set(),
91
- mayBreak: /* @__PURE__ */ new Set()
92
- };
93
- const region = (r) => {
94
- const out = [];
95
- const topIds = /* @__PURE__ */ new Map();
96
- const nestedIds = /* @__PURE__ */ new Map();
97
- const id = (path) => {
98
- const top = path.length === 1;
99
- const named = top ? topIds : nestedIds;
100
- const k = top ? path[0] : tupleKey(path);
101
- let s = named.get(k);
102
- if (s === void 0) named.set(k, s = `s${next++}`);
103
- return s;
104
- };
105
- const known = /* @__PURE__ */ new Map();
106
- const idOf = (path) => {
107
- let s = known.get(path);
108
- if (s === void 0) known.set(path, s = id(path));
109
- return s;
110
- };
111
- const tree = (prefix, indent, below) => {
112
- const heads = /* @__PURE__ */ new Map();
113
- for (const s of below) append(heads, s.path[prefix.length], s);
114
- for (const [head, under] of heads) {
115
- const path = [...prefix, head];
116
- let leaf;
117
- const inner = [];
118
- for (const s of under) if (s.path.length > path.length) inner.push(s);
119
- else leaf = s;
120
- if (inner.length) {
121
- out.push(`${indent}state "${esc(head, true)}" as ${id(path)} {`);
122
- tree(path, indent + " ", inner);
123
- out.push(`${indent}}`);
124
- } else if (leaf) {
125
- const sid = idOf(leaf.path);
126
- out.push(`${indent}${sid}: ${esc(head)}`);
127
- let mark = leaf.breaks.length && !leaf.works ? "mayBreak" : void 0;
128
- if (mark) {
129
- for (const b of leaf.breaks) if (b.always) mark = "breaks";
130
- }
131
- if (mark) for (const b of leaf.breaks) rules[mark].add(b.rule.name);
132
- const trail = [leaf.lead && "bugPath", leaf.repeats && "repeats"];
133
- const color = leaf.group === void 0 ? void 0 : chart.colors[String(leaf.group)];
134
- for (const cls of [
135
- color,
136
- mark,
137
- ...trail
138
- ]) if (cls) {
139
- used.add(cls);
140
- marks.push(` class ${sid} ${cls}`);
141
- }
142
- }
143
- }
144
- };
145
- tree([], " ", r.states);
146
- for (const s of r.states) if (s.start) out.push(` [*] --> ${idOf(s.path)}`);
147
- for (const s of r.steps) out.push(` ${idOf(s.from)} --> ${idOf(s.to)}: ${esc(s.label + (s.when ? ` [${s.when}]` : ""))}`);
148
- return out;
149
- };
150
- let body;
151
- if (chart.regions.length > 1) {
152
- body = [` state "At the same time" as all {`];
153
- for (const [i, r] of chart.regions.entries()) {
154
- if (i) body.push(" --");
155
- body.push(` state "${esc(r.name, true)}" as r${i} {`);
156
- for (const line of region(r)) body.push(` ${line}`);
157
- body.push(" }");
158
- }
159
- body.push(" }");
160
- } else body = region(chart.regions[0]);
161
- const legend = [];
162
- for (const entry of [
163
- ...Object.entries(chart.colors),
164
- [`Breaks ${or(rules.breaks)}`, "breaks"],
165
- [`Breaks ${or(rules.mayBreak)} in some cases`, "mayBreak"],
166
- [`Path to the ${or(chart.paths)} bug`, "bugPath"],
167
- [`Repeats forever, so ${or(chart.loops)} breaks`, "repeats"]
168
- ]) if (used.has(entry[1])) legend.push(entry);
169
- const lines = [];
170
- const title = chart.title && code(chart.title, (n) => `fl°°${n}¶ß`).replaceAll("<", "fl°°60¶ß");
171
- if (title) lines.push("---", `title: ${JSON.stringify(title)}`, "---");
172
- lines.push("stateDiagram-v2");
173
- if (chart.regions.length > 1) lines.push(" direction LR");
174
- if (legend.length) {
175
- lines.push(` state "Legend" as legend {`);
176
- for (const [i, [text]] of legend.entries()) lines.push(` lg${i}: ${esc(text)}`);
177
- lines.push(" }");
178
- for (const [i, [, cls]] of legend.entries()) lines.push(` class lg${i} ${cls}`);
179
- }
180
- for (const line of body) lines.push(line);
181
- for (const [cls, style] of Object.entries(MARK_STYLES)) if (used.has(cls)) lines.push(` classDef ${cls} ${style}`);
182
- for (const line of marks) lines.push(line);
183
- return lines;
184
- }
185
- const mermaid = (chart) => mermaidLines(chart).join("\n");
186
- export { mermaid, mermaidLines };
@@ -1,62 +0,0 @@
1
- import { EC, LEVEL } from "../ir.mjs";
2
- // runtime/skills/statechart/scripts/backends/plain-text.ts
3
- const PREFIX = {
4
- [LEVEL.ERROR]: "Error: ",
5
- [LEVEL.TLCBUG]: "TLC Bug: ",
6
- [LEVEL.WARNING]: "Warning: ",
7
- [LEVEL.STATE]: "State "
8
- };
9
- const MINUTE = 6e4;
10
- const HOUR = 36e5;
11
- const DAY = 864e5;
12
- const pad = (n) => String(n).padStart(2, "0");
13
- function runtime(ms) {
14
- const t = new Date(ms > DAY ? ms - DAY : ms);
15
- const [hh, mm, ss] = [
16
- t.getUTCHours(),
17
- t.getUTCMinutes(),
18
- t.getUTCSeconds()
19
- ].map(pad);
20
- if (ms > DAY) return `${Math.floor((t.getTime() - Date.UTC(t.getUTCFullYear(), 0, 1)) / DAY) + 1}d ${hh}h`;
21
- if (ms > HOUR) return `${hh}h ${mm}min`;
22
- if (ms > MINUTE) return `${mm}min ${ss}s`;
23
- return `${ss}s`;
24
- }
25
- const firstLine = ({ code, level }, line) => {
26
- if (code === EC.TLC_BACK_TO_STATE) return line.replace(/^(\d+): Back to state: /, "Back to state $1: ");
27
- if (code === EC.TLC_FINISHED) return line.replace(/^Finished in (\d+)ms/, (_, ms) => `Finished in ${runtime(Number(ms))}`);
28
- return (PREFIX[level] ?? "") + line;
29
- };
30
- const render = (m) => (m.beforeMarker ?? "") + firstLine(m, m.body.map((part) => typeof part === "string" ? part : render(part)).join("\n"));
31
- function* printed(parts) {
32
- let warned = false;
33
- let progress;
34
- for (const part of parts) {
35
- if (progress?.body.length && (typeof part === "string" || part.code !== EC.TLC_STATS)) yield render(progress);
36
- progress = void 0;
37
- if (typeof part === "string") {
38
- yield part;
39
- continue;
40
- }
41
- if (part.code === EC.TLC_SANY_START || part.code === EC.TLC_SANY_END) continue;
42
- if (part.code === EC.TLC_PROGRESS_STATS) progress = part;
43
- else if (part.body.length) yield render(part);
44
- if (part.level === LEVEL.WARNING && !warned) {
45
- yield "(Use the -nowarning option to disable this warning.)";
46
- warned = true;
47
- }
48
- }
49
- if (progress?.body.length) yield render(progress);
50
- }
51
- function* plainText(parts) {
52
- let chunk = "";
53
- for (const line of printed(parts)) {
54
- chunk += `${line}\n`;
55
- if (chunk.length >= 16777216) {
56
- yield chunk;
57
- chunk = "";
58
- }
59
- }
60
- if (chunk) yield chunk;
61
- }
62
- export { plainText, runtime };
@@ -1,84 +0,0 @@
1
- import { RERUN_STATES, hasSection, list, must, ruleKey } from "../ir.mjs";
2
- // runtime/skills/statechart/scripts/backends/report.ts
3
- const stepsOf = (story) => {
4
- const path = [];
5
- for (const { step, state } of story) {
6
- const parts = [];
7
- for (const [name, names] of Object.entries(state)) parts.push((name ? `${name} ` : "") + names.join(" / "));
8
- path.push({
9
- step,
10
- state: parts.join(", ")
11
- });
12
- }
13
- return path;
14
- };
15
- const forever = (loop, stutters) => {
16
- const quoted = /* @__PURE__ */ new Set();
17
- for (const p of loop) quoted.add(`"${p.state}"`);
18
- const runs = [...quoted];
19
- if (stutters) return `The run stops in ${runs[0]} forever.`;
20
- return runs.length === 1 ? `The run stays in ${runs[0]} forever.` : `The run loops through ${list(runs)} forever.`;
21
- };
22
- const fenced = (text) => [
23
- "```",
24
- text,
25
- "```"
26
- ].join("\n");
27
- function report({ spec, graph, paths, rules, properties, stop, drawing, states }, found, chart, stories) {
28
- let size = 0;
29
- let arrows = 0;
30
- for (const r of chart?.regions ?? []) {
31
- size += r.states.length;
32
- arrows += r.steps.length;
33
- }
34
- let past = 0;
35
- let pastSteps = 0;
36
- let excluded = 0;
37
- for (const s of graph.states.values()) if (s.excluded) excluded++;
38
- else if (s.past) past++;
39
- for (const t of graph.steps) if (must(graph.states, t.to).past) pastSteps++;
40
- const includes = (n) => chart ? `, and the chart includes ${n === 1 ? "it" : "them"}` : "";
41
- const out = [
42
- `# ${spec.module}`,
43
- "",
44
- paths ? `TLC reached ${states.complete && !states.cut && states.distinct > 500 ? `${states.distinct.toLocaleString("en-US")} states, more than` : "more states than"} the chart budget of 500, so ${chart ? `the chart draws only the bug paths: ${size} states and ${arrows} arrows` : "the command wrote no chart.mmd"}.` : `TLC reached ${graph.states.size - past - excluded} states and ${graph.steps.length - pastSteps} steps. The chart draws ${size} states and ${arrows} arrows.`
45
- ];
46
- if (drawing) out.push(`TLC stopped the drawing run with exit ${drawing.status}, so the chart draws only the states that it reached before it stopped.`);
47
- if (!paths && !drawing && graph.states.size === past + excluded) out.push(states.initial ? "Every initial state is outside the constraints, so TLC explores none of them." : "TLC found no state that satisfies Init, so no state can break a rule.");
48
- if (past) out.push(`${past === 1 ? "1 state outside the constraints ends" : `${past} states outside the constraints each end`} a rule's path${includes(past)}. TLC checks the rules in a state outside the constraints, but it does not explore past it.`);
49
- if (excluded) out.push(`${excluded === 1 ? "1 step that the constraints exclude ends" : `${excluded} steps that the constraints exclude each end`} a rule's path${includes(excluded)}. TLC checks the rules after such a step, but it does not take the step.`);
50
- if (chart?.inside) out.push(`The chart does not draw ${chart.inside} steps that stay in one chart state.`);
51
- if (chart?.quiet) out.push(`The view hides ${chart.quiet} steps, so the chart does not draw them.`);
52
- for (const { rule, outcome } of rules) if (!paths && rule.kind === "deadlock" && outcome === "broken" && (drawing || hasSection(spec, "CONSTRAINT", "ACTION_CONSTRAINT"))) out.push(drawing ? "The chart marks only the deadlock that TLC reports, because the drawing run stopped before it reached every state." : "The chart marks only the deadlock that TLC reports. Under a CONSTRAINT or an ACTION_CONSTRAINT, a state with no step in the chart can still have steps that the constraints leave out, and TLC does not count it as a deadlock.");
53
- if (chart?.lie) out.push(`${chart.lie} So the chart draws parent states in place of regions.`);
54
- out.push(...chart?.notes ?? []);
55
- const merged = [];
56
- for (const k of ["VIEW", "SYMMETRY"]) if (hasSection(spec, k)) merged.push(k);
57
- if (chart && merged.length) out.push(`With ${list(merged)}, TLC keeps one representative for each group of states that it counts as the same. An arrow can lead to the representative rather than to the state that the step reaches.`);
58
- for (const bug of found) {
59
- const steps = `${bug.path.length} step${bug.path.length === 1 ? "" : "s"}`;
60
- out.push("", `## ${bug.rule.name} breaks`);
61
- out.push(bug.rule.kind === "property" ? `TLC's counterexample is in tlc-${bug.rule.name}.out. It has ${steps}:` : `The shortest path has ${steps}:`);
62
- const path = stepsOf(must(stories, bug));
63
- for (const [i, p] of path.entries()) out.push(`${i}. ${p.step ? `${p.step}: ` : ""}${p.state}`);
64
- if (bug.loop !== void 0) out.push(forever(path.slice(bug.loop), bug.stutters));
65
- }
66
- const drawn = /* @__PURE__ */ new Set();
67
- for (const b of found) drawn.add(ruleKey(b.rule));
68
- const holds = [];
69
- const unchecked = [];
70
- for (const { rule, outcome, messages } of [...rules, ...properties]) if (outcome === "holds") holds.push(rule.name);
71
- else if (outcome === "not checked") unchecked.push(rule.name);
72
- else if (messages && !drawn.has(ruleKey(rule))) out.push("", `## ${rule.name} breaks`, `TLC found a counterexample. It is in tlc-${rule.name}.out.`);
73
- if (holds.length) out.push("", "## Rules that hold", holds.join(", "));
74
- if (unchecked.length) out.push("", "## Rules not checked", unchecked.join(", "));
75
- if (unchecked.length && states.cut) out.push(`After the first break, each TLC run stops at ${RERUN_STATES.toLocaleString("en-US")} distinct states. A run reached that bound before it checked ${unchecked.length === 1 ? "this rule" : "these rules"} in every state.`);
76
- if (stop) out.push(...unchecked.length ? [`TLC stopped with exit ${stop.status} before it checked ${unchecked.length === 1 ? "this rule" : "these rules"}:`] : [
77
- "",
78
- "## TLC stopped",
79
- `TLC stopped with exit ${stop.status}:`
80
- ], fenced(stop.message));
81
- for (const p of properties) if (p.outcome === "holds" && p.initialOnly) out.push(`TLC checked ${p.rule.name} only in the initial states, because it has no [], <>, or ~>. List it as an INVARIANT to check every state.`);
82
- return out.join("\n");
83
- }
84
- export { report };