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,523 +0,0 @@
1
- import { expect } from "../expect.mjs";
2
- import "../support.mjs";
3
- import { parsePrNumber } from "./types.mjs";
4
- import { WatcherQueryError } from "./github.mjs";
5
- import { applyQueueSnapshot, assessGitHubMerge, classifyPr, createQueueState, evaluateQueue, planQueue, queryBackoffSeconds, readSnapshot, runQueued, runSimple, selectTierMajorStackDecision } from "./policy.mjs";
6
- import { failedCheck, fakeReader, passingCheck, pendingCheck } from "./fakes.test-helper.mjs";
7
- import { describe, it } from "node:test";
8
- // runtime/skills/poteto-mode/scripts/watch-pr/policy.test.ts
9
- const context = (number) => ({
10
- owner: "owner",
11
- repo: "repo",
12
- number: parsePrNumber(number)
13
- });
14
- const options = {
15
- interval: 10,
16
- sweepInterval: 300,
17
- timeout: 0,
18
- maxQueryErrors: 5,
19
- allowDraft: false
20
- };
21
- describe("readiness truth table", () => {
22
- it("covers every specified row and every UNKNOWN rollup value", () => {
23
- for (const [mergeStateStatus, headRollupState, expected] of [
24
- [
25
- "BLOCKED",
26
- "FAILURE",
27
- "refused"
28
- ],
29
- [
30
- "BLOCKED",
31
- "ERROR",
32
- "refused"
33
- ],
34
- [
35
- "BLOCKED",
36
- "PENDING",
37
- "allowed"
38
- ],
39
- [
40
- "UNSTABLE",
41
- "FAILURE",
42
- "allowed"
43
- ],
44
- [
45
- "UNKNOWN",
46
- "ERROR",
47
- "allowed"
48
- ],
49
- [
50
- "UNKNOWN",
51
- "EXPECTED",
52
- "allowed"
53
- ],
54
- [
55
- "UNKNOWN",
56
- "FAILURE",
57
- "allowed"
58
- ],
59
- [
60
- "UNKNOWN",
61
- "PENDING",
62
- "allowed"
63
- ],
64
- [
65
- "UNKNOWN",
66
- "SUCCESS",
67
- "allowed"
68
- ],
69
- [
70
- "UNKNOWN",
71
- null,
72
- "allowed"
73
- ],
74
- [
75
- "CLEAN",
76
- "SUCCESS",
77
- "allowed"
78
- ]
79
- ]) expect(assessGitHubMerge({
80
- mergeStateStatus,
81
- headRollupState
82
- }).kind).toBe(expected);
83
- });
84
- it("turns a clean visible list plus GitHub refusal into an explicit CI blocker", async () => {
85
- const reader = fakeReader({
86
- facts: { mergeStateStatus: "BLOCKED" },
87
- fastPath: {
88
- kind: "checks",
89
- checks: [passingCheck()]
90
- },
91
- commitRollups: [{
92
- oid: "head",
93
- state: "FAILURE"
94
- }]
95
- });
96
- const snapshot = await readSnapshot({
97
- reader,
98
- context: context(1),
99
- pendingHistory: "include",
100
- allowDraft: false
101
- });
102
- expect(snapshot.kind).toBe("open");
103
- if (snapshot.kind !== "open") throw new Error("expected open snapshot");
104
- expect(snapshot.ci.kind).toBe("ci-github-rejected");
105
- expect(classifyPr(snapshot)).toMatchObject({
106
- kind: "blocker",
107
- blocker: { kind: "failing-checks" }
108
- });
109
- });
110
- });
111
- describe("snapshot query planning", () => {
112
- it("does not query commit rollups while queued checks are pending", async () => {
113
- const reader = fakeReader({ fastPath: {
114
- kind: "checks",
115
- checks: [pendingCheck()]
116
- } });
117
- const snapshot = await readSnapshot({
118
- reader,
119
- context: context(2),
120
- pendingHistory: "omit",
121
- allowDraft: false
122
- });
123
- expect(snapshot.kind).toBe("open");
124
- if (snapshot.kind !== "open") throw new Error("expected open snapshot");
125
- expect(snapshot.ci.kind).toBe("ci-pending");
126
- expect(reader.calls).toEqual([
127
- "pullRequest",
128
- "reviewThreadPage:null",
129
- "checksFastPath"
130
- ]);
131
- });
132
- it("queries rollups for settled and failed lists", async () => {
133
- const settled = fakeReader();
134
- await readSnapshot({
135
- reader: settled,
136
- context: context(3),
137
- pendingHistory: "omit",
138
- allowDraft: false
139
- });
140
- expect(settled.calls).toContain("commitRollups");
141
- const failed = fakeReader({ fastPath: {
142
- kind: "checks",
143
- checks: [failedCheck()]
144
- } });
145
- await readSnapshot({
146
- reader: failed,
147
- context: context(4),
148
- pendingHistory: "omit",
149
- allowDraft: false
150
- });
151
- expect(failed.calls).toContain("commitRollups");
152
- });
153
- it("short-circuits merged rows before threads and checks", async () => {
154
- const reader = fakeReader({ facts: {
155
- state: "MERGED",
156
- mergedAt: "2026-07-26T00:00:00Z"
157
- } });
158
- expect((await readSnapshot({
159
- reader,
160
- context: context(5),
161
- pendingHistory: "include",
162
- allowDraft: false
163
- })).kind).toBe("merged");
164
- expect(reader.calls).toEqual(["pullRequest"]);
165
- });
166
- });
167
- it("scans stacks tier-major so an upstack conflict outranks frontier CI", async () => {
168
- const frontier = await readSnapshot({
169
- reader: fakeReader({
170
- fastPath: {
171
- kind: "checks",
172
- checks: [failedCheck()]
173
- },
174
- commitRollups: [{
175
- oid: "head",
176
- state: "FAILURE"
177
- }]
178
- }),
179
- context: context(10),
180
- pendingHistory: "omit",
181
- allowDraft: false
182
- });
183
- const upstack = await readSnapshot({
184
- reader: fakeReader({ facts: { mergeable: "CONFLICTING" } }),
185
- context: context(11),
186
- pendingHistory: "omit",
187
- allowDraft: false
188
- });
189
- const decision = selectTierMajorStackDecision([frontier, upstack]);
190
- expect(decision).toMatchObject({
191
- kind: "blocker",
192
- blocker: {
193
- kind: "merge-conflicts",
194
- pr: { number: 11 }
195
- }
196
- });
197
- });
198
- it("attributes a stack wait to the PR whose checks are pending, not the bottom", async () => {
199
- const readyBottom = await readSnapshot({
200
- reader: fakeReader(),
201
- context: context(20),
202
- pendingHistory: "omit",
203
- allowDraft: false
204
- });
205
- const pendingUpstack = await readSnapshot({
206
- reader: fakeReader({ fastPath: {
207
- kind: "checks",
208
- checks: [pendingCheck("upstack-build")]
209
- } }),
210
- context: context(21),
211
- pendingHistory: "omit",
212
- allowDraft: false
213
- });
214
- const decision = selectTierMajorStackDecision([readyBottom, pendingUpstack]);
215
- expect(decision).toMatchObject({
216
- kind: "waiting",
217
- frontier: { number: 21 },
218
- pending: [{ name: "upstack-build" }]
219
- });
220
- });
221
- it("waits on a draft while checks are pending, then reports the draft gate", async () => {
222
- const pending = await readSnapshot({
223
- reader: fakeReader({
224
- facts: { isDraft: true },
225
- fastPath: {
226
- kind: "checks",
227
- checks: [pendingCheck()]
228
- }
229
- }),
230
- context: context(12),
231
- pendingHistory: "omit",
232
- allowDraft: false
233
- });
234
- expect(classifyPr(pending).kind).toBe("waiting");
235
- const settled = await readSnapshot({
236
- reader: fakeReader({ facts: { isDraft: true } }),
237
- context: context(12),
238
- pendingHistory: "omit",
239
- allowDraft: false
240
- });
241
- expect(classifyPr(settled)).toMatchObject({
242
- kind: "blocker",
243
- blocker: {
244
- kind: "merge-gate",
245
- reason: "draft-pr"
246
- }
247
- });
248
- });
249
- describe("queued-stack cadence", () => {
250
- async function openSnapshot(pr) {
251
- return readSnapshot({
252
- reader: fakeReader(),
253
- context: pr,
254
- pendingHistory: "omit",
255
- allowDraft: false
256
- });
257
- }
258
- it("drops a sweep head only after its snapshot succeeds", async () => {
259
- const queue = [
260
- context(20),
261
- context(21),
262
- context(22)
263
- ];
264
- let state = createQueueState(queue, 0);
265
- const first = await openSnapshot(queue[0]);
266
- state = applyQueueSnapshot(state, first, 0, options).state;
267
- expect(state.work).toMatchObject({
268
- kind: "whole-stack-sweep",
269
- remaining: [{ number: 21 }, { number: 22 }]
270
- });
271
- const second = await openSnapshot(queue[1]);
272
- state = applyQueueSnapshot(state, second, 60, options).state;
273
- expect(state.work).toMatchObject({
274
- kind: "whole-stack-sweep",
275
- remaining: [{ number: 22 }]
276
- });
277
- });
278
- it("resumes the sweep at the PR whose read failed", async () => {
279
- const middle = context(21);
280
- const base = fakeReader();
281
- let failNext = true;
282
- const timeline = [];
283
- const reader = {
284
- ...base,
285
- async pullRequest(pr) {
286
- if (pr.number === middle.number && failNext) {
287
- failNext = false;
288
- timeline.push(`fail:${pr.number}`);
289
- throw new WatcherQueryError({
290
- kind: "command-exit",
291
- retryable: true,
292
- detail: "rate limited",
293
- code: 1
294
- });
295
- }
296
- timeline.push(`read:${pr.number}`);
297
- return base.pullRequest(pr);
298
- }
299
- };
300
- let now = 0;
301
- let sleeps = 0;
302
- const running = runQueued({
303
- dependencies: {
304
- reader,
305
- clock: {
306
- now: () => now,
307
- observedAt: () => "2026-07-26T00:00:00.000Z",
308
- async sleep(seconds) {
309
- timeline.push("sleep");
310
- now += seconds;
311
- sleeps += 1;
312
- if (sleeps === 2) throw new Error("stop after resume proof");
313
- }
314
- },
315
- emit(verdict) {
316
- timeline.push(`emit:${verdict.kind}`);
317
- }
318
- },
319
- contexts: [
320
- context(20),
321
- middle,
322
- context(22)
323
- ],
324
- options
325
- });
326
- await expect(running).rejects.toThrow("stop after resume proof");
327
- expect(timeline).toEqual([
328
- "emit:QUEUE",
329
- "read:20",
330
- "fail:21",
331
- "emit:RETRY",
332
- "sleep",
333
- "read:21",
334
- "read:22",
335
- "emit:STATUS",
336
- "emit:WAITING",
337
- "sleep"
338
- ]);
339
- });
340
- it("emits a completed sweep only after its final successful snapshot", async () => {
341
- const queue = [context(30), context(31)];
342
- let state = createQueueState(queue, 0);
343
- const first = applyQueueSnapshot(state, await openSnapshot(queue[0]), 0, options);
344
- expect(first.completedSweepRows).toBeNull();
345
- state = first.state;
346
- const second = applyQueueSnapshot(state, await openSnapshot(queue[1]), 5, options);
347
- expect(second.completedSweepRows?.map((row) => Number(row.context.number))).toEqual([30, 31]);
348
- expect(second.state.nextSweepAt).toBe(305);
349
- });
350
- it("ADVANCE continues directly to the new frontier without sleeping", async () => {
351
- const one = context(40);
352
- const two = context(41);
353
- const base = fakeReader();
354
- const reads = /* @__PURE__ */ new Map();
355
- const timeline = [];
356
- const reader = {
357
- ...base,
358
- async pullRequest(pr) {
359
- timeline.push(`read:${pr.number}`);
360
- const facts = await base.pullRequest(pr);
361
- const count = (reads.get(pr.number) ?? 0) + 1;
362
- reads.set(pr.number, count);
363
- return pr.number === one.number && count > 1 ? {
364
- ...facts,
365
- state: "MERGED",
366
- mergedAt: "2026-07-26T00:00:00Z"
367
- } : facts;
368
- }
369
- };
370
- let now = 0;
371
- let sleeps = 0;
372
- const emitted = [];
373
- const running = runQueued({
374
- dependencies: {
375
- reader,
376
- clock: {
377
- now: () => now,
378
- observedAt: () => "2026-07-26T00:00:00.000Z",
379
- async sleep(seconds) {
380
- timeline.push("sleep");
381
- now += seconds;
382
- sleeps += 1;
383
- if (sleeps === 2) throw new Error("stop after advance proof");
384
- }
385
- },
386
- emit(verdict) {
387
- emitted.push(verdict);
388
- timeline.push(`emit:${verdict.kind}`);
389
- }
390
- },
391
- contexts: [one, two],
392
- options
393
- });
394
- await expect(running).rejects.toThrow("stop after advance proof");
395
- expect(emitted.some((event) => event.kind === "ADVANCE")).toBe(true);
396
- const firstSleep = timeline.indexOf("sleep");
397
- expect(timeline.slice(firstSleep, firstSleep + 5)).toEqual([
398
- "sleep",
399
- "read:40",
400
- "emit:ADVANCE",
401
- "read:41",
402
- "emit:WAITING"
403
- ]);
404
- });
405
- it("deduplicates identical waits and schedules the next due sweep", async () => {
406
- const queue = [context(50)];
407
- let state = createQueueState(queue, 0);
408
- state = applyQueueSnapshot(state, await openSnapshot(queue[0]), 0, options).state;
409
- const first = evaluateQueue(state, 0, options);
410
- expect(first.kind).toBe("waiting");
411
- if (first.kind !== "waiting") throw new Error("expected waiting");
412
- expect(first.emit).toBe(true);
413
- const second = evaluateQueue(first.state, 10, options);
414
- expect(second.kind).toBe("waiting");
415
- if (second.kind !== "waiting") throw new Error("expected waiting");
416
- expect(second.emit).toBe(false);
417
- expect(planQueue(second.state, 300).work?.kind).toBe("whole-stack-sweep");
418
- });
419
- });
420
- it("uses the specified retry floor and cap", () => {
421
- expect(queryBackoffSeconds(1, 1)).toBe(60);
422
- expect(queryBackoffSeconds(1, 2)).toBe(120);
423
- expect(queryBackoffSeconds(60, 4)).toBe(300);
424
- });
425
- describe("polling deadline sleeps", () => {
426
- for (const mode of [
427
- "single",
428
- "queued-stack",
429
- "query-retry"
430
- ]) it(`caps ${mode} sleeps at the configured deadline`, async () => {
431
- let now = 0;
432
- const sleeps = [];
433
- const pending = fakeReader({ fastPath: {
434
- kind: "checks",
435
- checks: [pendingCheck()]
436
- } });
437
- const dependencies = {
438
- reader: mode === "query-retry" ? {
439
- ...pending,
440
- async pullRequest() {
441
- throw new WatcherQueryError({
442
- kind: "command-exit",
443
- retryable: true,
444
- code: 1,
445
- detail: "temporary failure"
446
- });
447
- }
448
- } : pending,
449
- clock: {
450
- now: () => now,
451
- observedAt: () => "2026-07-26T00:00:00.000Z",
452
- async sleep(seconds) {
453
- sleeps.push(seconds);
454
- now += seconds;
455
- }
456
- },
457
- emit() {}
458
- };
459
- const polling = {
460
- ...options,
461
- interval: 60,
462
- timeout: 5
463
- };
464
- const result = mode === "queued-stack" ? await runQueued({
465
- dependencies,
466
- contexts: [context(1)],
467
- options: polling
468
- }) : await runSimple({
469
- dependencies,
470
- contexts: [context(1)],
471
- mode: "single",
472
- statusOnly: false,
473
- options: polling
474
- });
475
- expect(result.kind).toBe("TIMEOUT");
476
- expect(sleeps).toEqual([5]);
477
- expect(now).toBe(5);
478
- });
479
- it("preserves the polling interval when the deadline is disabled", async () => {
480
- let now = 0;
481
- let reads = 0;
482
- const sleeps = [];
483
- const pending = fakeReader({ fastPath: {
484
- kind: "checks",
485
- checks: [pendingCheck()]
486
- } });
487
- const passed = fakeReader({ fastPath: {
488
- kind: "checks",
489
- checks: [passingCheck()]
490
- } });
491
- const result = await runSimple({
492
- dependencies: {
493
- reader: {
494
- ...pending,
495
- async checksFastPath(pr) {
496
- reads += 1;
497
- return reads === 1 ? pending.checksFastPath(pr) : passed.checksFastPath(pr);
498
- }
499
- },
500
- clock: {
501
- now: () => now,
502
- observedAt: () => "2026-07-26T00:00:00.000Z",
503
- async sleep(seconds) {
504
- sleeps.push(seconds);
505
- now += seconds;
506
- }
507
- },
508
- emit() {}
509
- },
510
- contexts: [context(1)],
511
- mode: "single",
512
- statusOnly: false,
513
- options: {
514
- ...options,
515
- interval: 60,
516
- timeout: 0
517
- }
518
- });
519
- expect(result.kind).toBe("READY");
520
- expect(sleeps).toEqual([60]);
521
- });
522
- });
523
- export {};
@@ -1,106 +0,0 @@
1
- // runtime/skills/poteto-mode/scripts/watch-pr/render.ts
2
- const renderJson = (verdict) => `${JSON.stringify(verdict)}\n`;
3
- function ciCell(row) {
4
- if (row.kind !== "open") return "—";
5
- const was = row.ci.hadPreviousPassingCi ? ", was ✅" : "";
6
- switch (row.ci.kind) {
7
- case "ci-clean": return "✅";
8
- case "ci-pending": return `⏳ ${row.ci.pending.length} pending${was}`;
9
- case "ci-failing": return `❌ ${row.ci.failed.length} failed${row.ci.pending.length ? `, ${row.ci.pending.length} pending` : ""}${was}`;
10
- case "ci-github-rejected": return `❌ GitHub reports failing checks${was}`;
11
- default: return row.ci;
12
- }
13
- }
14
- function reviewCell(row) {
15
- if (row.kind !== "open") return "—";
16
- const open = row.threads.length;
17
- return row.reviewAutomationRunning ? open ? `🤖 running, ${open} open` : "🤖 running" : open ? `📝 ${open} open` : "✅";
18
- }
19
- function mergeCell(row) {
20
- if (row.kind === "merged") return "✅ merged";
21
- if (row.kind === "closed") return "❌ closed";
22
- if (row.facts.isDraft) return "⏸ draft";
23
- if (row.facts.reviewDecision === "CHANGES_REQUESTED") return "⚠️ changes requested";
24
- return row.facts.mergeable === "CONFLICTING" || row.facts.mergeStateStatus === "DIRTY" || row.facts.mergeStateStatus === "CONFLICTING" ? "⚠️ conflict" : "✅";
25
- }
26
- function renderStatusTable(rows) {
27
- const lines = ["| PR | CI | Review | Merge |", "| --- | --- | --- | --- |"];
28
- for (const row of rows) {
29
- const url = `https://github.com/${row.context.owner}/${row.context.repo}/pull/${row.context.number}`;
30
- lines.push(`| [#${row.context.number}](${url}) | ${ciCell(row)} | ${reviewCell(row)} | ${mergeCell(row)} |`);
31
- }
32
- return `${lines.join("\n")}\n`;
33
- }
34
- function threadLine(thread) {
35
- const comment = thread.firstComment;
36
- return [
37
- thread.id,
38
- comment?.path ?? "None",
39
- comment?.line ?? "None",
40
- comment?.authorLogin ?? "None",
41
- `isBugBot=${thread.isBugbot}`,
42
- `bugbotReviewPasses=${thread.bugbotReviewPasses}`,
43
- (comment?.body ?? "").split(/\r?\n/, 1)[0]?.slice(0, 180) ?? ""
44
- ].join(" ");
45
- }
46
- function renderBlocker(blocker) {
47
- switch (blocker.kind) {
48
- case "merge-conflicts": return [
49
- "BLOCKER: merge-conflicts",
50
- `pr=${blocker.pr.number}`,
51
- `mergeable=${blocker.facts.mergeable}`,
52
- `mergeStateStatus=${blocker.facts.mergeStateStatus}`,
53
- "action=resolve merge conflicts before waiting for CI"
54
- ].join("\n");
55
- case "review-threads": return [
56
- "BLOCKER: review-threads",
57
- `pr=${blocker.pr.number}`,
58
- `unresolved=${blocker.threads.length}`,
59
- ...blocker.threads.map(threadLine)
60
- ].join("\n");
61
- case "failing-checks": {
62
- const failed = blocker.ci.kind === "ci-failing" ? blocker.ci.failed : [];
63
- const details = failed.map((check) => `${check.name} ${check.reportedState} ${check.description} ${check.link}`);
64
- if (blocker.ci.kind === "ci-github-rejected") details.push(`mergeStateStatus=${blocker.ci.github.mergeStateStatus}`, `headRollupState=${blocker.ci.github.headRollupState}`);
65
- return [
66
- "BLOCKER: failing-checks",
67
- `pr=${blocker.pr.number}`,
68
- `failed=${failed.length}`,
69
- ...details
70
- ].join("\n");
71
- }
72
- case "merge-gate": {
73
- const action = blocker.reason === "closed-without-merge" ? "restore or remove the closed PR from the queued stack" : blocker.reason === "draft-pr" ? "mark the PR ready for review before waiting for the merge queue" : "resolve the changes-requested review before waiting for the merge queue";
74
- return [
75
- `BLOCKER: ${blocker.reason}`,
76
- `pr=${blocker.pr.number}`,
77
- `action=${action}`
78
- ].join("\n");
79
- }
80
- case "status-query": return [
81
- "BLOCKER: status-query",
82
- `failures=${blocker.failures}`,
83
- `detail=${blocker.failure.detail}`,
84
- "action=verify current PR context, GitHub authentication, and API availability, then rearm"
85
- ].join("\n");
86
- default: return blocker;
87
- }
88
- }
89
- function renderPretty(verdict) {
90
- switch (verdict.kind) {
91
- case "QUEUE": return `QUEUE: captured ${verdict.queue.length} PR${verdict.queue.length === 1 ? "" : "s"} bottom-to-top: ${verdict.queue.map((pr) => `#${pr.number}`).join(",")}\n`;
92
- case "STATUS": return renderStatusTable(verdict.rows);
93
- case "WAITING": return verdict.reason.kind === "pending-checks" ? `WAITING: frontier=#${verdict.frontier.number}; ${verdict.reason.pending.length} check${verdict.reason.pending.length === 1 ? "" : "s"} pending\n` : `WAITING: frontier=#${verdict.frontier.number} is blocker-free; waiting for merge queue (${verdict.reason.unmergedCount} PR${verdict.reason.unmergedCount === 1 ? "" : "s"} unmerged)\n`;
94
- case "ADVANCE": return `ADVANCE: merged #${verdict.merged.number}; next=#${verdict.frontier.number}; remaining=${verdict.remaining}\n`;
95
- case "RETRY": return `RETRY: GitHub status query failed; retrying in ${verdict.retryInSeconds}s\ndetail=${verdict.failure.detail}\n`;
96
- case "BLOCKER": return `${renderBlocker(verdict.blocker)}\n`;
97
- case "READY": return `READY: no merge conflicts, no unresolved review threads, no failing or pending checks${verdict.scope.kind === "single" && verdict.scope.pr.kind === "ready-pr" ? `\nmergeStateStatus=${verdict.scope.pr.proof.ci.github.mergeStateStatus}\nreviewDecision=${verdict.scope.pr.proof.gate.reviewDecision}\nisDraft=${verdict.scope.pr.proof.gate.draft === "draft-allowed"}${verdict.scope.pr.proof.gate.draft === "draft-allowed" ? "\nnote=draft allowed (--allow-draft); leave draft — do not mark ready" : ""}` : ""}\n`;
98
- case "COMPLETE": return `COMPLETE: queued stack merged (${verdict.queue.length} PR${verdict.queue.length === 1 ? "" : "s"})\n`;
99
- case "TIMEOUT":
100
- if (verdict.reason.kind === "pending-checks") return "TIMEOUT: checks still pending\n";
101
- if (verdict.reason.kind === "status-unavailable") return "TIMEOUT: GitHub status remained unavailable\n";
102
- return `TIMEOUT: queued stack still has ${verdict.reason.unmergedCount} PR${verdict.reason.unmergedCount === 1 ? "" : "s"} unmerged; frontier=#${verdict.reason.frontier.number}\n`;
103
- default: return verdict;
104
- }
105
- }
106
- export { renderJson, renderPretty, renderStatusTable };
@@ -1,9 +0,0 @@
1
- // runtime/skills/poteto-mode/scripts/watch-pr/types.ts
2
- function nonEmpty(items) {
3
- return items.length === 0 ? null : [items[0], ...items.slice(1)];
4
- }
5
- function parsePrNumber(value, label = "PR number") {
6
- if (typeof value !== "number" || !Number.isInteger(value) || value <= 0) throw new Error(`${label} must be a positive integer`);
7
- return value;
8
- }
9
- export { nonEmpty, parsePrNumber };
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env node
2
- // runtime/skills/poteto-mode/scripts/watch-pr/watch-pr
3
- const { main } = await import("./cli.mjs");
4
- process.exitCode = await main(process.argv.slice(2));
5
- export {};