dsh-super-code 0.3.11 → 0.4.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 (907) hide show
  1. package/LICENSE +1 -1
  2. package/README.en.md +50 -18
  3. package/README.md +50 -18
  4. package/builtin/README.md +22 -0
  5. package/builtin/skills/mattpocock/LICENSE +21 -0
  6. package/builtin/skills/mattpocock/UPSTREAM.md +11 -0
  7. package/builtin/skills/mattpocock/distribution.json +352 -0
  8. package/builtin/skills/mattpocock/skills/ask-matt/PHASE-BOUNDARIES.md +55 -0
  9. package/builtin/skills/mattpocock/skills/ask-matt/SKILL.md +97 -0
  10. package/builtin/skills/mattpocock/skills/ask-matt/agents/openai.yaml +5 -0
  11. package/builtin/skills/mattpocock/skills/code-review/SKILL.md +89 -0
  12. package/builtin/skills/mattpocock/skills/code-review/agents/openai.yaml +3 -0
  13. package/builtin/skills/mattpocock/skills/codebase-design/DEEPENING.md +37 -0
  14. package/builtin/skills/mattpocock/skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
  15. package/builtin/skills/mattpocock/skills/codebase-design/SKILL.md +114 -0
  16. package/builtin/skills/mattpocock/skills/codebase-design/agents/openai.yaml +3 -0
  17. package/builtin/skills/mattpocock/skills/diagnosing-bugs/SKILL.md +138 -0
  18. package/builtin/skills/mattpocock/skills/diagnosing-bugs/agents/openai.yaml +3 -0
  19. package/builtin/skills/mattpocock/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +44 -0
  20. package/builtin/skills/mattpocock/skills/domain-modeling/ADR-FORMAT.md +47 -0
  21. package/builtin/skills/mattpocock/skills/domain-modeling/GLOSSARY-FORMAT.md +60 -0
  22. package/builtin/skills/mattpocock/skills/domain-modeling/SKILL.md +74 -0
  23. package/builtin/skills/mattpocock/skills/domain-modeling/agents/openai.yaml +3 -0
  24. package/builtin/skills/mattpocock/skills/grill-me/SKILL.md +7 -0
  25. package/builtin/skills/mattpocock/skills/grill-me/agents/openai.yaml +5 -0
  26. package/builtin/skills/mattpocock/skills/grill-with-docs/SKILL.md +7 -0
  27. package/builtin/skills/mattpocock/skills/grill-with-docs/agents/openai.yaml +5 -0
  28. package/builtin/skills/mattpocock/skills/grilling/SKILL.md +30 -0
  29. package/builtin/skills/mattpocock/skills/grilling/agents/openai.yaml +3 -0
  30. package/builtin/skills/mattpocock/skills/handoff/SKILL.md +16 -0
  31. package/builtin/skills/mattpocock/skills/handoff/agents/openai.yaml +5 -0
  32. package/builtin/skills/mattpocock/skills/implement/SKILL.md +17 -0
  33. package/builtin/skills/mattpocock/skills/implement/agents/openai.yaml +5 -0
  34. package/builtin/skills/mattpocock/skills/implement-spec/SKILL.md +42 -0
  35. package/builtin/skills/mattpocock/skills/implement-spec/agents/openai.yaml +5 -0
  36. package/builtin/skills/mattpocock/skills/improve-codebase-architecture/HTML-REPORT.md +123 -0
  37. package/builtin/skills/mattpocock/skills/improve-codebase-architecture/SKILL.md +71 -0
  38. package/builtin/skills/mattpocock/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
  39. package/builtin/skills/mattpocock/skills/pr/CREDITS.md +3 -0
  40. package/builtin/skills/mattpocock/skills/pr/SKILL.md +170 -0
  41. package/builtin/skills/mattpocock/skills/pr/agents/openai.yaml +3 -0
  42. package/builtin/skills/mattpocock/skills/prototype/LOGIC.md +67 -0
  43. package/builtin/skills/mattpocock/skills/prototype/SKILL.md +26 -0
  44. package/builtin/skills/mattpocock/skills/prototype/UI.md +112 -0
  45. package/builtin/skills/mattpocock/skills/prototype/agents/openai.yaml +3 -0
  46. package/builtin/skills/mattpocock/skills/research/SKILL.md +12 -0
  47. package/builtin/skills/mattpocock/skills/research/agents/openai.yaml +3 -0
  48. package/builtin/skills/mattpocock/skills/retro/SKILL.md +44 -0
  49. package/builtin/skills/mattpocock/skills/retro/agents/openai.yaml +5 -0
  50. package/builtin/skills/mattpocock/skills/setup-matt-pocock-skills/SKILL.md +120 -0
  51. package/builtin/skills/mattpocock/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  52. package/builtin/skills/mattpocock/skills/setup-matt-pocock-skills/domain.md +51 -0
  53. package/builtin/skills/mattpocock/skills/setup-matt-pocock-skills/issue-tracker-github.md +50 -0
  54. package/builtin/skills/mattpocock/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +46 -0
  55. package/builtin/skills/mattpocock/skills/setup-matt-pocock-skills/issue-tracker-local.md +30 -0
  56. package/builtin/skills/mattpocock/skills/setup-matt-pocock-skills/triage-labels.md +15 -0
  57. package/builtin/skills/mattpocock/skills/tdd/SKILL.md +38 -0
  58. package/builtin/skills/mattpocock/skills/tdd/agents/openai.yaml +3 -0
  59. package/builtin/skills/mattpocock/skills/tdd/mocking.md +59 -0
  60. package/builtin/skills/mattpocock/skills/tdd/tests.md +77 -0
  61. package/builtin/skills/mattpocock/skills/teach/GLOSSARY-FORMAT.md +35 -0
  62. package/builtin/skills/mattpocock/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
  63. package/builtin/skills/mattpocock/skills/teach/MISSION-FORMAT.md +31 -0
  64. package/builtin/skills/mattpocock/skills/teach/RESOURCES-FORMAT.md +32 -0
  65. package/builtin/skills/mattpocock/skills/teach/SKILL.md +140 -0
  66. package/builtin/skills/mattpocock/skills/teach/agents/openai.yaml +5 -0
  67. package/builtin/skills/mattpocock/skills/to-questionnaire/SKILL.md +54 -0
  68. package/builtin/skills/mattpocock/skills/to-questionnaire/agents/openai.yaml +5 -0
  69. package/builtin/skills/mattpocock/skills/to-spec/SKILL.md +75 -0
  70. package/builtin/skills/mattpocock/skills/to-spec/agents/openai.yaml +5 -0
  71. package/builtin/skills/mattpocock/skills/to-tickets/SKILL.md +105 -0
  72. package/builtin/skills/mattpocock/skills/to-tickets/agents/openai.yaml +5 -0
  73. package/builtin/skills/mattpocock/skills/triage/AGENT-BRIEF.md +207 -0
  74. package/builtin/skills/mattpocock/skills/triage/OUT-OF-SCOPE.md +105 -0
  75. package/builtin/skills/mattpocock/skills/triage/SKILL.md +112 -0
  76. package/builtin/skills/mattpocock/skills/triage/agents/openai.yaml +5 -0
  77. package/builtin/skills/mattpocock/skills/wait-what/SKILL.md +7 -0
  78. package/builtin/skills/mattpocock/skills/wait-what/agents/openai.yaml +5 -0
  79. package/builtin/skills/mattpocock/skills/wayfinder/SKILL.md +128 -0
  80. package/builtin/skills/mattpocock/skills/wayfinder/agents/openai.yaml +5 -0
  81. package/builtin/skills/mattpocock/skills/wizard/SKILL.md +44 -0
  82. package/builtin/skills/mattpocock/skills/wizard/agents/openai.yaml +3 -0
  83. package/builtin/skills/mattpocock/skills/wizard/template.sh +223 -0
  84. package/builtin/skills/mattpocock/skills/writing-for-agents/SKILL-MECHANICS.md +22 -0
  85. package/builtin/skills/mattpocock/skills/writing-for-agents/SKILL.md +81 -0
  86. package/builtin/skills/mattpocock/skills/writing-for-agents/agents/openai.yaml +3 -0
  87. package/builtin/skills/oil-ui/LICENSE +21 -0
  88. package/builtin/skills/oil-ui/SKILL.md +163 -0
  89. package/builtin/skills/oil-ui/UPSTREAM.md +14 -0
  90. package/builtin/skills/oil-ui/assets/fonts/instrument-serif/InstrumentSerif-Regular.ttf +0 -0
  91. package/builtin/skills/oil-ui/assets/fonts/instrument-serif/OFL.txt +93 -0
  92. package/builtin/skills/oil-ui/assets/logo.png +0 -0
  93. package/builtin/skills/oil-ui/assets/style-explorer.html +433 -0
  94. package/builtin/skills/oil-ui/distribution.json +5 -0
  95. package/builtin/skills/oil-ui/references/design-direction.md +233 -0
  96. package/builtin/skills/oil-ui/references/direction-persuasion.md +25 -0
  97. package/builtin/skills/oil-ui/references/image-ideation.md +130 -0
  98. package/builtin/skills/oil-ui/references/layout-and-viewport.md +24 -0
  99. package/builtin/skills/oil-ui/references/media.md +158 -0
  100. package/builtin/skills/oil-ui/references/motion.md +123 -0
  101. package/builtin/skills/oil-ui/references/play.md +29 -0
  102. package/builtin/skills/oil-ui/references/reviewer-manual.md +73 -0
  103. package/builtin/skills/oil-ui/references/scroll-narrative.md +97 -0
  104. package/builtin/skills/oil-ui/references/style-explorer.md +48 -0
  105. package/builtin/skills/oil-ui/references/task-explore.md +28 -0
  106. package/builtin/skills/oil-ui/references/task-review.md +8 -0
  107. package/builtin/skills/oil-ui/references/tools.md +75 -0
  108. package/builtin/skills/oil-ui/references/ux-review.md +23 -0
  109. package/builtin/skills/oil-ui/references/ux-reviewer.md +10 -0
  110. package/builtin/skills/oil-ui/references/visual-language.md +103 -0
  111. package/builtin/skills/oil-ui/references/visual-review.md +35 -0
  112. package/builtin/skills/oil-ui/references/workdir.md +64 -0
  113. package/builtin/skills/oil-ui/scripts/build_explorer.py +958 -0
  114. package/builtin/skills/oil-ui/scripts/chrome.mjs +115 -0
  115. package/builtin/skills/oil-ui/scripts/curate-media.mjs +726 -0
  116. package/builtin/skills/oil-ui/scripts/measure_reference.py +543 -0
  117. package/builtin/skills/oil-ui/scripts/oiloil-image.mjs +388 -0
  118. package/builtin/skills/oil-ui/scripts/prep-image.mjs +287 -0
  119. package/builtin/skills/oil-ui/scripts/recommend_once.py +65 -0
  120. package/builtin/skills/oil-ui/scripts/shoot.mjs +2067 -0
  121. package/builtin/skills/openspec/LICENSE +22 -0
  122. package/builtin/skills/openspec/UPSTREAM.md +11 -0
  123. package/builtin/skills/openspec/distribution.json +73 -0
  124. package/builtin/skills/openspec/skills/README.md +19 -0
  125. package/builtin/skills/openspec/skills/openspec-apply-change/SKILL.md +205 -0
  126. package/builtin/skills/openspec/skills/openspec-archive-change/SKILL.md +220 -0
  127. package/builtin/skills/openspec/skills/openspec-bulk-archive-change/SKILL.md +376 -0
  128. package/builtin/skills/openspec/skills/openspec-continue-change/SKILL.md +137 -0
  129. package/builtin/skills/openspec/skills/openspec-explore/SKILL.md +355 -0
  130. package/builtin/skills/openspec/skills/openspec-ff-change/SKILL.md +128 -0
  131. package/builtin/skills/openspec/skills/openspec-new-change/SKILL.md +87 -0
  132. package/builtin/skills/openspec/skills/openspec-onboard/SKILL.md +574 -0
  133. package/builtin/skills/openspec/skills/openspec-propose/SKILL.md +174 -0
  134. package/builtin/skills/openspec/skills/openspec-sync-specs/SKILL.md +289 -0
  135. package/builtin/skills/openspec/skills/openspec-update-change/SKILL.md +108 -0
  136. package/builtin/skills/openspec/skills/openspec-verify-change/SKILL.md +222 -0
  137. package/builtin/skills/pstack/LICENSE +21 -0
  138. package/builtin/skills/pstack/UPSTREAM.md +17 -0
  139. package/builtin/skills/pstack/distribution.json +2299 -0
  140. package/builtin/skills/pstack/dsh/DSH.md +59 -0
  141. package/builtin/skills/pstack/dsh/LICENSE +21 -0
  142. package/builtin/skills/pstack/dsh/README.md +9 -0
  143. package/builtin/skills/pstack/dsh/adaptation.json +2930 -0
  144. package/builtin/skills/pstack/dsh/agents/comment-sicko.md +32 -0
  145. package/builtin/skills/pstack/dsh/agents/poteto-agent.md +5 -0
  146. package/builtin/skills/pstack/dsh/assets/logo.png +0 -0
  147. package/builtin/skills/pstack/dsh/authoring.md +7 -0
  148. package/builtin/skills/pstack/dsh/docs/guide/01-setup.md +68 -0
  149. package/builtin/skills/pstack/dsh/docs/guide/02-poteto-mode.md +141 -0
  150. package/builtin/skills/pstack/dsh/docs/guide/03-understand.md +81 -0
  151. package/builtin/skills/pstack/dsh/docs/guide/04-design.md +135 -0
  152. package/builtin/skills/pstack/dsh/docs/guide/05-build-and-clean.md +85 -0
  153. package/builtin/skills/pstack/dsh/docs/guide/06-verify-and-ship.md +164 -0
  154. package/builtin/skills/pstack/dsh/docs/guide/07-overnight.md +124 -0
  155. package/builtin/skills/pstack/dsh/docs/guide/08-principles.md +74 -0
  156. package/builtin/skills/pstack/dsh/docs/guide/09-make-it-yours.md +102 -0
  157. package/builtin/skills/pstack/dsh/docs/guide/10-recipes-and-pitfalls.md +184 -0
  158. package/builtin/skills/pstack/dsh/docs/guide/README.md +40 -0
  159. package/builtin/skills/pstack/dsh/docs/guide/images/design.jpg +0 -0
  160. package/builtin/skills/pstack/dsh/docs/guide/images/overnight.jpg +0 -0
  161. package/builtin/skills/pstack/dsh/docs/guide/images/recipes.jpg +0 -0
  162. package/builtin/skills/pstack/dsh/docs/guide/images/router.jpg +0 -0
  163. package/builtin/skills/pstack/dsh/docs/guide/images/understanding.jpg +0 -0
  164. package/builtin/skills/pstack/dsh/docs/guide/images/verification.jpg +0 -0
  165. package/builtin/skills/pstack/dsh/docs/harness/claude-code.md +69 -0
  166. package/builtin/skills/pstack/dsh/scripts/capture.mjs +80 -0
  167. package/builtin/skills/pstack/dsh/skills/architect/SKILL.md +82 -0
  168. package/builtin/skills/pstack/dsh/skills/architect/references/design-red-flags.md +57 -0
  169. package/builtin/skills/pstack/dsh/skills/architect/references/rationale-template.md +35 -0
  170. package/builtin/skills/pstack/dsh/skills/architect/references/runner-prompt.md +20 -0
  171. package/builtin/skills/pstack/dsh/skills/arena/SKILL.md +51 -0
  172. package/builtin/skills/pstack/dsh/skills/automate-me/SKILL.md +19 -0
  173. package/builtin/skills/pstack/dsh/skills/benchmark-checklist/SKILL.md +42 -0
  174. package/builtin/skills/pstack/dsh/skills/blast-radius/SKILL.md +53 -0
  175. package/builtin/skills/pstack/dsh/skills/bro/SKILL.md +10 -0
  176. package/builtin/skills/pstack/dsh/skills/correct/SKILL.md +35 -0
  177. package/builtin/skills/pstack/dsh/skills/create-formal-verification-skill/SKILL.md +46 -0
  178. package/builtin/skills/pstack/dsh/skills/create-verification-skill/SKILL.md +47 -0
  179. package/builtin/skills/pstack/dsh/skills/create-verification-skill/references/feature-map-example/README.md +47 -0
  180. package/builtin/skills/pstack/dsh/skills/create-verification-skill/references/feature-map-example/create-note.md +39 -0
  181. package/builtin/skills/pstack/dsh/skills/create-verification-skill/references/feature-map-example/search.md +45 -0
  182. package/builtin/skills/pstack/dsh/skills/figure-it-out/SKILL.md +55 -0
  183. package/builtin/skills/pstack/dsh/skills/how/SKILL.md +39 -0
  184. package/builtin/skills/pstack/dsh/skills/how/references/explainer-prompt.md +55 -0
  185. package/builtin/skills/pstack/dsh/skills/how/references/explorer-prompt.md +35 -0
  186. package/builtin/skills/pstack/dsh/skills/in-your-own-words/SKILL.md +10 -0
  187. package/builtin/skills/pstack/dsh/skills/interrogate/SKILL.md +34 -0
  188. package/builtin/skills/pstack/dsh/skills/ketchup/SKILL.md +46 -0
  189. package/builtin/skills/pstack/dsh/skills/ketchup-video/SKILL.md +32 -0
  190. package/builtin/skills/pstack/dsh/skills/maintain-formal-verification-skill/SKILL.md +61 -0
  191. package/builtin/skills/pstack/dsh/skills/maintain-verification-skill/SKILL.md +42 -0
  192. package/builtin/skills/pstack/dsh/skills/make-bot-ui/SKILL.md +22 -0
  193. package/builtin/skills/pstack/dsh/skills/make-bot-ui/references/submissions.md +44 -0
  194. package/builtin/skills/pstack/dsh/skills/make-bot-ui/scripts/submissions.mjs +86 -0
  195. package/builtin/skills/pstack/dsh/skills/no-comments/SKILL.md +27 -0
  196. package/builtin/skills/pstack/dsh/skills/poteto-help/SKILL.md +42 -0
  197. package/builtin/skills/pstack/dsh/skills/poteto-help/references/prompting.md +51 -0
  198. package/builtin/skills/pstack/dsh/skills/poteto-help/references/recipes.md +51 -0
  199. package/builtin/skills/pstack/dsh/skills/poteto-mode/SKILL.md +153 -0
  200. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/authoring-a-skill.md +8 -0
  201. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/autonomous-run.md +12 -0
  202. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/autopilot-full.md +25 -0
  203. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/autopilot-stack.md +8 -0
  204. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/babysit.md +23 -0
  205. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/bug-fix.md +15 -0
  206. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/eval.md +25 -0
  207. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/feature.md +21 -0
  208. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/hillclimb.md +21 -0
  209. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/investigation.md +14 -0
  210. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/multi-phase-plan.md +155 -0
  211. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/opening-a-pr.md +34 -0
  212. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/orchestrate.md +14 -0
  213. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/pause-safely.md +8 -0
  214. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/perf-issue.md +25 -0
  215. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/prototype.md +14 -0
  216. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/refactoring.md +16 -0
  217. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/runtime-forensics.md +11 -0
  218. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/session-pickup.md +9 -0
  219. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/shipping.md +12 -0
  220. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/trace-forensics.md +14 -0
  221. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/visual-parity.md +11 -0
  222. package/builtin/skills/pstack/dsh/skills/poteto-mode/playbooks/worktree-cleanup.md +9 -0
  223. package/builtin/skills/pstack/dsh/skills/poteto-mode/references/bugbot-triage.md +142 -0
  224. package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/bootstrap.ts +62 -0
  225. package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/bun.lock +67 -0
  226. package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/check-plan.mjs +205 -0
  227. package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/check-plan.test.ts +110 -0
  228. package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/package.json +16 -0
  229. package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/cli.test.ts +224 -0
  230. package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/cli.ts +223 -0
  231. package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/fakes.test-helper.ts +129 -0
  232. package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/github.test.ts +498 -0
  233. package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/github.ts +726 -0
  234. package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/policy.test.ts +482 -0
  235. package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/policy.ts +842 -0
  236. package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/render.ts +169 -0
  237. package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/tsconfig.json +13 -0
  238. package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/types.compile.ts +93 -0
  239. package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/types.ts +414 -0
  240. package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/watch-pr/watch-pr +6 -0
  241. package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/worktree-audit.mjs +52 -0
  242. package/builtin/skills/pstack/dsh/skills/poteto-mode/scripts/worktree-audit.sh +4 -0
  243. package/builtin/skills/pstack/dsh/skills/principle-attack-the-premise/SKILL.md +24 -0
  244. package/builtin/skills/pstack/dsh/skills/principle-boundary-discipline/SKILL.md +37 -0
  245. package/builtin/skills/pstack/dsh/skills/principle-build-the-lever/SKILL.md +26 -0
  246. package/builtin/skills/pstack/dsh/skills/principle-encode-lessons-in-structure/SKILL.md +14 -0
  247. package/builtin/skills/pstack/dsh/skills/principle-exhaust-the-design-space/SKILL.md +12 -0
  248. package/builtin/skills/pstack/dsh/skills/principle-experience-first/SKILL.md +22 -0
  249. package/builtin/skills/pstack/dsh/skills/principle-explain-the-number/SKILL.md +21 -0
  250. package/builtin/skills/pstack/dsh/skills/principle-fix-root-causes/SKILL.md +24 -0
  251. package/builtin/skills/pstack/dsh/skills/principle-foundational-thinking/SKILL.md +24 -0
  252. package/builtin/skills/pstack/dsh/skills/principle-guard-the-context-window/SKILL.md +15 -0
  253. package/builtin/skills/pstack/dsh/skills/principle-laziness-protocol/SKILL.md +13 -0
  254. package/builtin/skills/pstack/dsh/skills/principle-make-operations-idempotent/SKILL.md +25 -0
  255. package/builtin/skills/pstack/dsh/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md +17 -0
  256. package/builtin/skills/pstack/dsh/skills/principle-minimize-reader-load/SKILL.md +21 -0
  257. package/builtin/skills/pstack/dsh/skills/principle-model-the-domain/SKILL.md +27 -0
  258. package/builtin/skills/pstack/dsh/skills/principle-never-block-on-the-human/SKILL.md +18 -0
  259. package/builtin/skills/pstack/dsh/skills/principle-outcome-oriented-execution/SKILL.md +24 -0
  260. package/builtin/skills/pstack/dsh/skills/principle-prove-it-works/SKILL.md +25 -0
  261. package/builtin/skills/pstack/dsh/skills/principle-redesign-from-first-principles/SKILL.md +19 -0
  262. package/builtin/skills/pstack/dsh/skills/principle-separate-before-serializing-shared-state/SKILL.md +19 -0
  263. package/builtin/skills/pstack/dsh/skills/principle-sequence-verifiable-units/SKILL.md +20 -0
  264. package/builtin/skills/pstack/dsh/skills/principle-subtract-before-you-add/SKILL.md +21 -0
  265. package/builtin/skills/pstack/dsh/skills/principle-test-behavior-not-implementation/SKILL.md +23 -0
  266. package/builtin/skills/pstack/dsh/skills/principle-type-system-discipline/SKILL.md +16 -0
  267. package/builtin/skills/pstack/dsh/skills/recall/SKILL.md +19 -0
  268. package/builtin/skills/pstack/dsh/skills/reflect/SKILL.md +19 -0
  269. package/builtin/skills/pstack/dsh/skills/reflect/references/divergent-reviewer.md +38 -0
  270. package/builtin/skills/pstack/dsh/skills/reflect/references/judgment-reviewer.md +37 -0
  271. package/builtin/skills/pstack/dsh/skills/reflect/references/synthesizer.md +56 -0
  272. package/builtin/skills/pstack/dsh/skills/reflect/references/tooling-reviewer.md +48 -0
  273. package/builtin/skills/pstack/dsh/skills/setup-pstack/SKILL.md +80 -0
  274. package/builtin/skills/pstack/dsh/skills/sharpen/SKILL.md +19 -0
  275. package/builtin/skills/pstack/dsh/skills/show-me-your-work/SKILL.md +85 -0
  276. package/builtin/skills/pstack/dsh/skills/show-me-your-work/references/decision-log-template.tsv +1 -0
  277. package/builtin/skills/pstack/dsh/skills/show-me-your-work/scripts/audit-log.mjs +43 -0
  278. package/builtin/skills/pstack/dsh/skills/show-me-your-work/scripts/log.sh +42 -0
  279. package/builtin/skills/pstack/dsh/skills/statechart/SKILL.md +85 -0
  280. package/builtin/skills/pstack/dsh/skills/statechart/references/render.md +93 -0
  281. package/builtin/skills/pstack/dsh/skills/statechart/scripts/backends/cfg.mjs +31 -0
  282. package/builtin/skills/pstack/dsh/skills/statechart/scripts/backends/cfg.ts +33 -0
  283. package/builtin/skills/pstack/dsh/skills/statechart/scripts/backends/mermaid.mjs +223 -0
  284. package/builtin/skills/pstack/dsh/skills/statechart/scripts/backends/mermaid.ts +201 -0
  285. package/builtin/skills/pstack/dsh/skills/statechart/scripts/backends/plain-text.mjs +68 -0
  286. package/builtin/skills/pstack/dsh/skills/statechart/scripts/backends/plain-text.ts +72 -0
  287. package/builtin/skills/pstack/dsh/skills/statechart/scripts/backends/report.mjs +123 -0
  288. package/builtin/skills/pstack/dsh/skills/statechart/scripts/backends/report.ts +177 -0
  289. package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/config.mjs +258 -0
  290. package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/config.ts +276 -0
  291. package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/dot.mjs +68 -0
  292. package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/dot.ts +74 -0
  293. package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/marks.mjs +102 -0
  294. package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/marks.ts +93 -0
  295. package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/messages.mjs +53 -0
  296. package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/messages.ts +52 -0
  297. package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/spec.mjs +89 -0
  298. package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/spec.ts +114 -0
  299. package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/trace.mjs +24 -0
  300. package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/trace.ts +24 -0
  301. package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/value.mjs +181 -0
  302. package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/value.ts +166 -0
  303. package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/verdict.mjs +38 -0
  304. package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/verdict.ts +40 -0
  305. package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/view.mjs +107 -0
  306. package/builtin/skills/pstack/dsh/skills/statechart/scripts/frontends/view.ts +119 -0
  307. package/builtin/skills/pstack/dsh/skills/statechart/scripts/ir.mjs +317 -0
  308. package/builtin/skills/pstack/dsh/skills/statechart/scripts/ir.ts +547 -0
  309. package/builtin/skills/pstack/dsh/skills/statechart/scripts/package.json +11 -0
  310. package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/annotate.mjs +102 -0
  311. package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/annotate.ts +128 -0
  312. package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/label.mjs +217 -0
  313. package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/label.ts +269 -0
  314. package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/lift.mjs +89 -0
  315. package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/lift.ts +85 -0
  316. package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/loop-check.mjs +57 -0
  317. package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/loop-check.ts +68 -0
  318. package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/paths.mjs +50 -0
  319. package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/paths.ts +60 -0
  320. package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/reach.mjs +134 -0
  321. package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/reach.ts +135 -0
  322. package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/region-check.mjs +94 -0
  323. package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/region-check.ts +97 -0
  324. package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/regions.mjs +296 -0
  325. package/builtin/skills/pstack/dsh/skills/statechart/scripts/passes/regions.ts +295 -0
  326. package/builtin/skills/pstack/dsh/skills/statechart/scripts/pipeline.mjs +63 -0
  327. package/builtin/skills/pstack/dsh/skills/statechart/scripts/pipeline.ts +76 -0
  328. package/builtin/skills/pstack/dsh/skills/statechart/scripts/run.mjs +432 -0
  329. package/builtin/skills/pstack/dsh/skills/statechart/scripts/run.ts +481 -0
  330. package/builtin/skills/pstack/dsh/skills/statechart/scripts/statechart +29 -0
  331. package/builtin/skills/pstack/dsh/skills/statechart/scripts/statechart.mjs +149 -0
  332. package/builtin/skills/pstack/dsh/skills/statechart/scripts/statechart.ts +164 -0
  333. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/ConfigOracle.java +63 -0
  334. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/chart.test.ts +1210 -0
  335. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/charts/Braces.mmd +7 -0
  336. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/charts/Escapes.mmd +11 -0
  337. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/charts/Phases.mmd +29 -0
  338. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/cli.test.ts +1314 -0
  339. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/config-fuzz.test.ts +263 -0
  340. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Counter/ChartRun.out +57 -0
  341. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Counter/Counter.cfg +3 -0
  342. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Counter/Counter.tla +10 -0
  343. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Counter/chart.mmd +9 -0
  344. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Counter/graph.dot +16 -0
  345. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Counter/report.md +7 -0
  346. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Counter/sany.out +2 -0
  347. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Counter/verdict-1.out +49 -0
  348. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/ChartRun.out +60 -0
  349. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/CounterAction.cfg +4 -0
  350. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/CounterAction.tla +22 -0
  351. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/chart.mmd +26 -0
  352. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/graph.dot +19 -0
  353. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/report.md +20 -0
  354. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/sany.out +2 -0
  355. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/verdict-1.exit +1 -0
  356. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/verdict-1.out +56 -0
  357. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/verdict-2.exit +1 -0
  358. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/verdict-2.out +82 -0
  359. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterAction/verdict-3.out +57 -0
  360. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/ChartRun.out +59 -0
  361. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/CounterDeadlock.cfg +3 -0
  362. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/CounterDeadlock.tla +11 -0
  363. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/chart.mmd +22 -0
  364. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/graph.dot +16 -0
  365. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/report.md +17 -0
  366. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/sany.out +2 -0
  367. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-1.exit +1 -0
  368. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-1.out +56 -0
  369. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-2.exit +1 -0
  370. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-2.out +77 -0
  371. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterFan/ChartRun.out +69 -0
  372. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterFan/CounterFan.cfg +2 -0
  373. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterFan/CounterFan.tla +11 -0
  374. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterFan/chart.mmd +85 -0
  375. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterFan/graph.dot +70 -0
  376. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterFan/report.md +12 -0
  377. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterFan/sany.out +2 -0
  378. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterFan/verdict-1.exit +1 -0
  379. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterFan/verdict-1.out +67 -0
  380. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterFan/verdict-2.out +57 -0
  381. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/ChartRun.exit +1 -0
  382. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/ChartRun.out +85 -0
  383. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/CounterGuard.cfg +6 -0
  384. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/CounterGuard.tla +13 -0
  385. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/chart.mmd +5 -0
  386. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/graph.dot +10 -0
  387. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/report.md +31 -0
  388. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/sany.out +2 -0
  389. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/verdict-1.exit +1 -0
  390. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/verdict-1.out +64 -0
  391. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/verdict-2.exit +1 -0
  392. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterGuard/verdict-2.out +77 -0
  393. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPast/ChartRun.out +55 -0
  394. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPast/CounterInitPast.cfg +3 -0
  395. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPast/CounterInitPast.tla +10 -0
  396. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPast/chart.mmd +12 -0
  397. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPast/graph.dot +6 -0
  398. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPast/report.md +12 -0
  399. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPast/sany.out +2 -0
  400. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-1.exit +1 -0
  401. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-1.out +33 -0
  402. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-2.out +54 -0
  403. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPastHolds/ChartRun.out +54 -0
  404. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPastHolds/CounterInitPastHolds.cfg +3 -0
  405. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPastHolds/CounterInitPastHolds.tla +10 -0
  406. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPastHolds/chart.mmd +1 -0
  407. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPastHolds/graph.dot +6 -0
  408. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPastHolds/report.md +7 -0
  409. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPastHolds/sany.out +2 -0
  410. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInitPastHolds/verdict-1.out +46 -0
  411. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInstance/ChartRun.out +59 -0
  412. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInstance/CounterInstance.cfg +2 -0
  413. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInstance/CounterInstance.tla +10 -0
  414. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInstance/CounterSteps.tla +6 -0
  415. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInstance/chart.mmd +17 -0
  416. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInstance/graph.dot +15 -0
  417. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInstance/report.md +14 -0
  418. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInstance/sany.out +3 -0
  419. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInstance/verdict-1.exit +1 -0
  420. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterInstance/verdict-1.out +78 -0
  421. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterJump/ChartRun.out +59 -0
  422. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterJump/CounterJump.cfg +3 -0
  423. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterJump/CounterJump.tla +19 -0
  424. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterJump/chart.mmd +26 -0
  425. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterJump/graph.dot +22 -0
  426. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterJump/report.md +12 -0
  427. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterJump/sany.out +2 -0
  428. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterJump/verdict-1.exit +1 -0
  429. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterJump/verdict-1.out +58 -0
  430. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterJump/verdict-2.out +57 -0
  431. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterLoop/ChartRun.out +57 -0
  432. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterLoop/CounterLoop.cfg +2 -0
  433. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterLoop/CounterLoop.tla +11 -0
  434. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterLoop/chart.mmd +17 -0
  435. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterLoop/graph.dot +15 -0
  436. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterLoop/report.md +14 -0
  437. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterLoop/sany.out +2 -0
  438. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterLoop/verdict-1.exit +1 -0
  439. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterLoop/verdict-1.out +76 -0
  440. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/ChartRun.out +59 -0
  441. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/CounterOrder.cfg +3 -0
  442. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/CounterOrder.tla +11 -0
  443. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/chart.mmd +19 -0
  444. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/graph.dot +10 -0
  445. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/report.md +15 -0
  446. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/sany.out +2 -0
  447. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/verdict-1.exit +1 -0
  448. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/verdict-1.out +56 -0
  449. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/verdict-2.exit +1 -0
  450. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterOrder/verdict-2.out +67 -0
  451. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/ChartRun.out +62 -0
  452. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/CounterRules.cfg +6 -0
  453. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/CounterRules.tla +24 -0
  454. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/Moves.tla +5 -0
  455. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/chart.mmd +22 -0
  456. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/graph.dot +10 -0
  457. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/report.md +23 -0
  458. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/sany.out +3 -0
  459. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/verdict-1.exit +1 -0
  460. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/verdict-1.out +58 -0
  461. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/verdict-2.exit +1 -0
  462. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/verdict-2.out +66 -0
  463. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/verdict-3.exit +1 -0
  464. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/verdict-3.out +74 -0
  465. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterRules/verdict-4.out +59 -0
  466. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStart/ChartRun.out +58 -0
  467. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStart/CounterStart.cfg +3 -0
  468. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStart/CounterStart.tla +15 -0
  469. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStart/chart.mmd +18 -0
  470. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStart/graph.dot +13 -0
  471. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStart/report.md +11 -0
  472. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStart/sany.out +2 -0
  473. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStart/verdict-1.exit +1 -0
  474. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStart/verdict-1.out +33 -0
  475. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStart/verdict-2.out +57 -0
  476. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStop/ChartRun.out +57 -0
  477. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStop/CounterStop.cfg +3 -0
  478. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStop/CounterStop.tla +15 -0
  479. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStop/chart.mmd +7 -0
  480. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStop/graph.dot +13 -0
  481. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStop/report.md +6 -0
  482. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStop/sany.out +2 -0
  483. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterStop/verdict-1.out +49 -0
  484. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/ChartRun.out +61 -0
  485. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/CounterTie.cfg +4 -0
  486. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/CounterTie.tla +14 -0
  487. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/chart.mmd +30 -0
  488. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/graph.dot +19 -0
  489. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/report.md +27 -0
  490. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/sany.out +2 -0
  491. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/verdict-1.exit +1 -0
  492. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/verdict-1.out +56 -0
  493. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/verdict-2.exit +1 -0
  494. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/verdict-2.out +64 -0
  495. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/verdict-3.exit +1 -0
  496. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/verdict-3.out +87 -0
  497. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTie/verdict-4.out +57 -0
  498. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTieInGraph/ChartRun.out +60 -0
  499. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTieInGraph/CounterTieInGraph.cfg +3 -0
  500. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTieInGraph/CounterTieInGraph.tla +12 -0
  501. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTieInGraph/chart.mmd +23 -0
  502. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTieInGraph/graph.dot +19 -0
  503. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTieInGraph/report.md +11 -0
  504. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTieInGraph/sany.out +2 -0
  505. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-1.exit +1 -0
  506. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-1.out +56 -0
  507. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-2.out +57 -0
  508. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/ChartRun.out +61 -0
  509. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/CounterView.cfg +4 -0
  510. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/CounterView.tla +14 -0
  511. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/chart.mmd +23 -0
  512. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/graph.dot +19 -0
  513. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/report.md +27 -0
  514. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/sany.out +2 -0
  515. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/verdict-1.exit +1 -0
  516. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/verdict-1.out +56 -0
  517. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/verdict-2.exit +1 -0
  518. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/verdict-2.out +64 -0
  519. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/verdict-3.exit +1 -0
  520. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/verdict-3.out +87 -0
  521. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/verdict-4.out +57 -0
  522. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/CounterView/view.mjs +1 -0
  523. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/DieHard/ChartRun.out +59 -0
  524. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/DieHard/DieHard.cfg +4 -0
  525. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/DieHard/DieHard.tla +38 -0
  526. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/DieHard/chart.mmd +92 -0
  527. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/DieHard/graph.dot +126 -0
  528. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/DieHard/report.md +17 -0
  529. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/DieHard/sany.out +2 -0
  530. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/DieHard/verdict-1.exit +1 -0
  531. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/DieHard/verdict-1.out +91 -0
  532. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/DieHard/verdict-2.out +57 -0
  533. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/ChartRun.out +61 -0
  534. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/FirstRule.cfg +6 -0
  535. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/FirstRule.tla +11 -0
  536. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/chart.mmd +22 -0
  537. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/graph.dot +16 -0
  538. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/report.md +25 -0
  539. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/sany.out +2 -0
  540. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/verdict-1.exit +1 -0
  541. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/verdict-1.out +56 -0
  542. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/verdict-2.exit +1 -0
  543. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/verdict-2.out +64 -0
  544. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/verdict-3.exit +1 -0
  545. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/verdict-3.out +64 -0
  546. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/verdict-4.exit +1 -0
  547. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/FirstRule/verdict-4.out +77 -0
  548. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/HiddenClock/ChartRun.out +57 -0
  549. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/HiddenClock/HiddenClock.cfg +4 -0
  550. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/HiddenClock/HiddenClock.tla +11 -0
  551. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/HiddenClock/chart.mmd +13 -0
  552. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/HiddenClock/graph.dot +12 -0
  553. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/HiddenClock/report.md +11 -0
  554. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/HiddenClock/sany.out +2 -0
  555. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/HiddenClock/verdict-1.exit +1 -0
  556. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/HiddenClock/verdict-1.out +72 -0
  557. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Login/ChartRun.out +57 -0
  558. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Login/Login.cfg +3 -0
  559. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Login/Login.tla +62 -0
  560. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Login/chart.mmd +27 -0
  561. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Login/graph.dot +40 -0
  562. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Login/report.md +7 -0
  563. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Login/sany.out +1 -0
  564. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Login/verdict-1.out +47 -0
  565. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Login/view.mjs +1 -0
  566. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginGuarded/ChartRun.out +57 -0
  567. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginGuarded/LoginGuarded.cfg +2 -0
  568. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginGuarded/LoginGuarded.tla +64 -0
  569. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginGuarded/chart.mmd +28 -0
  570. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginGuarded/graph.dot +37 -0
  571. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginGuarded/report.md +8 -0
  572. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginGuarded/sany.out +1 -0
  573. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginGuarded/verdict-1.out +47 -0
  574. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginGuarded/view.mjs +1 -0
  575. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/ChartRun.out +60 -0
  576. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/LoginParallel.cfg +3 -0
  577. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/LoginParallel.tla +64 -0
  578. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/chart.mmd +44 -0
  579. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/graph.dot +58 -0
  580. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/report.md +17 -0
  581. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/sany.out +1 -0
  582. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/verdict-1.exit +1 -0
  583. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/verdict-1.out +83 -0
  584. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/verdict-2.out +57 -0
  585. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/LoginParallel/view.mjs +1 -0
  586. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/ChartRun.out +60 -0
  587. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/MediaPlayer.cfg +3 -0
  588. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/MediaPlayer.tla +103 -0
  589. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/chart.mmd +43 -0
  590. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/graph.dot +93 -0
  591. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/report.md +14 -0
  592. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/sany.out +1 -0
  593. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-1.exit +1 -0
  594. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-1.out +59 -0
  595. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-2.out +72 -0
  596. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayer/view.mjs +3 -0
  597. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerFixed/ChartRun.out +57 -0
  598. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerFixed/MediaPlayerFixed.cfg +2 -0
  599. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerFixed/MediaPlayerFixed.tla +100 -0
  600. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerFixed/chart.mmd +31 -0
  601. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerFixed/graph.dot +85 -0
  602. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerFixed/report.md +9 -0
  603. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerFixed/sany.out +1 -0
  604. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerFixed/verdict-1.out +47 -0
  605. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerFixed/view.mjs +3 -0
  606. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/ChartRun.out +59 -0
  607. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayer.tla +103 -0
  608. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayerProps.cfg +3 -0
  609. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayerProps.tla +6 -0
  610. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/chart.mmd +42 -0
  611. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/graph.dot +93 -0
  612. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/report.md +19 -0
  613. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/sany.out +2 -0
  614. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-1.exit +1 -0
  615. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-1.out +61 -0
  616. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-2.out +59 -0
  617. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-3.out +61 -0
  618. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-4.exit +1 -0
  619. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-4.out +66 -0
  620. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-5.exit +1 -0
  621. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-5.out +58 -0
  622. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-6.out +49 -0
  623. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/MediaPlayerProps/view.mjs +3 -0
  624. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/PickWorker/ChartRun.out +57 -0
  625. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/PickWorker/PickWorker.cfg +6 -0
  626. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/PickWorker/PickWorker.tla +11 -0
  627. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/PickWorker/chart.mmd +5 -0
  628. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/PickWorker/graph.dot +11 -0
  629. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/PickWorker/report.md +7 -0
  630. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/PickWorker/sany.out +5 -0
  631. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/PickWorker/verdict-1.out +70 -0
  632. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Shadow/ChartRun.out +61 -0
  633. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Shadow/Shadow.cfg +4 -0
  634. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Shadow/Shadow.tla +11 -0
  635. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Shadow/ShadowLib.tla +6 -0
  636. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Shadow/ShadowSub.tla +3 -0
  637. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Shadow/chart.mmd +9 -0
  638. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Shadow/graph.dot +16 -0
  639. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Shadow/report.md +8 -0
  640. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Shadow/sany.out +4 -0
  641. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/Shadow/verdict-1.out +65 -0
  642. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/ChartRun.out +59 -0
  643. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/SpacedNames.cfg +2 -0
  644. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/SpacedNames.tla +9 -0
  645. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/chart.mmd +23 -0
  646. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/graph.dot +17 -0
  647. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/report.md +15 -0
  648. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/sany.out +1 -0
  649. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/verdict-1.exit +1 -0
  650. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/verdict-1.out +65 -0
  651. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/verdict-2.exit +1 -0
  652. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/SpacedNames/verdict-2.out +75 -0
  653. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/ChartRun.out +69 -0
  654. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/TwoPhase.cfg +3 -0
  655. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/TwoPhase.tla +75 -0
  656. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/chart.mmd +60 -0
  657. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/graph.dot +297 -0
  658. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/report.md +20 -0
  659. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/sany.out +1 -0
  660. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/verdict-1.exit +1 -0
  661. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/verdict-1.out +95 -0
  662. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/verdict-2.out +57 -0
  663. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhase/view.mjs +1 -0
  664. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhaseFixed/ChartRun.out +57 -0
  665. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhaseFixed/TwoPhaseFixed.cfg +3 -0
  666. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhaseFixed/TwoPhaseFixed.tla +75 -0
  667. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhaseFixed/chart.mmd +37 -0
  668. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhaseFixed/graph.dot +223 -0
  669. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhaseFixed/report.md +11 -0
  670. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhaseFixed/sany.out +1 -0
  671. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhaseFixed/verdict-1.out +47 -0
  672. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TwoPhaseFixed/view.mjs +1 -0
  673. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/ChartRun.exit +1 -0
  674. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/ChartRun.out +75 -0
  675. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/TypeGuard.cfg +5 -0
  676. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/TypeGuard.tla +11 -0
  677. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/chart.mmd +18 -0
  678. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/graph.dot +14 -0
  679. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/report.md +29 -0
  680. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/sany.out +2 -0
  681. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/verdict-1.exit +1 -0
  682. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/verdict-1.out +64 -0
  683. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/verdict-2.exit +1 -0
  684. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/TypeGuard/verdict-2.out +75 -0
  685. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/ChartRun.out +58 -0
  686. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/UserNoDeadlock.cfg +2 -0
  687. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/UserNoDeadlock.tla +8 -0
  688. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/chart.mmd +22 -0
  689. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/graph.dot +16 -0
  690. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/report.md +15 -0
  691. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/sany.out +2 -0
  692. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-1.exit +1 -0
  693. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-1.out +56 -0
  694. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-2.exit +1 -0
  695. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-2.out +77 -0
  696. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/corpus.test.ts +403 -0
  697. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/differential.test.ts +565 -0
  698. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/grid/Grid.cfg +2 -0
  699. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/grid/Grid.tla +9 -0
  700. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/grid/sany.out +2 -0
  701. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/java.ts +63 -0
  702. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/labels.ts +643 -0
  703. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/messages.test.ts +212 -0
  704. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/pipeline.test.ts +270 -0
  705. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/plain-tlc.test.ts +255 -0
  706. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/render.test.ts +81 -0
  707. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/tlc-out.test.ts +90 -0
  708. package/builtin/skills/pstack/dsh/skills/statechart/scripts/test/tlc.ts +158 -0
  709. package/builtin/skills/pstack/dsh/skills/statechart/scripts/tsconfig.json +11 -0
  710. package/builtin/skills/pstack/dsh/skills/statechart/scripts/worker.mjs +32 -0
  711. package/builtin/skills/pstack/dsh/skills/statechart/scripts/worker.ts +35 -0
  712. package/builtin/skills/pstack/dsh/skills/swarm/SKILL.md +44 -0
  713. package/builtin/skills/pstack/dsh/skills/tdd/SKILL.md +45 -0
  714. package/builtin/skills/pstack/dsh/skills/teach/SKILL.md +24 -0
  715. package/builtin/skills/pstack/dsh/skills/technical-writing/SKILL.md +109 -0
  716. package/builtin/skills/pstack/dsh/skills/typescript-best-practices/SKILL.md +34 -0
  717. package/builtin/skills/pstack/dsh/skills/typescript-best-practices/references/patterns.md +328 -0
  718. package/builtin/skills/pstack/dsh/skills/unslop/SKILL.md +65 -0
  719. package/builtin/skills/pstack/dsh/skills/why/SKILL.md +99 -0
  720. package/builtin/skills/pstack/dsh/skills/why/references/epistemics.md +71 -0
  721. package/builtin/skills/pstack/dsh/skills/why/references/investigator-prompt.md +84 -0
  722. package/builtin/skills/pstack/dsh/skills/why/references/source-playbook.md +17 -0
  723. package/builtin/skills/pstack/dsh/skills/why/references/sources/code-archaeology.md +51 -0
  724. package/builtin/skills/pstack/dsh/skills/why/references/sources/databricks.md +70 -0
  725. package/builtin/skills/pstack/dsh/skills/why/references/sources/datadog.md +97 -0
  726. package/builtin/skills/pstack/dsh/skills/why/references/sources/incident-postmortem.md +5 -0
  727. package/builtin/skills/pstack/dsh/skills/why/references/sources/linear.md +48 -0
  728. package/builtin/skills/pstack/dsh/skills/why/references/sources/notion.md +55 -0
  729. package/builtin/skills/pstack/dsh/skills/why/references/sources/sentry.md +66 -0
  730. package/builtin/skills/pstack/dsh/skills/why/references/sources/slack.md +17 -0
  731. package/builtin/skills/pstack/dsh/skills/why/references/synthesizer-prompt.md +129 -0
  732. package/client/index.js +350 -85
  733. package/cordis.patch.yml +5 -13
  734. package/docs/Acknowledgements.md +24 -12
  735. package/docs/Changelog.md +27 -0
  736. package/docs/Compatibility.md +66 -3
  737. package/docs/EvaluationResults.md +8 -6
  738. package/docs/UsageGuide.md +61 -7
  739. package/docs/en/Acknowledgements.md +24 -12
  740. package/docs/en/Changelog.md +27 -0
  741. package/docs/en/Compatibility.md +66 -3
  742. package/docs/en/EvaluationResults.md +8 -6
  743. package/docs/en/UsageGuide.md +61 -7
  744. package/docs/images/agent-tree-preview.png +0 -0
  745. package/docs/images/agent-tree.png +0 -0
  746. package/docs/images/install-tgz-preview.png +0 -0
  747. package/docs/images/install-tgz.png +0 -0
  748. package/docs/images/npm-downloads-dark.svg +22 -0
  749. package/docs/images/npm-downloads.svg +22 -0
  750. package/docs/images/preset-settings-preview.png +0 -0
  751. package/docs/images/star-history-dark.svg +22 -0
  752. package/docs/images/star-history.svg +22 -0
  753. package/docs/images/task-status-preview.png +0 -0
  754. package/docs/images/task-status.png +0 -0
  755. package/lib/connection/approvals.d.ts +4 -0
  756. package/lib/connection/approvals.d.ts.map +1 -1
  757. package/lib/connection/approvals.js.map +1 -1
  758. package/lib/connection/client.d.ts.map +1 -1
  759. package/lib/connection/client.js +20 -3
  760. package/lib/connection/client.js.map +1 -1
  761. package/lib/connection/git.d.ts.map +1 -1
  762. package/lib/connection/git.js +17 -12
  763. package/lib/connection/git.js.map +1 -1
  764. package/lib/connection/http.d.ts.map +1 -1
  765. package/lib/connection/http.js +20 -1
  766. package/lib/connection/http.js.map +1 -1
  767. package/lib/connection/service.d.ts +3 -2
  768. package/lib/connection/service.d.ts.map +1 -1
  769. package/lib/connection/service.js +8 -3
  770. package/lib/connection/service.js.map +1 -1
  771. package/lib/connection/store.d.ts +1 -0
  772. package/lib/connection/store.d.ts.map +1 -1
  773. package/lib/connection/store.js +84 -35
  774. package/lib/connection/store.js.map +1 -1
  775. package/lib/connection/tasks.d.ts +4 -2
  776. package/lib/connection/tasks.d.ts.map +1 -1
  777. package/lib/connection/tasks.js +47 -42
  778. package/lib/connection/tasks.js.map +1 -1
  779. package/lib/connection/types.d.ts +2 -1
  780. package/lib/connection/types.d.ts.map +1 -1
  781. package/lib/core/batch-policy.js +2 -2
  782. package/lib/core/batch-policy.js.map +1 -1
  783. package/lib/core/delegation.d.ts +3 -0
  784. package/lib/core/delegation.d.ts.map +1 -1
  785. package/lib/core/delegation.js +2 -2
  786. package/lib/core/delegation.js.map +1 -1
  787. package/lib/core/deletion-command.d.ts.map +1 -1
  788. package/lib/core/deletion-command.js +192 -19
  789. package/lib/core/deletion-command.js.map +1 -1
  790. package/lib/core/tool-evidence.d.ts.map +1 -1
  791. package/lib/core/tool-evidence.js +9 -2
  792. package/lib/core/tool-evidence.js.map +1 -1
  793. package/lib/dsh/budget-settings.d.ts +11 -0
  794. package/lib/dsh/budget-settings.d.ts.map +1 -1
  795. package/lib/dsh/budget-settings.js +43 -9
  796. package/lib/dsh/budget-settings.js.map +1 -1
  797. package/lib/dsh/budgets.d.ts +5 -0
  798. package/lib/dsh/budgets.d.ts.map +1 -1
  799. package/lib/dsh/budgets.js +15 -0
  800. package/lib/dsh/budgets.js.map +1 -1
  801. package/lib/dsh/bundled-skills.d.ts +17 -0
  802. package/lib/dsh/bundled-skills.d.ts.map +1 -0
  803. package/lib/dsh/bundled-skills.js +94 -0
  804. package/lib/dsh/bundled-skills.js.map +1 -0
  805. package/lib/dsh/connection-approval.d.ts.map +1 -1
  806. package/lib/dsh/connection-approval.js +24 -2
  807. package/lib/dsh/connection-approval.js.map +1 -1
  808. package/lib/dsh/connection-history.d.ts +2 -1
  809. package/lib/dsh/connection-history.d.ts.map +1 -1
  810. package/lib/dsh/connection-history.js +22 -4
  811. package/lib/dsh/connection-history.js.map +1 -1
  812. package/lib/dsh/connection-host.d.ts +0 -1
  813. package/lib/dsh/connection-host.d.ts.map +1 -1
  814. package/lib/dsh/connection-host.js +59 -26
  815. package/lib/dsh/connection-host.js.map +1 -1
  816. package/lib/dsh/connection.d.ts.map +1 -1
  817. package/lib/dsh/connection.js +10 -5
  818. package/lib/dsh/connection.js.map +1 -1
  819. package/lib/dsh/directory-metadata.d.ts +4 -0
  820. package/lib/dsh/directory-metadata.d.ts.map +1 -0
  821. package/lib/dsh/directory-metadata.js +4 -0
  822. package/lib/dsh/directory-metadata.js.map +1 -0
  823. package/lib/dsh/index.d.ts.map +1 -1
  824. package/lib/dsh/index.js +2 -0
  825. package/lib/dsh/index.js.map +1 -1
  826. package/lib/dsh/memory-library.d.ts.map +1 -1
  827. package/lib/dsh/memory-library.js +8 -4
  828. package/lib/dsh/memory-library.js.map +1 -1
  829. package/lib/dsh/official-budgets.d.ts.map +1 -1
  830. package/lib/dsh/official-budgets.js +3 -2
  831. package/lib/dsh/official-budgets.js.map +1 -1
  832. package/lib/dsh/openspec-shell.d.ts +3 -0
  833. package/lib/dsh/openspec-shell.d.ts.map +1 -0
  834. package/lib/dsh/openspec-shell.js +25 -0
  835. package/lib/dsh/openspec-shell.js.map +1 -0
  836. package/lib/dsh/preset-declaration.d.ts +3 -0
  837. package/lib/dsh/preset-declaration.d.ts.map +1 -1
  838. package/lib/dsh/preset-declaration.js +39 -36
  839. package/lib/dsh/preset-declaration.js.map +1 -1
  840. package/lib/dsh/preset-files.d.ts.map +1 -1
  841. package/lib/dsh/preset-files.js +16 -1
  842. package/lib/dsh/preset-files.js.map +1 -1
  843. package/lib/dsh/preset-installation.d.ts +1 -0
  844. package/lib/dsh/preset-installation.d.ts.map +1 -1
  845. package/lib/dsh/preset-installation.js +5 -3
  846. package/lib/dsh/preset-installation.js.map +1 -1
  847. package/lib/dsh/preset-metadata.d.ts.map +1 -1
  848. package/lib/dsh/preset-metadata.js +18 -6
  849. package/lib/dsh/preset-metadata.js.map +1 -1
  850. package/lib/dsh/preset-recovery-runtime.d.ts.map +1 -1
  851. package/lib/dsh/preset-recovery-runtime.js +34 -12
  852. package/lib/dsh/preset-recovery-runtime.js.map +1 -1
  853. package/lib/dsh/preset-recovery.d.ts.map +1 -1
  854. package/lib/dsh/preset-recovery.js +79 -13
  855. package/lib/dsh/preset-recovery.js.map +1 -1
  856. package/lib/dsh/preset-version.d.ts +1 -0
  857. package/lib/dsh/preset-version.d.ts.map +1 -1
  858. package/lib/dsh/preset-version.js +1 -1
  859. package/lib/dsh/preset-version.js.map +1 -1
  860. package/lib/dsh/ptc-budget.d.ts.map +1 -1
  861. package/lib/dsh/ptc-budget.js +4 -2
  862. package/lib/dsh/ptc-budget.js.map +1 -1
  863. package/lib/dsh/skill-directory.d.ts +45 -0
  864. package/lib/dsh/skill-directory.d.ts.map +1 -0
  865. package/lib/dsh/skill-directory.js +113 -0
  866. package/lib/dsh/skill-directory.js.map +1 -0
  867. package/lib/dsh/skill-installation.d.ts +8 -0
  868. package/lib/dsh/skill-installation.d.ts.map +1 -0
  869. package/lib/dsh/skill-installation.js +131 -0
  870. package/lib/dsh/skill-installation.js.map +1 -0
  871. package/lib/dsh/skill-packages.d.ts +6 -0
  872. package/lib/dsh/skill-packages.d.ts.map +1 -0
  873. package/lib/dsh/skill-packages.js +8 -0
  874. package/lib/dsh/skill-packages.js.map +1 -0
  875. package/lib/dsh/super-code.d.ts.map +1 -1
  876. package/lib/dsh/super-code.js +143 -166
  877. package/lib/dsh/super-code.js.map +1 -1
  878. package/lib/dsh/tool-contracts.d.ts +53 -0
  879. package/lib/dsh/tool-contracts.d.ts.map +1 -0
  880. package/lib/dsh/tool-contracts.js +129 -0
  881. package/lib/dsh/tool-contracts.js.map +1 -0
  882. package/lib/dsh/windows-shell.d.ts +2 -2
  883. package/lib/dsh/windows-shell.d.ts.map +1 -1
  884. package/lib/dsh/windows-shell.js +11 -1
  885. package/lib/dsh/windows-shell.js.map +1 -1
  886. package/lib/long-memory.d.ts +2 -2
  887. package/lib/long-memory.d.ts.map +1 -1
  888. package/lib/long-memory.js +16 -9
  889. package/lib/long-memory.js.map +1 -1
  890. package/lib/memory-usage-projection.d.ts.map +1 -1
  891. package/lib/memory-usage-projection.js +13 -9
  892. package/lib/memory-usage-projection.js.map +1 -1
  893. package/lib/task-feedback-projection.d.ts +1 -0
  894. package/lib/task-feedback-projection.d.ts.map +1 -1
  895. package/lib/task-feedback-projection.js +65 -21
  896. package/lib/task-feedback-projection.js.map +1 -1
  897. package/lib/task-memory-store.d.ts.map +1 -1
  898. package/lib/task-memory-store.js +7 -1
  899. package/lib/task-memory-store.js.map +1 -1
  900. package/package.json +24 -4
  901. package/presets/super-code/agent.cordis.yml +4 -6
  902. package/runtime/skills/openspec/bin/openspec +2 -0
  903. package/runtime/skills/openspec/bin/openspec.cmd +6 -0
  904. package/presets/super-code/skills/super-code-frontend/SKILL.md +0 -33
  905. package/presets/super-code/skills/super-code-frontend/references/browser-validation.md +0 -59
  906. package/presets/super-code/skills/super-code-frontend/references/interaction-states.md +0 -51
  907. package/presets/super-code/skills/super-code-frontend/references/visual-design.md +0 -43
