pi-pstack-native 0.0.0-stage → 1.0.0

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 (1318) hide show
  1. package/ACCEPTANCE.md +40 -0
  2. package/CHANGELOG.md +75 -0
  3. package/CONTRIBUTING.md +29 -0
  4. package/IMPLEMENTATION.md +38 -0
  5. package/INSTALLATION-CHECK.md +13 -0
  6. package/LICENSE +21 -0
  7. package/NOTICE.md +14 -0
  8. package/PARITY.json +133 -0
  9. package/PARITY.md +156 -0
  10. package/PRD.md +2131 -0
  11. package/README.md +103 -2
  12. package/README.zh-CN.md +137 -0
  13. package/REVIEW.md +24 -0
  14. package/SECURITY.md +17 -0
  15. package/SEMANTICS.json +2852 -0
  16. package/UPSTREAM.json +32 -0
  17. package/agents/architect.md +3 -0
  18. package/agents/comment-sicko.md +3 -0
  19. package/agents/integrator.md +6 -0
  20. package/agents/poteto-agent.md +3 -0
  21. package/agents/reviewer.md +3 -0
  22. package/agents/scout.md +3 -0
  23. package/agents/synthesizer.md +3 -0
  24. package/agents/verifier.md +3 -0
  25. package/agents/worker.md +3 -0
  26. package/benchmarks/cases.json +354 -0
  27. package/dist/agent/candidates.d.ts +13 -0
  28. package/dist/agent/candidates.js +50 -0
  29. package/dist/agent/grep-worker.mjs +46 -0
  30. package/dist/agent/host.d.ts +47 -0
  31. package/dist/agent/host.js +480 -0
  32. package/dist/agent/isolation.d.ts +3 -0
  33. package/dist/agent/isolation.js +12 -0
  34. package/dist/agent/outcome.d.ts +8 -0
  35. package/dist/agent/outcome.js +15 -0
  36. package/dist/agent/profiles.d.ts +5 -0
  37. package/dist/agent/profiles.js +128 -0
  38. package/dist/agent/read-only-tools.d.ts +1 -0
  39. package/dist/agent/read-only-tools.js +150 -0
  40. package/dist/agent/resources.d.ts +15 -0
  41. package/dist/agent/resources.js +77 -0
  42. package/dist/api.d.ts +18 -0
  43. package/dist/api.js +18 -0
  44. package/dist/artifacts/fingerprint.d.ts +29 -0
  45. package/dist/artifacts/fingerprint.js +75 -0
  46. package/dist/compatibility/adapter.d.ts +66 -0
  47. package/dist/compatibility/adapter.js +110 -0
  48. package/dist/compatibility/source.d.ts +2 -0
  49. package/dist/compatibility/source.js +38 -0
  50. package/dist/compatibility/tool.d.ts +2 -0
  51. package/dist/compatibility/tool.js +59 -0
  52. package/dist/context/snapshot.d.ts +37 -0
  53. package/dist/context/snapshot.js +12 -0
  54. package/dist/contracts/brief.d.ts +19 -0
  55. package/dist/contracts/brief.js +198 -0
  56. package/dist/contracts/types.d.ts +192 -0
  57. package/dist/contracts/types.js +1 -0
  58. package/dist/delivery/frontier.d.ts +61 -0
  59. package/dist/delivery/frontier.js +123 -0
  60. package/dist/delivery/git.d.ts +2 -0
  61. package/dist/delivery/git.js +12 -0
  62. package/dist/delivery/prepare.d.ts +18 -0
  63. package/dist/delivery/prepare.js +30 -0
  64. package/dist/delivery/provider.d.ts +31 -0
  65. package/dist/delivery/provider.js +42 -0
  66. package/dist/delivery/review-threads.d.ts +18 -0
  67. package/dist/delivery/review-threads.js +39 -0
  68. package/dist/delivery/stack.d.ts +32 -0
  69. package/dist/delivery/stack.js +91 -0
  70. package/dist/extension.d.ts +2 -0
  71. package/dist/extension.js +320 -0
  72. package/dist/loop/scheduler.d.ts +53 -0
  73. package/dist/loop/scheduler.js +334 -0
  74. package/dist/loop/store.d.ts +16 -0
  75. package/dist/loop/store.js +66 -0
  76. package/dist/models/router.d.ts +25 -0
  77. package/dist/models/router.js +183 -0
  78. package/dist/program/coordinator.d.ts +75 -0
  79. package/dist/program/coordinator.js +169 -0
  80. package/dist/program/dispatch.d.ts +20 -0
  81. package/dist/program/dispatch.js +82 -0
  82. package/dist/runner/cli.mjs +46 -0
  83. package/dist/runner/lease.d.ts +10 -0
  84. package/dist/runner/lease.js +24 -0
  85. package/dist/runner/service.d.ts +8 -0
  86. package/dist/runner/service.js +66 -0
  87. package/dist/runtime/checkout.d.ts +3 -0
  88. package/dist/runtime/checkout.js +20 -0
  89. package/dist/runtime/config.d.ts +7 -0
  90. package/dist/runtime/config.js +46 -0
  91. package/dist/runtime/errors.d.ts +2 -0
  92. package/dist/runtime/errors.js +10 -0
  93. package/dist/runtime/home.d.ts +11 -0
  94. package/dist/runtime/home.js +15 -0
  95. package/dist/runtime/lock.d.ts +12 -0
  96. package/dist/runtime/lock.js +123 -0
  97. package/dist/runtime/migrate.d.ts +9 -0
  98. package/dist/runtime/migrate.js +44 -0
  99. package/dist/runtime/ownership.d.ts +4 -0
  100. package/dist/runtime/ownership.js +6 -0
  101. package/dist/runtime/protocol.d.ts +24 -0
  102. package/dist/runtime/protocol.js +35 -0
  103. package/dist/runtime/redact.d.ts +3 -0
  104. package/dist/runtime/redact.js +32 -0
  105. package/dist/runtime/store.d.ts +6 -0
  106. package/dist/runtime/store.js +75 -0
  107. package/dist/runtime/transaction.d.ts +4 -0
  108. package/dist/runtime/transaction.js +44 -0
  109. package/dist/runtime/types.d.ts +202 -0
  110. package/dist/runtime/types.js +1 -0
  111. package/dist/runtime/upstream.d.ts +2 -0
  112. package/dist/runtime/upstream.js +8 -0
  113. package/dist/setup/command.d.ts +2 -0
  114. package/dist/setup/command.js +423 -0
  115. package/dist/statechart/backends/cfg.js +31 -0
  116. package/dist/statechart/backends/mermaid.js +223 -0
  117. package/dist/statechart/backends/plain-text.js +68 -0
  118. package/dist/statechart/backends/report.js +123 -0
  119. package/dist/statechart/frontends/config.js +258 -0
  120. package/dist/statechart/frontends/dot.js +68 -0
  121. package/dist/statechart/frontends/marks.js +102 -0
  122. package/dist/statechart/frontends/messages.js +53 -0
  123. package/dist/statechart/frontends/spec.js +89 -0
  124. package/dist/statechart/frontends/trace.js +24 -0
  125. package/dist/statechart/frontends/value.js +181 -0
  126. package/dist/statechart/frontends/verdict.js +38 -0
  127. package/dist/statechart/frontends/view.js +107 -0
  128. package/dist/statechart/ir.js +317 -0
  129. package/dist/statechart/passes/annotate.js +102 -0
  130. package/dist/statechart/passes/label.js +217 -0
  131. package/dist/statechart/passes/lift.js +89 -0
  132. package/dist/statechart/passes/loop-check.js +57 -0
  133. package/dist/statechart/passes/paths.js +50 -0
  134. package/dist/statechart/passes/reach.js +134 -0
  135. package/dist/statechart/passes/region-check.js +94 -0
  136. package/dist/statechart/passes/regions.js +296 -0
  137. package/dist/statechart/pipeline.js +63 -0
  138. package/dist/statechart/run.js +432 -0
  139. package/dist/statechart/statechart.js +149 -0
  140. package/dist/statechart/worker.js +40 -0
  141. package/dist/telemetry/metrics.d.ts +13 -0
  142. package/dist/telemetry/metrics.js +11 -0
  143. package/dist/templates/build.d.ts +35 -0
  144. package/dist/templates/build.js +172 -0
  145. package/dist/tools/agents.d.ts +3 -0
  146. package/dist/tools/agents.js +74 -0
  147. package/dist/tools/graph.d.ts +3 -0
  148. package/dist/tools/graph.js +35 -0
  149. package/dist/tools/protocol.d.ts +3 -0
  150. package/dist/tools/protocol.js +77 -0
  151. package/dist/tools/schema.d.ts +7 -0
  152. package/dist/tools/schema.js +6 -0
  153. package/dist/tools/workflow.d.ts +3 -0
  154. package/dist/tools/workflow.js +137 -0
  155. package/dist/tools/worktrees.d.ts +3 -0
  156. package/dist/tools/worktrees.js +35 -0
  157. package/dist/verification/process.mjs +9 -0
  158. package/dist/verification/runner.d.ts +23 -0
  159. package/dist/verification/runner.js +259 -0
  160. package/dist/workflow/artifacts.d.ts +10 -0
  161. package/dist/workflow/artifacts.js +102 -0
  162. package/dist/workflow/engine.d.ts +58 -0
  163. package/dist/workflow/engine.js +725 -0
  164. package/dist/workflow/graph.d.ts +10 -0
  165. package/dist/workflow/graph.js +60 -0
  166. package/dist/worktree/manager.d.ts +20 -0
  167. package/dist/worktree/manager.js +68 -0
  168. package/dist/worktree/snapshot.d.ts +2 -0
  169. package/dist/worktree/snapshot.js +43 -0
  170. package/docs/DEPENDENCIES.md +35 -0
  171. package/docs/LIVE-TEST-PLAN.zh-CN.md +161 -0
  172. package/docs/ML-WORKFLOWS.zh-CN.md +49 -0
  173. package/docs/PI-SEMANTIC-ADAPTER.md +34 -0
  174. package/docs/PR-41-ALIGNMENT-PLAN.zh-CN.md +30 -0
  175. package/docs/PR-PROTOCOL.md +48 -0
  176. package/docs/PUBLISHING.md +61 -0
  177. package/docs/README.md +30 -0
  178. package/docs/REFERENCE.md +357 -0
  179. package/docs/SEMANTIC-COMPATIBILITY.md +135 -0
  180. package/docs/STATECHART.md +13 -0
  181. package/docs/UPSTREAM-0.15.17.md +51 -0
  182. package/docs/VALIDATION.md +59 -0
  183. package/docs/WINDOWS-MODEL-TEST.zh-CN.md +27 -0
  184. package/docs/evidence/live-github-5deb723.json +44 -0
  185. package/docs/evidence/semantic-smoke-5deb723.json +49 -0
  186. package/docs/parity.test.mjs +84 -0
  187. package/docs/registry-records-0.15.32.json +2161 -0
  188. package/docs/registry-records-0.15.36.json +2161 -0
  189. package/docs/stacked-pr-body.md +23 -0
  190. package/docs/upstream-dispositions-0.15.36.json +2408 -0
  191. package/docs/upstream-inventory-0.15.36.json +15754 -0
  192. package/docs/upstream-provenance-0.15.17.json +62 -0
  193. package/docs/upstream-provenance-0.15.32.json +11 -0
  194. package/docs/upstream-provenance-0.15.36.json +11 -0
  195. package/docs/upstream-sync/IMPLEMENTATION.md +114 -0
  196. package/docs/upstream-sync/PORT-0.15.23.md +142 -0
  197. package/docs/upstream-sync/PR-PORT-0.15.23.md +28 -0
  198. package/docs/upstream-sync/VALIDATION.md +76 -0
  199. package/docs/upstream-sync/candidate-0.15.23.json +632 -0
  200. package/docs/upstream-sync/reports/978ca6e9c0e0_837067b75aa2-e928d281378110a3.json +2166 -0
  201. package/docs/upstream-sync/reports/978ca6e9c0e0_837067b75aa2-e928d281378110a3.md +440 -0
  202. package/docs/upstream-sync/reports/978ca6e9c0e0_837067b75aa2.json +2161 -0
  203. package/docs/upstream-sync/reports/978ca6e9c0e0_837067b75aa2.md +440 -0
  204. package/docs/upstream-sync/tasks/978ca6e9c0e0_837067b75aa2-e928d281378110a3.md +440 -0
  205. package/docs/upstream-sync/tasks/978ca6e9c0e0_837067b75aa2.md +440 -0
  206. package/docs/upstream-sync-0.15.17.json +521 -0
  207. package/docs/upstream-sync-0.15.32.json +106 -0
  208. package/docs/upstream-sync-0.15.36.json +106 -0
  209. package/docs/upstream-target-0.15.36.json +3456 -0
  210. package/docs/upstream-upgrade-0.15.32.json +12140 -0
  211. package/docs/upstream-upgrade-0.15.32.md +23 -0
  212. package/docs/upstream-upgrade-0.15.36.md +7 -0
  213. package/docs/validate-pr.mjs +74 -0
  214. package/examples/README.md +45 -0
  215. package/examples/strict-brief.json +14 -0
  216. package/examples/verification-policy.json +8 -0
  217. package/package.json +152 -4
  218. package/scripts/benchmark.mjs +39 -0
  219. package/scripts/build-statechart.mjs +30 -0
  220. package/scripts/build.mjs +11 -0
  221. package/scripts/check-benchmark.mjs +27 -0
  222. package/scripts/check-contracts.mjs +15 -0
  223. package/scripts/check-e2e.mjs +86 -0
  224. package/scripts/check-inventory.mjs +24 -0
  225. package/scripts/check-package.mjs +17 -0
  226. package/scripts/check-parity.mjs +4 -0
  227. package/scripts/check-plan.mjs +206 -0
  228. package/scripts/check-records.mjs +35 -0
  229. package/scripts/check-semantics.mjs +7 -0
  230. package/scripts/check-statechart.mjs +13 -0
  231. package/scripts/check-syntax.mjs +9 -0
  232. package/scripts/check-windows-build.mjs +12 -0
  233. package/scripts/e2e-live.mjs +58 -0
  234. package/scripts/e2e-reporter.mjs +17 -0
  235. package/scripts/review.mjs +26 -0
  236. package/scripts/semantics/core.mjs +101 -0
  237. package/scripts/semantics/generate.mjs +47 -0
  238. package/scripts/semantics/real-pi-smoke.mjs +46 -0
  239. package/scripts/smoke-host.mjs +10 -0
  240. package/scripts/smoke-install.mjs +37 -0
  241. package/scripts/sync-upstream.mjs +4 -0
  242. package/scripts/upstream/cli.mjs +140 -0
  243. package/scripts/upstream/core.mjs +178 -0
  244. package/scripts/upstream/core.test.mjs +137 -0
  245. package/scripts/upstream/inventory.mjs +229 -0
  246. package/scripts/upstream/inventory.test.mjs +417 -0
  247. package/scripts/upstream/notify.cjs +17 -0
  248. package/scripts/upstream/notify.test.mjs +12 -0
  249. package/scripts/upstream/parity.mjs +45 -0
  250. package/scripts/upstream/playbook-contract.test.mjs +80 -0
  251. package/scripts/upstream/playbooks.mjs +143 -0
  252. package/scripts/upstream/records.mjs +113 -0
  253. package/scripts/upstream/records.test.mjs +116 -0
  254. package/scripts/upstream/report.d.ts +30 -0
  255. package/skills/architect/SKILL.md +133 -0
  256. package/skills/architect/references/design-red-flags.md +57 -0
  257. package/skills/architect/references/rationale-template.md +35 -0
  258. package/skills/architect/references/runner-prompt.md +20 -0
  259. package/skills/arena/SKILL.md +102 -0
  260. package/skills/automate-me/SKILL.md +158 -0
  261. package/skills/benchmark-checklist/SKILL.md +89 -0
  262. package/skills/blast-radius/SKILL.md +100 -0
  263. package/skills/bro/SKILL.md +57 -0
  264. package/skills/correct/SKILL.md +82 -0
  265. package/skills/create-formal-verification-skill/SKILL.md +93 -0
  266. package/skills/create-verification-skill/SKILL.md +94 -0
  267. package/skills/create-verification-skill/references/feature-map-example/README.md +47 -0
  268. package/skills/create-verification-skill/references/feature-map-example/create-note.md +39 -0
  269. package/skills/create-verification-skill/references/feature-map-example/search.md +45 -0
  270. package/skills/figure-it-out/SKILL.md +102 -0
  271. package/skills/how/SKILL.md +86 -0
  272. package/skills/how/references/explainer-prompt.md +55 -0
  273. package/skills/how/references/explorer-prompt.md +35 -0
  274. package/skills/in-your-own-words/SKILL.md +57 -0
  275. package/skills/interrogate/SKILL.md +85 -0
  276. package/skills/ketchup/SKILL.md +93 -0
  277. package/skills/ketchup-video/SKILL.md +79 -0
  278. package/skills/maintain-formal-verification-skill/SKILL.md +108 -0
  279. package/skills/maintain-verification-skill/SKILL.md +89 -0
  280. package/skills/make-bot-ui/SKILL.md +8 -0
  281. package/skills/ml-development/SKILL.md +38 -0
  282. package/skills/ml-development/playbooks/01-scope.md +14 -0
  283. package/skills/ml-development/playbooks/02-data.md +14 -0
  284. package/skills/ml-development/playbooks/03-baseline.md +14 -0
  285. package/skills/ml-development/playbooks/04-experiments.md +14 -0
  286. package/skills/ml-development/playbooks/05-evaluation.md +14 -0
  287. package/skills/ml-development/playbooks/06-reproducibility.md +13 -0
  288. package/skills/ml-development/references/experiment-matrix.md +11 -0
  289. package/skills/ml-development/references/run-record.md +19 -0
  290. package/skills/no-comments/SKILL.md +74 -0
  291. package/skills/poteto-help/SKILL.md +217 -0
  292. package/skills/poteto-help/references/prompting.md +51 -0
  293. package/skills/poteto-help/references/recipes.md +51 -0
  294. package/skills/poteto-mode/SKILL.md +214 -0
  295. package/skills/poteto-mode/playbooks/authoring-a-skill.md +64 -0
  296. package/skills/poteto-mode/playbooks/autonomous-run.md +65 -0
  297. package/skills/poteto-mode/playbooks/autopilot-full.md +77 -0
  298. package/skills/poteto-mode/playbooks/autopilot-stack.md +60 -0
  299. package/skills/poteto-mode/playbooks/babysit.md +75 -0
  300. package/skills/poteto-mode/playbooks/bug-fix.md +67 -0
  301. package/skills/poteto-mode/playbooks/eval.md +77 -0
  302. package/skills/poteto-mode/playbooks/feature.md +73 -0
  303. package/skills/poteto-mode/playbooks/hillclimb.md +73 -0
  304. package/skills/poteto-mode/playbooks/investigation.md +66 -0
  305. package/skills/poteto-mode/playbooks/multi-phase-plan.md +207 -0
  306. package/skills/poteto-mode/playbooks/opening-a-pr.md +86 -0
  307. package/skills/poteto-mode/playbooks/orchestrate.md +77 -0
  308. package/skills/poteto-mode/playbooks/pause-safely.md +62 -0
  309. package/skills/poteto-mode/playbooks/perf-issue.md +77 -0
  310. package/skills/poteto-mode/playbooks/prototype.md +66 -0
  311. package/skills/poteto-mode/playbooks/refactoring.md +68 -0
  312. package/skills/poteto-mode/playbooks/runtime-forensics.md +63 -0
  313. package/skills/poteto-mode/playbooks/session-pickup.md +63 -0
  314. package/skills/poteto-mode/playbooks/shipping.md +64 -0
  315. package/skills/poteto-mode/playbooks/trace-forensics.md +66 -0
  316. package/skills/poteto-mode/playbooks/visual-parity.md +63 -0
  317. package/skills/poteto-mode/playbooks/worktree-cleanup.md +64 -0
  318. package/skills/poteto-mode/references/bugbot-triage.md +142 -0
  319. package/skills/poteto-mode/references/runtime-mapping.md +10 -0
  320. package/skills/principle-attack-the-premise/SKILL.md +71 -0
  321. package/skills/principle-boundary-discipline/SKILL.md +84 -0
  322. package/skills/principle-build-the-lever/SKILL.md +73 -0
  323. package/skills/principle-encode-lessons-in-structure/SKILL.md +61 -0
  324. package/skills/principle-exhaust-the-design-space/SKILL.md +59 -0
  325. package/skills/principle-experience-first/SKILL.md +69 -0
  326. package/skills/principle-explain-the-number/SKILL.md +68 -0
  327. package/skills/principle-fix-root-causes/SKILL.md +71 -0
  328. package/skills/principle-foundational-thinking/SKILL.md +71 -0
  329. package/skills/principle-guard-the-context-window/SKILL.md +62 -0
  330. package/skills/principle-laziness-protocol/SKILL.md +60 -0
  331. package/skills/principle-make-operations-idempotent/SKILL.md +72 -0
  332. package/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md +64 -0
  333. package/skills/principle-minimize-reader-load/SKILL.md +68 -0
  334. package/skills/principle-model-the-domain/SKILL.md +74 -0
  335. package/skills/principle-never-block-on-the-human/SKILL.md +65 -0
  336. package/skills/principle-outcome-oriented-execution/SKILL.md +71 -0
  337. package/skills/principle-prove-it-works/SKILL.md +72 -0
  338. package/skills/principle-redesign-from-first-principles/SKILL.md +66 -0
  339. package/skills/principle-separate-before-serializing-shared-state/SKILL.md +66 -0
  340. package/skills/principle-sequence-verifiable-units/SKILL.md +67 -0
  341. package/skills/principle-subtract-before-you-add/SKILL.md +68 -0
  342. package/skills/principle-test-behavior-not-implementation/SKILL.md +70 -0
  343. package/skills/principle-type-system-discipline/SKILL.md +63 -0
  344. package/skills/pstack-runtime/SKILL.md +8 -0
  345. package/skills/recall/SKILL.md +85 -0
  346. package/skills/reflect/SKILL.md +119 -0
  347. package/skills/reflect/references/divergent-reviewer.md +38 -0
  348. package/skills/reflect/references/judgment-reviewer.md +37 -0
  349. package/skills/reflect/references/synthesizer.md +56 -0
  350. package/skills/reflect/references/tooling-reviewer.md +48 -0
  351. package/skills/setup-pstack/SKILL.md +132 -0
  352. package/skills/sharpen/SKILL.md +66 -0
  353. package/skills/show-me-your-work/SKILL.md +132 -0
  354. package/skills/statechart/SKILL.md +132 -0
  355. package/skills/statechart/references/render.md +93 -0
  356. package/skills/statechart/scripts/backends/cfg.ts +33 -0
  357. package/skills/statechart/scripts/backends/mermaid.ts +201 -0
  358. package/skills/statechart/scripts/backends/plain-text.ts +72 -0
  359. package/skills/statechart/scripts/backends/report.ts +177 -0
  360. package/skills/statechart/scripts/bug-states.mjs +81 -0
  361. package/skills/statechart/scripts/chart-edges.mjs +68 -0
  362. package/skills/statechart/scripts/chart-parts.mjs +21 -0
  363. package/skills/statechart/scripts/chart-to-tla.mjs +205 -0
  364. package/skills/statechart/scripts/compare-charts.mjs +74 -0
  365. package/skills/statechart/scripts/frontends/config.ts +276 -0
  366. package/skills/statechart/scripts/frontends/dot.ts +74 -0
  367. package/skills/statechart/scripts/frontends/marks.ts +93 -0
  368. package/skills/statechart/scripts/frontends/messages.ts +52 -0
  369. package/skills/statechart/scripts/frontends/spec.ts +114 -0
  370. package/skills/statechart/scripts/frontends/trace.ts +24 -0
  371. package/skills/statechart/scripts/frontends/value.ts +166 -0
  372. package/skills/statechart/scripts/frontends/verdict.ts +40 -0
  373. package/skills/statechart/scripts/frontends/view.ts +119 -0
  374. package/skills/statechart/scripts/ir.ts +547 -0
  375. package/skills/statechart/scripts/lib.mjs +970 -0
  376. package/skills/statechart/scripts/map-view.mjs +92 -0
  377. package/skills/statechart/scripts/package.json +11 -0
  378. package/skills/statechart/scripts/passes/annotate.ts +128 -0
  379. package/skills/statechart/scripts/passes/label.ts +269 -0
  380. package/skills/statechart/scripts/passes/lift.ts +85 -0
  381. package/skills/statechart/scripts/passes/loop-check.ts +68 -0
  382. package/skills/statechart/scripts/passes/paths.ts +60 -0
  383. package/skills/statechart/scripts/passes/reach.ts +135 -0
  384. package/skills/statechart/scripts/passes/region-check.ts +97 -0
  385. package/skills/statechart/scripts/passes/regions.ts +295 -0
  386. package/skills/statechart/scripts/pipeline.ts +76 -0
  387. package/skills/statechart/scripts/property-loop.mjs +60 -0
  388. package/skills/statechart/scripts/read-check.mjs +79 -0
  389. package/skills/statechart/scripts/regions-chart.mjs +307 -0
  390. package/skills/statechart/scripts/render.mjs +531 -0
  391. package/skills/statechart/scripts/rule-book.mjs +84 -0
  392. package/skills/statechart/scripts/run.ts +481 -0
  393. package/skills/statechart/scripts/second-replay.mjs +122 -0
  394. package/skills/statechart/scripts/snapshot.mjs +74 -0
  395. package/skills/statechart/scripts/spec-text.mjs +126 -0
  396. package/skills/statechart/scripts/statechart +29 -0
  397. package/skills/statechart/scripts/statechart-help.mjs +350 -0
  398. package/skills/statechart/scripts/statechart.mjs +903 -0
  399. package/skills/statechart/scripts/statechart.ts +164 -0
  400. package/skills/statechart/scripts/test/ConfigOracle.java +63 -0
  401. package/skills/statechart/scripts/test/band.mmd +15 -0
  402. package/skills/statechart/scripts/test/chart.test.ts +1210 -0
  403. package/skills/statechart/scripts/test/charts/Braces.mmd +7 -0
  404. package/skills/statechart/scripts/test/charts/Escapes.mmd +11 -0
  405. package/skills/statechart/scripts/test/charts/Phases.mmd +29 -0
  406. package/skills/statechart/scripts/test/cli.test.ts +1314 -0
  407. package/skills/statechart/scripts/test/config-fuzz.test.ts +263 -0
  408. package/skills/statechart/scripts/test/corpus/Counter/ChartRun.out +57 -0
  409. package/skills/statechart/scripts/test/corpus/Counter/Counter.cfg +3 -0
  410. package/skills/statechart/scripts/test/corpus/Counter/Counter.tla +10 -0
  411. package/skills/statechart/scripts/test/corpus/Counter/chart.mmd +9 -0
  412. package/skills/statechart/scripts/test/corpus/Counter/graph.dot +16 -0
  413. package/skills/statechart/scripts/test/corpus/Counter/report.md +7 -0
  414. package/skills/statechart/scripts/test/corpus/Counter/sany.out +2 -0
  415. package/skills/statechart/scripts/test/corpus/Counter/verdict-1.out +49 -0
  416. package/skills/statechart/scripts/test/corpus/CounterAction/ChartRun.out +60 -0
  417. package/skills/statechart/scripts/test/corpus/CounterAction/CounterAction.cfg +4 -0
  418. package/skills/statechart/scripts/test/corpus/CounterAction/CounterAction.tla +22 -0
  419. package/skills/statechart/scripts/test/corpus/CounterAction/chart.mmd +26 -0
  420. package/skills/statechart/scripts/test/corpus/CounterAction/graph.dot +19 -0
  421. package/skills/statechart/scripts/test/corpus/CounterAction/report.md +20 -0
  422. package/skills/statechart/scripts/test/corpus/CounterAction/sany.out +2 -0
  423. package/skills/statechart/scripts/test/corpus/CounterAction/verdict-1.exit +1 -0
  424. package/skills/statechart/scripts/test/corpus/CounterAction/verdict-1.out +56 -0
  425. package/skills/statechart/scripts/test/corpus/CounterAction/verdict-2.exit +1 -0
  426. package/skills/statechart/scripts/test/corpus/CounterAction/verdict-2.out +82 -0
  427. package/skills/statechart/scripts/test/corpus/CounterAction/verdict-3.out +57 -0
  428. package/skills/statechart/scripts/test/corpus/CounterDeadlock/ChartRun.out +59 -0
  429. package/skills/statechart/scripts/test/corpus/CounterDeadlock/CounterDeadlock.cfg +3 -0
  430. package/skills/statechart/scripts/test/corpus/CounterDeadlock/CounterDeadlock.tla +11 -0
  431. package/skills/statechart/scripts/test/corpus/CounterDeadlock/chart.mmd +22 -0
  432. package/skills/statechart/scripts/test/corpus/CounterDeadlock/graph.dot +16 -0
  433. package/skills/statechart/scripts/test/corpus/CounterDeadlock/report.md +17 -0
  434. package/skills/statechart/scripts/test/corpus/CounterDeadlock/sany.out +2 -0
  435. package/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-1.exit +1 -0
  436. package/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-1.out +56 -0
  437. package/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-2.exit +1 -0
  438. package/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-2.out +77 -0
  439. package/skills/statechart/scripts/test/corpus/CounterFan/ChartRun.out +69 -0
  440. package/skills/statechart/scripts/test/corpus/CounterFan/CounterFan.cfg +2 -0
  441. package/skills/statechart/scripts/test/corpus/CounterFan/CounterFan.tla +11 -0
  442. package/skills/statechart/scripts/test/corpus/CounterFan/chart.mmd +85 -0
  443. package/skills/statechart/scripts/test/corpus/CounterFan/graph.dot +70 -0
  444. package/skills/statechart/scripts/test/corpus/CounterFan/report.md +12 -0
  445. package/skills/statechart/scripts/test/corpus/CounterFan/sany.out +2 -0
  446. package/skills/statechart/scripts/test/corpus/CounterFan/verdict-1.exit +1 -0
  447. package/skills/statechart/scripts/test/corpus/CounterFan/verdict-1.out +67 -0
  448. package/skills/statechart/scripts/test/corpus/CounterFan/verdict-2.out +57 -0
  449. package/skills/statechart/scripts/test/corpus/CounterGuard/ChartRun.exit +1 -0
  450. package/skills/statechart/scripts/test/corpus/CounterGuard/ChartRun.out +85 -0
  451. package/skills/statechart/scripts/test/corpus/CounterGuard/CounterGuard.cfg +6 -0
  452. package/skills/statechart/scripts/test/corpus/CounterGuard/CounterGuard.tla +13 -0
  453. package/skills/statechart/scripts/test/corpus/CounterGuard/chart.mmd +5 -0
  454. package/skills/statechart/scripts/test/corpus/CounterGuard/graph.dot +10 -0
  455. package/skills/statechart/scripts/test/corpus/CounterGuard/report.md +31 -0
  456. package/skills/statechart/scripts/test/corpus/CounterGuard/sany.out +2 -0
  457. package/skills/statechart/scripts/test/corpus/CounterGuard/verdict-1.exit +1 -0
  458. package/skills/statechart/scripts/test/corpus/CounterGuard/verdict-1.out +64 -0
  459. package/skills/statechart/scripts/test/corpus/CounterGuard/verdict-2.exit +1 -0
  460. package/skills/statechart/scripts/test/corpus/CounterGuard/verdict-2.out +77 -0
  461. package/skills/statechart/scripts/test/corpus/CounterInitPast/ChartRun.out +55 -0
  462. package/skills/statechart/scripts/test/corpus/CounterInitPast/CounterInitPast.cfg +3 -0
  463. package/skills/statechart/scripts/test/corpus/CounterInitPast/CounterInitPast.tla +10 -0
  464. package/skills/statechart/scripts/test/corpus/CounterInitPast/chart.mmd +12 -0
  465. package/skills/statechart/scripts/test/corpus/CounterInitPast/graph.dot +6 -0
  466. package/skills/statechart/scripts/test/corpus/CounterInitPast/report.md +12 -0
  467. package/skills/statechart/scripts/test/corpus/CounterInitPast/sany.out +2 -0
  468. package/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-1.exit +1 -0
  469. package/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-1.out +33 -0
  470. package/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-2.out +54 -0
  471. package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/ChartRun.out +54 -0
  472. package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/CounterInitPastHolds.cfg +3 -0
  473. package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/CounterInitPastHolds.tla +10 -0
  474. package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/chart.mmd +1 -0
  475. package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/graph.dot +6 -0
  476. package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/report.md +7 -0
  477. package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/sany.out +2 -0
  478. package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/verdict-1.out +46 -0
  479. package/skills/statechart/scripts/test/corpus/CounterInstance/ChartRun.out +59 -0
  480. package/skills/statechart/scripts/test/corpus/CounterInstance/CounterInstance.cfg +2 -0
  481. package/skills/statechart/scripts/test/corpus/CounterInstance/CounterInstance.tla +10 -0
  482. package/skills/statechart/scripts/test/corpus/CounterInstance/CounterSteps.tla +6 -0
  483. package/skills/statechart/scripts/test/corpus/CounterInstance/chart.mmd +17 -0
  484. package/skills/statechart/scripts/test/corpus/CounterInstance/graph.dot +15 -0
  485. package/skills/statechart/scripts/test/corpus/CounterInstance/report.md +14 -0
  486. package/skills/statechart/scripts/test/corpus/CounterInstance/sany.out +3 -0
  487. package/skills/statechart/scripts/test/corpus/CounterInstance/verdict-1.exit +1 -0
  488. package/skills/statechart/scripts/test/corpus/CounterInstance/verdict-1.out +78 -0
  489. package/skills/statechart/scripts/test/corpus/CounterJump/ChartRun.out +59 -0
  490. package/skills/statechart/scripts/test/corpus/CounterJump/CounterJump.cfg +3 -0
  491. package/skills/statechart/scripts/test/corpus/CounterJump/CounterJump.tla +19 -0
  492. package/skills/statechart/scripts/test/corpus/CounterJump/chart.mmd +26 -0
  493. package/skills/statechart/scripts/test/corpus/CounterJump/graph.dot +22 -0
  494. package/skills/statechart/scripts/test/corpus/CounterJump/report.md +12 -0
  495. package/skills/statechart/scripts/test/corpus/CounterJump/sany.out +2 -0
  496. package/skills/statechart/scripts/test/corpus/CounterJump/verdict-1.exit +1 -0
  497. package/skills/statechart/scripts/test/corpus/CounterJump/verdict-1.out +58 -0
  498. package/skills/statechart/scripts/test/corpus/CounterJump/verdict-2.out +57 -0
  499. package/skills/statechart/scripts/test/corpus/CounterLoop/ChartRun.out +57 -0
  500. package/skills/statechart/scripts/test/corpus/CounterLoop/CounterLoop.cfg +2 -0
  501. package/skills/statechart/scripts/test/corpus/CounterLoop/CounterLoop.tla +11 -0
  502. package/skills/statechart/scripts/test/corpus/CounterLoop/chart.mmd +17 -0
  503. package/skills/statechart/scripts/test/corpus/CounterLoop/graph.dot +15 -0
  504. package/skills/statechart/scripts/test/corpus/CounterLoop/report.md +14 -0
  505. package/skills/statechart/scripts/test/corpus/CounterLoop/sany.out +2 -0
  506. package/skills/statechart/scripts/test/corpus/CounterLoop/verdict-1.exit +1 -0
  507. package/skills/statechart/scripts/test/corpus/CounterLoop/verdict-1.out +76 -0
  508. package/skills/statechart/scripts/test/corpus/CounterOrder/ChartRun.out +59 -0
  509. package/skills/statechart/scripts/test/corpus/CounterOrder/CounterOrder.cfg +3 -0
  510. package/skills/statechart/scripts/test/corpus/CounterOrder/CounterOrder.tla +11 -0
  511. package/skills/statechart/scripts/test/corpus/CounterOrder/chart.mmd +19 -0
  512. package/skills/statechart/scripts/test/corpus/CounterOrder/graph.dot +10 -0
  513. package/skills/statechart/scripts/test/corpus/CounterOrder/report.md +15 -0
  514. package/skills/statechart/scripts/test/corpus/CounterOrder/sany.out +2 -0
  515. package/skills/statechart/scripts/test/corpus/CounterOrder/verdict-1.exit +1 -0
  516. package/skills/statechart/scripts/test/corpus/CounterOrder/verdict-1.out +56 -0
  517. package/skills/statechart/scripts/test/corpus/CounterOrder/verdict-2.exit +1 -0
  518. package/skills/statechart/scripts/test/corpus/CounterOrder/verdict-2.out +67 -0
  519. package/skills/statechart/scripts/test/corpus/CounterRules/ChartRun.out +62 -0
  520. package/skills/statechart/scripts/test/corpus/CounterRules/CounterRules.cfg +6 -0
  521. package/skills/statechart/scripts/test/corpus/CounterRules/CounterRules.tla +24 -0
  522. package/skills/statechart/scripts/test/corpus/CounterRules/Moves.tla +5 -0
  523. package/skills/statechart/scripts/test/corpus/CounterRules/chart.mmd +22 -0
  524. package/skills/statechart/scripts/test/corpus/CounterRules/graph.dot +10 -0
  525. package/skills/statechart/scripts/test/corpus/CounterRules/report.md +23 -0
  526. package/skills/statechart/scripts/test/corpus/CounterRules/sany.out +3 -0
  527. package/skills/statechart/scripts/test/corpus/CounterRules/verdict-1.exit +1 -0
  528. package/skills/statechart/scripts/test/corpus/CounterRules/verdict-1.out +58 -0
  529. package/skills/statechart/scripts/test/corpus/CounterRules/verdict-2.exit +1 -0
  530. package/skills/statechart/scripts/test/corpus/CounterRules/verdict-2.out +66 -0
  531. package/skills/statechart/scripts/test/corpus/CounterRules/verdict-3.exit +1 -0
  532. package/skills/statechart/scripts/test/corpus/CounterRules/verdict-3.out +74 -0
  533. package/skills/statechart/scripts/test/corpus/CounterRules/verdict-4.out +59 -0
  534. package/skills/statechart/scripts/test/corpus/CounterStart/ChartRun.out +58 -0
  535. package/skills/statechart/scripts/test/corpus/CounterStart/CounterStart.cfg +3 -0
  536. package/skills/statechart/scripts/test/corpus/CounterStart/CounterStart.tla +15 -0
  537. package/skills/statechart/scripts/test/corpus/CounterStart/chart.mmd +18 -0
  538. package/skills/statechart/scripts/test/corpus/CounterStart/graph.dot +13 -0
  539. package/skills/statechart/scripts/test/corpus/CounterStart/report.md +11 -0
  540. package/skills/statechart/scripts/test/corpus/CounterStart/sany.out +2 -0
  541. package/skills/statechart/scripts/test/corpus/CounterStart/verdict-1.exit +1 -0
  542. package/skills/statechart/scripts/test/corpus/CounterStart/verdict-1.out +33 -0
  543. package/skills/statechart/scripts/test/corpus/CounterStart/verdict-2.out +57 -0
  544. package/skills/statechart/scripts/test/corpus/CounterStop/ChartRun.out +57 -0
  545. package/skills/statechart/scripts/test/corpus/CounterStop/CounterStop.cfg +3 -0
  546. package/skills/statechart/scripts/test/corpus/CounterStop/CounterStop.tla +15 -0
  547. package/skills/statechart/scripts/test/corpus/CounterStop/chart.mmd +7 -0
  548. package/skills/statechart/scripts/test/corpus/CounterStop/graph.dot +13 -0
  549. package/skills/statechart/scripts/test/corpus/CounterStop/report.md +6 -0
  550. package/skills/statechart/scripts/test/corpus/CounterStop/sany.out +2 -0
  551. package/skills/statechart/scripts/test/corpus/CounterStop/verdict-1.out +49 -0
  552. package/skills/statechart/scripts/test/corpus/CounterTie/ChartRun.out +61 -0
  553. package/skills/statechart/scripts/test/corpus/CounterTie/CounterTie.cfg +4 -0
  554. package/skills/statechart/scripts/test/corpus/CounterTie/CounterTie.tla +14 -0
  555. package/skills/statechart/scripts/test/corpus/CounterTie/chart.mmd +30 -0
  556. package/skills/statechart/scripts/test/corpus/CounterTie/graph.dot +19 -0
  557. package/skills/statechart/scripts/test/corpus/CounterTie/report.md +27 -0
  558. package/skills/statechart/scripts/test/corpus/CounterTie/sany.out +2 -0
  559. package/skills/statechart/scripts/test/corpus/CounterTie/verdict-1.exit +1 -0
  560. package/skills/statechart/scripts/test/corpus/CounterTie/verdict-1.out +56 -0
  561. package/skills/statechart/scripts/test/corpus/CounterTie/verdict-2.exit +1 -0
  562. package/skills/statechart/scripts/test/corpus/CounterTie/verdict-2.out +64 -0
  563. package/skills/statechart/scripts/test/corpus/CounterTie/verdict-3.exit +1 -0
  564. package/skills/statechart/scripts/test/corpus/CounterTie/verdict-3.out +87 -0
  565. package/skills/statechart/scripts/test/corpus/CounterTie/verdict-4.out +57 -0
  566. package/skills/statechart/scripts/test/corpus/CounterTieInGraph/ChartRun.out +60 -0
  567. package/skills/statechart/scripts/test/corpus/CounterTieInGraph/CounterTieInGraph.cfg +3 -0
  568. package/skills/statechart/scripts/test/corpus/CounterTieInGraph/CounterTieInGraph.tla +12 -0
  569. package/skills/statechart/scripts/test/corpus/CounterTieInGraph/chart.mmd +23 -0
  570. package/skills/statechart/scripts/test/corpus/CounterTieInGraph/graph.dot +19 -0
  571. package/skills/statechart/scripts/test/corpus/CounterTieInGraph/report.md +11 -0
  572. package/skills/statechart/scripts/test/corpus/CounterTieInGraph/sany.out +2 -0
  573. package/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-1.exit +1 -0
  574. package/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-1.out +56 -0
  575. package/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-2.out +57 -0
  576. package/skills/statechart/scripts/test/corpus/CounterView/ChartRun.out +61 -0
  577. package/skills/statechart/scripts/test/corpus/CounterView/CounterView.cfg +4 -0
  578. package/skills/statechart/scripts/test/corpus/CounterView/CounterView.tla +14 -0
  579. package/skills/statechart/scripts/test/corpus/CounterView/chart.mmd +23 -0
  580. package/skills/statechart/scripts/test/corpus/CounterView/graph.dot +19 -0
  581. package/skills/statechart/scripts/test/corpus/CounterView/report.md +27 -0
  582. package/skills/statechart/scripts/test/corpus/CounterView/sany.out +2 -0
  583. package/skills/statechart/scripts/test/corpus/CounterView/verdict-1.exit +1 -0
  584. package/skills/statechart/scripts/test/corpus/CounterView/verdict-1.out +56 -0
  585. package/skills/statechart/scripts/test/corpus/CounterView/verdict-2.exit +1 -0
  586. package/skills/statechart/scripts/test/corpus/CounterView/verdict-2.out +64 -0
  587. package/skills/statechart/scripts/test/corpus/CounterView/verdict-3.exit +1 -0
  588. package/skills/statechart/scripts/test/corpus/CounterView/verdict-3.out +87 -0
  589. package/skills/statechart/scripts/test/corpus/CounterView/verdict-4.out +57 -0
  590. package/skills/statechart/scripts/test/corpus/CounterView/view.mjs +1 -0
  591. package/skills/statechart/scripts/test/corpus/DieHard/ChartRun.out +59 -0
  592. package/skills/statechart/scripts/test/corpus/DieHard/DieHard.cfg +4 -0
  593. package/skills/statechart/scripts/test/corpus/DieHard/DieHard.tla +38 -0
  594. package/skills/statechart/scripts/test/corpus/DieHard/chart.mmd +92 -0
  595. package/skills/statechart/scripts/test/corpus/DieHard/graph.dot +126 -0
  596. package/skills/statechart/scripts/test/corpus/DieHard/report.md +17 -0
  597. package/skills/statechart/scripts/test/corpus/DieHard/sany.out +2 -0
  598. package/skills/statechart/scripts/test/corpus/DieHard/verdict-1.exit +1 -0
  599. package/skills/statechart/scripts/test/corpus/DieHard/verdict-1.out +91 -0
  600. package/skills/statechart/scripts/test/corpus/DieHard/verdict-2.out +57 -0
  601. package/skills/statechart/scripts/test/corpus/FirstRule/ChartRun.out +61 -0
  602. package/skills/statechart/scripts/test/corpus/FirstRule/FirstRule.cfg +6 -0
  603. package/skills/statechart/scripts/test/corpus/FirstRule/FirstRule.tla +11 -0
  604. package/skills/statechart/scripts/test/corpus/FirstRule/chart.mmd +22 -0
  605. package/skills/statechart/scripts/test/corpus/FirstRule/graph.dot +16 -0
  606. package/skills/statechart/scripts/test/corpus/FirstRule/report.md +25 -0
  607. package/skills/statechart/scripts/test/corpus/FirstRule/sany.out +2 -0
  608. package/skills/statechart/scripts/test/corpus/FirstRule/verdict-1.exit +1 -0
  609. package/skills/statechart/scripts/test/corpus/FirstRule/verdict-1.out +56 -0
  610. package/skills/statechart/scripts/test/corpus/FirstRule/verdict-2.exit +1 -0
  611. package/skills/statechart/scripts/test/corpus/FirstRule/verdict-2.out +64 -0
  612. package/skills/statechart/scripts/test/corpus/FirstRule/verdict-3.exit +1 -0
  613. package/skills/statechart/scripts/test/corpus/FirstRule/verdict-3.out +64 -0
  614. package/skills/statechart/scripts/test/corpus/FirstRule/verdict-4.exit +1 -0
  615. package/skills/statechart/scripts/test/corpus/FirstRule/verdict-4.out +77 -0
  616. package/skills/statechart/scripts/test/corpus/HiddenClock/ChartRun.out +57 -0
  617. package/skills/statechart/scripts/test/corpus/HiddenClock/HiddenClock.cfg +4 -0
  618. package/skills/statechart/scripts/test/corpus/HiddenClock/HiddenClock.tla +11 -0
  619. package/skills/statechart/scripts/test/corpus/HiddenClock/chart.mmd +13 -0
  620. package/skills/statechart/scripts/test/corpus/HiddenClock/graph.dot +12 -0
  621. package/skills/statechart/scripts/test/corpus/HiddenClock/report.md +11 -0
  622. package/skills/statechart/scripts/test/corpus/HiddenClock/sany.out +2 -0
  623. package/skills/statechart/scripts/test/corpus/HiddenClock/verdict-1.exit +1 -0
  624. package/skills/statechart/scripts/test/corpus/HiddenClock/verdict-1.out +72 -0
  625. package/skills/statechart/scripts/test/corpus/Login/ChartRun.out +57 -0
  626. package/skills/statechart/scripts/test/corpus/Login/Login.cfg +3 -0
  627. package/skills/statechart/scripts/test/corpus/Login/Login.tla +62 -0
  628. package/skills/statechart/scripts/test/corpus/Login/chart.mmd +27 -0
  629. package/skills/statechart/scripts/test/corpus/Login/graph.dot +40 -0
  630. package/skills/statechart/scripts/test/corpus/Login/report.md +7 -0
  631. package/skills/statechart/scripts/test/corpus/Login/sany.out +1 -0
  632. package/skills/statechart/scripts/test/corpus/Login/verdict-1.out +47 -0
  633. package/skills/statechart/scripts/test/corpus/Login/view.mjs +1 -0
  634. package/skills/statechart/scripts/test/corpus/LoginGuarded/ChartRun.out +57 -0
  635. package/skills/statechart/scripts/test/corpus/LoginGuarded/LoginGuarded.cfg +2 -0
  636. package/skills/statechart/scripts/test/corpus/LoginGuarded/LoginGuarded.tla +64 -0
  637. package/skills/statechart/scripts/test/corpus/LoginGuarded/chart.mmd +28 -0
  638. package/skills/statechart/scripts/test/corpus/LoginGuarded/graph.dot +37 -0
  639. package/skills/statechart/scripts/test/corpus/LoginGuarded/report.md +8 -0
  640. package/skills/statechart/scripts/test/corpus/LoginGuarded/sany.out +1 -0
  641. package/skills/statechart/scripts/test/corpus/LoginGuarded/verdict-1.out +47 -0
  642. package/skills/statechart/scripts/test/corpus/LoginGuarded/view.mjs +1 -0
  643. package/skills/statechart/scripts/test/corpus/LoginParallel/ChartRun.out +60 -0
  644. package/skills/statechart/scripts/test/corpus/LoginParallel/LoginParallel.cfg +3 -0
  645. package/skills/statechart/scripts/test/corpus/LoginParallel/LoginParallel.tla +64 -0
  646. package/skills/statechart/scripts/test/corpus/LoginParallel/chart.mmd +44 -0
  647. package/skills/statechart/scripts/test/corpus/LoginParallel/graph.dot +58 -0
  648. package/skills/statechart/scripts/test/corpus/LoginParallel/report.md +17 -0
  649. package/skills/statechart/scripts/test/corpus/LoginParallel/sany.out +1 -0
  650. package/skills/statechart/scripts/test/corpus/LoginParallel/verdict-1.exit +1 -0
  651. package/skills/statechart/scripts/test/corpus/LoginParallel/verdict-1.out +83 -0
  652. package/skills/statechart/scripts/test/corpus/LoginParallel/verdict-2.out +57 -0
  653. package/skills/statechart/scripts/test/corpus/LoginParallel/view.mjs +1 -0
  654. package/skills/statechart/scripts/test/corpus/MediaPlayer/ChartRun.out +60 -0
  655. package/skills/statechart/scripts/test/corpus/MediaPlayer/MediaPlayer.cfg +3 -0
  656. package/skills/statechart/scripts/test/corpus/MediaPlayer/MediaPlayer.tla +103 -0
  657. package/skills/statechart/scripts/test/corpus/MediaPlayer/chart.mmd +43 -0
  658. package/skills/statechart/scripts/test/corpus/MediaPlayer/graph.dot +93 -0
  659. package/skills/statechart/scripts/test/corpus/MediaPlayer/report.md +14 -0
  660. package/skills/statechart/scripts/test/corpus/MediaPlayer/sany.out +1 -0
  661. package/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-1.exit +1 -0
  662. package/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-1.out +59 -0
  663. package/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-2.out +72 -0
  664. package/skills/statechart/scripts/test/corpus/MediaPlayer/view.mjs +3 -0
  665. package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/ChartRun.out +57 -0
  666. package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/MediaPlayerFixed.cfg +2 -0
  667. package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/MediaPlayerFixed.tla +100 -0
  668. package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/chart.mmd +31 -0
  669. package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/graph.dot +85 -0
  670. package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/report.md +9 -0
  671. package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/sany.out +1 -0
  672. package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/verdict-1.out +47 -0
  673. package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/view.mjs +3 -0
  674. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/ChartRun.out +59 -0
  675. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayer.tla +103 -0
  676. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayerProps.cfg +3 -0
  677. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayerProps.tla +6 -0
  678. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/chart.mmd +42 -0
  679. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/graph.dot +93 -0
  680. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/report.md +19 -0
  681. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/sany.out +2 -0
  682. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-1.exit +1 -0
  683. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-1.out +61 -0
  684. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-2.out +59 -0
  685. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-3.out +61 -0
  686. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-4.exit +1 -0
  687. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-4.out +66 -0
  688. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-5.exit +1 -0
  689. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-5.out +58 -0
  690. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-6.out +49 -0
  691. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/view.mjs +3 -0
  692. package/skills/statechart/scripts/test/corpus/PickWorker/ChartRun.out +57 -0
  693. package/skills/statechart/scripts/test/corpus/PickWorker/PickWorker.cfg +6 -0
  694. package/skills/statechart/scripts/test/corpus/PickWorker/PickWorker.tla +11 -0
  695. package/skills/statechart/scripts/test/corpus/PickWorker/chart.mmd +5 -0
  696. package/skills/statechart/scripts/test/corpus/PickWorker/graph.dot +11 -0
  697. package/skills/statechart/scripts/test/corpus/PickWorker/report.md +7 -0
  698. package/skills/statechart/scripts/test/corpus/PickWorker/sany.out +5 -0
  699. package/skills/statechart/scripts/test/corpus/PickWorker/verdict-1.out +70 -0
  700. package/skills/statechart/scripts/test/corpus/Shadow/ChartRun.out +61 -0
  701. package/skills/statechart/scripts/test/corpus/Shadow/Shadow.cfg +4 -0
  702. package/skills/statechart/scripts/test/corpus/Shadow/Shadow.tla +11 -0
  703. package/skills/statechart/scripts/test/corpus/Shadow/ShadowLib.tla +6 -0
  704. package/skills/statechart/scripts/test/corpus/Shadow/ShadowSub.tla +3 -0
  705. package/skills/statechart/scripts/test/corpus/Shadow/chart.mmd +9 -0
  706. package/skills/statechart/scripts/test/corpus/Shadow/graph.dot +16 -0
  707. package/skills/statechart/scripts/test/corpus/Shadow/report.md +8 -0
  708. package/skills/statechart/scripts/test/corpus/Shadow/sany.out +4 -0
  709. package/skills/statechart/scripts/test/corpus/Shadow/verdict-1.out +65 -0
  710. package/skills/statechart/scripts/test/corpus/SpacedNames/ChartRun.out +59 -0
  711. package/skills/statechart/scripts/test/corpus/SpacedNames/SpacedNames.cfg +2 -0
  712. package/skills/statechart/scripts/test/corpus/SpacedNames/SpacedNames.tla +9 -0
  713. package/skills/statechart/scripts/test/corpus/SpacedNames/chart.mmd +23 -0
  714. package/skills/statechart/scripts/test/corpus/SpacedNames/graph.dot +17 -0
  715. package/skills/statechart/scripts/test/corpus/SpacedNames/report.md +15 -0
  716. package/skills/statechart/scripts/test/corpus/SpacedNames/sany.out +1 -0
  717. package/skills/statechart/scripts/test/corpus/SpacedNames/verdict-1.exit +1 -0
  718. package/skills/statechart/scripts/test/corpus/SpacedNames/verdict-1.out +65 -0
  719. package/skills/statechart/scripts/test/corpus/SpacedNames/verdict-2.exit +1 -0
  720. package/skills/statechart/scripts/test/corpus/SpacedNames/verdict-2.out +75 -0
  721. package/skills/statechart/scripts/test/corpus/TwoPhase/ChartRun.out +69 -0
  722. package/skills/statechart/scripts/test/corpus/TwoPhase/TwoPhase.cfg +3 -0
  723. package/skills/statechart/scripts/test/corpus/TwoPhase/TwoPhase.tla +75 -0
  724. package/skills/statechart/scripts/test/corpus/TwoPhase/chart.mmd +60 -0
  725. package/skills/statechart/scripts/test/corpus/TwoPhase/graph.dot +297 -0
  726. package/skills/statechart/scripts/test/corpus/TwoPhase/report.md +20 -0
  727. package/skills/statechart/scripts/test/corpus/TwoPhase/sany.out +1 -0
  728. package/skills/statechart/scripts/test/corpus/TwoPhase/verdict-1.exit +1 -0
  729. package/skills/statechart/scripts/test/corpus/TwoPhase/verdict-1.out +95 -0
  730. package/skills/statechart/scripts/test/corpus/TwoPhase/verdict-2.out +57 -0
  731. package/skills/statechart/scripts/test/corpus/TwoPhase/view.mjs +1 -0
  732. package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/ChartRun.out +57 -0
  733. package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/TwoPhaseFixed.cfg +3 -0
  734. package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/TwoPhaseFixed.tla +75 -0
  735. package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/chart.mmd +37 -0
  736. package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/graph.dot +223 -0
  737. package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/report.md +11 -0
  738. package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/sany.out +1 -0
  739. package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/verdict-1.out +47 -0
  740. package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/view.mjs +1 -0
  741. package/skills/statechart/scripts/test/corpus/TypeGuard/ChartRun.exit +1 -0
  742. package/skills/statechart/scripts/test/corpus/TypeGuard/ChartRun.out +75 -0
  743. package/skills/statechart/scripts/test/corpus/TypeGuard/TypeGuard.cfg +5 -0
  744. package/skills/statechart/scripts/test/corpus/TypeGuard/TypeGuard.tla +11 -0
  745. package/skills/statechart/scripts/test/corpus/TypeGuard/chart.mmd +18 -0
  746. package/skills/statechart/scripts/test/corpus/TypeGuard/graph.dot +14 -0
  747. package/skills/statechart/scripts/test/corpus/TypeGuard/report.md +29 -0
  748. package/skills/statechart/scripts/test/corpus/TypeGuard/sany.out +2 -0
  749. package/skills/statechart/scripts/test/corpus/TypeGuard/verdict-1.exit +1 -0
  750. package/skills/statechart/scripts/test/corpus/TypeGuard/verdict-1.out +64 -0
  751. package/skills/statechart/scripts/test/corpus/TypeGuard/verdict-2.exit +1 -0
  752. package/skills/statechart/scripts/test/corpus/TypeGuard/verdict-2.out +75 -0
  753. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/ChartRun.out +58 -0
  754. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/UserNoDeadlock.cfg +2 -0
  755. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/UserNoDeadlock.tla +8 -0
  756. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/chart.mmd +22 -0
  757. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/graph.dot +16 -0
  758. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/report.md +15 -0
  759. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/sany.out +2 -0
  760. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-1.exit +1 -0
  761. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-1.out +56 -0
  762. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-2.exit +1 -0
  763. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-2.out +77 -0
  764. package/skills/statechart/scripts/test/corpus.test.ts +403 -0
  765. package/skills/statechart/scripts/test/differential.test.ts +565 -0
  766. package/skills/statechart/scripts/test/grid/Grid.cfg +2 -0
  767. package/skills/statechart/scripts/test/grid/Grid.tla +9 -0
  768. package/skills/statechart/scripts/test/grid/sany.out +2 -0
  769. package/skills/statechart/scripts/test/java.ts +63 -0
  770. package/skills/statechart/scripts/test/labels.ts +643 -0
  771. package/skills/statechart/scripts/test/messages.test.ts +212 -0
  772. package/skills/statechart/scripts/test/pipeline.test.ts +270 -0
  773. package/skills/statechart/scripts/test/plain-tlc.test.ts +255 -0
  774. package/skills/statechart/scripts/test/regions.mmd +62 -0
  775. package/skills/statechart/scripts/test/render.test.ts +81 -0
  776. package/skills/statechart/scripts/test/statechart.test.mjs +6854 -0
  777. package/skills/statechart/scripts/test/sync.mmd +19 -0
  778. package/skills/statechart/scripts/test/tlc-out.test.ts +90 -0
  779. package/skills/statechart/scripts/test/tlc.ts +158 -0
  780. package/skills/statechart/scripts/test/upload.mmd +16 -0
  781. package/skills/statechart/scripts/tlc-to-chart-args.mjs +52 -0
  782. package/skills/statechart/scripts/tlc-to-chart.mjs +802 -0
  783. package/skills/statechart/scripts/tlc-tools.mjs +69 -0
  784. package/skills/statechart/scripts/tsconfig.json +11 -0
  785. package/skills/statechart/scripts/ways-in.mjs +69 -0
  786. package/skills/statechart/scripts/worker.ts +35 -0
  787. package/skills/swarm/SKILL.md +91 -0
  788. package/skills/tdd/SKILL.md +92 -0
  789. package/skills/teach/SKILL.md +71 -0
  790. package/skills/technical-writing/SKILL.md +156 -0
  791. package/skills/typescript-best-practices/SKILL.md +81 -0
  792. package/skills/typescript-best-practices/references/patterns.md +328 -0
  793. package/skills/unslop/SKILL.md +112 -0
  794. package/skills/why/SKILL.md +148 -0
  795. package/skills/why/references/epistemics.md +71 -0
  796. package/skills/why/references/investigator-prompt.md +84 -0
  797. package/skills/why/references/source-playbook.md +17 -0
  798. package/skills/why/references/sources/analytics.md +5 -0
  799. package/skills/why/references/sources/code-archaeology.md +51 -0
  800. package/skills/why/references/sources/databricks.md +70 -0
  801. package/skills/why/references/sources/datadog.md +97 -0
  802. package/skills/why/references/sources/documents.md +5 -0
  803. package/skills/why/references/sources/errors.md +5 -0
  804. package/skills/why/references/sources/incident-postmortem.md +5 -0
  805. package/skills/why/references/sources/issues.md +5 -0
  806. package/skills/why/references/sources/linear.md +48 -0
  807. package/skills/why/references/sources/notion.md +55 -0
  808. package/skills/why/references/sources/observability.md +5 -0
  809. package/skills/why/references/sources/sentry.md +66 -0
  810. package/skills/why/references/sources/slack.md +17 -0
  811. package/skills/why/references/sources/source-control.md +5 -0
  812. package/skills/why/references/sources/team-chat.md +5 -0
  813. package/skills/why/references/synthesizer-prompt.md +129 -0
  814. package/src/agent/candidates.ts +60 -0
  815. package/src/agent/grep-worker.mjs +46 -0
  816. package/src/agent/host.ts +455 -0
  817. package/src/agent/isolation.ts +14 -0
  818. package/src/agent/outcome.ts +18 -0
  819. package/src/agent/profiles.ts +133 -0
  820. package/src/agent/read-only-tools.ts +129 -0
  821. package/src/agent/resources.ts +66 -0
  822. package/src/api.ts +19 -0
  823. package/src/artifacts/fingerprint.ts +58 -0
  824. package/src/compatibility/adapter.ts +94 -0
  825. package/src/compatibility/source.ts +30 -0
  826. package/src/compatibility/tool.ts +47 -0
  827. package/src/context/snapshot.ts +12 -0
  828. package/src/contracts/brief.ts +144 -0
  829. package/src/contracts/types.ts +57 -0
  830. package/src/delivery/frontier.ts +87 -0
  831. package/src/delivery/git.ts +9 -0
  832. package/src/delivery/prepare.ts +23 -0
  833. package/src/delivery/provider.ts +41 -0
  834. package/src/delivery/review-threads.ts +28 -0
  835. package/src/delivery/stack.ts +76 -0
  836. package/src/extension.ts +281 -0
  837. package/src/loop/scheduler.ts +334 -0
  838. package/src/loop/store.ts +66 -0
  839. package/src/models/router.ts +171 -0
  840. package/src/program/coordinator.ts +122 -0
  841. package/src/program/dispatch.ts +83 -0
  842. package/src/runner/cli.mjs +46 -0
  843. package/src/runner/lease.ts +17 -0
  844. package/src/runner/service.ts +37 -0
  845. package/src/runtime/checkout.ts +19 -0
  846. package/src/runtime/config.ts +49 -0
  847. package/src/runtime/errors.ts +12 -0
  848. package/src/runtime/home.ts +17 -0
  849. package/src/runtime/lock.ts +101 -0
  850. package/src/runtime/migrate.ts +29 -0
  851. package/src/runtime/ownership.ts +6 -0
  852. package/src/runtime/protocol.ts +35 -0
  853. package/src/runtime/redact.ts +34 -0
  854. package/src/runtime/store.ts +50 -0
  855. package/src/runtime/transaction.ts +41 -0
  856. package/src/runtime/types.ts +203 -0
  857. package/src/runtime/upstream.ts +7 -0
  858. package/src/setup/command.ts +331 -0
  859. package/src/telemetry/metrics.ts +11 -0
  860. package/src/templates/build.ts +172 -0
  861. package/src/tools/agents.ts +62 -0
  862. package/src/tools/graph.ts +37 -0
  863. package/src/tools/protocol.ts +53 -0
  864. package/src/tools/schema.ts +9 -0
  865. package/src/tools/workflow.ts +103 -0
  866. package/src/tools/worktrees.ts +39 -0
  867. package/src/verification/process.mjs +9 -0
  868. package/src/verification/runner.ts +148 -0
  869. package/src/workflow/artifacts.ts +97 -0
  870. package/src/workflow/engine.ts +631 -0
  871. package/src/workflow/graph.ts +53 -0
  872. package/src/worktree/manager.ts +60 -0
  873. package/src/worktree/snapshot.ts +35 -0
  874. package/test/baseline-owner.test.ts +122 -0
  875. package/test/benchmark.test.ts +81 -0
  876. package/test/cancellation.test.ts +92 -0
  877. package/test/candidate-port.test.ts +18 -0
  878. package/test/check-plan.test.ts +99 -0
  879. package/test/checkout.test.ts +19 -0
  880. package/test/delivery-stack.test.ts +106 -0
  881. package/test/dispatch.test.ts +171 -0
  882. package/test/e2e/fixture-child.mjs +33 -0
  883. package/test/e2e/harness.ts +282 -0
  884. package/test/e2e/offline.test.ts +153 -0
  885. package/test/e2e/parent-context.ts +66 -0
  886. package/test/e2e/reported-defects.test.ts +85 -0
  887. package/test/e2e/shipping.test.ts +204 -0
  888. package/test/e2e/workflow.test.ts +408 -0
  889. package/test/fixtures/loop-execution-lock-holder.mjs +38 -0
  890. package/test/fixtures/loop-lock-holder.mjs +31 -0
  891. package/test/fixtures/loop-scheduler-worker.mjs +95 -0
  892. package/test/fixtures/semantics/scenarios.json +18 -0
  893. package/test/fixtures/verification-crash-worker.mjs +5 -0
  894. package/test/graph.test.ts +23 -0
  895. package/test/isolation.test.ts +21 -0
  896. package/test/latest-upstream.test.ts +41 -0
  897. package/test/live/command-probe-child.mjs +22 -0
  898. package/test/live/command-probe-loader.mjs +8 -0
  899. package/test/live/command-probe-register.mjs +12 -0
  900. package/test/live/github-live.test.ts +107 -0
  901. package/test/live/guard.ts +70 -0
  902. package/test/lock.test.ts +76 -0
  903. package/test/loop-scheduler.test.ts +460 -0
  904. package/test/loop.test.ts +60 -0
  905. package/test/ml-development.test.ts +65 -0
  906. package/test/model-panels.test.ts +237 -0
  907. package/test/model-router.test.ts +124 -0
  908. package/test/outcome.test.ts +31 -0
  909. package/test/protocol.test.ts +350 -0
  910. package/test/read-only-tools.test.ts +86 -0
  911. package/test/real-sdk-integration.test.ts +183 -0
  912. package/test/redaction.test.ts +66 -0
  913. package/test/resources.test.ts +42 -0
  914. package/test/review-snapshot.test.ts +48 -0
  915. package/test/semantic-compatibility.test.ts +121 -0
  916. package/test/setup-command.test.ts +212 -0
  917. package/test/setup-rpc.test.ts +68 -0
  918. package/test/smoke-installed-package.mjs +119 -0
  919. package/test/statechart.test.ts +25 -0
  920. package/test/store.test.ts +35 -0
  921. package/test/swarm-race.test.ts +50 -0
  922. package/test/tool-ownership.test.ts +59 -0
  923. package/test/transaction.test.ts +89 -0
  924. package/test/verification.test.ts +295 -0
  925. package/test/workflow.test.ts +408 -0
  926. package/test/worktree.test.ts +39 -0
  927. package/tsconfig.build.json +12 -0
  928. package/tsconfig.json +17 -0
  929. package/vendor/upstream/0.15.17/pstack/LICENSE +21 -0
  930. package/vendor/upstream/0.15.17/pstack/skills/architect/SKILL.md +79 -0
  931. package/vendor/upstream/0.15.17/pstack/skills/architect/references/design-red-flags.md +57 -0
  932. package/vendor/upstream/0.15.17/pstack/skills/architect/references/rationale-template.md +35 -0
  933. package/vendor/upstream/0.15.17/pstack/skills/architect/references/runner-prompt.md +20 -0
  934. package/vendor/upstream/0.15.17/pstack/skills/arena/SKILL.md +48 -0
  935. package/vendor/upstream/0.15.17/pstack/skills/automate-me/SKILL.md +104 -0
  936. package/vendor/upstream/0.15.17/pstack/skills/benchmark-checklist/SKILL.md +39 -0
  937. package/vendor/upstream/0.15.17/pstack/skills/blast-radius/SKILL.md +50 -0
  938. package/vendor/upstream/0.15.17/pstack/skills/bro/SKILL.md +7 -0
  939. package/vendor/upstream/0.15.17/pstack/skills/correct/SKILL.md +32 -0
  940. package/vendor/upstream/0.15.17/pstack/skills/create-verification-skill/SKILL.md +44 -0
  941. package/vendor/upstream/0.15.17/pstack/skills/create-verification-skill/references/feature-map-example/README.md +47 -0
  942. package/vendor/upstream/0.15.17/pstack/skills/create-verification-skill/references/feature-map-example/create-note.md +39 -0
  943. package/vendor/upstream/0.15.17/pstack/skills/create-verification-skill/references/feature-map-example/search.md +45 -0
  944. package/vendor/upstream/0.15.17/pstack/skills/figure-it-out/SKILL.md +52 -0
  945. package/vendor/upstream/0.15.17/pstack/skills/how/SKILL.md +36 -0
  946. package/vendor/upstream/0.15.17/pstack/skills/how/references/explainer-prompt.md +55 -0
  947. package/vendor/upstream/0.15.17/pstack/skills/how/references/explorer-prompt.md +52 -0
  948. package/vendor/upstream/0.15.17/pstack/skills/interrogate/SKILL.md +74 -0
  949. package/vendor/upstream/0.15.17/pstack/skills/interrogate/references/code-quality-review.md +47 -0
  950. package/vendor/upstream/0.15.17/pstack/skills/interrogate/references/lead-judgment.md +58 -0
  951. package/vendor/upstream/0.15.17/pstack/skills/interrogate/references/reviewer-prompt.md +62 -0
  952. package/vendor/upstream/0.15.17/pstack/skills/interrogate/references/rubric.md +77 -0
  953. package/vendor/upstream/0.15.17/pstack/skills/ketchup/SKILL.md +23 -0
  954. package/vendor/upstream/0.15.17/pstack/skills/maintain-verification-skill/SKILL.md +39 -0
  955. package/vendor/upstream/0.15.17/pstack/skills/make-bot-ui/SKILL.md +115 -0
  956. package/vendor/upstream/0.15.17/pstack/skills/no-comments/SKILL.md +24 -0
  957. package/vendor/upstream/0.15.17/pstack/skills/poteto-help/SKILL.md +154 -0
  958. package/vendor/upstream/0.15.17/pstack/skills/poteto-help/references/prompting.md +51 -0
  959. package/vendor/upstream/0.15.17/pstack/skills/poteto-help/references/recipes.md +47 -0
  960. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/SKILL.md +147 -0
  961. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/authoring-a-skill.md +12 -0
  962. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/autonomous-run.md +13 -0
  963. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/autopilot-full.md +13 -0
  964. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/autopilot-stack.md +16 -0
  965. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/babysit.md +27 -0
  966. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/bug-fix.md +15 -0
  967. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/eval.md +25 -0
  968. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/feature.md +21 -0
  969. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/hillclimb.md +21 -0
  970. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/investigation.md +14 -0
  971. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/multi-phase-plan.md +155 -0
  972. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/opening-a-pr.md +34 -0
  973. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/orchestrate.md +111 -0
  974. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/pause-safely.md +10 -0
  975. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/perf-issue.md +25 -0
  976. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/prototype.md +14 -0
  977. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/refactoring.md +16 -0
  978. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/runtime-forensics.md +11 -0
  979. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/session-pickup.md +11 -0
  980. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/shipping.md +17 -0
  981. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/trace-forensics.md +14 -0
  982. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/visual-parity.md +11 -0
  983. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/worktree-cleanup.md +14 -0
  984. package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/references/bugbot-triage.md +142 -0
  985. package/vendor/upstream/0.15.17/pstack/skills/principle-attack-the-premise/SKILL.md +23 -0
  986. package/vendor/upstream/0.15.17/pstack/skills/principle-boundary-discipline/SKILL.md +34 -0
  987. package/vendor/upstream/0.15.17/pstack/skills/principle-build-the-lever/SKILL.md +23 -0
  988. package/vendor/upstream/0.15.17/pstack/skills/principle-encode-lessons-in-structure/SKILL.md +28 -0
  989. package/vendor/upstream/0.15.17/pstack/skills/principle-exhaust-the-design-space/SKILL.md +21 -0
  990. package/vendor/upstream/0.15.17/pstack/skills/principle-experience-first/SKILL.md +19 -0
  991. package/vendor/upstream/0.15.17/pstack/skills/principle-explain-the-number/SKILL.md +17 -0
  992. package/vendor/upstream/0.15.17/pstack/skills/principle-fix-root-causes/SKILL.md +23 -0
  993. package/vendor/upstream/0.15.17/pstack/skills/principle-foundational-thinking/SKILL.md +21 -0
  994. package/vendor/upstream/0.15.17/pstack/skills/principle-guard-the-context-window/SKILL.md +16 -0
  995. package/vendor/upstream/0.15.17/pstack/skills/principle-laziness-protocol/SKILL.md +18 -0
  996. package/vendor/upstream/0.15.17/pstack/skills/principle-make-operations-idempotent/SKILL.md +24 -0
  997. package/vendor/upstream/0.15.17/pstack/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md +22 -0
  998. package/vendor/upstream/0.15.17/pstack/skills/principle-minimize-reader-load/SKILL.md +18 -0
  999. package/vendor/upstream/0.15.17/pstack/skills/principle-model-the-domain/SKILL.md +24 -0
  1000. package/vendor/upstream/0.15.17/pstack/skills/principle-never-block-on-the-human/SKILL.md +15 -0
  1001. package/vendor/upstream/0.15.17/pstack/skills/principle-outcome-oriented-execution/SKILL.md +21 -0
  1002. package/vendor/upstream/0.15.17/pstack/skills/principle-prove-it-works/SKILL.md +22 -0
  1003. package/vendor/upstream/0.15.17/pstack/skills/principle-redesign-from-first-principles/SKILL.md +16 -0
  1004. package/vendor/upstream/0.15.17/pstack/skills/principle-separate-before-serializing-shared-state/SKILL.md +16 -0
  1005. package/vendor/upstream/0.15.17/pstack/skills/principle-sequence-verifiable-units/SKILL.md +17 -0
  1006. package/vendor/upstream/0.15.17/pstack/skills/principle-subtract-before-you-add/SKILL.md +18 -0
  1007. package/vendor/upstream/0.15.17/pstack/skills/principle-test-behavior-not-implementation/SKILL.md +21 -0
  1008. package/vendor/upstream/0.15.17/pstack/skills/principle-type-system-discipline/SKILL.md +18 -0
  1009. package/vendor/upstream/0.15.17/pstack/skills/recall/SKILL.md +35 -0
  1010. package/vendor/upstream/0.15.17/pstack/skills/reflect/SKILL.md +67 -0
  1011. package/vendor/upstream/0.15.17/pstack/skills/reflect/references/divergent-reviewer.md +38 -0
  1012. package/vendor/upstream/0.15.17/pstack/skills/reflect/references/judgment-reviewer.md +37 -0
  1013. package/vendor/upstream/0.15.17/pstack/skills/reflect/references/synthesizer.md +56 -0
  1014. package/vendor/upstream/0.15.17/pstack/skills/reflect/references/tooling-reviewer.md +48 -0
  1015. package/vendor/upstream/0.15.17/pstack/skills/setup-pstack/SKILL.md +74 -0
  1016. package/vendor/upstream/0.15.17/pstack/skills/show-me-your-work/SKILL.md +82 -0
  1017. package/vendor/upstream/0.15.17/pstack/skills/swarm/SKILL.md +46 -0
  1018. package/vendor/upstream/0.15.17/pstack/skills/tdd/SKILL.md +42 -0
  1019. package/vendor/upstream/0.15.17/pstack/skills/teach/SKILL.md +21 -0
  1020. package/vendor/upstream/0.15.17/pstack/skills/technical-writing/SKILL.md +106 -0
  1021. package/vendor/upstream/0.15.17/pstack/skills/typescript-best-practices/SKILL.md +31 -0
  1022. package/vendor/upstream/0.15.17/pstack/skills/typescript-best-practices/references/patterns.md +324 -0
  1023. package/vendor/upstream/0.15.17/pstack/skills/unslop/SKILL.md +62 -0
  1024. package/vendor/upstream/0.15.17/pstack/skills/why/SKILL.md +98 -0
  1025. package/vendor/upstream/0.15.17/pstack/skills/why/references/epistemics.md +71 -0
  1026. package/vendor/upstream/0.15.17/pstack/skills/why/references/investigator-prompt.md +84 -0
  1027. package/vendor/upstream/0.15.17/pstack/skills/why/references/source-playbook.md +17 -0
  1028. package/vendor/upstream/0.15.17/pstack/skills/why/references/sources/code-archaeology.md +86 -0
  1029. package/vendor/upstream/0.15.17/pstack/skills/why/references/sources/databricks.md +70 -0
  1030. package/vendor/upstream/0.15.17/pstack/skills/why/references/sources/datadog.md +97 -0
  1031. package/vendor/upstream/0.15.17/pstack/skills/why/references/sources/incident-postmortem.md +15 -0
  1032. package/vendor/upstream/0.15.17/pstack/skills/why/references/sources/linear.md +48 -0
  1033. package/vendor/upstream/0.15.17/pstack/skills/why/references/sources/notion.md +55 -0
  1034. package/vendor/upstream/0.15.17/pstack/skills/why/references/sources/sentry.md +96 -0
  1035. package/vendor/upstream/0.15.17/pstack/skills/why/references/sources/slack.md +54 -0
  1036. package/vendor/upstream/0.15.17/pstack/skills/why/references/synthesizer-prompt.md +129 -0
  1037. package/vendor/upstream/0.15.32/pstack/.cursor-plugin/plugin.json +31 -0
  1038. package/vendor/upstream/0.15.32/pstack/LICENSE +21 -0
  1039. package/vendor/upstream/0.15.32/pstack/skills/architect/SKILL.md +79 -0
  1040. package/vendor/upstream/0.15.32/pstack/skills/architect/references/design-red-flags.md +57 -0
  1041. package/vendor/upstream/0.15.32/pstack/skills/architect/references/rationale-template.md +35 -0
  1042. package/vendor/upstream/0.15.32/pstack/skills/architect/references/runner-prompt.md +20 -0
  1043. package/vendor/upstream/0.15.32/pstack/skills/arena/SKILL.md +48 -0
  1044. package/vendor/upstream/0.15.32/pstack/skills/automate-me/SKILL.md +104 -0
  1045. package/vendor/upstream/0.15.32/pstack/skills/benchmark-checklist/SKILL.md +39 -0
  1046. package/vendor/upstream/0.15.32/pstack/skills/blast-radius/SKILL.md +50 -0
  1047. package/vendor/upstream/0.15.32/pstack/skills/bro/SKILL.md +7 -0
  1048. package/vendor/upstream/0.15.32/pstack/skills/correct/SKILL.md +32 -0
  1049. package/vendor/upstream/0.15.32/pstack/skills/create-formal-verification-skill/SKILL.md +43 -0
  1050. package/vendor/upstream/0.15.32/pstack/skills/create-verification-skill/SKILL.md +44 -0
  1051. package/vendor/upstream/0.15.32/pstack/skills/create-verification-skill/references/feature-map-example/README.md +47 -0
  1052. package/vendor/upstream/0.15.32/pstack/skills/create-verification-skill/references/feature-map-example/create-note.md +39 -0
  1053. package/vendor/upstream/0.15.32/pstack/skills/create-verification-skill/references/feature-map-example/search.md +45 -0
  1054. package/vendor/upstream/0.15.32/pstack/skills/figure-it-out/SKILL.md +52 -0
  1055. package/vendor/upstream/0.15.32/pstack/skills/how/SKILL.md +36 -0
  1056. package/vendor/upstream/0.15.32/pstack/skills/how/references/explainer-prompt.md +55 -0
  1057. package/vendor/upstream/0.15.32/pstack/skills/how/references/explorer-prompt.md +35 -0
  1058. package/vendor/upstream/0.15.32/pstack/skills/in-your-own-words/SKILL.md +7 -0
  1059. package/vendor/upstream/0.15.32/pstack/skills/interrogate/SKILL.md +74 -0
  1060. package/vendor/upstream/0.15.32/pstack/skills/interrogate/references/code-quality-review.md +47 -0
  1061. package/vendor/upstream/0.15.32/pstack/skills/interrogate/references/lead-judgment.md +39 -0
  1062. package/vendor/upstream/0.15.32/pstack/skills/interrogate/references/reviewer-prompt.md +62 -0
  1063. package/vendor/upstream/0.15.32/pstack/skills/interrogate/references/rubric.md +77 -0
  1064. package/vendor/upstream/0.15.32/pstack/skills/ketchup/SKILL.md +43 -0
  1065. package/vendor/upstream/0.15.32/pstack/skills/ketchup-video/SKILL.md +23 -0
  1066. package/vendor/upstream/0.15.32/pstack/skills/maintain-formal-verification-skill/SKILL.md +58 -0
  1067. package/vendor/upstream/0.15.32/pstack/skills/maintain-verification-skill/SKILL.md +39 -0
  1068. package/vendor/upstream/0.15.32/pstack/skills/make-bot-ui/SKILL.md +115 -0
  1069. package/vendor/upstream/0.15.32/pstack/skills/no-comments/SKILL.md +24 -0
  1070. package/vendor/upstream/0.15.32/pstack/skills/poteto-help/SKILL.md +163 -0
  1071. package/vendor/upstream/0.15.32/pstack/skills/poteto-help/references/prompting.md +51 -0
  1072. package/vendor/upstream/0.15.32/pstack/skills/poteto-help/references/recipes.md +51 -0
  1073. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/SKILL.md +149 -0
  1074. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/authoring-a-skill.md +12 -0
  1075. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/autonomous-run.md +13 -0
  1076. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/autopilot-full.md +25 -0
  1077. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/autopilot-stack.md +12 -0
  1078. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/babysit.md +23 -0
  1079. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/bug-fix.md +15 -0
  1080. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/eval.md +25 -0
  1081. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/feature.md +21 -0
  1082. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/hillclimb.md +21 -0
  1083. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/investigation.md +14 -0
  1084. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/multi-phase-plan.md +155 -0
  1085. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/opening-a-pr.md +34 -0
  1086. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/orchestrate.md +112 -0
  1087. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/pause-safely.md +10 -0
  1088. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/perf-issue.md +25 -0
  1089. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/prototype.md +14 -0
  1090. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/refactoring.md +16 -0
  1091. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/runtime-forensics.md +11 -0
  1092. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/session-pickup.md +11 -0
  1093. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/shipping.md +12 -0
  1094. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/trace-forensics.md +14 -0
  1095. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/visual-parity.md +11 -0
  1096. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/worktree-cleanup.md +12 -0
  1097. package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/references/bugbot-triage.md +142 -0
  1098. package/vendor/upstream/0.15.32/pstack/skills/principle-attack-the-premise/SKILL.md +21 -0
  1099. package/vendor/upstream/0.15.32/pstack/skills/principle-boundary-discipline/SKILL.md +34 -0
  1100. package/vendor/upstream/0.15.32/pstack/skills/principle-build-the-lever/SKILL.md +23 -0
  1101. package/vendor/upstream/0.15.32/pstack/skills/principle-encode-lessons-in-structure/SKILL.md +11 -0
  1102. package/vendor/upstream/0.15.32/pstack/skills/principle-exhaust-the-design-space/SKILL.md +9 -0
  1103. package/vendor/upstream/0.15.32/pstack/skills/principle-experience-first/SKILL.md +19 -0
  1104. package/vendor/upstream/0.15.32/pstack/skills/principle-explain-the-number/SKILL.md +17 -0
  1105. package/vendor/upstream/0.15.32/pstack/skills/principle-fix-root-causes/SKILL.md +21 -0
  1106. package/vendor/upstream/0.15.32/pstack/skills/principle-foundational-thinking/SKILL.md +21 -0
  1107. package/vendor/upstream/0.15.32/pstack/skills/principle-guard-the-context-window/SKILL.md +12 -0
  1108. package/vendor/upstream/0.15.32/pstack/skills/principle-laziness-protocol/SKILL.md +10 -0
  1109. package/vendor/upstream/0.15.32/pstack/skills/principle-make-operations-idempotent/SKILL.md +22 -0
  1110. package/vendor/upstream/0.15.32/pstack/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md +14 -0
  1111. package/vendor/upstream/0.15.32/pstack/skills/principle-minimize-reader-load/SKILL.md +18 -0
  1112. package/vendor/upstream/0.15.32/pstack/skills/principle-model-the-domain/SKILL.md +24 -0
  1113. package/vendor/upstream/0.15.32/pstack/skills/principle-never-block-on-the-human/SKILL.md +15 -0
  1114. package/vendor/upstream/0.15.32/pstack/skills/principle-outcome-oriented-execution/SKILL.md +21 -0
  1115. package/vendor/upstream/0.15.32/pstack/skills/principle-prove-it-works/SKILL.md +22 -0
  1116. package/vendor/upstream/0.15.32/pstack/skills/principle-redesign-from-first-principles/SKILL.md +16 -0
  1117. package/vendor/upstream/0.15.32/pstack/skills/principle-separate-before-serializing-shared-state/SKILL.md +16 -0
  1118. package/vendor/upstream/0.15.32/pstack/skills/principle-sequence-verifiable-units/SKILL.md +17 -0
  1119. package/vendor/upstream/0.15.32/pstack/skills/principle-subtract-before-you-add/SKILL.md +18 -0
  1120. package/vendor/upstream/0.15.32/pstack/skills/principle-test-behavior-not-implementation/SKILL.md +20 -0
  1121. package/vendor/upstream/0.15.32/pstack/skills/principle-type-system-discipline/SKILL.md +13 -0
  1122. package/vendor/upstream/0.15.32/pstack/skills/recall/SKILL.md +35 -0
  1123. package/vendor/upstream/0.15.32/pstack/skills/reflect/SKILL.md +69 -0
  1124. package/vendor/upstream/0.15.32/pstack/skills/reflect/references/divergent-reviewer.md +38 -0
  1125. package/vendor/upstream/0.15.32/pstack/skills/reflect/references/judgment-reviewer.md +37 -0
  1126. package/vendor/upstream/0.15.32/pstack/skills/reflect/references/synthesizer.md +56 -0
  1127. package/vendor/upstream/0.15.32/pstack/skills/reflect/references/tooling-reviewer.md +48 -0
  1128. package/vendor/upstream/0.15.32/pstack/skills/setup-pstack/SKILL.md +78 -0
  1129. package/vendor/upstream/0.15.32/pstack/skills/sharpen/SKILL.md +16 -0
  1130. package/vendor/upstream/0.15.32/pstack/skills/show-me-your-work/SKILL.md +82 -0
  1131. package/vendor/upstream/0.15.32/pstack/skills/statechart/SKILL.md +36 -0
  1132. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/bug-states.mjs +81 -0
  1133. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/chart-edges.mjs +68 -0
  1134. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/chart-parts.mjs +21 -0
  1135. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/chart-to-tla.mjs +205 -0
  1136. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/compare-charts.mjs +74 -0
  1137. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/lib.mjs +970 -0
  1138. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/map-view.mjs +92 -0
  1139. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/property-loop.mjs +60 -0
  1140. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/read-check.mjs +79 -0
  1141. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/regions-chart.mjs +307 -0
  1142. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/render.mjs +531 -0
  1143. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/rule-book.mjs +84 -0
  1144. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/second-replay.mjs +122 -0
  1145. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/snapshot.mjs +74 -0
  1146. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/spec-text.mjs +126 -0
  1147. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/statechart-help.mjs +350 -0
  1148. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/statechart.mjs +903 -0
  1149. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/test/band.mmd +15 -0
  1150. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/test/regions.mmd +62 -0
  1151. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/test/statechart.test.mjs +6854 -0
  1152. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/test/sync.mmd +19 -0
  1153. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/test/upload.mmd +16 -0
  1154. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/tlc-to-chart-args.mjs +52 -0
  1155. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/tlc-to-chart.mjs +802 -0
  1156. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/tlc-tools.mjs +69 -0
  1157. package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/ways-in.mjs +69 -0
  1158. package/vendor/upstream/0.15.32/pstack/skills/swarm/SKILL.md +41 -0
  1159. package/vendor/upstream/0.15.32/pstack/skills/tdd/SKILL.md +42 -0
  1160. package/vendor/upstream/0.15.32/pstack/skills/teach/SKILL.md +21 -0
  1161. package/vendor/upstream/0.15.32/pstack/skills/technical-writing/SKILL.md +106 -0
  1162. package/vendor/upstream/0.15.32/pstack/skills/typescript-best-practices/SKILL.md +31 -0
  1163. package/vendor/upstream/0.15.32/pstack/skills/typescript-best-practices/references/patterns.md +328 -0
  1164. package/vendor/upstream/0.15.32/pstack/skills/unslop/SKILL.md +62 -0
  1165. package/vendor/upstream/0.15.32/pstack/skills/why/SKILL.md +98 -0
  1166. package/vendor/upstream/0.15.32/pstack/skills/why/references/epistemics.md +71 -0
  1167. package/vendor/upstream/0.15.32/pstack/skills/why/references/investigator-prompt.md +84 -0
  1168. package/vendor/upstream/0.15.32/pstack/skills/why/references/source-playbook.md +17 -0
  1169. package/vendor/upstream/0.15.32/pstack/skills/why/references/sources/code-archaeology.md +51 -0
  1170. package/vendor/upstream/0.15.32/pstack/skills/why/references/sources/databricks.md +70 -0
  1171. package/vendor/upstream/0.15.32/pstack/skills/why/references/sources/datadog.md +97 -0
  1172. package/vendor/upstream/0.15.32/pstack/skills/why/references/sources/incident-postmortem.md +5 -0
  1173. package/vendor/upstream/0.15.32/pstack/skills/why/references/sources/linear.md +48 -0
  1174. package/vendor/upstream/0.15.32/pstack/skills/why/references/sources/notion.md +55 -0
  1175. package/vendor/upstream/0.15.32/pstack/skills/why/references/sources/sentry.md +66 -0
  1176. package/vendor/upstream/0.15.32/pstack/skills/why/references/sources/slack.md +17 -0
  1177. package/vendor/upstream/0.15.32/pstack/skills/why/references/synthesizer-prompt.md +129 -0
  1178. package/vendor/upstream/0.15.36/pstack/.cursor-plugin/plugin.json +31 -0
  1179. package/vendor/upstream/0.15.36/pstack/LICENSE +21 -0
  1180. package/vendor/upstream/0.15.36/pstack/skills/architect/SKILL.md +79 -0
  1181. package/vendor/upstream/0.15.36/pstack/skills/architect/references/design-red-flags.md +57 -0
  1182. package/vendor/upstream/0.15.36/pstack/skills/architect/references/rationale-template.md +35 -0
  1183. package/vendor/upstream/0.15.36/pstack/skills/architect/references/runner-prompt.md +20 -0
  1184. package/vendor/upstream/0.15.36/pstack/skills/arena/SKILL.md +48 -0
  1185. package/vendor/upstream/0.15.36/pstack/skills/automate-me/SKILL.md +104 -0
  1186. package/vendor/upstream/0.15.36/pstack/skills/benchmark-checklist/SKILL.md +39 -0
  1187. package/vendor/upstream/0.15.36/pstack/skills/blast-radius/SKILL.md +50 -0
  1188. package/vendor/upstream/0.15.36/pstack/skills/bro/SKILL.md +7 -0
  1189. package/vendor/upstream/0.15.36/pstack/skills/correct/SKILL.md +32 -0
  1190. package/vendor/upstream/0.15.36/pstack/skills/create-formal-verification-skill/SKILL.md +43 -0
  1191. package/vendor/upstream/0.15.36/pstack/skills/create-verification-skill/SKILL.md +44 -0
  1192. package/vendor/upstream/0.15.36/pstack/skills/create-verification-skill/references/feature-map-example/README.md +47 -0
  1193. package/vendor/upstream/0.15.36/pstack/skills/create-verification-skill/references/feature-map-example/create-note.md +39 -0
  1194. package/vendor/upstream/0.15.36/pstack/skills/create-verification-skill/references/feature-map-example/search.md +45 -0
  1195. package/vendor/upstream/0.15.36/pstack/skills/figure-it-out/SKILL.md +52 -0
  1196. package/vendor/upstream/0.15.36/pstack/skills/how/SKILL.md +36 -0
  1197. package/vendor/upstream/0.15.36/pstack/skills/how/references/explainer-prompt.md +55 -0
  1198. package/vendor/upstream/0.15.36/pstack/skills/how/references/explorer-prompt.md +35 -0
  1199. package/vendor/upstream/0.15.36/pstack/skills/in-your-own-words/SKILL.md +7 -0
  1200. package/vendor/upstream/0.15.36/pstack/skills/interrogate/SKILL.md +31 -0
  1201. package/vendor/upstream/0.15.36/pstack/skills/ketchup/SKILL.md +43 -0
  1202. package/vendor/upstream/0.15.36/pstack/skills/ketchup-video/SKILL.md +29 -0
  1203. package/vendor/upstream/0.15.36/pstack/skills/maintain-formal-verification-skill/SKILL.md +58 -0
  1204. package/vendor/upstream/0.15.36/pstack/skills/maintain-verification-skill/SKILL.md +39 -0
  1205. package/vendor/upstream/0.15.36/pstack/skills/make-bot-ui/SKILL.md +115 -0
  1206. package/vendor/upstream/0.15.36/pstack/skills/no-comments/SKILL.md +24 -0
  1207. package/vendor/upstream/0.15.36/pstack/skills/poteto-help/SKILL.md +163 -0
  1208. package/vendor/upstream/0.15.36/pstack/skills/poteto-help/references/prompting.md +51 -0
  1209. package/vendor/upstream/0.15.36/pstack/skills/poteto-help/references/recipes.md +51 -0
  1210. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/SKILL.md +150 -0
  1211. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/authoring-a-skill.md +12 -0
  1212. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/autonomous-run.md +13 -0
  1213. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/autopilot-full.md +25 -0
  1214. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/autopilot-stack.md +8 -0
  1215. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/babysit.md +23 -0
  1216. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/bug-fix.md +15 -0
  1217. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/eval.md +25 -0
  1218. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/feature.md +21 -0
  1219. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/hillclimb.md +21 -0
  1220. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/investigation.md +14 -0
  1221. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/multi-phase-plan.md +155 -0
  1222. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/opening-a-pr.md +34 -0
  1223. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/orchestrate.md +25 -0
  1224. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/pause-safely.md +10 -0
  1225. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/perf-issue.md +25 -0
  1226. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/prototype.md +14 -0
  1227. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/refactoring.md +16 -0
  1228. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/runtime-forensics.md +11 -0
  1229. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/session-pickup.md +11 -0
  1230. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/shipping.md +12 -0
  1231. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/trace-forensics.md +14 -0
  1232. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/visual-parity.md +11 -0
  1233. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/worktree-cleanup.md +12 -0
  1234. package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/references/bugbot-triage.md +142 -0
  1235. package/vendor/upstream/0.15.36/pstack/skills/principle-attack-the-premise/SKILL.md +21 -0
  1236. package/vendor/upstream/0.15.36/pstack/skills/principle-boundary-discipline/SKILL.md +34 -0
  1237. package/vendor/upstream/0.15.36/pstack/skills/principle-build-the-lever/SKILL.md +23 -0
  1238. package/vendor/upstream/0.15.36/pstack/skills/principle-encode-lessons-in-structure/SKILL.md +11 -0
  1239. package/vendor/upstream/0.15.36/pstack/skills/principle-exhaust-the-design-space/SKILL.md +9 -0
  1240. package/vendor/upstream/0.15.36/pstack/skills/principle-experience-first/SKILL.md +19 -0
  1241. package/vendor/upstream/0.15.36/pstack/skills/principle-explain-the-number/SKILL.md +18 -0
  1242. package/vendor/upstream/0.15.36/pstack/skills/principle-fix-root-causes/SKILL.md +21 -0
  1243. package/vendor/upstream/0.15.36/pstack/skills/principle-foundational-thinking/SKILL.md +21 -0
  1244. package/vendor/upstream/0.15.36/pstack/skills/principle-guard-the-context-window/SKILL.md +12 -0
  1245. package/vendor/upstream/0.15.36/pstack/skills/principle-laziness-protocol/SKILL.md +10 -0
  1246. package/vendor/upstream/0.15.36/pstack/skills/principle-make-operations-idempotent/SKILL.md +22 -0
  1247. package/vendor/upstream/0.15.36/pstack/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md +14 -0
  1248. package/vendor/upstream/0.15.36/pstack/skills/principle-minimize-reader-load/SKILL.md +18 -0
  1249. package/vendor/upstream/0.15.36/pstack/skills/principle-model-the-domain/SKILL.md +24 -0
  1250. package/vendor/upstream/0.15.36/pstack/skills/principle-never-block-on-the-human/SKILL.md +15 -0
  1251. package/vendor/upstream/0.15.36/pstack/skills/principle-outcome-oriented-execution/SKILL.md +21 -0
  1252. package/vendor/upstream/0.15.36/pstack/skills/principle-prove-it-works/SKILL.md +22 -0
  1253. package/vendor/upstream/0.15.36/pstack/skills/principle-redesign-from-first-principles/SKILL.md +16 -0
  1254. package/vendor/upstream/0.15.36/pstack/skills/principle-separate-before-serializing-shared-state/SKILL.md +16 -0
  1255. package/vendor/upstream/0.15.36/pstack/skills/principle-sequence-verifiable-units/SKILL.md +17 -0
  1256. package/vendor/upstream/0.15.36/pstack/skills/principle-subtract-before-you-add/SKILL.md +18 -0
  1257. package/vendor/upstream/0.15.36/pstack/skills/principle-test-behavior-not-implementation/SKILL.md +20 -0
  1258. package/vendor/upstream/0.15.36/pstack/skills/principle-type-system-discipline/SKILL.md +13 -0
  1259. package/vendor/upstream/0.15.36/pstack/skills/recall/SKILL.md +35 -0
  1260. package/vendor/upstream/0.15.36/pstack/skills/reflect/SKILL.md +69 -0
  1261. package/vendor/upstream/0.15.36/pstack/skills/reflect/references/divergent-reviewer.md +38 -0
  1262. package/vendor/upstream/0.15.36/pstack/skills/reflect/references/judgment-reviewer.md +37 -0
  1263. package/vendor/upstream/0.15.36/pstack/skills/reflect/references/synthesizer.md +56 -0
  1264. package/vendor/upstream/0.15.36/pstack/skills/reflect/references/tooling-reviewer.md +48 -0
  1265. package/vendor/upstream/0.15.36/pstack/skills/setup-pstack/SKILL.md +78 -0
  1266. package/vendor/upstream/0.15.36/pstack/skills/sharpen/SKILL.md +16 -0
  1267. package/vendor/upstream/0.15.36/pstack/skills/show-me-your-work/SKILL.md +82 -0
  1268. package/vendor/upstream/0.15.36/pstack/skills/statechart/SKILL.md +82 -0
  1269. package/vendor/upstream/0.15.36/pstack/skills/statechart/references/render.md +93 -0
  1270. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/backends/cfg.ts +33 -0
  1271. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/backends/mermaid.ts +201 -0
  1272. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/backends/plain-text.ts +72 -0
  1273. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/backends/report.ts +177 -0
  1274. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/frontends/config.ts +276 -0
  1275. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/frontends/dot.ts +74 -0
  1276. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/frontends/marks.ts +93 -0
  1277. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/frontends/messages.ts +52 -0
  1278. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/frontends/spec.ts +114 -0
  1279. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/frontends/trace.ts +24 -0
  1280. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/frontends/value.ts +166 -0
  1281. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/frontends/verdict.ts +40 -0
  1282. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/frontends/view.ts +119 -0
  1283. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/ir.ts +547 -0
  1284. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/package.json +11 -0
  1285. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/passes/annotate.ts +128 -0
  1286. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/passes/label.ts +269 -0
  1287. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/passes/lift.ts +85 -0
  1288. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/passes/loop-check.ts +68 -0
  1289. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/passes/paths.ts +60 -0
  1290. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/passes/reach.ts +135 -0
  1291. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/passes/region-check.ts +97 -0
  1292. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/passes/regions.ts +295 -0
  1293. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/pipeline.ts +76 -0
  1294. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/run.ts +481 -0
  1295. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/statechart +29 -0
  1296. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/statechart.ts +164 -0
  1297. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/tsconfig.json +11 -0
  1298. package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/worker.ts +35 -0
  1299. package/vendor/upstream/0.15.36/pstack/skills/swarm/SKILL.md +41 -0
  1300. package/vendor/upstream/0.15.36/pstack/skills/tdd/SKILL.md +42 -0
  1301. package/vendor/upstream/0.15.36/pstack/skills/teach/SKILL.md +21 -0
  1302. package/vendor/upstream/0.15.36/pstack/skills/technical-writing/SKILL.md +106 -0
  1303. package/vendor/upstream/0.15.36/pstack/skills/typescript-best-practices/SKILL.md +31 -0
  1304. package/vendor/upstream/0.15.36/pstack/skills/typescript-best-practices/references/patterns.md +328 -0
  1305. package/vendor/upstream/0.15.36/pstack/skills/unslop/SKILL.md +62 -0
  1306. package/vendor/upstream/0.15.36/pstack/skills/why/SKILL.md +98 -0
  1307. package/vendor/upstream/0.15.36/pstack/skills/why/references/epistemics.md +71 -0
  1308. package/vendor/upstream/0.15.36/pstack/skills/why/references/investigator-prompt.md +84 -0
  1309. package/vendor/upstream/0.15.36/pstack/skills/why/references/source-playbook.md +17 -0
  1310. package/vendor/upstream/0.15.36/pstack/skills/why/references/sources/code-archaeology.md +51 -0
  1311. package/vendor/upstream/0.15.36/pstack/skills/why/references/sources/databricks.md +70 -0
  1312. package/vendor/upstream/0.15.36/pstack/skills/why/references/sources/datadog.md +97 -0
  1313. package/vendor/upstream/0.15.36/pstack/skills/why/references/sources/incident-postmortem.md +5 -0
  1314. package/vendor/upstream/0.15.36/pstack/skills/why/references/sources/linear.md +48 -0
  1315. package/vendor/upstream/0.15.36/pstack/skills/why/references/sources/notion.md +55 -0
  1316. package/vendor/upstream/0.15.36/pstack/skills/why/references/sources/sentry.md +66 -0
  1317. package/vendor/upstream/0.15.36/pstack/skills/why/references/sources/slack.md +17 -0
  1318. package/vendor/upstream/0.15.36/pstack/skills/why/references/synthesizer-prompt.md +129 -0