@@ -0,0 +1,93 @@
1
+ Copyright 2022 The Instrument Serif Project Authors (https://github.com/Instrument/instrument-serif)
2
+
3
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
4
+ This license is copied below, and is also available with a FAQ at:
5
+ https://scripts.sil.org/OFL
6
+
7
+
8
+ -----------------------------------------------------------
9
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10
+ -----------------------------------------------------------
11
+
12
+ PREAMBLE
13
+ The goals of the Open Font License (OFL) are to stimulate worldwide
14
+ development of collaborative font projects, to support the font creation
15
+ efforts of academic and linguistic communities, and to provide a free and
16
+ open framework in which fonts may be shared and improved in partnership
17
+ with others.
18
+
19
+ The OFL allows the licensed fonts to be used, studied, modified and
20
+ redistributed freely as long as they are not sold by themselves. The
21
+ fonts, including any derivative works, can be bundled, embedded,
22
+ redistributed and/or sold with any software provided that any reserved
23
+ names are not used by derivative works. The fonts and derivatives,
24
+ however, cannot be released under any other type of license. The
25
+ requirement for fonts to remain under this license does not apply
26
+ to any document created using the fonts or their derivatives.
27
+
28
+ DEFINITIONS
29
+ "Font Software" refers to the set of files released by the Copyright
30
+ Holder(s) under this license and clearly marked as such. This may
31
+ include source files, build scripts and documentation.
32
+
33
+ "Reserved Font Name" refers to any names specified as such after the
34
+ copyright statement(s).
35
+
36
+ "Original Version" refers to the collection of Font Software components as
37
+ distributed by the Copyright Holder(s).
38
+
39
+ "Modified Version" refers to any derivative made by adding to, deleting,
40
+ or substituting -- in part or in whole -- any of the components of the
41
+ Original Version, by changing formats or by porting the Font Software to a
42
+ new environment.
43
+
44
+ "Author" refers to any designer, engineer, programmer, technical
45
+ writer or other person who contributed to the Font Software.
46
+
47
+ PERMISSION & CONDITIONS
48
+ Permission is hereby granted, free of charge, to any person obtaining
49
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
50
+ redistribute, and sell modified and unmodified copies of the Font
51
+ Software, subject to the following conditions:
52
+
53
+ 1) Neither the Font Software nor any of its individual components,
54
+ in Original or Modified Versions, may be sold by itself.
55
+
56
+ 2) Original or Modified Versions of the Font Software may be bundled,
57
+ redistributed and/or sold with any software, provided that each copy
58
+ contains the above copyright notice and this license. These can be
59
+ included either as stand-alone text files, human-readable headers or
60
+ in the appropriate machine-readable metadata fields within text or
61
+ binary files as long as those fields can be easily viewed by the user.
62
+
63
+ 3) No Modified Version of the Font Software may use the Reserved Font
64
+ Name(s) unless explicit written permission is granted by the corresponding
65
+ Copyright Holder. This restriction only applies to the primary font name as
66
+ presented to the users.
67
+
68
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69
+ Software shall not be used to promote, endorse or advertise any
70
+ Modified Version, except to acknowledge the contribution(s) of the
71
+ Copyright Holder(s) and the Author(s) or with their explicit written
72
+ permission.
73
+
74
+ 5) The Font Software, modified or unmodified, in part or in whole,
75
+ must be distributed entirely under this license, and must not be
76
+ distributed under any other license. The requirement for fonts to
77
+ remain under this license does not apply to any document created
78
+ using the Font Software.
79
+
80
+ TERMINATION
81
+ This license becomes null and void if any of the above conditions are
82
+ not met.
83
+
84
+ DISCLAIMER
85
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93
+ OTHER DEALINGS IN THE FONT SOFTWARE.
@@ -0,0 +1,433 @@
1
+ <!doctype html>
2
+ <html><head><meta charset="utf-8"><meta http-equiv="Content-Security-Policy" content="connect-src 'none'"><meta name="viewport" content="width=device-width,initial-scale=1"><title></title><link rel="icon" type="image/png" href="logo.png"><style>
3
+ @font-face{font-family:"Instrument Serif";src:url("fonts/instrument-serif/InstrumentSerif-Regular.ttf") format("truetype");font-style:normal;font-weight:400;font-display:swap}
4
+ :root{--canvas:#faf8f1;--surface:#faf8f1;--well:#eeeee5;--raised:#faf8f1;--line:#dcded3;--line-2:#c2c9bc;--text:#303c35;--soft:#606b60;--faint:#676e65;--ink:#303c35;--accent:#435a47;--chip:#e8eddf;--hl:#ffe28a;--bar-h:68px;--sans:-apple-system,BlinkMacSystemFont,"Inter","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;--mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;--brand:"Instrument Serif",Georgia,serif;color-scheme:light;font-family:var(--sans);color:var(--text);background:var(--canvas);font-synthesis:none;-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;
5
+ /* 动效:咔嗒用于控件,滑行用于画面与切换,弹出用于确认;弹簧曲线由刚度/阻尼采样 */
6
+ --snap:cubic-bezier(.2,.9,.25,1.04);--snap-d:330ms;--glide:cubic-bezier(.2,.8,.2,1);--glide-d:440ms;--pop:cubic-bezier(.3,1.5,.5,1);--exit:cubic-bezier(.4,0,1,1)}
7
+ @supports (transition-timing-function:linear(0,1)){:root{
8
+ --snap:linear(0,.058,.186,.339,.491,.626,.739,.827,.893,.941,.973,.994,1.005,1.011,1.013,1.013,1.012,1.01,1.008,1.006,1);
9
+ --glide:linear(0,.028,.097,.186,.286,.384,.48,.565,.644,.71,.768,.816,.856,.889,.915,.936,.953,.966,.976,.983,.989,.993,1);
10
+ --pop:linear(0,.087,.289,.533,.765,.954,1.084,1.156,1.176,1.161,1.126,1.083,1.042,1.009,.986,.973,.969,.971,.977,.985,.992,.998,1.002,1.005,1.005,1.005,1)}}
11
+ *{box-sizing:border-box}body{margin:0;min-width:320px;background:var(--canvas)}h1,h2,p,dl,dd{margin:0}button,textarea,input{font:inherit;color:inherit}button{background:none;border:0;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}[hidden]{display:none!important}
12
+
13
+ .bar{position:sticky;top:0;z-index:10;min-height:68px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;padding:14px 24px;background:var(--canvas);border-bottom:1px solid var(--line);view-transition-name:bar}
14
+ .bar-l{display:flex;align-items:center;gap:12px;min-width:0}
15
+ .brand{display:flex;align-items:center;gap:10px;flex:none;color:var(--ink);text-decoration:none}.brand img{width:30px;height:30px;display:block;transition:transform .5s var(--snap)}.brand:hover img{transform:rotate(-10deg) scale(1.06)}.brand:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:6px}
16
+ .wm{font-family:var(--brand);font-size:36px;line-height:1;font-weight:400;letter-spacing:-.025em;white-space:nowrap}.pro-badge{align-self:center;margin-left:-2px;padding:4px 6px;border-radius:3px;background:var(--chip);color:var(--accent);font-family:var(--sans);font-size:10px;font-weight:600;line-height:1;letter-spacing:.08em}
17
+ .sep{width:1px;height:18px;background:var(--line-2);flex:none}.proj{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
18
+ .bar-c{display:flex;gap:8px;flex-wrap:wrap;min-width:0}
19
+ .seg{position:relative;display:flex;padding:2px;border-radius:4px;background:var(--well)}
20
+ .seg button{position:relative;z-index:1;font-size:13px;line-height:1.5;padding:4px 11px;border-radius:3px;color:var(--soft);white-space:nowrap;transition:color .2s}.seg button:hover{color:var(--text)}.seg button[aria-pressed=true]{color:var(--accent)}
21
+ .thumb{position:absolute;left:0;top:0;width:0;border-radius:3px;background:var(--chip);box-shadow:inset 0 0 0 .5px #435a4714;transition:transform var(--snap-d) var(--snap),width var(--snap-d) var(--snap)}
22
+
23
+ .intro{max-width:1840px;margin:0 auto;padding:28px 24px 0}.intro p{font-size:14px;line-height:1.75;color:var(--soft);max-width:68ch}
24
+
25
+ .grid{max-width:1840px;margin:0 auto;padding:24px 24px 64px;display:grid;grid-template-columns:repeat(var(--cols,3),minmax(0,1fr));gap:48px 28px;align-items:start}
26
+ .grid.first .card,.intro.first{animation:rise .7s var(--glide) both;animation-delay:calc(var(--i,0) * 70ms + 60ms)}
27
+ .card{min-width:0;display:flex;flex-direction:column}
28
+ .cap{display:flex;align-items:center;gap:12px;padding-top:14px}.cap .no{font-family:var(--mono);font-size:13px;color:var(--faint);transition:color .2s}.cap .name{font-size:16px;font-weight:600;line-height:1.4;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cap .strip-mini{margin:0 auto 0 4px;width:40px;flex:none}.cap .no.base{flex:none;white-space:nowrap;font-family:inherit;font-size:12px;font-weight:600;line-height:1.6;padding:0 8px;border-radius:99px;background:var(--well);color:var(--soft)}
29
+ .lede{margin-top:8px;font-size:13.5px;line-height:1.7;color:var(--soft);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
30
+ .name{font-size:19px;line-height:1.35;font-weight:600;overflow-wrap:anywhere}.strip-mini{display:flex;height:4px;width:96px;margin-top:9px;border-radius:2px;overflow:hidden;box-shadow:0 0 0 1px #0000001f}.strip-mini i{flex:1}
31
+ .frame{position:relative;background:var(--surface);border-radius:4px;box-shadow:0 0 0 1px #00000014,0 24px 48px -30px #00000040;transition:box-shadow .25s,transform .45s var(--glide)}.frame:hover{box-shadow:0 0 0 1px #0000002e,0 36px 64px -30px #00000052;transform:translateY(-3px)}.frame:active{transform:translateY(-1px) scale(.995);transition-duration:.25s,.12s}.frame[data-viewport=mobile]{padding:20px 0;background:var(--well)}
32
+ .peek{position:absolute;inset:auto 0 0 0;z-index:2;padding:10px 12px;font-size:12.5px;color:#fff;background:linear-gradient(transparent,#000b);opacity:0;transform:translateY(6px);transition:opacity .18s,transform .3s var(--glide);pointer-events:none;border-radius:0 0 4px 4px}.frame:hover .peek,.hit:focus-visible~.peek{opacity:1;transform:none}
33
+ .stage{position:relative;overflow:hidden;margin:0 auto;border-radius:3px;background:#ebebeb}.stage iframe,.stage img{position:absolute;left:0;top:0;border:0;display:block;transform-origin:top left;background:#fff;opacity:0;transition:opacity .4s ease-out}.stage.ready iframe,.stage.ready img{opacity:1}.stage iframe{pointer-events:none}.stage img{object-fit:contain;background:#ebebeb}
34
+ .hit{position:absolute;inset:0;width:100%;height:100%;z-index:1;border-radius:4px;cursor:zoom-in}.hit:focus-visible{outline-offset:-2px}
35
+ .service-note{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;padding:20px;background:var(--canvas);overflow:auto;pointer-events:none}
36
+ .service-message{width:100%;max-width:440px;min-width:0;margin:auto;font-size:14px;line-height:1.7;color:var(--soft)}.service-message h3{margin:0 0 6px;font-size:16px;font-weight:600;color:var(--text)}
37
+ .service-command{display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px;margin-top:16px;pointer-events:auto}.service-command code{flex:1 1 200px;min-width:0;padding:6px 10px;border-radius:6px;background:var(--well);font-family:var(--mono);font-size:12.5px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere;user-select:all}.service-command .tool{flex:none;background:var(--raised)}
38
+ .stage.offline .static{display:none}
39
+ .slide .static{display:none}.static{position:absolute;left:10px;bottom:10px;z-index:2;font-size:12.5px;line-height:1.4;padding:3px 8px;border-radius:4px;background:#000c;color:#ddd;pointer-events:none}
40
+ .pick-mark{position:absolute;top:10px;right:10px;z-index:3;display:none;align-items:center;gap:6px;padding:4px 10px 4px 8px;border-radius:99px;background:var(--ink);color:#fff;font-size:13px;font-weight:600;line-height:1.4;box-shadow:0 6px 16px #0000003d;pointer-events:none;transform-origin:85% 50%}.pick-mark::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--hl)}
41
+ .is-chosen .pick-mark{display:inline-flex}.is-chosen .frame{box-shadow:0 0 0 2px var(--ink),0 30px 60px -30px #00000052}.is-chosen .cap .no{color:var(--text)}
42
+
43
+ .spec{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:10px 12px;font-size:13px;line-height:1.6}.spec dt{color:var(--faint)}.spec dd{color:var(--soft);min-width:0;overflow-wrap:anywhere}
44
+ .pick{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:14px;line-height:1.5;padding:8px 16px;border-radius:8px;box-shadow:inset 0 0 0 1px var(--line-2);color:var(--text);white-space:nowrap;transition:background .2s,color .2s,box-shadow .2s,transform .35s var(--snap)}.pick:hover{background:var(--chip)}.pick:active{transform:scale(.96);transition-duration:.2s,.2s,.2s,.08s}
45
+ .pick kbd{font-family:var(--mono);font-size:12px;color:var(--faint);padding:0 5px;border-radius:4px;box-shadow:inset 0 0 0 1px var(--line-2);transition:color .2s,box-shadow .2s}
46
+ .pick[data-on]{background:var(--accent);color:#fff;box-shadow:none}.pick[data-on]:hover{background:var(--ink)}.pick[data-on] kbd{color:var(--chip);box-shadow:inset 0 0 0 1px #ffffff40}
47
+ .pick[data-on]::before{content:"";width:9px;height:5px;margin:-3px 1px 0 0;border-left:1.6px solid;border-bottom:1.6px solid;transform:rotate(-45deg)}
48
+ .cap .pick{flex:none;font-size:13px;padding:4px 12px;border-radius:6px}
49
+
50
+ .loupe{position:fixed;top:var(--bar-h);left:0;right:0;bottom:0;display:grid;grid-template-columns:minmax(0,1fr) 300px;grid-template-rows:minmax(0,1fr)}
51
+ .view{position:relative;min-width:0;min-height:0;display:flex;flex-direction:column}
52
+ .surface{position:relative;flex:1;min-height:0;overflow:clip}
53
+ .track{display:flex;height:100%;transition:transform var(--glide-d) var(--glide)}
54
+ .slide{flex:0 0 100%;min-width:0;height:100%;overflow:auto;padding:20px 72px;display:flex;justify-content:center;align-items:center}.slide[data-zoom=actual]{display:block}
55
+ .slide .stage{flex:none;box-shadow:0 0 0 1px #00000014,0 40px 80px -40px #00000059;transition:transform var(--glide-d) var(--glide),opacity var(--glide-d) ease-out}.slide:not(.is-current) .stage{transform:scale(.92);opacity:.4}.slide.is-current .stage iframe{pointer-events:auto}
56
+ .nav{position:absolute;top:50%;z-index:2;width:44px;height:44px;margin-top:-22px;border-radius:50%;display:grid;place-items:center;font-size:18px;background:#ffffffd9;color:var(--ink);box-shadow:0 0 0 1px #00000014,0 8px 24px -6px #00000033;backdrop-filter:blur(8px);opacity:.85;transition:opacity .2s,transform .35s var(--snap)}.nav:hover{opacity:1}.nav:active{transform:scale(.9);transition-duration:.2s,.08s}.nav.prev{left:14px}.nav.next{right:14px}.nav:disabled{opacity:0;pointer-events:none;transform:scale(.8)}
57
+ .info{grid-row:1;grid-column:2;overflow:auto;border-left:1px solid var(--line);background:var(--surface);display:flex;flex-direction:column;view-transition-name:info}
58
+ .film{position:relative;display:grid;gap:2px;padding:10px;border-bottom:1px solid var(--line)}
59
+ .film-ind{position:absolute;left:0;top:0;width:0;height:0;border-radius:8px;background:var(--chip);box-shadow:inset 0 0 0 1px var(--line);transition:transform var(--snap-d) var(--snap),width var(--snap-d) var(--snap),height var(--snap-d) var(--snap)}
60
+ .film button{position:relative;z-index:1;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:3px 10px;padding:7px 10px;border-radius:8px;color:var(--soft);text-align:left;transition:color .2s,background .15s}.film button:hover{color:var(--text)}.film button:not([aria-current=true]):hover{background:#00000006}.film button[aria-current=true]{color:var(--text)}
61
+ .film .fn{font-family:var(--mono);font-size:12.5px;color:var(--faint);grid-row:span 2}.film .ft{font-size:13.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.film .strip-mini{margin:0;width:48px;height:3px}
62
+ .film .ft.chosen::after{content:"";width:6px;height:6px;border-radius:50%;background:var(--ink);display:inline-block;margin-left:8px;vertical-align:middle}
63
+ .info-body{padding:20px 20px 24px;display:flex;flex-direction:column;gap:16px}
64
+ .idx{font-size:48px;line-height:.9;font-weight:200;letter-spacing:-.02em;color:var(--faint)}.info .name{font-size:20px;line-height:1.35;margin-top:-6px}.north{font-size:14px;line-height:1.7;color:var(--text)}
65
+ .big-sw{display:grid;gap:6px}.big-sw div{display:grid;grid-template-columns:32px 1fr;align-items:center;gap:10px;font-family:var(--mono);font-size:12.5px;color:var(--soft)}.big-sw i{height:20px;border-radius:4px;box-shadow:inset 0 0 0 1px #00000017}
66
+ .info .pick{align-self:stretch;padding:8px 14px;font-size:13.5px}
67
+ .tools{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.tool{font-size:13px;padding:5px 12px;border-radius:6px;color:var(--soft);box-shadow:inset 0 0 0 1px var(--line-2);transition:color .15s,background .2s}.tool:hover{color:var(--text)}.tool[aria-pressed=true]{background:var(--accent);color:#fff;box-shadow:none}
68
+ .hint{font-size:12px;line-height:1.9;color:var(--faint)}.hint kbd{font-family:var(--mono);font-size:12px;padding:0 5px;border-radius:4px;box-shadow:inset 0 0 0 1px var(--line-2);color:var(--soft)}
69
+
70
+
71
+ .toast{position:fixed;left:50%;bottom:24px;z-index:40;display:flex;align-items:center;gap:12px;max-width:min(560px,calc(100vw - 32px));padding:10px 16px 10px 12px;border-radius:12px;background:var(--ink);color:#fff;box-shadow:0 18px 44px -10px #00000066;font-size:13.5px;line-height:1.5;opacity:0;transform:translate(-50%,14px) scale(.96);pointer-events:none;transition:opacity .16s var(--exit),transform .2s var(--exit)}
72
+ .toast.show{opacity:1;transform:translate(-50%,0);pointer-events:auto;transition:opacity .18s ease-out,transform var(--snap-d) var(--snap)}
73
+ .toast .tick{flex:none;width:22px;height:22px;border-radius:50%;background:var(--hl);display:grid;place-items:center}.toast .tick::before{content:"";width:8px;height:4px;margin-top:-2px;border-left:1.6px solid var(--ink);border-bottom:1.6px solid var(--ink);transform:rotate(-45deg)}.toast[data-fail] .tick{background:#c2462e}.toast[data-fail] .tick::before{width:2px;height:9px;margin:0;border:0;background:#fff;transform:none}
74
+ .toast b{font-weight:600;min-width:0}.toast code{flex:1;font-family:var(--mono);font-size:12.5px;color:#a8a8a8;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;user-select:all}.toast[data-fail] code{white-space:pre-wrap}
75
+
76
+ .empty{max-width:560px;margin:18vh auto;padding:24px;text-align:center;font-size:15px;line-height:1.8;color:var(--soft)}
77
+
78
+ @keyframes rise{from{opacity:0;transform:translateY(16px)}}
79
+ @keyframes vt-out{to{opacity:0;transform:scale(.97)}}
80
+ @keyframes vt-in{from{opacity:0;transform:scale(.98)}}
81
+ @keyframes info-in{from{transform:translateX(100%)}}
82
+ @keyframes info-out{to{transform:translateX(100%)}}
83
+ /* 并排与单张之间、视口变化用页面过渡:同一方向的画面从卡片放大到单张,其他卡片淡出,侧栏从右侧滑入 */
84
+ ::view-transition-group(*){animation-duration:var(--glide-d);animation-timing-function:var(--glide)}
85
+ ::view-transition-old(*),::view-transition-new(*){height:100%;object-fit:cover;object-position:50% 0}
86
+ ::view-transition-old(root),::view-transition-new(root){animation-duration:.2s}
87
+ ::view-transition-old(*):only-child{animation:vt-out .18s var(--exit) both}
88
+ ::view-transition-new(*):only-child{animation:vt-in .3s .08s ease-out both}
89
+ ::view-transition-new(info):only-child{animation:info-in var(--glide-d) var(--glide) both}
90
+ ::view-transition-old(info):only-child{animation:info-out .22s var(--exit) both}
91
+ ::view-transition-old(bar){display:none}::view-transition-new(bar){animation:none}
92
+ /* 视口和缩放只改变形状与位置:外框直接变形,内容不做叠影 */
93
+ html[data-vt=reshape]::view-transition-old(*){animation:none;opacity:0}
94
+ html[data-vt=reshape]::view-transition-new(*){animation:none}
95
+ html[data-vt=reshape]::view-transition-old(*):only-child{animation:vt-out .18s var(--exit) both;opacity:1}
96
+ html[data-vt=reshape]::view-transition-new(*):only-child{animation:vt-in .3s .08s ease-out both}
97
+
98
+ @media(max-width:1180px){.grid{--cols:2!important}.bar{grid-template-columns:minmax(0,1fr) auto;row-gap:10px}.loupe{grid-template-columns:minmax(0,1fr) 280px}}
99
+ @media(max-width:760px){.bar{grid-template-columns:1fr;padding:10px 16px}.bar-c .seg{min-width:0}.bar-c .seg button{padding-inline:9px}.bar-c{flex-wrap:wrap}.intro{padding:24px 16px 0}.grid{--cols:1!important;padding:24px 16px 48px;gap:48px}.loupe{position:static;display:flex;flex-direction:column}.surface{flex:none}.track{height:auto;align-items:flex-start}.slide{height:auto;padding:16px 12px}.info{border-left:0;border-top:1px solid var(--line)}.film{display:flex;overflow-x:auto}.film button{flex:none}.info-body{padding:20px 16px}.nav{display:none}}
100
+ @media(prefers-reduced-motion:reduce){*,*::before,*::after{transition-duration:0s!important;animation-duration:0s!important;animation-delay:0s!important}.frame:hover{transform:none}}
101
+ </style></head><body>
102
+ <header class="bar" id="bar" hidden>
103
+ <div class="bar-l"><a class="brand" href="https://www.oiloil.org" target="_blank" rel="noopener" data-i18n-title="brandTitle" data-i18n-aria-label="brandLabel"><img src="logo.png" alt=""><span class="wm">Oil UI</span><span id="pro-badge" class="pro-badge">PRO</span></a><span class="sep" aria-hidden="true"></span><span class="proj" id="project"></span></div>
104
+ <div class="bar-c">
105
+ <div class="seg" role="group" data-i18n-aria-label="layoutLabel"><span class="thumb" aria-hidden="true"></span><button type="button" data-layout="compare" aria-pressed="true" data-i18n="compare"></button><button type="button" data-layout="loupe" aria-pressed="false" data-i18n="loupe"></button></div>
106
+ <div class="seg" role="group" data-i18n-aria-label="viewportLabel"><span class="thumb" aria-hidden="true"></span><button type="button" data-viewport="desktop" aria-pressed="true" data-i18n="desktop"></button><button type="button" data-viewport="mobile" aria-pressed="false" data-i18n="mobile"></button></div>
107
+ </div>
108
+ </header>
109
+ <div id="compare-view" hidden>
110
+ <section class="intro"><p id="brief"></p></section>
111
+ <main id="grid" class="grid" data-i18n-aria-label="candidates"></main>
112
+ </div>
113
+ <main id="loupe" class="loupe" hidden data-i18n-aria-label="singleView">
114
+ <div class="view">
115
+ <button type="button" class="nav prev" id="prev" data-i18n-aria-label="previous">←</button>
116
+ <div id="surface" class="surface"><div id="track" class="track"></div></div>
117
+ <button type="button" class="nav next" id="next" data-i18n-aria-label="next">→</button>
118
+ </div>
119
+ <aside id="info" class="info"><nav id="film" class="film" data-i18n-aria-label="switchDirection"></nav><div id="info-body" class="info-body" aria-live="polite"></div></aside>
120
+ </main>
121
+ <div id="empty" class="empty" hidden data-i18n="empty"></div>
122
+ <div id="toast" class="toast" role="status" aria-live="polite"><span class="tick"></span><b></b><code></code></div>
123
+ <script>
124
+ const DATA = /*__OIL_UI_DATA__*/ null;
125
+ // Interface strings: edit both locales here; manifest content stays as supplied.
126
+ const I18N = {
127
+ "zh": {
128
+ "htmlLang": "zh-CN",
129
+ "pageTitle": "风格对比",
130
+ "projectTitle": "{project} · 风格对比 · Oil UI{edition}",
131
+ "brandTitle": "Oil UI{edition} · oiloil.org",
132
+ "brandLabel": "Oil UI{edition},打开 oiloil.org",
133
+ "layoutLabel": "查看方式",
134
+ "compare": "并排",
135
+ "loupe": "单张",
136
+ "viewportLabel": "预览视口",
137
+ "desktop": "桌面 1280",
138
+ "mobile": "手机 390",
139
+ "candidates": "候选方向",
140
+ "singleView": "单张查看",
141
+ "previous": "上一个方向",
142
+ "next": "下一个方向",
143
+ "switchDirection": "切换方向",
144
+ "empty": "尚未加入设计小样。按 references/style-explorer.md 准备 manifest 后用生成器组装。",
145
+ "baseline": "现状",
146
+ "serviceUnavailable": "开发服务器没有运行",
147
+ "serviceHelp": "在对话里跟 Agent 说“打开对比页”就行。",
148
+ "copyCommand": "复制命令",
149
+ "copyCommandLabel": "复制启动命令",
150
+ "live": "本地运行",
151
+ "image": "静态图",
152
+ "interactive": "可操作",
153
+ "fonts": "字体",
154
+ "traits": "特征",
155
+ "viewDirection": "单张查看 {name}",
156
+ "selected": "已选择",
157
+ "peek": "点击单张查看 · 实际尺寸",
158
+ "fit": "适应窗口",
159
+ "actual": "实际尺寸 100%",
160
+ "keyboardHint": "<kbd>←</kbd> <kbd>→</kbd> 切换方向 <kbd>P</kbd> 选择并复制<br><kbd>Esc</kbd> 回到并排",
161
+ "selectedCopy": "已选择 · 复制",
162
+ "select": "选择",
163
+ "selectDirection": "选这个方向",
164
+ "recopyTitle": "再点一次,重新复制这个方向",
165
+ "selectTitle": "选择这个方向,并复制给 Agent",
166
+ "copyRound": "{round}:",
167
+ "copyChoice": "{round}选 {number} {name}",
168
+ "copied": "已复制,粘贴给 Agent",
169
+ "copyFailed": "复制失败,请手动复制"
170
+ },
171
+ "en": {
172
+ "htmlLang": "en",
173
+ "pageTitle": "Style comparison",
174
+ "projectTitle": "{project} · Style comparison · Oil UI{edition}",
175
+ "brandTitle": "Oil UI{edition} · oiloil.org",
176
+ "brandLabel": "Oil UI{edition} — visit oiloil.org",
177
+ "layoutLabel": "View mode",
178
+ "compare": "Compare",
179
+ "loupe": "Single",
180
+ "viewportLabel": "Preview size",
181
+ "desktop": "Desktop 1280",
182
+ "mobile": "Mobile 390",
183
+ "candidates": "Design directions",
184
+ "singleView": "Single view",
185
+ "previous": "Previous direction",
186
+ "next": "Next direction",
187
+ "switchDirection": "Switch direction",
188
+ "empty": "No previews yet. Prepare a manifest as described in references/style-explorer.md, then run the generator.",
189
+ "baseline": "Current",
190
+ "serviceUnavailable": "The dev server isn't running",
191
+ "serviceHelp": "Ask your agent to “open the comparison page.”",
192
+ "copyCommand": "Copy command",
193
+ "copyCommandLabel": "Copy start command",
194
+ "live": "Live",
195
+ "image": "Image",
196
+ "interactive": "Interactive",
197
+ "fonts": "Fonts",
198
+ "traits": "Traits",
199
+ "viewDirection": "View {name}",
200
+ "selected": "Selected",
201
+ "peek": "Click to view alone · actual size",
202
+ "fit": "Fit to window",
203
+ "actual": "Actual size (100%)",
204
+ "keyboardHint": "<kbd>←</kbd> <kbd>→</kbd> Switch direction · <kbd>P</kbd> Select and copy<br><kbd>Esc</kbd> Back to compare",
205
+ "selectedCopy": "Selected · Copy",
206
+ "select": "Select",
207
+ "selectDirection": "Choose this direction",
208
+ "recopyTitle": "Click again to copy this direction",
209
+ "selectTitle": "Choose this direction and copy a message for your agent",
210
+ "copyRound": "Round {round}: ",
211
+ "copyChoice": "{round}Go with {number} {name}",
212
+ "copied": "Copied. Paste it to your agent.",
213
+ "copyFailed": "Couldn't copy. Please copy the text manually."
214
+ }
215
+ };
216
+ const IS_PRO = DATA?.edition !== 'open';
217
+ const LANG = DATA?.lang || (/^zh/i.test(navigator.language || '') ? 'zh' : 'en');
218
+ function t(key, values={}) {
219
+ values={edition:IS_PRO?' Pro':'',...values};
220
+ return I18N[LANG][key].replace(/\{(\w+)\}/g, (_, name)=>String(values[name] ?? ''));
221
+ }
222
+ (()=>{
223
+ const $=s=>document.querySelector(s),$$=s=>document.querySelectorAll(s);
224
+ document.documentElement.lang=t('htmlLang');
225
+ document.title=DATA?.project?t('projectTitle',{project:DATA.project}):t('pageTitle');
226
+ $$('[data-i18n]').forEach(n=>n.textContent=t(n.dataset.i18n));
227
+ ['aria-label','title','placeholder'].forEach(attr=>$$(`[data-i18n-${attr}]`).forEach(n=>n.setAttribute(attr,t(n.getAttribute(`data-i18n-${attr}`)))));
228
+ $('#pro-badge').hidden=!IS_PRO;
229
+ if(!DATA?.candidates?.length){$('#empty').hidden=false;return;}
230
+ const C=DATA.candidates,SIZES={desktop:{w:1280,h:900},mobile:{w:390,h:844}},KEY=`oil-ui:${DATA.fingerprint||DATA.project}`;
231
+ const byId=Object.fromEntries(C.map(c=>[c.id,c])),DIRS=C.filter(c=>!c.baseline),no=c=>c.baseline?t('baseline'):String(DIRS.indexOf(c)+1).padStart(2,'0'),vtName=c=>`stage-${C.indexOf(c)}`;
232
+ const root=document.documentElement,calm=matchMedia('(prefers-reduced-motion: reduce)'),narrow=()=>matchMedia('(max-width:760px)').matches;
233
+ const ease=n=>getComputedStyle(root).getPropertyValue(`--${n}`).trim()||'ease-out';
234
+ let st={layout:'compare',viewport:'desktop',current:C[0].id,chosen:null},stored=true,zoomActual=false,compareScroll=0,gridKey='',loupeKey='',toastTimer=0;
235
+ try{const saved=JSON.parse(localStorage.getItem(KEY)||'null');if(saved&&typeof saved==='object'){for(const key of Object.keys(st))if(key in saved)st[key]=saved[key];if(!byId[st.chosen])st.chosen=null;if(!byId[st.current])st.current=C[0].id;if(!['compare','loupe'].includes(st.layout))st.layout='compare';if(!SIZES[st.viewport])st.viewport='desktop';}}catch{stored=false;}
236
+ function save(){if(!stored)return;try{localStorage.setItem(KEY,JSON.stringify(st));}catch{stored=false;}}
237
+ const el=(tag,cls,text)=>{const n=document.createElement(tag);if(cls)n.className=cls;if(text!=null)n.textContent=text;return n;};
238
+ const shown=()=>C;
239
+ const services=new Map(C.filter(c=>c.kind==='url').map(c=>[c.content,{ready:null,pending:false}]));
240
+ const startCommand=DATA.serve?(DATA.serve.cwd?`cd "${DATA.serve.cwd.replace(/[\\"$`]/g,'\\$&')}" && ${DATA.serve.command}`:DATA.serve.command):'';
241
+
242
+ function serviceNotice(){
243
+ const note=el('div','service-note'),message=el('div','service-message');note.hidden=true;note.setAttribute('role','status');
244
+ message.append(el('h3',null,t('serviceUnavailable')),el('p',null,t('serviceHelp')));
245
+ if(startCommand){const row=el('div','service-command'),button=el('button','tool',t('copyCommand'));button.type='button';button.dataset.copyServe='';button.setAttribute('aria-label',t('copyCommandLabel'));button.addEventListener('click',()=>copy(startCommand));row.append(el('code',null,startCommand),button);message.append(row);}
246
+ note.append(message);return note;
247
+ }
248
+ function syncService(s,c){
249
+ const ready=services.get(c.content).ready,m=s.querySelector('iframe');
250
+ s.classList.toggle('offline',ready===false);s.querySelector('.service-note').hidden=ready!==false;m.hidden=ready!==true;
251
+ if(ready===true){if(m.getAttribute('src')!==c.content){s.classList.remove('ready');m.src=c.content;}}
252
+ else{s.classList.remove('ready');if(m.hasAttribute('src'))m.removeAttribute('src');}
253
+ }
254
+ async function checkService(url){
255
+ const state=services.get(url);if(state.pending)return;state.pending=true;
256
+ const controller=new AbortController(),timer=setTimeout(()=>controller.abort(),2500);
257
+ const target=new URL(url);if(target.hostname==='[::1]')target.hostname='localhost';
258
+ try{await fetch(target.href,{mode:'no-cors',cache:'no-store',credentials:'omit',signal:controller.signal});state.ready=true;}catch{state.ready=false;}
259
+ finally{clearTimeout(timer);state.pending=false;}
260
+ $$('.stage').forEach(s=>{const c=byId[s.dataset.id];if(c.kind==='url'&&c.content===url)syncService(s,c);});
261
+ }
262
+ const checkServices=()=>services.forEach((state,url)=>checkService(url));
263
+
264
+ // 动效工具:尊重“减少动态效果”,浏览器不支持时直接落到最终状态
265
+ function animate(node,frames,opts){if(calm.matches||!node?.animate)return;try{node.animate(frames,opts);}catch{node.animate(frames,{...opts,easing:'ease-out'});}}
266
+ let vtSeq=0;
267
+ function morph(update,kind){
268
+ if(calm.matches||!document.startViewTransition||document.hidden){update();return;}
269
+ const n=++vtSeq;root.dataset.vt=kind||'';
270
+ try{document.startViewTransition(update).finished.finally(()=>{if(n===vtSeq)delete root.dataset.vt;});}catch{update();}
271
+ }
272
+ function slideTo(ind,target,instant){
273
+ if(!ind||!target||!target.offsetWidth)return;
274
+ if(instant)ind.style.transition='none';
275
+ ind.style.width=`${target.offsetWidth}px`;ind.style.height=`${target.offsetHeight}px`;ind.style.transform=`translate(${target.offsetLeft}px,${target.offsetTop}px)`;
276
+ if(instant){ind.offsetWidth;ind.style.transition='';}
277
+ }
278
+ const placeThumbs=instant=>$$('.seg').forEach(s=>slideTo(s.querySelector('.thumb'),s.querySelector('[aria-pressed=true]'),instant));
279
+ const placeFilm=instant=>{const f=$('#film');slideTo(f.querySelector('.film-ind'),f.querySelector('[aria-current=true]'),instant);};
280
+
281
+ $('#project').textContent=DATA.project||'';
282
+ $('#brief').textContent=DATA.brief||'';
283
+
284
+ function stripMini(c){if(!c.palette?.length)return null;const s=el('span','strip-mini');c.palette.forEach(h=>{const i=el('i');i.style.background=h;s.append(i);});return s;}
285
+ function stage(c,interactive){
286
+ const s=el('div','stage');s.dataset.id=c.id;
287
+ const m=document.createElement(c.kind==='image'?'img':'iframe');
288
+ if(c.kind==='image'){m.alt=c.name;m.draggable=false;}
289
+ else{m.title=c.name;m.setAttribute('sandbox',c.kind==='url'?'allow-scripts allow-same-origin allow-forms':c.interactive?'allow-scripts allow-forms':'');m.referrerPolicy='no-referrer';if(!interactive)m.tabIndex=-1;}
290
+ m.addEventListener('load',()=>{if(c.kind==='url'&&services.get(c.content).ready!==true)return;s.classList.add('ready');fit(s);});
291
+ if(c.kind==='image')m.src=c.content;else if(c.kind!=='url')m.srcdoc=c.content;
292
+ s.append(m);
293
+ if(c.kind==='url'){s.append(serviceNotice());syncService(s,c);}
294
+ if(c.kind!=='html'||c.interactive)s.append(el('span','static',c.kind==='url'?t('live'):c.kind==='image'?t('image'):t('interactive')));
295
+ return s;
296
+ }
297
+ function fit(s){
298
+ if(!s.isConnected)return;
299
+ const native=byId[s.dataset.id].nativeViewport,size=native?{w:native.width,h:native.height}:SIZES[st.viewport],m=s.querySelector('iframe,img'),box=s.parentElement;let r;
300
+ if(box.classList.contains('slide')){const cs=getComputedStyle(box),w=box.clientWidth-parseFloat(cs.paddingLeft)-parseFloat(cs.paddingRight),h=narrow()?(native?innerHeight-$('#bar').offsetHeight-parseFloat(cs.paddingTop)-parseFloat(cs.paddingBottom):Infinity):box.clientHeight-parseFloat(cs.paddingTop)-parseFloat(cs.paddingBottom);r=box.dataset.zoom==='actual'?1:Math.min(w/size.w,h/size.h,1);}
301
+ else r=Math.min(box.clientWidth/size.w,1);
302
+ if(!(r>0))return;
303
+ s.style.width=`${size.w*r}px`;s.style.height=`${size.h*r}px`;m.style.width=`${size.w}px`;m.style.height=`${size.h}px`;m.style.transform=`scale(${r})`;
304
+ }
305
+ const fitAll=()=>$$('.stage').forEach(fit),refit=()=>requestAnimationFrame(fitAll);
306
+
307
+ function specList(c){
308
+ const dl=el('dl','spec');const row=(k,v)=>{dl.append(el('dt',null,k),el('dd',null,v));};
309
+ if(c.typography)row(t('fonts'),c.typography);if(c.traits?.length)row(t('traits'),c.traits.join(' · '));return dl.children.length?dl:null;
310
+ }
311
+ function pickButton(c){const b=el('button','pick');b.type='button';b.dataset.pick=c.id;b.addEventListener('click',()=>choose(c.id));return b;}
312
+ function card(c,i){
313
+ const a=el('article','card');a.dataset.id=c.id;a.style.setProperty('--i',i);a.setAttribute('aria-label',c.name);
314
+ const frame=el('div','frame');frame.style.viewTransitionName=vtName(c);const s=stage(c,false);
315
+ const hit=el('button','hit');hit.type='button';hit.setAttribute('aria-label',t('viewDirection',{name:c.name}));hit.addEventListener('click',()=>setLayout('loupe',c.id));
316
+ s.append(hit);frame.append(s,el('span','pick-mark',t('selected')),el('span','peek',t('peek')));
317
+ const cap=el('div','cap');cap.style.viewTransitionName=`cap-${C.indexOf(c)}`;cap.append(el('span',c.baseline?'no base':'no',no(c)),el('h2','name',c.name));const mini=stripMini(c);if(mini)cap.append(mini);cap.append(pickButton(c));
318
+ a.append(frame,cap);if(c.concept){const lede=el('p','lede',c.concept);lede.title=c.concept;lede.style.viewTransitionName=`lede-${C.indexOf(c)}`;a.append(lede);}return a;
319
+ }
320
+ function syncCompare(){
321
+ const list=shown(),g=$('#grid'),key=list.map(c=>c.id).join();
322
+ if(key!==gridKey){gridKey=key;g.replaceChildren(...list.map(card));}
323
+ g.style.setProperty('--cols',Math.min(Math.max(list.length,1),st.viewport==='mobile'?4:3));
324
+ $$('.card .frame').forEach(f=>f.dataset.viewport=byId[f.parentElement.dataset.id].nativeViewport?'native':st.viewport);
325
+ }
326
+
327
+ // 单张查看:所有方向预先排成一条横向轨道,切换时整条轨道滑动,不重新加载画面
328
+ function syncLoupe(dir){
329
+ const list=shown(),key=list.map(c=>c.id).join();if(!list.length)return;
330
+ if(key!==loupeKey){
331
+ loupeKey=key;dir=0;
332
+ $('#track').replaceChildren(...list.map(c=>{const sl=el('div','slide');sl.dataset.id=c.id;sl.append(stage(c,true));return sl;}));
333
+ $('#film').replaceChildren(el('span','film-ind'),...list.map(c=>{const b=el('button');b.type='button';b.dataset.id=c.id;b.append(el('span','fn',no(c)),el('span','ft',c.name),stripMini(c));b.addEventListener('click',()=>go(c.id));return b;}));
334
+ }
335
+ if(!list.some(c=>c.id===st.current))st.current=list[0].id;
336
+ const i=list.findIndex(c=>c.id===st.current),track=$('#track');
337
+ if(!dir)track.style.transition='none';
338
+ track.style.transform=`translateX(${-i*100}%)`;
339
+ if(!dir){track.offsetWidth;track.style.transition='';}
340
+ $$('.slide').forEach(sl=>{const on=sl.dataset.id===st.current;sl.classList.toggle('is-current',on);sl.inert=!on;sl.dataset.zoom=on&&zoomActual?'actual':'fit';sl.firstElementChild.style.viewTransitionName=on?vtName(byId[sl.dataset.id]):'none';});
341
+ $('#prev').disabled=i<=0;$('#next').disabled=i>=list.length-1;
342
+ $$('#film button').forEach(b=>b.setAttribute('aria-current',String(b.dataset.id===st.current)));
343
+ renderInfo(dir);placeFilm(!dir);
344
+ const cur=$('#film [aria-current=true]'),f=$('#film');
345
+ if(cur&&f.scrollWidth>f.clientWidth)f.scrollTo({left:cur.offsetLeft-16,behavior:calm.matches||!dir?'auto':'smooth'});
346
+ }
347
+ function renderInfo(dir){
348
+ const c=byId[st.current],body=$('#info-body');
349
+ const sw=el('div','big-sw');(c.palette||[]).forEach(h=>{const d=el('div');const x=el('i');x.style.background=h;d.append(x,h.toUpperCase());sw.append(d);});
350
+ const tools=el('div','tools');const z=el('button','tool',zoomActual?t('fit'):t('actual'));z.id='zoom';z.type='button';z.setAttribute('aria-pressed',String(zoomActual));z.addEventListener('click',toggleZoom);tools.append(z);
351
+ const hint=el('p','hint');hint.innerHTML=t('keyboardHint');
352
+ const blocks=[el('span','idx',no(c)),el('h2','name',c.name)];
353
+ if(c.concept)blocks.push(el('p','north',c.concept));if(sw.children.length)blocks.push(sw);const spec=specList(c);if(spec)blocks.push(spec);
354
+ blocks.push(pickButton(c),tools,hint);
355
+ body.replaceChildren(...blocks);paintChoice();
356
+ if(dir)animate(body,[{opacity:0,transform:`translateX(${dir*18}px)`},{opacity:1,transform:'none'}],{duration:420,easing:ease('glide')});
357
+ }
358
+ function toggleZoom(){
359
+ morph(()=>{zoomActual=!zoomActual;const sl=$('.slide.is-current');sl.dataset.zoom=zoomActual?'actual':'fit';fitAll();sl.scrollTo(0,0);const z=$('#zoom');z.textContent=zoomActual?t('fit'):t('actual');z.setAttribute('aria-pressed',String(zoomActual));},'reshape');
360
+ }
361
+
362
+ function render(){
363
+ const list=shown(),loupe=st.layout==='loupe'&&list.length>0;
364
+ $('#compare-view').hidden=st.layout!=='compare'||!list.length;$('#loupe').hidden=!loupe;
365
+ syncCompare();syncLoupe(0);
366
+ $$('[data-layout]').forEach(b=>b.setAttribute('aria-pressed',String(b.dataset.layout===st.layout)));
367
+ $$('[data-viewport]').forEach(b=>b.setAttribute('aria-pressed',String(b.dataset.viewport===st.viewport)));
368
+ placeThumbs(false);placeFilm(true);
369
+ paintChoice();fitAll();
370
+ }
371
+ function setLayout(layout,id){
372
+ if(layout===st.layout&&!(id&&id!==st.current))return;
373
+ if(layout==='loupe'&&st.layout==='compare')compareScroll=scrollY;
374
+ if(id)st.current=id;st.layout=layout;zoomActual=false;save();
375
+ morph(()=>{
376
+ render();
377
+ if(layout==='loupe'){window.scrollTo(0,0);return;}
378
+ window.scrollTo(0,compareScroll);
379
+ const a=$(`.card[data-id="${CSS.escape(st.current)}"]`),r=a?.getBoundingClientRect();
380
+ if(r&&(r.top<60||r.bottom>innerHeight))a.scrollIntoView({block:'center'});
381
+ });
382
+ }
383
+ function go(id){
384
+ const list=shown(),from=list.findIndex(c=>c.id===st.current),to=list.findIndex(c=>c.id===id);
385
+ if(to<0||to===from)return;
386
+ st.current=id;zoomActual=false;save();syncLoupe(Math.sign(to-from));fitAll();
387
+ }
388
+ function step(d){const list=shown(),i=list.findIndex(c=>c.id===st.current),n=list[i+d];if(n)go(n.id);else nudge(d);}
389
+ function nudge(d){animate($('.slide.is-current .stage'),[{transform:'none'},{transform:`translateX(${d*14}px)`},{transform:'none'}],{duration:320,easing:'ease-out'});}
390
+
391
+ // 选择即复制:再次点击“已选择”重新复制这个方向
392
+ function choose(id){
393
+ const fresh=st.chosen!==id;st.chosen=id;save();paintChoice();
394
+ if(fresh){
395
+ animate($(`.card[data-id="${CSS.escape(id)}"] .pick-mark`),[{opacity:0,transform:'scale(.4)'},{opacity:1,transform:'scale(1)'}],{duration:500,easing:ease('pop')});
396
+ }
397
+ copy();
398
+ }
399
+ function paintChoice(){
400
+ $$('.card').forEach(a=>a.classList.toggle('is-chosen',a.dataset.id===st.chosen));
401
+ $$('[data-pick]').forEach(b=>{const on=b.dataset.pick===st.chosen,short=!!b.closest('.cap');b.replaceChildren(document.createTextNode(on?(short?t('selected'):t('selectedCopy')):(short?t('select'):t('selectDirection'))));if(!short)b.append(el('kbd',null,'P'));b.toggleAttribute('data-on',on);b.title=on?t('recopyTitle'):t('selectTitle');});
402
+ $$('#film button').forEach(b=>b.querySelector('.ft').classList.toggle('chosen',b.dataset.id===st.chosen));
403
+ }
404
+ function copyText(){const c=byId[st.chosen];let text=t('copyChoice',{round:DATA.round?t('copyRound',{round:DATA.round}):'',number:no(c),name:c.name});return text;}
405
+ async function copy(t=copyText()){
406
+ let ok=false;
407
+ try{await navigator.clipboard.writeText(t);ok=true;}catch{const a=el('textarea');a.value=t;a.setAttribute('readonly','');a.style.cssText='position:fixed;opacity:0';document.body.append(a);a.select();try{ok=document.execCommand('copy');}catch{}a.remove();}
408
+ toast(ok,t);
409
+ }
410
+ function toast(ok,text){
411
+ const n=$('#toast');n.toggleAttribute('data-fail',!ok);n.querySelector('b').textContent=ok?t('copied'):t('copyFailed');n.querySelector('code').textContent=ok?text.replace(/\n/g,' · '):text;
412
+ n.classList.remove('show');n.offsetWidth;n.classList.add('show');
413
+ clearTimeout(toastTimer);toastTimer=setTimeout(()=>n.classList.remove('show'),ok?2400:8000);
414
+ }
415
+
416
+ $$('button[data-layout]').forEach(b=>b.addEventListener('click',()=>setLayout(b.dataset.layout)));
417
+ $$('button[data-viewport]').forEach(b=>b.addEventListener('click',()=>{if(st.viewport===b.dataset.viewport)return;st.viewport=b.dataset.viewport;save();morph(render,'reshape');}));
418
+ // 每个候选都声明了固定画布时,桌面和手机的切换不起作用,收起来。
419
+ if(C.every(c=>c.nativeViewport))$('[data-i18n-aria-label="viewportLabel"]').style.display='none';
420
+ $('#prev').addEventListener('click',()=>step(-1));$('#next').addEventListener('click',()=>step(1));
421
+ document.addEventListener('keydown',e=>{
422
+ if(e.target.closest?.('textarea,input,summary')||e.metaKey||e.ctrlKey||e.altKey||st.layout!=='loupe')return;
423
+ if(e.key==='ArrowLeft')step(-1);else if(e.key==='ArrowRight')step(1);else if(e.key==='Escape')setLayout('compare');else if(e.key.toLowerCase()==='p')choose(st.current);
424
+ });
425
+ function syncBars(){root.style.setProperty('--bar-h',`${$('#bar').offsetHeight}px`);placeThumbs(true);placeFilm(true);refit();}
426
+ window.addEventListener('resize',syncBars,{passive:true});
427
+ document.fonts?.ready.then(()=>{placeThumbs(true);placeFilm(true);});
428
+ $('#bar').hidden=false;
429
+ if(st.layout==='compare'){$('#grid').classList.add('first');$('.intro').classList.add('first');setTimeout(()=>{$('#grid').classList.remove('first');$('.intro').classList.remove('first');},1400);}
430
+ render();syncBars();
431
+ if(services.size){checkServices();setInterval(()=>{if(!document.hidden)checkServices();},5000);window.addEventListener('focus',checkServices);document.addEventListener('visibilitychange',()=>{if(!document.hidden)checkServices();});}
432
+ })();
433
+ </script></body></html>
@@ -0,0 +1,5 @@
1
+ {
2
+ "source": "https://github.com/oil-oil/oil-ui",
3
+ "version": "0.32.0",
4
+ "revision": "0d64a00f3a5c45bf7a30d35bded9b7c0fdff2128"
5
+ }