@@ -0,0 +1,408 @@
1
+ import test from "node:test";
2
+ import assert from "node:assert/strict";
3
+ import { mkdtempSync, rmSync } from "node:fs";
4
+ import { join } from "node:path";
5
+ import type { AgentRecord } from "../src/runtime/types.ts";
6
+ import { workflowPath } from "../src/runtime/home.ts";
7
+ import { writeJsonAtomic } from "../src/runtime/store.ts";
8
+ import { WorkflowEngine, type AgentRunner } from "../src/workflow/engine.ts";
9
+
10
+ type Run = Parameters<AgentRunner["run"]>[0];
11
+
12
+ class FakeAgents implements AgentRunner {
13
+ active = 0;
14
+ maxActive = 0;
15
+ started: string[] = [];
16
+ recovered: string[] = [];
17
+ records = new Map<string, AgentRecord>();
18
+ delay = 15;
19
+
20
+ async run(spec: Run): Promise<AgentRecord> {
21
+ this.active++; this.maxActive = Math.max(this.maxActive, this.active); this.started.push(spec.callKey ?? "?");
22
+ await new Promise((resolve) => setTimeout(resolve, this.delay));
23
+ this.active--;
24
+ const failed = spec.task.includes("FAIL");
25
+ const isolated = spec.isolation === "worktree";
26
+ const record: AgentRecord = {
27
+ id: spec.id!, workflowId: spec.workflowId, callKey: spec.callKey, profile: spec.profile,
28
+ task: spec.task, state: failed ? "failed" : "completed", cwd: isolated ? `/tmp/${spec.callKey}-tree` : spec.cwd, isolation: spec.isolation ?? "shared",
29
+ ...(isolated ? { worktree: `/tmp/${spec.callKey}-tree`, branch: `pstack-native/${spec.callKey}` } : {}),
30
+ createdAt: new Date().toISOString(), finishedAt: new Date().toISOString(), attempt: spec.attempt ?? 1, depth: 1,
31
+ ...(failed ? { error: { code: "TEST", message: "boom", retryable: false, occurredAt: new Date().toISOString() } } : { result: `done:${spec.callKey}` }),
32
+ };
33
+ this.records.set(record.id, record); return record;
34
+ }
35
+ get(id: string) { return this.records.get(id); }
36
+ async stop(id: string) { const r = this.records.get(id)!; const n = { ...r, state: "cancelled" as const }; this.records.set(id,n); return n; }
37
+ async recover(record: AgentRecord) { this.recovered.push(record.callKey ?? "?"); const n = { ...record, state: "completed" as const, result: `resumed:${record.callKey}`, finishedAt: new Date().toISOString() }; this.records.set(record.id,n); return n; }
38
+ }
39
+
40
+ function fakeCtx(sessionId = "s1"): any {
41
+ return { cwd: process.cwd(), sessionManager: { getSessionId: () => sessionId } };
42
+ }
43
+
44
+ async function withHome(fn: (dir: string) => Promise<void>) {
45
+ const old = process.env.PSTACK_NATIVE_HOME;
46
+ const dir = mkdtempSync(join(process.cwd(), ".pstack-wf-"));
47
+ process.env.PSTACK_NATIVE_HOME = dir;
48
+ try { await fn(dir); } finally { if (old === undefined) delete process.env.PSTACK_NATIVE_HOME; else process.env.PSTACK_NATIVE_HOME = old; rmSync(dir, {recursive:true,force:true}); }
49
+ }
50
+
51
+ test("parallel graph obeys shared concurrency and completes", async () => withHome(async () => {
52
+ const agents = new FakeAgents();
53
+ const engine = new WorkflowEngine(agents);
54
+ const wf = engine.create({ cwd: process.cwd(), parentSessionId: "s1", maxConcurrency: 2, nodes: [
55
+ { key: "a", task: "A" }, { key: "b", task: "B" }, { key: "c", task: "C" },
56
+ ]});
57
+ const done = await engine.run(wf.id, fakeCtx());
58
+ assert.equal(done.state, "completed");
59
+ assert.equal(agents.maxActive, 2);
60
+ assert.equal(Object.values(done.calls).every((c) => c.state === "completed"), true);
61
+ }));
62
+
63
+ test("chain waits for dependencies in order", async () => withHome(async () => {
64
+ const agents = new FakeAgents();
65
+ const engine = new WorkflowEngine(agents);
66
+ const wf = engine.create({ cwd: process.cwd(), nodes: [
67
+ { key: "a", task: "A" },
68
+ { key: "b", task: "B", dependsOn: ["a"] },
69
+ { key: "c", task: "C", dependsOn: ["b"] },
70
+ ]});
71
+ const done = await engine.run(wf.id, fakeCtx());
72
+ assert.equal(done.state, "completed");
73
+ assert.deepEqual(agents.started, ["a", "b", "c"]);
74
+ }));
75
+
76
+ test("failed dependency skips downstream work", async () => withHome(async () => {
77
+ const agents = new FakeAgents();
78
+ const engine = new WorkflowEngine(agents);
79
+ const wf = engine.create({ cwd: process.cwd(), nodes: [
80
+ { key: "a", task: "FAIL" },
81
+ { key: "b", task: "must not run", dependsOn: ["a"] },
82
+ ]});
83
+ const done = await engine.run(wf.id, fakeCtx());
84
+ assert.equal(done.state, "failed");
85
+ assert.equal(done.calls.a.state, "failed");
86
+ assert.equal(done.calls.b.state, "skipped");
87
+ assert.deepEqual(agents.started, ["a"]);
88
+ }));
89
+
90
+ test("retry reruns a failed call and resets failed downstream work", async () => withHome(async () => {
91
+ class RetryAgents extends FakeAgents {
92
+ attempts = new Map<string, number>();
93
+ override async run(spec: Run): Promise<AgentRecord> {
94
+ const key = spec.callKey ?? "?";
95
+ const attempt = (this.attempts.get(key) ?? 0) + 1;
96
+ this.attempts.set(key, attempt);
97
+ if (key === "a" && attempt === 1) {
98
+ this.started.push(key);
99
+ const failed: AgentRecord = {
100
+ id: spec.id!, workflowId: spec.workflowId, callKey: key, profile: spec.profile,
101
+ task: spec.task, state: "failed", cwd: spec.cwd, isolation: spec.isolation ?? "shared",
102
+ createdAt: new Date().toISOString(), finishedAt: new Date().toISOString(), attempt: spec.attempt ?? 1, depth: 1,
103
+ error: { code: "INJECTED", message: "first attempt fails", retryable: true, occurredAt: new Date().toISOString() },
104
+ };
105
+ this.records.set(failed.id, failed);
106
+ return failed;
107
+ }
108
+ return super.run(spec);
109
+ }
110
+ }
111
+ const agents = new RetryAgents();
112
+ const engine = new WorkflowEngine(agents);
113
+ const wf = engine.create({ cwd: process.cwd(), nodes: [
114
+ { key: "a", task: "retry this call" },
115
+ { key: "b", task: "rerun after a succeeds", dependsOn: ["a"] },
116
+ ] });
117
+ const first = await engine.run(wf.id, fakeCtx());
118
+ assert.equal(first.state, "failed");
119
+ assert.equal(first.calls.a.state, "failed");
120
+ assert.equal(first.calls.b.state, "skipped");
121
+
122
+ const retried = engine.retry(wf.id, "a");
123
+ assert.equal(retried.state, "created");
124
+ assert.equal(retried.calls.a.state, "pending");
125
+ assert.equal(retried.calls.b.state, "pending");
126
+ const final = await engine.run(wf.id, fakeCtx());
127
+ assert.equal(final.state, "completed");
128
+ assert.equal(final.calls.a.attempt, 2);
129
+ assert.equal(final.calls.b.attempt, 1);
130
+ assert.deepEqual(agents.attempts, new Map([["a", 2], ["b", 1]]));
131
+ }));
132
+
133
+ test("restart resumes only the running child and does not rerun completed nodes", async () => withHome(async () => {
134
+ const agents = new FakeAgents();
135
+ const engine = new WorkflowEngine(agents);
136
+ const wf = engine.create({ cwd: process.cwd(), parentSessionId: "s1", nodes: [
137
+ { key: "a", task: "A" },
138
+ { key: "b", task: "B", dependsOn: ["a"] },
139
+ ]});
140
+ wf.state = "running";
141
+ wf.calls.a.state = "completed"; wf.calls.a.result = "already"; wf.calls.a.attempt = 1; wf.calls.a.agentId = "ag_done";
142
+ wf.calls.b.state = "running"; wf.calls.b.attempt = 1; wf.calls.b.agentId = "ag_resume";
143
+ writeJsonAtomic(workflowPath(wf.id), wf);
144
+ agents.records.set("ag_done", { id:"ag_done",workflowId:wf.id,callKey:"a",profile:"worker",task:"A",state:"completed",cwd:process.cwd(),isolation:"shared",createdAt:new Date().toISOString(),attempt:1,depth:1,result:"already" });
145
+ agents.records.set("ag_resume", { id:"ag_resume",workflowId:wf.id,callKey:"b",profile:"worker",task:"B",state:"running",cwd:process.cwd(),isolation:"shared",createdAt:new Date().toISOString(),attempt:1,depth:1 });
146
+ engine.recoverSession("s1", fakeCtx());
147
+ const done = await engine.run(wf.id, fakeCtx());
148
+ assert.equal(done.state, "completed");
149
+ assert.deepEqual(agents.started, []);
150
+ assert.deepEqual(agents.recovered, ["b"]);
151
+ assert.equal(done.calls.b.attempt, 1, "process recovery is not a new business attempt");
152
+ }));
153
+
154
+ test("verifier with one worker dependency runs against that worker worktree", async () => withHome(async () => {
155
+ class WorktreeAgents extends FakeAgents {
156
+ specs: Run[] = [];
157
+ override async run(spec: Run) {
158
+ this.specs.push(spec);
159
+ const r = await super.run(spec);
160
+ if (spec.callKey === "worker") {
161
+ r.worktree = "/tmp/fake-worker-tree"; r.cwd = r.worktree;
162
+ this.records.set(r.id,r);
163
+ }
164
+ return r;
165
+ }
166
+ }
167
+ const agents = new WorktreeAgents();
168
+ const engine = new WorkflowEngine(agents);
169
+ const wf = engine.create({ cwd: "/repo", nodes: [
170
+ { key: "worker", profile: "worker", task: "change" },
171
+ { key: "verify", profile: "verifier", task: "test", dependsOn: ["worker"] },
172
+ ]});
173
+ const done = await engine.run(wf.id, fakeCtx());
174
+ assert.equal(done.state, "completed");
175
+ const verify = agents.specs.find((s) => s.callKey === "verify")!;
176
+ assert.equal(verify.cwd, "/tmp/fake-worker-tree");
177
+ assert.equal(verify.isolation, "readonly");
178
+ }));
179
+
180
+
181
+ test("single writer works in the target checkout while parallel root writers are isolated", async () => withHome(async () => {
182
+ class CaptureAgents extends FakeAgents { specs: Run[] = []; override async run(spec: Run) { this.specs.push(spec); return super.run(spec); } }
183
+ const singleAgents = new CaptureAgents();
184
+ const single = new WorkflowEngine(singleAgents);
185
+ const one = single.create({ cwd: "/repo", nodes: [{ key: "worker", profile: "worker", task: "change" }] });
186
+ await single.run(one.id, fakeCtx());
187
+ assert.equal(singleAgents.specs[0]!.cwd, "/repo");
188
+ assert.equal(singleAgents.specs[0]!.isolation, "shared");
189
+
190
+ const parallelAgents = new CaptureAgents();
191
+ const parallel = new WorkflowEngine(parallelAgents);
192
+ const many = parallel.create({ cwd: "/repo", nodes: [
193
+ { key: "a", profile: "worker", task: "A" },
194
+ { key: "b", profile: "worker", task: "B" },
195
+ ]});
196
+ await parallel.run(many.id, fakeCtx());
197
+ assert.deepEqual(parallelAgents.specs.map((x) => x.isolation).sort(), ["worktree", "worktree"]);
198
+ }));
199
+
200
+ test("a writable chain continues in its predecessor workspace", async () => withHome(async () => {
201
+ class CaptureAgents extends FakeAgents { specs: Run[] = []; override async run(spec: Run) { this.specs.push(spec); return super.run(spec); } }
202
+ const agents = new CaptureAgents();
203
+ const engine = new WorkflowEngine(agents);
204
+ const wf = engine.create({ cwd: "/repo", nodes: [
205
+ { key: "a", profile: "worker", task: "A", isolation: "worktree" },
206
+ { key: "b", profile: "worker", task: "B", dependsOn: ["a"] },
207
+ ]});
208
+ await engine.run(wf.id, fakeCtx());
209
+ const b = agents.specs.find((x) => x.callKey === "b")!;
210
+ assert.equal(b.cwd, "/tmp/a-tree");
211
+ assert.equal(b.isolation, "shared");
212
+ }));
213
+
214
+ test("multiple writer outputs require an integrator and the integrator receives artifact locations", async () => withHome(async () => {
215
+ const invalid = new WorkflowEngine(new FakeAgents());
216
+ assert.throws(() => invalid.create({ cwd: "/repo", nodes: [
217
+ { key: "a", profile: "worker", task: "A" },
218
+ { key: "b", profile: "worker", task: "B" },
219
+ { key: "merge", profile: "worker", task: "merge", dependsOn: ["a", "b"] },
220
+ ]}), /Use profile "integrator"/);
221
+
222
+ class CaptureAgents extends FakeAgents { specs: Run[] = []; override async run(spec: Run) { this.specs.push(spec); return super.run(spec); } }
223
+ const agents = new CaptureAgents();
224
+ const engine = new WorkflowEngine(agents);
225
+ const wf = engine.create({ cwd: "/repo", nodes: [
226
+ { key: "a", profile: "worker", task: "A" },
227
+ { key: "b", profile: "worker", task: "B" },
228
+ { key: "merge", profile: "integrator", task: "combine", dependsOn: ["a", "b"] },
229
+ { key: "verify", profile: "verifier", task: "verify combined", dependsOn: ["merge"] },
230
+ ]});
231
+ const done = await engine.run(wf.id, fakeCtx());
232
+ assert.equal(done.state, "completed");
233
+ const merge = agents.specs.find((x) => x.callKey === "merge")!;
234
+ assert.equal(merge.cwd, "/repo");
235
+ assert.equal(merge.isolation, "shared");
236
+ assert.match(merge.task, /workspace: \/tmp\/a-tree/);
237
+ assert.match(merge.task, /workspace: \/tmp\/b-tree/);
238
+ assert.match(merge.task, /explicit integration owner/);
239
+ const verify = agents.specs.find((x) => x.callKey === "verify")!;
240
+ assert.equal(verify.cwd, "/repo");
241
+ assert.equal(verify.isolation, "readonly");
242
+ }));
243
+
244
+ test("recovery reattaches every saved running call even when more were running than the current cap", async () => withHome(async () => {
245
+ const agents = new FakeAgents();
246
+ const engine = new WorkflowEngine(agents);
247
+ const wf = engine.create({ cwd: process.cwd(), parentSessionId: "s1", maxConcurrency: 1, nodes: [
248
+ { key: "a", task: "A" }, { key: "b", task: "B" },
249
+ ]});
250
+ wf.state = "running";
251
+ for (const key of ["a", "b"]) {
252
+ const id = `ag_${key}`;
253
+ wf.calls[key]!.state = "running"; wf.calls[key]!.attempt = 1; wf.calls[key]!.agentId = id;
254
+ agents.records.set(id, { id, workflowId:wf.id, callKey:key, profile:"worker", task:key, state:"running", cwd:process.cwd(), isolation:"shared", createdAt:new Date().toISOString(), attempt:1,depth:1 });
255
+ }
256
+ writeJsonAtomic(workflowPath(wf.id), wf);
257
+ const done = await engine.run(wf.id, fakeCtx());
258
+ assert.equal(done.state, "completed");
259
+ assert.deepEqual(agents.recovered.sort(), ["a", "b"]);
260
+ assert.equal(done.calls.a.attempt, 1);
261
+ assert.equal(done.calls.b.attempt, 1);
262
+ }));
263
+
264
+ test("reviewer or verifier cannot pretend to inspect several isolated writer artifacts without integration", async () => withHome(async () => {
265
+ const engine = new WorkflowEngine(new FakeAgents());
266
+ for (const profile of ["reviewer", "verifier"]) {
267
+ assert.throws(() => engine.create({ cwd: "/repo", nodes: [
268
+ { key: "a", profile: "worker", task: "A" },
269
+ { key: "b", profile: "worker", task: "B" },
270
+ { key: "check", profile, task: "check both", dependsOn: ["a", "b"] },
271
+ ]}), /Add an integrator node first/);
272
+ }
273
+ }));
274
+
275
+ test("terminal callback wakes async start/recovery but not a synchronous run twice", async () => withHome(async () => {
276
+ const agents = new FakeAgents();
277
+ const notified: string[] = [];
278
+ const engine = new WorkflowEngine(agents, (record) => notified.push(record.id));
279
+ const sync = engine.create({ cwd: "/repo", nodes: [{ key: "a", task: "A" }] });
280
+ await engine.run(sync.id, fakeCtx());
281
+ assert.deepEqual(notified, [], "synchronous run returns its result through the tool and must not wake again");
282
+
283
+ const asyncWf = engine.create({ cwd: "/repo", nodes: [{ key: "b", task: "B" }] });
284
+ engine.start(asyncWf.id, fakeCtx());
285
+ await engine.run(asyncWf.id, fakeCtx());
286
+ assert.deepEqual(notified, [asyncWf.id]);
287
+ }));
288
+
289
+ test("pause stops scheduling new nodes after active work drains; resume continues remaining graph", async () => withHome(async () => {
290
+ class GateAgents extends FakeAgents {
291
+ release!: () => void;
292
+ gate = new Promise<void>((resolve) => { this.release = resolve; });
293
+ override async run(spec: Run): Promise<AgentRecord> {
294
+ this.active++; this.maxActive = Math.max(this.maxActive, this.active); this.started.push(spec.callKey ?? "?");
295
+ if (spec.callKey === "a") await this.gate;
296
+ this.active--;
297
+ const record: AgentRecord = {
298
+ id: spec.id!, workflowId: spec.workflowId, callKey: spec.callKey, profile: spec.profile,
299
+ task: spec.task, state: "completed", cwd: spec.cwd, isolation: spec.isolation ?? "shared",
300
+ createdAt: new Date().toISOString(), finishedAt: new Date().toISOString(), attempt: spec.attempt ?? 1, depth: 1,
301
+ result: `done:${spec.callKey}`,
302
+ };
303
+ this.records.set(record.id, record); return record;
304
+ }
305
+ }
306
+ const agents = new GateAgents();
307
+ const engine = new WorkflowEngine(agents);
308
+ const wf = engine.create({ cwd: "/repo", maxConcurrency: 1, nodes: [
309
+ { key: "a", task: "A" },
310
+ { key: "b", task: "B", dependsOn: ["a"] },
311
+ ]});
312
+ engine.start(wf.id, fakeCtx());
313
+ while (!agents.started.includes("a")) await new Promise((resolve) => setTimeout(resolve, 1));
314
+ const paused = engine.pause(wf.id);
315
+ assert.equal(paused.state, "paused");
316
+ agents.release();
317
+ await new Promise((resolve) => setTimeout(resolve, 15));
318
+ assert.deepEqual(agents.started, ["a"], "pause must not schedule b after a finishes");
319
+ assert.equal(engine.get(wf.id)!.state, "paused");
320
+ engine.resume(wf.id, fakeCtx());
321
+ const done = await engine.run(wf.id, fakeCtx());
322
+ assert.equal(done.state, "completed");
323
+ assert.deepEqual(agents.started, ["a", "b"]);
324
+ }));
325
+
326
+ test("writer reached through scout cannot collide with an unrelated root writer", async () => withHome(async () => {
327
+ class CaptureAgents extends FakeAgents {
328
+ specs: Run[] = [];
329
+ override async run(spec: Run) { this.specs.push(spec); return super.run(spec); }
330
+ }
331
+ const agents = new CaptureAgents();
332
+ const engine = new WorkflowEngine(agents);
333
+ const wf = engine.create({ cwd: "/repo", maxConcurrency: 3, nodes: [
334
+ { key: "first", profile: "worker", task: "A" },
335
+ { key: "scout", profile: "scout", task: "inspect" },
336
+ { key: "second", profile: "worker", task: "B", dependsOn: ["scout"] },
337
+ ]});
338
+ const done = await engine.run(wf.id, fakeCtx());
339
+ assert.equal(done.state, "completed");
340
+ assert.deepEqual(agents.specs.filter((spec) => spec.profile === "worker").map((spec) => spec.isolation), ["worktree", "worktree"]);
341
+ }));
342
+
343
+ test("hidden multi-writer artifacts require integration before verification or further writes", () => withHome(async () => {
344
+ const engine = new WorkflowEngine(new FakeAgents());
345
+ const prefix = [
346
+ { key: "a", profile: "worker", task: "A" },
347
+ { key: "b", profile: "worker", task: "B" },
348
+ { key: "summary", profile: "synthesizer", task: "summarize", dependsOn: ["a", "b"] },
349
+ ];
350
+ assert.throws(() => engine.create({ cwd: "/repo", nodes: [
351
+ ...prefix, { key: "verify", profile: "verifier", task: "check", dependsOn: ["summary"] },
352
+ ]}), /Add an integrator node first/);
353
+ assert.throws(() => engine.create({ cwd: "/repo", nodes: [
354
+ ...prefix, { key: "next", profile: "worker", task: "continue", dependsOn: ["summary"] },
355
+ ]}), /Use profile "integrator"/);
356
+ }));
357
+
358
+ test("single writer artifact propagates through synthesizer to verifier", async () => withHome(async () => {
359
+ class CaptureAgents extends FakeAgents { specs: Run[] = []; override async run(spec: Run) { this.specs.push(spec); return super.run(spec); } }
360
+ const agents = new CaptureAgents();
361
+ const engine = new WorkflowEngine(agents);
362
+ const wf = engine.create({ cwd: "/repo", nodes: [
363
+ { key: "a", profile: "worker", task: "A", isolation: "worktree" },
364
+ { key: "summary", profile: "synthesizer", task: "summarize", dependsOn: ["a"] },
365
+ { key: "verify", profile: "verifier", task: "verify", dependsOn: ["summary"] },
366
+ ]});
367
+ assert.equal((await engine.run(wf.id, fakeCtx())).state, "completed");
368
+ const verifier = agents.specs.find((spec) => spec.callKey === "verify")!;
369
+ assert.equal(verifier.cwd, "/tmp/a-tree");
370
+ assert.equal(verifier.isolation, "readonly");
371
+ }));
372
+
373
+ test("two incomparable writers cannot share a single predecessor lane", () => withHome(async () => {
374
+ const engine = new WorkflowEngine(new FakeAgents());
375
+ assert.throws(() => engine.create({ cwd: "/repo", nodes: [
376
+ { key: "base", profile: "worker", task: "base" },
377
+ { key: "fork1", profile: "worker", task: "A", dependsOn: ["base"] },
378
+ { key: "fork2", profile: "worker", task: "B", dependsOn: ["base"] },
379
+ ]}), /Concurrent writable calls/);
380
+ }));
381
+
382
+ test("shared override and writable readonly override fail closed", () => withHome(async () => {
383
+ const engine = new WorkflowEngine(new FakeAgents());
384
+ assert.throws(() => engine.create({ cwd: "/repo", nodes: [
385
+ { key: "a", profile: "worker", task: "A", isolation: "shared" },
386
+ { key: "b", profile: "worker", task: "B" },
387
+ ]}), /requires a worktree/);
388
+ assert.throws(() => engine.create({ cwd: "/repo", nodes: [
389
+ { key: "a", profile: "worker", task: "A", isolation: "readonly" },
390
+ ]}), /cannot use readonly isolation/);
391
+ }));
392
+
393
+ test("integrator receives upstream artifact paths hidden behind a summary", async () => withHome(async () => {
394
+ class CaptureAgents extends FakeAgents { specs: Run[] = []; override async run(spec: Run) { this.specs.push(spec); return super.run(spec); } }
395
+ const agents = new CaptureAgents();
396
+ const engine = new WorkflowEngine(agents);
397
+ const wf = engine.create({ cwd: "/repo", nodes: [
398
+ { key: "a", task: "A" }, { key: "b", task: "B" },
399
+ { key: "summary", profile: "synthesizer", task: "summarize", dependsOn: ["a", "b"] },
400
+ { key: "merge", profile: "integrator", task: "merge", dependsOn: ["summary"] },
401
+ { key: "verify", profile: "verifier", task: "check", dependsOn: ["merge"] },
402
+ ]});
403
+ assert.equal((await engine.run(wf.id, fakeCtx())).state, "completed");
404
+ const merge = agents.specs.find((spec) => spec.callKey === "merge")!;
405
+ assert.match(merge.task, /a: workspace: \/tmp\/a-tree/);
406
+ assert.match(merge.task, /b: workspace: \/tmp\/b-tree/);
407
+ assert.equal(agents.specs.find((spec) => spec.callKey === "verify")!.cwd, "/repo");
408
+ }));
@@ -0,0 +1,39 @@
1
+ import test from "node:test";
2
+ import assert from "node:assert/strict";
3
+ import { execFileSync } from "node:child_process";
4
+ import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
5
+ import { join } from "node:path";
6
+ import { createWorktree, isWorktreeDirty, removeWorktree } from "../src/worktree/manager.ts";
7
+
8
+ function git(cwd: string, ...args: string[]) { return execFileSync("git", args, {cwd,encoding:"utf8"}).trim(); }
9
+
10
+ test("worktree manager isolates writers and refuses dirty cleanup", async () => {
11
+ const base = mkdtempSync(join(process.cwd(), ".pstack-git-"));
12
+ const home = mkdtempSync(join(process.cwd(), ".pstack-home-"));
13
+ const old = process.env.PSTACK_NATIVE_HOME; process.env.PSTACK_NATIVE_HOME = home;
14
+ try {
15
+ git(base,"init","-q"); git(base,"config","user.email","test@example.com"); git(base,"config","user.name","test");
16
+ writeFileSync(join(base,"x.txt"),"one\n"); git(base,"add","x.txt"); git(base,"commit","-qm","init");
17
+ const wt = await createWorktree(base,"owner-1");
18
+ writeFileSync(join(wt.path,"x.txt"),"two\n");
19
+ assert.equal(await isWorktreeDirty(wt.path), true);
20
+ await assert.rejects(() => removeWorktree(wt), /Refusing to remove dirty worktree/);
21
+ git(wt.path,"checkout","--","x.txt");
22
+ await removeWorktree(wt);
23
+ } finally {
24
+ if (old === undefined) delete process.env.PSTACK_NATIVE_HOME; else process.env.PSTACK_NATIVE_HOME = old;
25
+ rmSync(base,{recursive:true,force:true}); rmSync(home,{recursive:true,force:true});
26
+ }
27
+ });
28
+
29
+ test('worktree audit compares the explicit PR parent, not a hard-coded default branch',async()=>{
30
+ const {auditWorktree}=await import('../src/worktree/manager.ts');
31
+ const base=mkdtempSync(join(process.cwd(),'.audit-git-')),home=mkdtempSync(join(process.cwd(),'.audit-home-')),old=process.env.PSTACK_NATIVE_HOME;process.env.PSTACK_NATIVE_HOME=home;
32
+ try{
33
+ git(base,'init','-q','-b','main');git(base,'config','user.email','test@example.invalid');git(base,'config','user.name','Test');writeFileSync(join(base,'x'),'base');git(base,'add','.');git(base,'commit','-qm','base');
34
+ const wt=await createWorktree(base,'audit-owner','main');writeFileSync(join(wt.path,'unit'),'unit');git(wt.path,'add','.');git(wt.path,'commit','-qm','unit');
35
+ const notMerged=await auditWorktree(wt,'main');assert.equal(notMerged.merged,false);assert.equal(notMerged.ahead,1);assert.equal(notMerged.dirty,false);
36
+ git(base,'branch','parent',git(wt.path,'rev-parse','HEAD'));const merged=await auditWorktree(wt,'parent');assert.equal(merged.merged,true);assert.equal(merged.ahead,0);assert.equal(merged.comparisonBase,'parent');
37
+ await assert.rejects(auditWorktree(wt,'--all'));await removeWorktree(wt);
38
+ }finally{if(old===undefined)delete process.env.PSTACK_NATIVE_HOME;else process.env.PSTACK_NATIVE_HOME=old;rmSync(base,{recursive:true,force:true});rmSync(home,{recursive:true,force:true});}
39
+ });
@@ -0,0 +1,12 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "noEmit": false,
5
+ "rewriteRelativeImportExtensions": true,
6
+ "outDir": "dist",
7
+ "rootDir": "src",
8
+ "declaration": true
9
+ },
10
+ "include": ["src/**/*.ts"],
11
+ "exclude": ["test", "dist"]
12
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "NodeNext",
5
+ "moduleResolution": "NodeNext",
6
+ "lib": ["ES2022"],
7
+ "types": ["node"],
8
+ "noEmit": true,
9
+ "strict": true,
10
+ "noImplicitAny": false,
11
+ "skipLibCheck": true,
12
+ "allowImportingTsExtensions": true,
13
+ "esModuleInterop": true,
14
+ "forceConsistentCasingInFileNames": true
15
+ },
16
+ "include": ["src/**/*.ts", "test/**/*.ts"]
17
+ }
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Lauren Tan
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,79 @@
1
+ ---
2
+ name: architect
3
+ description: "Sketch types, signatures, and module structure before code, then stay in the loop while implementation fills in. Use for /architect, 'architect this', 'design this', or non-trivial work where jumping to code would lock in the wrong shape."
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Architect
8
+
9
+ Sketch types, function signatures, class shapes, and module boundaries with `not implemented` bodies and pseudocode. Synthesize across multiple model perspectives, then fill in code against the chosen sketch.
10
+
11
+ ## Start
12
+
13
+ Open a todolist with one entry per phase before starting.
14
+
15
+ 1. Ground
16
+ 2. Sketch
17
+ 3. Agree
18
+ 4. Implement
19
+ 5. Scrap
20
+
21
+ ## Phase A: Ground the problem
22
+
23
+ Build a real mental model of every system the new code touches. Run the **how** skill over the relevant subsystems. Naming a file isn't grounding. Produce the architectural explanation `how` prescribes. If the design redefines ownership or layering, also run the **why** skill on the existing shape so the rationale becomes a constraint, not a guess.
24
+
25
+ Skip Phase A only when the work is genuinely greenfield with no surrounding system to integrate.
26
+
27
+ ## Phase B: Sketch
28
+
29
+ Run the **arena** skill with the design-sketch task and the Phase A grounding artifacts. Pass `references/runner-prompt.md` as each runner's prompt.
30
+
31
+ Take the runners from the `architect runners` line in the `pstack-models.mdc` rule, in place of the `arena runners` line. If the rule or that line is missing, use `claude-opus-5-5-xhigh` and `grok-4.7-xhigh-fast`. Alias and rejected entries follow the runner rules in the **arena** skill's Phase A.
32
+
33
+ Design it twice. Require at least two structurally distinct candidates before synthesis, even when the first looks sufficient. This is the **exhaust-the-design-space** principle skill made concrete. Whole-shape alternatives, not point fixes inside one shape.
34
+
35
+ Screen every candidate against [`references/design-red-flags.md`](references/design-red-flags.md) before synthesis. Assume the next contributor is an agent that sees only the files it opened, copies the nearest example, and takes the shortest path that compiles. Prefer the design where a change that looks right from one file is right for the whole repo.
36
+
37
+ Compare viable candidates on interface depth. Prefer the design that hides more complexity behind a smaller, simpler public surface. A rich interface can keep call chains short by concentrating capability instead of scattering it across layers.
38
+
39
+ Arena returns one synthesized design package. Its synthesis decision fills the rationale's "Synthesis decision" section.
40
+
41
+ ## Phase C: Agree (opt-in)
42
+
43
+ Default: proceed directly to implementation with the synthesized design. No human checkpoint.
44
+
45
+ Opt in to a checkpoint when the invoker explicitly asks: "/architect with checkpoint," "stop and show me before implementing," or similar. Then surface the synthesized design and pause for sign-off.
46
+
47
+ The synthesis can ship as its own commit either way, as the "scaffold first" mode of the **foundational-thinking** principle skill. Planned and scoped breakage during fill-in is fine, per the **outcome-oriented-execution** principle skill. For adversarial pressure on the design before implementing, run the **interrogate** skill on the synthesized sketch.
48
+
49
+ If the human pushes back on the shape (in a checkpoint or after the fact), treat that as Phase A evidence. Re-ground and re-run Phase B before writing more code.
50
+
51
+ ## Phase D: Implement against the sketch
52
+
53
+ Replace `not implemented` bodies with code, pseudocode with logic. The synthesized sketch is the contract. Deviations from it are signal to surface, not friction to absorb silently. If a function needs a parameter the sketch didn't anticipate, ask whether the sketch was wrong, the requirement was missed, or the implementation is overreaching.
54
+
55
+ ## Phase E: Scrap when the architecture is wrong
56
+
57
+ If implementation keeps producing friction the sketch can't absorb, throw the sketch out. Don't bolt fixes onto a wrong design, per the **redesign-from-first-principles** and **fix-root-causes** principle skills.
58
+
59
+ The signal is a *pattern*, not single instances. Tells:
60
+
61
+ - The same shape of workaround appearing repeatedly across unrelated code.
62
+ - Multiple unrelated edge cases that all need special-case branches.
63
+ - Types that need escape hatches (`any`, casts, optional fields always set in practice) to compile.
64
+ - The "we need a lock" reflex when the sketch said the state wasn't shared.
65
+ - Callers having to know the abstraction's internal rules to use it.
66
+ - Two or more independent Phase D deviations of the same shape across the implementation.
67
+
68
+ Use judgment. A few edge cases don't condemn an architecture. Some problems are legitimately complex. Complexity in the data is not complexity in the design.
69
+
70
+ When you scrap:
71
+
72
+ 1. Re-run the **how** skill over what's been built.
73
+ 2. Redesign as if the new constraints had been day-one assumptions, per redesign-from-first-principles.
74
+ 3. Subtract before adding, per the **subtract-before-you-add** principle skill. The new sketch should be smaller than the old one before it grows.
75
+ 4. Return to Phase B and re-run arena.
76
+
77
+ ## Outputs
78
+
79
+ The caller's usage is written first and the type sketch derived from it. One file with new types and signatures for small changes. Module map plus type definitions for larger work. The rationale ships alongside, shaped per `references/rationale-template.md`, including the usage sketch and the synthesis decision.
@@ -0,0 +1,57 @@
1
+ # Design red flags
2
+
3
+ Screen every candidate before synthesis. A red flag is a reason to revise or reject the shape.
4
+
5
+ ## Shallow module
6
+
7
+ A shallow module exposes a large interface while hiding little complexity. Judge depth by the capability and policy hidden behind the public surface relative to the size of that surface. Prefer a simple interface backed by substantial behavior.
8
+
9
+ Do not confuse a deep module with a deep call chain. A deep call chain scatters understanding across layers. A deep module concentrates capability behind one interface.
10
+
11
+ Look for these signs:
12
+
13
+ - Callers coordinate several methods to complete one operation.
14
+ - Public options expose internal stages or implementation choices.
15
+ - Learning the interface does not save the caller from learning the implementation.
16
+
17
+ ## Information leakage
18
+
19
+ Information leakage makes multiple modules depend on the same internal decision. A representation, policy, or protocol detail appears in more than one place, so changing it requires coordinated edits.
20
+
21
+ Public re-exports of transport or wire types are leakage. Parse external data into domain types behind the interface. Keep storage schemas, framework objects, and protocol details private.
22
+
23
+ ## Temporal decomposition
24
+
25
+ Temporal decomposition organizes modules by execution order instead of the knowledge they own. Separate load, validate, transform, and save stages often repeat one representation and its invariants across several boundaries.
26
+
27
+ Group code around domain knowledge and ownership. Methods that run at different times can still belong to one module when they protect the same decisions.
28
+
29
+ ## Pass-through method
30
+
31
+ A pass-through method forwards the same arguments to another method with the same shape. It adds a layer without hiding complexity.
32
+
33
+ Remove it or move responsibility to the module that can complete the operation. Keep a forwarding boundary only when it adds policy, adaptation, or a distinct abstraction.
34
+
35
+ ## Split ownership
36
+
37
+ More than one module writes the same state or keeps its own copy of it. An agent that edits one writer can't see the others, so their rules diverge.
38
+
39
+ Give each piece of state one owner. Other modules read it or ask the owner to change it.
40
+
41
+ ## Two ways to do one task
42
+
43
+ The design supports more than one way to do the same task. An agent copies whichever way it finds first, so every way keeps gaining callers.
44
+
45
+ Keep one way. Move callers off the others and delete them in the same change.
46
+
47
+ ## Importable internals
48
+
49
+ A caller can import a module's internals. An agent takes the shortest path that compiles, so it imports them directly and they become part of the interface.
50
+
51
+ Make internals unreachable from outside the module, so an import from outside fails the build.
52
+
53
+ ## Hand-synced list
54
+
55
+ Two or more places list the same items, and adding an item means editing every list. An agent that sees one list updates only that one.
56
+
57
+ Keep one list and derive the others from it. If a list can't be derived, make the build fail when the lists disagree.