elanous 0.2.10 → 0.2.12

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 (615) hide show
  1. package/apps/pwa/out/404/index.html +1 -1
  2. package/apps/pwa/out/404.html +1 -1
  3. package/apps/pwa/out/_next/static/-6XrAoD3eU7NyMHAE4xPS/_buildManifest.js +1 -0
  4. package/apps/pwa/out/_next/static/chunks/1147-466ec15afacc1a65.js +1 -0
  5. package/apps/pwa/out/_next/static/chunks/1159-0c5ef8bc21cb6afb.js +1 -0
  6. package/apps/pwa/out/_next/static/chunks/1394-ee3795b112907122.js +1 -0
  7. package/apps/pwa/out/_next/static/chunks/1452.93700483b9d4fc61.js +9 -0
  8. package/apps/pwa/out/_next/static/chunks/{6062-73e68343a9814f6a.js → 1829-b453a1b22d3999bb.js} +1 -1
  9. package/apps/pwa/out/_next/static/chunks/2176-c379e3ebce874151.js +1 -0
  10. package/apps/pwa/out/_next/static/chunks/2426.8c6ee0c668d53def.js +1 -0
  11. package/apps/pwa/out/_next/static/chunks/3170-7ec60a56fa0e4728.js +1 -0
  12. package/apps/pwa/out/_next/static/chunks/3278-ae6ef084769f6195.js +1 -0
  13. package/apps/pwa/out/_next/static/chunks/3454-988a53dac60a1763.js +1 -0
  14. package/apps/pwa/out/_next/static/chunks/3638-aa80b4641ea439db.js +1 -0
  15. package/apps/pwa/out/_next/static/chunks/3735-fe3402553ac1c9c6.js +1 -0
  16. package/apps/pwa/out/_next/static/chunks/3869-3cd46526879f454c.js +1 -0
  17. package/apps/pwa/out/_next/static/chunks/390.c373e31b3b9d0c41.js +5 -0
  18. package/apps/pwa/out/_next/static/chunks/3992-2e522a8ac5f2afde.js +25 -0
  19. package/apps/pwa/out/_next/static/chunks/4215-c9d91dd644ec1719.js +1 -0
  20. package/apps/pwa/out/_next/static/chunks/4508-5d0161d1e724d735.js +1 -0
  21. package/apps/pwa/out/_next/static/chunks/4685-c3c1c625b71accd1.js +1 -0
  22. package/apps/pwa/out/_next/static/chunks/4733-623a79345b171e1c.js +1 -0
  23. package/apps/pwa/out/_next/static/chunks/4883.3bd969ea1d3aaaff.js +2 -0
  24. package/apps/pwa/out/_next/static/chunks/5532.6899a12958a89b72.js +1 -0
  25. package/apps/pwa/out/_next/static/chunks/{8067-87ce253ec2f23697.js → 5845-e6c003ce8d5fd36a.js} +1 -1
  26. package/apps/pwa/out/_next/static/chunks/5978-b27004c677119115.js +1 -0
  27. package/apps/pwa/out/_next/static/chunks/{8046cadf-211ca3c0e00f2b72.js → 5cd7e3a9-404fd6b8d0ecd44c.js} +1 -1
  28. package/apps/pwa/out/_next/static/chunks/6048-4c5c33579bc4ef78.js +1 -0
  29. package/apps/pwa/out/_next/static/chunks/6303-422dbf0f67c72aac.js +1 -0
  30. package/apps/pwa/out/_next/static/chunks/6751-bb3595948b2e311b.js +1 -0
  31. package/apps/pwa/out/_next/static/chunks/7274-19b7279f18b47ab3.js +1 -0
  32. package/apps/pwa/out/_next/static/chunks/7277-0b2fc7c16ba2d64b.js +1 -0
  33. package/apps/pwa/out/_next/static/chunks/{4323.c5dfb6f503304775.js → 7334.a6679d9168f37aa8.js} +1 -1
  34. package/apps/pwa/out/_next/static/chunks/7551-a0e0707b79164ddd.js +1 -0
  35. package/apps/pwa/out/_next/static/chunks/7758-0b018a9e4fc56200.js +1 -0
  36. package/apps/pwa/out/_next/static/chunks/7777-79f845045aa1ed86.js +1 -0
  37. package/apps/pwa/out/_next/static/chunks/79f8be9e-957d68913b590b08.js +1 -0
  38. package/apps/pwa/out/_next/static/chunks/8025-cc24ee5d8f2fb6f8.js +1 -0
  39. package/apps/pwa/out/_next/static/chunks/8039-df92e08fede5de8f.js +1 -0
  40. package/apps/pwa/out/_next/static/chunks/8206-c6684dcde12be721.js +1 -0
  41. package/apps/pwa/out/_next/static/chunks/8421-1c4acfb1395a0edf.js +1 -0
  42. package/apps/pwa/out/_next/static/chunks/8605-0259994816604c49.js +1 -0
  43. package/apps/pwa/out/_next/static/chunks/8725.bf46bb1395dd0fa2.js +1 -0
  44. package/apps/pwa/out/_next/static/chunks/8734-252d511cd276c0dc.js +1 -0
  45. package/apps/pwa/out/_next/static/chunks/8834-ca1cb09c1cb1a6bf.js +1 -0
  46. package/apps/pwa/out/_next/static/chunks/{2415.ed6428ff334c7ce2.js → 9269.d2a4795bc6812717.js} +1 -1
  47. package/apps/pwa/out/_next/static/chunks/9538-2816b90923606459.js +1 -0
  48. package/apps/pwa/out/_next/static/chunks/9656-c1540088f5859c80.js +1 -0
  49. package/apps/pwa/out/_next/static/chunks/9906-482c6619b3fdda20.js +1 -0
  50. package/apps/pwa/out/_next/static/chunks/9920-5cfdc5e8fd209825.js +1 -0
  51. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-d16993889b125c42.js +1 -0
  52. package/apps/pwa/out/_next/static/chunks/app/approvals/page-cb169620945d1952.js +1 -0
  53. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-cefe8169e36cf62a.js +1 -0
  54. package/apps/pwa/out/_next/static/chunks/app/board/page-d2e35228bc497119.js +1 -0
  55. package/apps/pwa/out/_next/static/chunks/app/botlab/{page-54b32bd27726588d.js → page-5c05b0da4bc1392c.js} +1 -1
  56. package/apps/pwa/out/_next/static/chunks/app/bots/page-e0ccdb576812b523.js +1 -0
  57. package/apps/pwa/out/_next/static/chunks/app/chat/page-813c4a52c9d05ca8.js +1 -0
  58. package/apps/pwa/out/_next/static/chunks/app/consult/page-4731f2c215358937.js +1 -0
  59. package/apps/pwa/out/_next/static/chunks/app/control/page-a022b257950f39e6.js +1 -0
  60. package/apps/pwa/out/_next/static/chunks/app/design-check/page-a2ffc717e04b8b0a.js +1 -0
  61. package/apps/pwa/out/_next/static/chunks/app/editor/page-b59ee4e70fc18fcf.js +1 -0
  62. package/apps/pwa/out/_next/static/chunks/app/exec/page-a67e11ba962337b5.js +1 -0
  63. package/apps/pwa/out/_next/static/chunks/app/field/page-c172dabd796eb7a3.js +1 -0
  64. package/apps/pwa/out/_next/static/chunks/app/healthz/route-d16993889b125c42.js +1 -0
  65. package/apps/pwa/out/_next/static/chunks/app/inside/page-1efd0cb9e0ed9d13.js +1 -0
  66. package/apps/pwa/out/_next/static/chunks/app/intake/page-d5dc7ff69a37b4cf.js +1 -0
  67. package/apps/pwa/out/_next/static/chunks/app/layout-e71c84189e8c683e.js +1 -0
  68. package/apps/pwa/out/_next/static/chunks/app/live/page-1d6a533ce5a6efcb.js +1 -0
  69. package/apps/pwa/out/_next/static/chunks/app/market/page-dfca9b7d2de0b135.js +1 -0
  70. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-793fa536b3a6ef37.js +1 -0
  71. package/apps/pwa/out/_next/static/chunks/app/morning/page-6dd3bfbbde2a5c2c.js +1 -0
  72. package/apps/pwa/out/_next/static/chunks/app/not-found-490653e8d4cc8852.js +1 -0
  73. package/apps/pwa/out/_next/static/chunks/app/observatory/page-77447356baad75d2.js +1 -0
  74. package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-29e961191f6057df.js +1 -0
  75. package/apps/pwa/out/_next/static/chunks/app/ops/release/page-c822f55b884d9104.js +1 -0
  76. package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-fa4ccfc432424e52.js +1 -0
  77. package/apps/pwa/out/_next/static/chunks/app/outputs/page-6d604227e1664b71.js +1 -0
  78. package/apps/pwa/out/_next/static/chunks/app/page-9c7e8f744a765daf.js +1 -0
  79. package/apps/pwa/out/_next/static/chunks/app/reflection/page-4048543b4b7ad5e0.js +1 -0
  80. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-4c3a3126abed551a.js +1 -0
  81. package/apps/pwa/out/_next/static/chunks/app/sessions/page-64b0aecb1ca75e75.js +1 -0
  82. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-4292d0149020e8a7.js +1 -0
  83. package/apps/pwa/out/_next/static/chunks/app/settings/page-db14d0be7f1c460c.js +1 -0
  84. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-e5d8072cd7cfef73.js +1 -0
  85. package/apps/pwa/out/_next/static/chunks/app/setup/layout-d16993889b125c42.js +1 -0
  86. package/apps/pwa/out/_next/static/chunks/app/setup/page-9547b5cec7cf76bf.js +1 -0
  87. package/apps/pwa/out/_next/static/chunks/app/share/page-e6dcb83265530636.js +1 -0
  88. package/apps/pwa/out/_next/static/chunks/app/showroom/page-45248f08d6aecae5.js +1 -0
  89. package/apps/pwa/out/_next/static/chunks/app/tasks/page-2cddeb9e2aeedc55.js +1 -0
  90. package/apps/pwa/out/_next/static/chunks/app/term/page-e297866051595d81.js +1 -0
  91. package/apps/pwa/out/_next/static/chunks/app/today/page-baba2e047872fb0f.js +1 -0
  92. package/apps/pwa/out/_next/static/chunks/app/trace/page-e895da4ec9cac345.js +1 -0
  93. package/apps/pwa/out/_next/static/chunks/app/vault/page-4344faf20216233b.js +1 -0
  94. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-698bb29f11864b89.js +1 -0
  95. package/apps/pwa/out/_next/static/chunks/app/workflows/page-bd6a6dc1ddc273f2.js +1 -0
  96. package/apps/pwa/out/_next/static/chunks/app/workspace/page-2e9e2fb01c9da1c9.js +1 -0
  97. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-d62ceb13411ebba4.js +1 -0
  98. package/apps/pwa/out/_next/static/chunks/{2ea96958-e8c7e112de50b067.js → f48170cc-d05d28bf87a43bf4.js} +1 -1
  99. package/apps/pwa/out/_next/static/chunks/framework-172630e6aa5e2d7f.js +1 -0
  100. package/apps/pwa/out/_next/static/chunks/main-app-f0fe2d7477845181.js +1 -0
  101. package/apps/pwa/out/_next/static/chunks/main-fc98ac70b44eccb0.js +1 -0
  102. package/apps/pwa/out/_next/static/chunks/pages/_app-5bd7f10271f72413.js +1 -0
  103. package/apps/pwa/out/_next/static/chunks/pages/_error-97d0d85ea05fef9b.js +1 -0
  104. package/apps/pwa/out/_next/static/chunks/webpack-9e4d02d567b98240.js +1 -0
  105. package/apps/pwa/out/_next/static/css/128fb7fb670b2fbf.css +1 -0
  106. package/apps/pwa/out/approvals/index.html +1 -1
  107. package/apps/pwa/out/approvals/index.txt +23 -23
  108. package/apps/pwa/out/autopilot/index.html +1 -1
  109. package/apps/pwa/out/autopilot/index.txt +23 -23
  110. package/apps/pwa/out/board/index.html +1 -1
  111. package/apps/pwa/out/board/index.txt +23 -23
  112. package/apps/pwa/out/botlab/index.html +1 -1
  113. package/apps/pwa/out/botlab/index.txt +22 -22
  114. package/apps/pwa/out/bots/index.html +1 -1
  115. package/apps/pwa/out/bots/index.txt +22 -22
  116. package/apps/pwa/out/chat/index.html +1 -1
  117. package/apps/pwa/out/chat/index.txt +22 -22
  118. package/apps/pwa/out/consult/index.html +1 -1
  119. package/apps/pwa/out/consult/index.txt +23 -23
  120. package/apps/pwa/out/control/index.html +1 -1
  121. package/apps/pwa/out/control/index.txt +23 -23
  122. package/apps/pwa/out/design-check/index.html +1 -1
  123. package/apps/pwa/out/design-check/index.txt +23 -23
  124. package/apps/pwa/out/editor/index.html +1 -1
  125. package/apps/pwa/out/editor/index.txt +23 -23
  126. package/apps/pwa/out/exec/index.html +1 -1
  127. package/apps/pwa/out/exec/index.txt +23 -23
  128. package/apps/pwa/out/field/index.html +1 -1
  129. package/apps/pwa/out/field/index.txt +23 -23
  130. package/apps/pwa/out/healthz +1 -1
  131. package/apps/pwa/out/index.html +1 -1
  132. package/apps/pwa/out/index.txt +22 -22
  133. package/apps/pwa/out/inside/index.html +1 -0
  134. package/apps/pwa/out/inside/index.txt +31 -0
  135. package/apps/pwa/out/intake/index.html +1 -1
  136. package/apps/pwa/out/intake/index.txt +23 -23
  137. package/apps/pwa/out/live/index.html +1 -1
  138. package/apps/pwa/out/live/index.txt +23 -23
  139. package/apps/pwa/out/market/index.html +1 -1
  140. package/apps/pwa/out/market/index.txt +22 -22
  141. package/apps/pwa/out/missions/placeholder/index.html +1 -1
  142. package/apps/pwa/out/missions/placeholder/index.txt +22 -22
  143. package/apps/pwa/out/morning/index.html +1 -1
  144. package/apps/pwa/out/morning/index.txt +23 -23
  145. package/apps/pwa/out/observatory/index.html +1 -1
  146. package/apps/pwa/out/observatory/index.txt +23 -23
  147. package/apps/pwa/out/ops/checklist/index.html +1 -1
  148. package/apps/pwa/out/ops/checklist/index.txt +22 -22
  149. package/apps/pwa/out/ops/release/index.html +1 -1
  150. package/apps/pwa/out/ops/release/index.txt +22 -22
  151. package/apps/pwa/out/ops/seats/index.html +1 -1
  152. package/apps/pwa/out/ops/seats/index.txt +22 -22
  153. package/apps/pwa/out/outputs/index.html +1 -0
  154. package/apps/pwa/out/outputs/index.txt +30 -0
  155. package/apps/pwa/out/reflection/index.html +1 -1
  156. package/apps/pwa/out/reflection/index.txt +23 -23
  157. package/apps/pwa/out/scheduler/index.html +1 -1
  158. package/apps/pwa/out/scheduler/index.txt +23 -23
  159. package/apps/pwa/out/sessions/index.html +1 -1
  160. package/apps/pwa/out/sessions/index.txt +22 -22
  161. package/apps/pwa/out/settings/devices/index.html +1 -1
  162. package/apps/pwa/out/settings/devices/index.txt +23 -23
  163. package/apps/pwa/out/settings/index.html +1 -1
  164. package/apps/pwa/out/settings/index.txt +23 -23
  165. package/apps/pwa/out/setup/done/index.html +1 -1
  166. package/apps/pwa/out/setup/done/index.txt +23 -23
  167. package/apps/pwa/out/setup/index.html +1 -1
  168. package/apps/pwa/out/setup/index.txt +23 -23
  169. package/apps/pwa/out/share/index.html +1 -1
  170. package/apps/pwa/out/share/index.txt +23 -23
  171. package/apps/pwa/out/showroom/index.html +1 -1
  172. package/apps/pwa/out/showroom/index.txt +22 -22
  173. package/apps/pwa/out/tasks/index.html +1 -1
  174. package/apps/pwa/out/tasks/index.txt +23 -23
  175. package/apps/pwa/out/term/index.html +1 -1
  176. package/apps/pwa/out/term/index.txt +23 -24
  177. package/apps/pwa/out/today/index.html +1 -1
  178. package/apps/pwa/out/today/index.txt +23 -23
  179. package/apps/pwa/out/trace/index.html +1 -1
  180. package/apps/pwa/out/trace/index.txt +23 -23
  181. package/apps/pwa/out/vault/index.html +1 -1
  182. package/apps/pwa/out/vault/index.txt +23 -23
  183. package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
  184. package/apps/pwa/out/workflows/chat-ui/index.txt +23 -23
  185. package/apps/pwa/out/workflows/index.html +1 -1
  186. package/apps/pwa/out/workflows/index.txt +23 -23
  187. package/apps/pwa/out/workspace/index.html +1 -1
  188. package/apps/pwa/out/workspace/index.txt +23 -24
  189. package/apps/pwa/out/worktrees/index.html +1 -1
  190. package/apps/pwa/out/worktrees/index.txt +23 -23
  191. package/graphs/context/nightly-condense.yaml +21 -0
  192. package/graphs/context/recipes.yaml +12 -0
  193. package/graphs/demo/inside-seed.yaml +20 -0
  194. package/graphs/demo/recipes.yaml +12 -0
  195. package/graphs/drafts/draft-cleanup.yaml +19 -0
  196. package/graphs/drafts/recipes.yaml +23 -0
  197. package/graphs/intake/intake-daily.yaml +2 -1
  198. package/graphs/ops/recipes.yaml +3 -0
  199. package/graphs/ops/secret-exposure.yaml +24 -0
  200. package/graphs/release/recipes.yaml +3 -0
  201. package/graphs/release/release-loop.yaml +4 -1
  202. package/graphs/video/explainer-line.yaml +2 -2
  203. package/package.json +2 -1
  204. package/plugins/card-followup/examples/sample-card.png +0 -0
  205. package/plugins/elanous-hwp/README.md +25 -0
  206. package/plugins/elanous-hwp/cli.ts +22 -0
  207. package/plugins/elanous-hwp/converter.ts +237 -0
  208. package/plugins/elanous-hwp/fixtures/fixed-controls.hwpx +0 -0
  209. package/plugins/elanous-hwp/fixtures/fixed-table-controls.hwpx +0 -0
  210. package/plugins/elanous-hwp/fixtures/fixed.hwpx +0 -0
  211. package/plugins/elanous-hwp/plugin.json +16 -0
  212. package/plugins/elanous-hwp/plugin.ts +40 -0
  213. package/scripts/ci-public-export-leak-gate.ts +75 -14
  214. package/scripts/ci-public-leak-gate.ts +44 -9
  215. package/scripts/context-hooks/claude-stop.sh +4 -0
  216. package/scripts/context-hooks/emit.ts +24 -0
  217. package/scripts/context-hooks/post-tool-use.sh +4 -0
  218. package/scripts/coord-channel-watch.sh +12 -0
  219. package/scripts/coord-requests-bridge.ts +143 -0
  220. package/scripts/field-feed/lib.ts +4 -0
  221. package/scripts/fleet/node-setup.sh +20 -3
  222. package/scripts/homebrew-formula-bump.ts +69 -0
  223. package/scripts/lib/telegram-inject-args.ts +31 -0
  224. package/scripts/marketing/measure-site-numbers.ts +169 -0
  225. package/scripts/measure-gate-shards.ts +309 -0
  226. package/scripts/measure-pod-memory-by-goal.ts +130 -0
  227. package/scripts/mission-request-judge.ts +31 -1
  228. package/scripts/morning-report.ts +2 -2
  229. package/scripts/opportunity-scan.ts +1 -1
  230. package/scripts/release-loop/auto-approve-node.ts +21 -4
  231. package/scripts/release-loop/checklist-gate-node.ts +2 -1
  232. package/scripts/release-loop/cut-branch.ts +84 -0
  233. package/scripts/release-loop/gate-node.ts +22 -15
  234. package/scripts/release-loop/mac-smoke-node.ts +229 -0
  235. package/scripts/release-loop/node-verdict.ts +3 -3
  236. package/scripts/release-loop/ops-upgrade-node.ts +47 -6
  237. package/scripts/release-loop/publish-node.ts +4 -1
  238. package/scripts/release-loop/tui-node-checks.ts +42 -0
  239. package/scripts/release-loop/tui-sim-node.ts +32 -8
  240. package/scripts/release-loop/unattended-release.ts +5 -3
  241. package/scripts/release-loop/version-node.ts +74 -13
  242. package/scripts/signal-digest-cycle.ts +2 -7
  243. package/scripts/signal-digest-photo.ts +11 -0
  244. package/scripts/tech1-public-measure.ts +94 -0
  245. package/scripts/telegram-inject.ts +14 -6
  246. package/scripts/test-diet/node.ts +1 -1
  247. package/scripts/test-diet/remeasure-list.ts +112 -0
  248. package/scripts/tui-regress.ts +2 -2
  249. package/scripts/ux/demo-rehearsal.ts +247 -0
  250. package/scripts/ux/demo-seed.ts +108 -0
  251. package/scripts/ux/lib/rehearsal-verdict.ts +80 -0
  252. package/skills/diagram-master/SKILL.md +366 -0
  253. package/skills/diagram-master/references/engines/excalidraw/color-palette.md +67 -0
  254. package/skills/diagram-master/references/engines/excalidraw/element-templates.md +182 -0
  255. package/skills/diagram-master/references/engines/excalidraw/json-schema.md +71 -0
  256. package/skills/diagram-master/references/engines/excalidraw/render_excalidraw.py +189 -0
  257. package/skills/diagram-master/references/engines/excalidraw/render_template.html +57 -0
  258. package/skills/diagram-master/references/engines/matplotlib/matplotlib-patterns.md +235 -0
  259. package/skills/diagram-master/references/engines/matplotlib/render_matplotlib.py +184 -0
  260. package/skills/diagram-master/references/engines/mermaid/domain-templates.md +435 -0
  261. package/skills/diagram-master/references/engines/mermaid/render_mermaid.py +116 -0
  262. package/skills/diagram-master/references/engines/mermaid/syntax-reference.md +2247 -0
  263. package/skills/diagram-master/references/engines/nanobannana/render_nanobannana2.py +168 -0
  264. package/skills/diagram-master/references/engines/svg/color-palette.md +188 -0
  265. package/skills/diagram-master/references/engines/svg/html-base-template.html +332 -0
  266. package/skills/diagram-master/references/engines/svg/interactivity-patterns.md +435 -0
  267. package/skills/diagram-master/references/engines/svg/render_interactive_svg.py +212 -0
  268. package/skills/diagram-master/references/engines/svg/svg-element-templates.md +349 -0
  269. package/skills/diagram-master/references/examples/README.md +69 -0
  270. package/skills/diagram-master/references/examples/ref_grid_architecture.png +0 -0
  271. package/skills/diagram-master/references/examples/ref_layered_flow.png +0 -0
  272. package/skills/diagram-master/references/pyproject.toml +16 -0
  273. package/skills/diagram-master/references/quality-checklist.md +33 -0
  274. package/skills/diagram-master/references/routing-guide.md +164 -0
  275. package/skills/diagram-master/references/uv.lock +1356 -0
  276. package/skills/google-workspace/SKILL.md +33 -0
  277. package/skills/google-workspace/scripts/gws-safe.sh +177 -0
  278. package/skills/grill-me/SKILL.md +1 -1
  279. package/skills/lecture-note-digitizer/SKILL.md +926 -0
  280. package/skills/lecture-note-digitizer/references/convert_to_pdf.py +30 -0
  281. package/skills/lecture-note-digitizer/references/extract_slide_diagram.py +73 -0
  282. package/skills/lecture-note-digitizer/references/html-template.md +167 -0
  283. package/skills/lecture-note-digitizer/references/katex-style-guide.md +165 -0
  284. package/skills/omni-crawl/SKILL.md +21 -11
  285. package/skills/omni-crawl/scripts/main.ts +6 -6
  286. package/skills/omni-crawl/src/router.ts +3 -3
  287. package/skills/omni-digest/SKILL.md +17 -9
  288. package/skills/omni-digest/digest.md +2 -2
  289. package/skills/omni-digest/src/fetch.ts +30 -3
  290. package/skills/pitch-deck/SKILL.md +2 -2
  291. package/skills/pitch-deck/template.html +2 -2
  292. package/skills/youtube-master/SKILL.md +163 -0
  293. package/skills/youtube-master/package-lock.json +558 -0
  294. package/skills/youtube-master/package.json +13 -0
  295. package/skills/youtube-master/references/study-note-template.md +124 -0
  296. package/skills/youtube-master/scripts/main.ts +435 -0
  297. package/skills/youtube-master/scripts/transcribe-local.ts +24 -0
  298. package/skills/youtube-master/src/audio.ts +63 -0
  299. package/skills/youtube-master/src/domain-staging.ts +50 -0
  300. package/skills/youtube-master/src/env.ts +36 -0
  301. package/skills/youtube-master/src/obsidian.ts +155 -0
  302. package/skills/youtube-master/src/router.ts +110 -0
  303. package/skills/youtube-master/src/stt.ts +199 -0
  304. package/skills/youtube-master/src/study-note.ts +175 -0
  305. package/skills/youtube-master/src/summarize.ts +358 -0
  306. package/skills/youtube-master/src/transcript.ts +76 -0
  307. package/skills/youtube-master/src/types.ts +91 -0
  308. package/skills/youtube-master/src/util.ts +93 -0
  309. package/skills/youtube-master/src/youtube.ts +70 -0
  310. package/skills/youtube-master/tsconfig.json +13 -0
  311. package/src/acp/server.ts +5 -2
  312. package/src/agent-mission/driver.ts +215 -23
  313. package/src/agent-mission/pty-decision.ts +71 -0
  314. package/src/agent-mission/review-loop.ts +30 -0
  315. package/src/autopilot/build/llm-conflict-merge.ts +16 -3
  316. package/src/autopilot/pty-control-loop.ts +4 -1
  317. package/src/autopilot/tool-registry.ts +2 -0
  318. package/src/boot/daemon-prompt-turn.ts +5 -0
  319. package/src/boot/daemon-runtime.ts +9 -3
  320. package/src/boot/daemon-tools/web-search.ts +3 -0
  321. package/src/card-followup/core.ts +109 -0
  322. package/src/chat/index.ts +2 -0
  323. package/src/cli/drive-input-jail.ts +101 -0
  324. package/src/cli/hooks-cli.ts +17 -3
  325. package/src/cli/make-cli.ts +43 -0
  326. package/src/cli/persona-cli.ts +98 -9
  327. package/src/cli/plugin-cli.ts +31 -22
  328. package/src/cli/pod-cli.ts +36 -9
  329. package/src/cli/pod-memory-advice.ts +35 -0
  330. package/src/cli/pr-cli.ts +51 -15
  331. package/src/cli/pty-drive-cli.ts +41 -7
  332. package/src/cli/pty-drive-verdict.ts +40 -0
  333. package/src/cli/release-cli.ts +63 -10
  334. package/src/cli/setup-cli.ts +43 -1
  335. package/src/cli/skills-cli.ts +17 -1
  336. package/src/context-bus/claude-hooks-install.ts +10 -0
  337. package/src/context-bus/context-now-surfaces.ts +65 -0
  338. package/src/context-bus/context-now.ts +104 -0
  339. package/src/context-bus/coord-events.ts +2 -2
  340. package/src/context-bus/external-events.ts +52 -0
  341. package/src/context-bus/long-term-memory.ts +108 -0
  342. package/src/context-bus/nightly-condense.ts +153 -0
  343. package/src/context-bus/session-events.ts +35 -0
  344. package/src/dashboard/dashboard-status-lines.ts +2 -0
  345. package/src/dashboard/index.ts +17 -4
  346. package/src/dashboard/slash-runtime/dashboard-handlers.ts +31 -1
  347. package/src/decisions/decision-cards.ts +10 -3
  348. package/src/decisions/decision-ledger.ts +13 -5
  349. package/src/discord/sprint21-runtime.ts +5 -1
  350. package/src/discord-self-message.ts +32 -0
  351. package/src/discord-slash-wire.ts +5 -1
  352. package/src/discord.ts +17 -1
  353. package/src/domains/core-tools.ts +3 -2
  354. package/src/domains/outbound-alert.ts +105 -32
  355. package/src/domains/outbound-log-probe.ts +8 -0
  356. package/src/domains/telegram-kind-route.ts +51 -13
  357. package/src/exec-requests/default-outputs.ts +25 -0
  358. package/src/exec-requests/planner.ts +10 -2
  359. package/src/exec-requests/runner.ts +20 -6
  360. package/src/exec-requests/store.ts +3 -0
  361. package/src/execution-loop/launch-gate.ts +109 -0
  362. package/src/field/field-reel.ts +5 -1
  363. package/src/field-note/index.ts +201 -0
  364. package/src/field-note/telegram.ts +142 -0
  365. package/src/field-note/transcribe.ts +248 -0
  366. package/src/graph-kinds/registry.ts +3 -3
  367. package/src/graph-runner/graph-cli.ts +61 -1
  368. package/src/graph-runner/graph-grow-llm.ts +47 -0
  369. package/src/graph-runner/graph-grow.ts +50 -0
  370. package/src/graph-runner/runner.ts +329 -33
  371. package/src/grok/agent-search.ts +8 -2
  372. package/src/guardian/secret-exposure-scan.ts +101 -0
  373. package/src/harness/harness-cli-command.ts +375 -13
  374. package/src/harness/harness-pod-dispatch.ts +43 -23
  375. package/src/harness/harness-seams.ts +38 -4
  376. package/src/harness/harness-stop.ts +23 -4
  377. package/src/harness/launch-registry.ts +91 -0
  378. package/src/harness/process-garbage.ts +5 -3
  379. package/src/hooks/consult-intake.ts +153 -0
  380. package/src/hooks/dispatch.ts +82 -0
  381. package/src/hooks/expose.ts +254 -0
  382. package/src/hooks/github-shadow.ts +108 -0
  383. package/src/hooks/providers.ts +71 -5
  384. package/src/hooks/queue.ts +1 -1
  385. package/src/hooks/receiver.ts +94 -16
  386. package/src/index.ts +76 -14
  387. package/src/intake-plane/categorize.ts +18 -46
  388. package/src/intake-plane/discord-seat-work.ts +38 -2
  389. package/src/intake-plane/front-route-classifier.ts +33 -39
  390. package/src/intake-plane/persona-answer.ts +30 -0
  391. package/src/intake-plane/runtime-callables.ts +8 -1
  392. package/src/intake-plane/telegram-seat-work.ts +36 -2
  393. package/src/intake-plane/wish-card.ts +33 -0
  394. package/src/intake-plane/wish-folder.ts +67 -0
  395. package/src/intent-gate/gate.ts +30 -10
  396. package/src/live/detail-switch.ts +5 -0
  397. package/src/llm/difficulty.ts +57 -0
  398. package/src/llm/judge-layer.ts +101 -0
  399. package/src/llm/mission-router.ts +33 -19
  400. package/src/loops/contract/examples/cmo-seat.loop.yaml +51 -0
  401. package/src/loops/contract/examples/orchestrator.loop.yaml +57 -0
  402. package/src/loops/contract/examples/steward.loop.yaml +50 -0
  403. package/src/loops/contract/loop-agent.schema.json +138 -0
  404. package/src/loops/contract/validate.ts +64 -0
  405. package/src/loops/registry.ts +20 -6
  406. package/src/market/signed-index.ts +4 -0
  407. package/src/maturity/bot-command-maturity.ts +45 -0
  408. package/src/maturity/feature-maturity.ts +27 -4
  409. package/src/model-tier/index.ts +2 -2
  410. package/src/model-tier/tier-resolver.ts +20 -20
  411. package/src/model-tier/types.ts +6 -6
  412. package/src/mss/logging/log-store.ts +15 -0
  413. package/src/nexus/api/config-model-tier.ts +5 -4
  414. package/src/nexus/api/fabric-plans.ts +53 -0
  415. package/src/nexus/api/harness-api.ts +5 -1
  416. package/src/nexus/api/health.ts +2 -0
  417. package/src/nexus/api/http-server.ts +67 -8
  418. package/src/nexus/api/inside-events.ts +226 -0
  419. package/src/nexus/api/meta-api.ts +21 -8
  420. package/src/nexus/api/missions.ts +6 -1
  421. package/src/nexus/api/ops-seats.ts +33 -0
  422. package/src/nexus/api/outbound-report.ts +40 -7
  423. package/src/nexus/api/outputs-route.ts +44 -0
  424. package/src/nexus/api/personas.ts +95 -53
  425. package/src/nexus/api/seat-requests.ts +44 -2
  426. package/src/nexus/api/sessions-store.ts +17 -38
  427. package/src/nexus/api/sub-seat-charters.ts +34 -0
  428. package/src/nexus/api/tabs-mutations.ts +3 -1
  429. package/src/nexus/api/task-cards-api.ts +19 -0
  430. package/src/nexus/api/trace.ts +18 -6
  431. package/src/nexus/api/workflow-history.ts +88 -0
  432. package/src/nexus/api/workflow-run-event-bridge.ts +1 -0
  433. package/src/nexus/api/workflows.ts +132 -6
  434. package/src/nexus/index.ts +2 -0
  435. package/src/nexus/kinds/webterm.ts +2 -1
  436. package/src/nexus/outbound/delivery-ledger.ts +17 -8
  437. package/src/nexus/outbound/router.ts +8 -3
  438. package/src/nexus/webterm/pty.ts +6 -2
  439. package/src/onboarding/cli-auth-status.ts +80 -0
  440. package/src/onboarding/voice-ai.ts +3 -3
  441. package/src/org/seat-budget.ts +48 -0
  442. package/src/org/stall-escalation.ts +63 -0
  443. package/src/outputs/ledger.ts +120 -0
  444. package/src/persona/persona-todo.ts +79 -0
  445. package/src/persona/presets.ts +123 -2
  446. package/src/persona/team-set.ts +155 -0
  447. package/src/plugins/install/plugin-install.ts +14 -0
  448. package/src/plugins/maker/market-bundle.ts +110 -0
  449. package/src/plugins/maker/plugin-maker.ts +254 -11
  450. package/src/plugins/maker/wizard-generate.ts +103 -0
  451. package/src/pod-lease/admission.ts +150 -0
  452. package/src/pod-lease/dependency-state.ts +85 -0
  453. package/src/pod-lease/host-lease.ts +127 -0
  454. package/src/project/project-suggestion.ts +16 -0
  455. package/src/project/session-context.ts +24 -0
  456. package/src/release-loop/checklist.ts +17 -5
  457. package/src/release-loop/feature-store.ts +29 -13
  458. package/src/release-loop/landed-but-yellow.ts +48 -0
  459. package/src/release-loop/next-md-merge.ts +58 -0
  460. package/src/release-loop/release-note.ts +59 -4
  461. package/src/seat-dispatch/seat-ask.ts +130 -0
  462. package/src/seat-dispatch/seat-questions.ts +100 -0
  463. package/src/seat-loop/seat-loop.ts +709 -29
  464. package/src/seat-loop/seat-report.ts +37 -2
  465. package/src/self-dev/dev-cli.ts +4 -1
  466. package/src/self-dev/dev-pipeline.ts +37 -1
  467. package/src/self-dev/draft-sweep.ts +79 -40
  468. package/src/self-dev/draft-triage-rules.ts +62 -7
  469. package/src/self-dev/fabric-plan-core.ts +297 -0
  470. package/src/self-dev/orchestrate.ts +36 -4
  471. package/src/self-dev/release-path-guard.ts +62 -0
  472. package/src/self-dev/shard-aggregate.ts +230 -0
  473. package/src/self-dev/shard-placement.ts +60 -0
  474. package/src/self-dev/shard-plan.ts +48 -0
  475. package/src/self-dev/shard-pod-run.ts +77 -0
  476. package/src/self-dev/shard-run.ts +105 -0
  477. package/src/self-implement/budget-gate.ts +29 -12
  478. package/src/self-implement/gate-baseline.ts +1 -1
  479. package/src/self-implement/gate-candidate-ranking.ts +60 -0
  480. package/src/self-implement/gate-cli.ts +40 -1
  481. package/src/self-implement/gate-scope.ts +44 -13
  482. package/src/self-implement/graph-variant.ts +171 -0
  483. package/src/self-implement/harness-policy-gates.ts +1 -1
  484. package/src/self-implement/headless-elanous-driver.ts +27 -3
  485. package/src/self-implement/host-regate.ts +22 -1
  486. package/src/self-implement/importer-test-index.ts +2 -1
  487. package/src/self-implement/l8-merge-queue.ts +130 -0
  488. package/src/self-implement/orchestrator.ts +257 -9
  489. package/src/self-implement/route-consumer-test-index.ts +122 -0
  490. package/src/self-implement/seams.ts +72 -11
  491. package/src/self-implement/test-seams.ts +2 -0
  492. package/src/self-implement/uncommitted-work.ts +59 -0
  493. package/src/session/index.ts +36 -13
  494. package/src/skills/gift-install.ts +215 -0
  495. package/src/skills/tools/web-search.ts +4 -1
  496. package/src/steward/launch.ts +42 -26
  497. package/src/steward/steward-cards.ts +17 -9
  498. package/src/steward/triage.ts +46 -14
  499. package/src/task-cards/card-cli.ts +25 -1
  500. package/src/task-orchestrator/mission.ts +5 -0
  501. package/src/task-orchestrator/store.ts +12 -3
  502. package/src/task-orchestrator/surfaces/pod-command-job.ts +43 -17
  503. package/src/task-orchestrator/surfaces/pod-lease.ts +156 -19
  504. package/src/task-orchestrator/surfaces/pod-pool.ts +127 -26
  505. package/src/task-orchestrator/surfaces/self-implement-pod.ts +222 -40
  506. package/src/task-orchestrator/surfaces/self-implement.ts +15 -2
  507. package/src/task-orchestrator/types.ts +2 -0
  508. package/src/telegram-card-followup.ts +16 -96
  509. package/src/telegram-commands.ts +31 -1
  510. package/src/telegram-project-command.ts +145 -0
  511. package/src/telegram-report.ts +21 -17
  512. package/src/telegram.ts +61 -8
  513. package/src/tool-runtime/self-cognition-runtimes.ts +13 -3
  514. package/src/user-config.ts +110 -24
  515. package/src/version/packed-revision.json +1 -1
  516. package/src/web-search/grok.ts +7 -1
  517. package/src/web-search/index.ts +28 -1
  518. package/src/web-search/provider.ts +4 -0
  519. package/src/web-search/x-intent.ts +5 -0
  520. package/src/workflow-runtime/executor.ts +277 -47
  521. package/src/workflow-runtime/index.ts +1 -0
  522. package/src/workflow-runtime/nodes/subworkflow.ts +60 -0
  523. package/src/workflow-runtime/plugin-kind-node.ts +1 -1
  524. package/src/workflow-runtime/schema.ts +79 -4
  525. package/src/workflow-runtime/types.ts +35 -4
  526. package/apps/pwa/out/_next/static/2DsiDfDCks44g1cPUMhiW/_buildManifest.js +0 -1
  527. package/apps/pwa/out/_next/static/chunks/1105-c473ed46272fba79.js +0 -1
  528. package/apps/pwa/out/_next/static/chunks/1377-1efeffbbac0963ff.js +0 -1
  529. package/apps/pwa/out/_next/static/chunks/1470.98a6ab61ccb4131c.js +0 -1
  530. package/apps/pwa/out/_next/static/chunks/216-5acd01cbde4acda7.js +0 -1
  531. package/apps/pwa/out/_next/static/chunks/2330-c2f07246c8788af1.js +0 -1
  532. package/apps/pwa/out/_next/static/chunks/2375-cb6debea56cce4fb.js +0 -1
  533. package/apps/pwa/out/_next/static/chunks/24-e6d28380efab7faf.js +0 -1
  534. package/apps/pwa/out/_next/static/chunks/2977-e38442e86289f1d3.js +0 -1
  535. package/apps/pwa/out/_next/static/chunks/2982-2a2df543be3d2e5a.js +0 -25
  536. package/apps/pwa/out/_next/static/chunks/3403.4bc97b4066945a94.js +0 -5
  537. package/apps/pwa/out/_next/static/chunks/3615-740dd270764ffa24.js +0 -1
  538. package/apps/pwa/out/_next/static/chunks/371-4ad6af55dad02ced.js +0 -1
  539. package/apps/pwa/out/_next/static/chunks/3734-1015fe991eb9b7e7.js +0 -1
  540. package/apps/pwa/out/_next/static/chunks/4114-3e63117452378807.js +0 -1
  541. package/apps/pwa/out/_next/static/chunks/5012-a7fe6f3c8b6fe45a.js +0 -1
  542. package/apps/pwa/out/_next/static/chunks/5609-012bb3557211f07e.js +0 -1
  543. package/apps/pwa/out/_next/static/chunks/5783-ef40ebfc91d55230.js +0 -1
  544. package/apps/pwa/out/_next/static/chunks/5791-bb82743fa6299562.js +0 -1
  545. package/apps/pwa/out/_next/static/chunks/62-ff227c3edb8b248b.js +0 -1
  546. package/apps/pwa/out/_next/static/chunks/6320-baac91d68843a9a6.js +0 -1
  547. package/apps/pwa/out/_next/static/chunks/6725-68ab7cc0b1faf00d.js +0 -1
  548. package/apps/pwa/out/_next/static/chunks/6998-a654fe5c58271600.js +0 -1
  549. package/apps/pwa/out/_next/static/chunks/7633-1b3709b0854c9412.js +0 -1
  550. package/apps/pwa/out/_next/static/chunks/7647.2fcd30d894d5ee30.js +0 -1
  551. package/apps/pwa/out/_next/static/chunks/7673-2eda1507d38dadb8.js +0 -1
  552. package/apps/pwa/out/_next/static/chunks/7951-8b03dbb10b24cd06.js +0 -1
  553. package/apps/pwa/out/_next/static/chunks/7990-e12efba616f46e03.js +0 -1
  554. package/apps/pwa/out/_next/static/chunks/8142-744998d65d7bb17e.js +0 -1
  555. package/apps/pwa/out/_next/static/chunks/8195-6fde3d7a39859206.js +0 -10
  556. package/apps/pwa/out/_next/static/chunks/8619-4365e03a2862830f.js +0 -1
  557. package/apps/pwa/out/_next/static/chunks/8894-b5fb36bab837cd29.js +0 -1
  558. package/apps/pwa/out/_next/static/chunks/920-f7dceb78f1c585ef.js +0 -1
  559. package/apps/pwa/out/_next/static/chunks/9454-84d0d5d77446bd92.js +0 -1
  560. package/apps/pwa/out/_next/static/chunks/9651-3cd291a6fa1370d2.js +0 -1
  561. package/apps/pwa/out/_next/static/chunks/988-5f92e7ab7ccea3dd.js +0 -1
  562. package/apps/pwa/out/_next/static/chunks/9989-5582582f06429840.js +0 -1
  563. package/apps/pwa/out/_next/static/chunks/ae787e4c-f2998de7f1ba72a4.js +0 -1
  564. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-859cea1570b6227a.js +0 -1
  565. package/apps/pwa/out/_next/static/chunks/app/approvals/page-d2253d7e58ef1890.js +0 -1
  566. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-5441d4a9ab35e518.js +0 -1
  567. package/apps/pwa/out/_next/static/chunks/app/board/page-d9b12d680922d980.js +0 -1
  568. package/apps/pwa/out/_next/static/chunks/app/bots/page-e268d6d145827a22.js +0 -1
  569. package/apps/pwa/out/_next/static/chunks/app/chat/page-f8116559c7424da7.js +0 -1
  570. package/apps/pwa/out/_next/static/chunks/app/consult/page-1085399fd0f32112.js +0 -1
  571. package/apps/pwa/out/_next/static/chunks/app/control/page-1df686a14f65895a.js +0 -1
  572. package/apps/pwa/out/_next/static/chunks/app/design-check/page-54e1f966ab60a4dc.js +0 -1
  573. package/apps/pwa/out/_next/static/chunks/app/editor/page-7ed95f296f5ee8e9.js +0 -1
  574. package/apps/pwa/out/_next/static/chunks/app/exec/page-11edac668d77e5c3.js +0 -1
  575. package/apps/pwa/out/_next/static/chunks/app/field/page-59e2b9a22cd5a6d5.js +0 -1
  576. package/apps/pwa/out/_next/static/chunks/app/healthz/route-859cea1570b6227a.js +0 -1
  577. package/apps/pwa/out/_next/static/chunks/app/intake/page-2976df21ad74ab48.js +0 -1
  578. package/apps/pwa/out/_next/static/chunks/app/layout-34d211a67f16d510.js +0 -1
  579. package/apps/pwa/out/_next/static/chunks/app/live/page-8ff652d5d950639b.js +0 -1
  580. package/apps/pwa/out/_next/static/chunks/app/market/page-b31610deda76337b.js +0 -1
  581. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-6cb0e1bbefe5fb3d.js +0 -1
  582. package/apps/pwa/out/_next/static/chunks/app/morning/page-a286a152cf584576.js +0 -1
  583. package/apps/pwa/out/_next/static/chunks/app/not-found-d9237581e7003bcb.js +0 -1
  584. package/apps/pwa/out/_next/static/chunks/app/observatory/page-83274e761643fdd2.js +0 -1
  585. package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-ceee6cfb1d4e6d68.js +0 -1
  586. package/apps/pwa/out/_next/static/chunks/app/ops/release/page-9c9f8bb3e4a64091.js +0 -1
  587. package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-c17217603ea3426a.js +0 -1
  588. package/apps/pwa/out/_next/static/chunks/app/page-efb6177cbf1e8a51.js +0 -1
  589. package/apps/pwa/out/_next/static/chunks/app/reflection/page-d307523703bc4df3.js +0 -1
  590. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-462f4e4bab45ce7d.js +0 -1
  591. package/apps/pwa/out/_next/static/chunks/app/sessions/page-8990e96f33af3837.js +0 -1
  592. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-e168fa1030af0548.js +0 -1
  593. package/apps/pwa/out/_next/static/chunks/app/settings/page-1233e05a4068bc9c.js +0 -1
  594. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-13a1840b1fac337a.js +0 -1
  595. package/apps/pwa/out/_next/static/chunks/app/setup/layout-859cea1570b6227a.js +0 -1
  596. package/apps/pwa/out/_next/static/chunks/app/setup/page-64a29fc80b11ab55.js +0 -1
  597. package/apps/pwa/out/_next/static/chunks/app/share/page-68e787339a16b3dc.js +0 -1
  598. package/apps/pwa/out/_next/static/chunks/app/showroom/page-4fddc90b23feb215.js +0 -1
  599. package/apps/pwa/out/_next/static/chunks/app/tasks/page-886ba8260dc79c79.js +0 -1
  600. package/apps/pwa/out/_next/static/chunks/app/term/page-0f26507a1722e40b.js +0 -1
  601. package/apps/pwa/out/_next/static/chunks/app/today/page-109d4ccd42259c9d.js +0 -1
  602. package/apps/pwa/out/_next/static/chunks/app/trace/page-f5c2a4e510726774.js +0 -1
  603. package/apps/pwa/out/_next/static/chunks/app/vault/page-b2e0039416f42522.js +0 -1
  604. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-26102fd7350f171e.js +0 -1
  605. package/apps/pwa/out/_next/static/chunks/app/workflows/page-708948bc8a802794.js +0 -1
  606. package/apps/pwa/out/_next/static/chunks/app/workspace/page-5e5611620f78fb0b.js +0 -1
  607. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-139ba5c367bbf60a.js +0 -1
  608. package/apps/pwa/out/_next/static/chunks/framework-ea806bb57f2b8923.js +0 -1
  609. package/apps/pwa/out/_next/static/chunks/main-8d2302399c2c8f87.js +0 -1
  610. package/apps/pwa/out/_next/static/chunks/main-app-202b4e81f33895ea.js +0 -1
  611. package/apps/pwa/out/_next/static/chunks/pages/_app-b10928c60f0b8488.js +0 -1
  612. package/apps/pwa/out/_next/static/chunks/pages/_error-689039227d443fab.js +0 -1
  613. package/apps/pwa/out/_next/static/chunks/webpack-e5bea36f183b25e6.js +0 -1
  614. package/apps/pwa/out/_next/static/css/43feca5fd387dcbd.css +0 -1
  615. /package/apps/pwa/out/_next/static/{2DsiDfDCks44g1cPUMhiW → -6XrAoD3eU7NyMHAE4xPS}/_ssgManifest.js +0 -0
@@ -0,0 +1,366 @@
1
+ ---
2
+ name: diagram-master
3
+ description: "통합 다이어그램 스킬. 6개 엔진 (Mermaid/Matplotlib/Excalidraw/SVG/NanoBanana2/PDF추출) 자동 라우팅. 콘텐츠 분석 → 최적 엔진 선택 → 생성 → 품질 검증. 다이어그램, 차트, 시각화, 그래프, 곡선, 플롯, diagram, chart, visualize, plot, 그려줘, 시각화해줘, 다이어그램 만들어줘, 나노바나나, SVG, excalidraw, mermaid, 흐름도, 구조도, 인터랙티브."
4
+ minTier: T2
5
+ composes: [show-image]
6
+ category: visual
7
+ requires: []
8
+ ---
9
+
10
+ # Diagram Master
11
+
12
+ 6개 엔진을 자동 라우팅하는 통합 다이어그램 스킬. (Nano Banana 2 AI 생성 포함)
13
+
14
+ **모든 렌더러의 공통 venv**: `references/` 디렉토리에서 `uv run python engines/<engine>/render_*.py`
15
+
16
+ **핵심 원칙**
17
+ - 콘텐츠를 분석하여 **최적 엔진 자동 선택** — 사용자가 엔진을 몰라도 됨
18
+ - 각 엔진의 레퍼런스 문서는 `references/engines/<engine>/` 에 위치
19
+ - 생성 후 **품질 검증** 필수 — `references/quality-checklist.md` 참조
20
+
21
+ ## When to Use
22
+
23
+ 모든 다이어그램/시각화 요청 시 이 스킬이 **유일한 진입점**.
24
+ 다른 스킬(course-master, lecture-note-digitizer 등)에서도 다이어그램 필요 시 이 스킬에 위임.
25
+
26
+ 트리거: 다이어그램, 차트, 시각화, 그래프, 곡선, 플롯, 흐름도, 구조도, diagram, chart, plot, visualize, graph, 그려줘, SVG, excalidraw, mermaid, 인터랙티브, interactive
27
+
28
+ ## 실행 모드
29
+
30
+ | 모드 | 트리거 | PDF 원본 다이어그램 처리 | 설명 |
31
+ |------|--------|------------------------|------|
32
+ | **auto** (기본) | 별도 지정 없음 | PDF 추출 우선 → 나머지 재생성 | 효율 우선 |
33
+ | **recreate** | "재생성", "다시 그려", "스킬로", "recreate" | **모두 재생성** (PDF 추출 스킵) | 품질 우선 |
34
+
35
+ ## Auto-Routing Decision Tree
36
+
37
+ **반드시 이 순서로 판단** (상세: `references/routing-guide.md`):
38
+
39
+ ```
40
+ Step 0: 모드 판단
41
+ → recreate 모드: Step 0a 스킵, Step 1로 직행
42
+ → auto 모드(기본): Step 0a로
43
+
44
+ Step 0a: PDF 원본에 이미 고품질 다이어그램이 있는가? [auto 모드 전용]
45
+ → YES: PDF 추출 (재생성 불필요)
46
+ → NO: Step 1로
47
+
48
+ Step 1: 사용자가 엔진을 명시했는가?
49
+ "mermaid로", "matplotlib으로", "excalidraw로", "svg로", "나노바나나로", "AI로 그려"
50
+ → YES: 해당 엔진 사용
51
+
52
+ Step 2: 인터랙티브 요청인가?
53
+ 키워드: interactive, 버튼, 토글, 호버, 클릭, 탐색
54
+ → YES: SVG interactive
55
+
56
+ Step 3: 수학적 정밀도가 필요한가?
57
+ 함수 곡선, 분포, 히스토그램, 축/눈금 정밀, 3D, 회귀선, 경제학 모델
58
+ → YES: Matplotlib
59
+
60
+ Step 4: 코드 기반 엔진으로 표현이 어려운 복잡한 시각물인가?
61
+ 해부학 도면, 지리적 지도, 복잡한 인포그래픽, 일러스트 스타일
62
+ → YES: Nano Banana 2 (AI 이미지 생성)
63
+
64
+ Step 5: 자유형 레이아웃이 필요한가?
65
+ 비정형 배치, 손그림, 곡선 연결, 비선형 구조
66
+ → YES: Excalidraw
67
+
68
+ Step 6: 기본 → Mermaid
69
+ 흐름도, 구조도, 시퀀스, 상태, ER, 타임라인, 간트, 마인드맵
70
+ ```
71
+
72
+ ---
73
+
74
+ ## 엔진별 상세
75
+
76
+ ### 1. Mermaid (기본, 최우선)
77
+
78
+ **레퍼런스**: `references/engines/mermaid/syntax-reference.md`, `references/engines/mermaid/domain-templates.md`
79
+
80
+ - **용도**: 흐름도, 구조도, 시퀀스, 상태, ER, 타임라인, 간트, 마인드맵, 클래스, 파이
81
+ - **수식 포함 시**: `@svg-katex` + `render_mermaid_katex.py` (수식 1개라도 있으면 필수)
82
+ - **수식 없을 때**: `render_mermaid.py`
83
+ - **강점**: 컨텍스트 가장 단순, 텍스트 기반, ELK 레이아웃 강력
84
+
85
+ **Mermaid rich 코드 규칙**:
86
+ - classDef + :::className — 시맨틱 스타일 적용
87
+ - Frontmatter 필수: `title`, `config.layout: elk`, `config.theme: base`
88
+ - NEVER guess syntax — 반드시 `syntax-reference.md` 참조
89
+ - `end` 예약어는 `"end"`로 감쌈
90
+ - `%%` 주석 사용 (// 금지)
91
+
92
+ **시맨틱 색상 팔레트**:
93
+
94
+ | Role | classDef | 용도 |
95
+ |---|---|---|
96
+ | primary | `fill:#3b82f6,stroke:#1e3a5f,color:#fff` | 핵심 개념 |
97
+ | secondary | `fill:#8b5cf6,stroke:#5b21b6,color:#fff` | 보조 개념 |
98
+ | accent | `fill:#f59e0b,stroke:#92400e,color:#fff` | 강조 포인트 |
99
+ | success | `fill:#bbf7d0,stroke:#166534` | 결과, 완료 |
100
+ | warning | `fill:#fef08a,stroke:#854d0e` | 제약, 주의 |
101
+ | danger | `fill:#fecaca,stroke:#991b1b` | 오류, 위험 |
102
+ | neutral | `fill:#e5e7eb,stroke:#374151` | 설명, 배경 |
103
+
104
+ **Compact vs Complex 모드**:
105
+ - Compact (기본, ≤6 노드): `flowchart LR`, 세로 길이 최소화
106
+ - Complex (>6 노드, 2단계+ 중첩): `flowchart TB` 허용
107
+
108
+ **@svg-katex 수식 렌더링**:
109
+
110
+ 노드/엣지 라벨에 수식 요소(부등호, 첨자, 분수, 그리스 문자, 수학 기호)가 **하나라도** 있으면 반드시 @svg-katex 사용:
111
+
112
+ ````markdown
113
+ ```mermaid
114
+ %% @svg-katex
115
+ %% @formula "효용함수 U(x,y)" = "\text{효용함수 } U(x,y)"
116
+ %% @formula "Px·x + Py·y ≤ I" = "P_x \cdot x + P_y \cdot y \leq I"
117
+ flowchart LR
118
+ A["효용함수 U(x,y)"] --> B["Px·x + Py·y ≤ I"]
119
+ ```
120
+ ````
121
+
122
+ `.mmd` 파일에는 **반드시 단일 백슬래시** 사용 (`\frac` O, `\\frac` X).
123
+
124
+ **다이어그램 타입 선택**:
125
+
126
+ | User Intent | Type |
127
+ |---|---|
128
+ | 프로세스, 의사결정 | `flowchart` |
129
+ | API 호출 순서 | `sequenceDiagram` |
130
+ | OOP 구조 | `classDiagram` |
131
+ | 상태 머신 | `stateDiagram-v2` |
132
+ | DB 스키마 | `erDiagram` |
133
+ | 프로젝트 일정 | `gantt` |
134
+ | 비율 분포 | `pie` |
135
+ | 계층 브레인스토밍 | `mindmap` |
136
+ | 시간순 이벤트 | `timeline` |
137
+ | 에너지/흐름 분배 | `sankey` |
138
+ | 데이터 차트 | `xychart` |
139
+ | 시스템 레이아웃 | `block` |
140
+ | 다축 비교 | `radar-beta` |
141
+
142
+ **렌더링**:
143
+ ```bash
144
+ cd ./references
145
+ # 수식 없음
146
+ uv run python engines/mermaid/render_mermaid.py {mmd_file} --scale 3
147
+ # 수식 있음
148
+ python render_mermaid_katex.py {mmd_file} --output diagram.png --scale 2
149
+ ```
150
+
151
+ **Known Issues**:
152
+ - Playwright에서 `ElementHandle.screenshot(scale=N)` 에러 → `device_scale_factor` 사용
153
+ - Typora: classDef 대신 `style NodeId fill:...` 인라인 사용
154
+ - ELK: `wrappingWidth` 무시 → `<br/>`로 명시적 줄바꿈
155
+ - HTML/PDF에서 Mermaid.js CDN 타이밍 이슈 → **render_mermaid.py로 PNG 사전 렌더링 후 `<img>` 삽입**
156
+
157
+ ---
158
+
159
+ ### 2. Matplotlib (수학/과학 정밀)
160
+
161
+ **레퍼런스**: `references/engines/matplotlib/matplotlib-patterns.md`
162
+
163
+ - **용도**: 함수 곡선, 통계 분포, 히트맵, 3D, scatter, 경제학 모델
164
+ - **강점**: 정밀한 축/눈금, LaTeX 수식, 다양한 차트 타입, 3D
165
+ - **스크립트 규칙**: `plt.savefig()` / `plt.show()` 호출 금지, `np`/`plt` 자동 사용 가능, 한글 자동 지원
166
+
167
+ **렌더링**:
168
+ ```bash
169
+ cd ./references
170
+ uv run python engines/matplotlib/render_matplotlib.py {script.py} --dpi 300
171
+ uv run python engines/matplotlib/render_matplotlib.py {script.py} --output /path/out.png
172
+ uv run python engines/matplotlib/render_matplotlib.py {script.py} --figsize 12 8
173
+ uv run python engines/matplotlib/render_matplotlib.py {script.py} --style dark_background
174
+ ```
175
+
176
+ ---
177
+
178
+ ### 3. Excalidraw (자유형)
179
+
180
+ **레퍼런스**: `references/engines/excalidraw/element-templates.md`, `references/engines/excalidraw/json-schema.md`, `references/engines/excalidraw/color-palette.md`
181
+
182
+ - **용도**: 개념 스케치, 비정형 배치, 손그림 느낌, Evidence Artifacts
183
+ - **강점**: 위치 자유도 최고, 곡선 연결
184
+ - **핵심 철학**: "Diagrams should ARGUE, not DISPLAY" — Isomorphism Test 준수
185
+
186
+ **디자인 프로세스**:
187
+ 1. Depth 평가 (Simple/Conceptual vs Comprehensive/Technical)
188
+ 2. 기술 다이어그램 → 실제 스펙 리서치 필수
189
+ 3. 개념 → 비주얼 패턴 매핑 (Fan-Out, Convergence, Tree, Timeline, Spiral, Assembly Line 등)
190
+ 4. 각 주요 개념에 **다른 비주얼 패턴** 사용 — 균일 카드 그리드 금지
191
+ 5. JSON 생성 (대형 다이어그램은 섹션별 빌드)
192
+ 6. 렌더링 & 검증 루프
193
+
194
+ **Container vs Free-Floating Text**: 기본은 free-floating text. Container는 focal point, visual grouping, 화살표 연결 대상일 때만 사용. <30% 텍스트만 container 안에.
195
+
196
+ **스타일**: `roughness: 0` (기본), `opacity: 100` (항상), `fontFamily: 3`
197
+
198
+ **대형 다이어그램 전략**: 한 번에 전체 JSON 생성 금지 → 섹션별 빌드 (Section 1 → Edit으로 Section 2 추가 → ...). namespace seeds로 ID 충돌 방지 (100xxx, 200xxx...).
199
+
200
+ **렌더링**:
201
+ ```bash
202
+ cd ./references
203
+ uv run python engines/excalidraw/render_excalidraw.py {excalidraw_file}
204
+ ```
205
+
206
+ ---
207
+
208
+ ### 4. SVG (웹 임베딩 / 인터랙티브)
209
+
210
+ **레퍼런스**: `references/engines/svg/svg-element-templates.md`, `references/engines/svg/interactivity-patterns.md`, `references/engines/svg/color-palette.md`, `references/engines/svg/html-base-template.html`
211
+
212
+ - **용도**: 웹 배포용 다이어그램, 호버/클릭 인터랙션, 애니메이션, 대규모 데이터 시각화
213
+ - **STATIC 모드** (기본): 인라인 SVG + 입장 애니메이션 + 호버 효과
214
+ - **INTERACTIVE 모드** (명시 요청 시): HTML 파일 + Tailwind + vanilla JS
215
+
216
+ **Auto-Routing (STATIC vs INTERACTIVE)**:
217
+ - STATIC: 단순 "다이어그램 만들어줘", 비교/흐름도/계층
218
+ - INTERACTIVE: "인터랙티브", "토글", "호버", "클릭", "탐색" 키워드
219
+
220
+ **STATIC 출력**: `.live-diagram` 컨테이너 내 인라인 SVG, dark background (#0f172a), hover glow, dashFlow animation
221
+ **INTERACTIVE 출력**: 단일 `diagram.html` (Tailwind CDN + SVG + vanilla JS)
222
+
223
+ **인터랙티브 기능**: 레이어 토글, 노드 호버 (brightness + tooltip), 클릭 상세, 비교 토글, Progressive Disclosure (Overview → Hover → Click deep dive)
224
+
225
+ **대규모 데이터**: SVG + Canvas fallback으로 D3.js 역할 흡수. 네트워크 그래프, 1000+ 데이터포인트도 SVG 엔진으로 처리.
226
+
227
+ **접근성**: `role="img"`, `aria-label`, `tabindex="0"`, keyboard navigation (Tab, Enter/Space, Escape)
228
+
229
+ **렌더링**:
230
+ ```bash
231
+ cd ./references
232
+ uv run python engines/svg/render_interactive_svg.py {html_file} --capture-states
233
+ ```
234
+
235
+ ---
236
+
237
+ ### 5. Nano Banana 2 (AI 이미지 생성)
238
+
239
+ Google Gemini 3.1 Flash Image Preview 기반 AI 다이어그램 생성.
240
+
241
+ - **모델**: `gemini-3.1-flash-image-preview`
242
+ - **용도**: 해부학 도면, 지리적 지도, 복잡한 인포그래픽, 일러스트 스타일, 교과서급 도면
243
+ - **강점**: 4K 해상도, 정확한 텍스트 렌더링, 한국어 지원, 참고 이미지 기반 재생성
244
+ - **API 키**: `GEMINI_API_KEY` (환경변수에서 탐색)
245
+
246
+ **렌더링**:
247
+ ```bash
248
+ cd ./references
249
+ # 텍스트 프롬프트
250
+ uv run python engines/nanobannana/render_nanobannana2.py "수요 공급 곡선" --output diagram.png
251
+ # 참고 이미지 + 프롬프트
252
+ uv run python engines/nanobannana/render_nanobannana2.py "깔끔하게 재생성" --ref original.png --output clean.png
253
+ # 프롬프트 파일
254
+ uv run python engines/nanobannana/render_nanobannana2.py --file prompt.txt --output result.png
255
+ ```
256
+
257
+ ---
258
+
259
+ ### 6. PDF 추출 (재사용)
260
+
261
+ 원본 PDF에 이미 잘 그려진 다이어그램이 있을 때 **재생성하지 않고 추출**.
262
+
263
+ ```bash
264
+ # 래스터 이미지 추출
265
+ pdfimages -png {input.pdf} {output_prefix}
266
+ # 벡터(SVG) 추출
267
+ mutool convert -o {output.svg} {input.pdf} {page_number}
268
+ # 고해상도 이미지
269
+ mutool draw -r 300 -o {output.png} {input.pdf} {page_number}
270
+ # crop
271
+ magick {input.png} -crop WxH+X+Y {output.png}
272
+ ```
273
+
274
+ ---
275
+
276
+ ## Unified Render Pipeline
277
+
278
+ 모든 엔진 공통 워크플로우:
279
+
280
+ ```
281
+ 1. 콘텐츠 분석 → 엔진 자동 선택 (Decision Tree)
282
+ 2. 참고 이미지가 있으면 → Read tool로 시각적 분석
283
+ 3. 선택된 엔진의 reference docs 읽기 (필수)
284
+ 4. 코드/데이터 생성
285
+ 5. 렌더링 → PNG/SVG 출력
286
+ 6. Read tool로 렌더링 결과 시각적 확인
287
+ 7. quality-checklist.md 기반 품질 검증
288
+ 8. 필요시 수정 → 재렌더링 (2-5회 반복)
289
+ ```
290
+
291
+ ### 참고 이미지 (--ref) 통합 워크플로우
292
+
293
+ | 엔진 | --ref 처리 방식 |
294
+ |------|----------------|
295
+ | Nano Banana 2 | `--ref`로 직접 전달 → AI가 스타일 참조 |
296
+ | Matplotlib | Read tool로 분석 → 색상/레이아웃/축 스타일 코드 반영 |
297
+ | Excalidraw | Read tool로 분석 → 구조/배치/연결선 JSON 반영 |
298
+ | SVG | Read tool로 분석 → 레이어/색상/인터랙션 HTML 반영 |
299
+ | Mermaid | Read tool로 분석 → 노드 구조/classDef 색상 코드 반영 |
300
+
301
+ ## 목표 품질 기준
302
+
303
+ `references/examples/` 레퍼런스 이미지:
304
+
305
+ | 파일 | 스타일 | 최적 엔진 |
306
+ |------|--------|----------|
307
+ | `ref_grid_architecture.png` | 색상 코딩 그리드 + 아이콘 + 카드 | SVG interactive > NanoBanana2 |
308
+ | `ref_layered_flow.png` | 레이어 배경 + 다중 화살표 + Evidence | Excalidraw > SVG > NanoBanana2 |
309
+
310
+ **트리거 키워드**: "아키텍처 레퍼런스", "프로덕션 다이어그램", "스마트독 스타일", "Mem0 스타일"
311
+
312
+ ## Quality Checklist (필수)
313
+
314
+ 생성 후 `references/quality-checklist.md` 체크:
315
+
316
+ - **레이아웃**: 균등 타일 금지, 비대칭 선호, 정밀 간격
317
+ - **색상**: #000000 금지, 네온 금지, 시맨틱 색상
318
+ - **콘텐츠**: 필러 데이터 금지, 실제 Evidence 사용
319
+ - **기술**: 한글 깨짐 확인, 수식 렌더링 확인, 해상도 적절성
320
+ - **대형 다이어그램**: 섹션별 빌드, 30노드 초과 시 분할
321
+
322
+ ## 다른 스킬에서 호출 시
323
+
324
+ ### course-master 연동
325
+ ```
326
+ Phase 3 다이어그램 처리 시:
327
+ 1. 기존 PDF 다이어그램 → PDF 추출 검토
328
+ 2. 새 다이어그램 필요 → diagram-master auto-routing
329
+ 3. 수식 포함 구조도 → Mermaid @svg-katex
330
+ 4. 경제학 곡선/분포 → Matplotlib
331
+ 5. 기타 구조도 → Mermaid 기본
332
+ ```
333
+
334
+ ### lecture-note-digitizer 연동
335
+ ```
336
+ Phase 3 Chart PNG 생성 시:
337
+ 1. 다이어그램 유형 판단 → diagram-master auto-routing에 위임
338
+ 2. 수학 곡선이 필요하면 → Matplotlib 자동 선택
339
+ 3. 나머지는 Mermaid 기본
340
+ ```
341
+
342
+ ## Content-Aware 전처리 (선택적)
343
+
344
+ | 축 | 분석 | 영향 |
345
+ |---|---|---|
346
+ | **Density** | 노드/요소 개수 → Low/Medium/High | High → 분할 또는 SVG 고려 |
347
+ | **Structure** | Flow/Hierarchy/Network/Spatial/Data | 구조 유형 → 엔진 매핑 |
348
+ | **Precision** | 텍스트 기반 / 수학적 / 자유형 | 정밀도 → Mermaid/Matplotlib/Excalidraw |
349
+
350
+ ## 무료로 쓰는 길 (키 없이)
351
+
352
+ `references/`의 Mermaid 문법으로 흐름도를 작성하거나 PDF의 기존 도표를 `pdfimages`로 추출합니다. 로컬 렌더러를 사용할 때는 아래 설치 후 Mermaid·Matplotlib·SVG·Excalidraw 엔진을 선택합니다. Nano Banana AI 이미지만 별도의 API 키가 필요합니다.
353
+
354
+ ## 내 키로 쓰는 길
355
+
356
+ AI 이미지 생성이 필요하면 실행 환경의 `GEMINI_API_KEY`(또는 코드가 허용하는 `GOOGLE_API_KEY`)에 자신의 키를 설정하고 `references/engines/nanobannana/render_nanobannana2.py`를 실행합니다. 다른 엔진에는 이 키가 필요하지 않습니다. 키 값이나 자격 파일은 사본에 넣지 않습니다.
357
+
358
+ ## 설치
359
+
360
+ 이 스킬 폴더에서 실행합니다.
361
+
362
+ ```bash
363
+ cd references
364
+ uv sync
365
+ uv run playwright install chromium
366
+ ```
@@ -0,0 +1,67 @@
1
+ # Color Palette & Brand Style
2
+
3
+ **This is the single source of truth for all colors and brand-specific styles.** To customize diagrams for your own brand, edit this file — everything else in the skill is universal.
4
+
5
+ ---
6
+
7
+ ## Shape Colors (Semantic)
8
+
9
+ Colors encode meaning, not decoration. Each semantic purpose has a fill/stroke pair.
10
+
11
+ | Semantic Purpose | Fill | Stroke |
12
+ |------------------|------|--------|
13
+ | Primary/Neutral | `#3b82f6` | `#1e3a5f` |
14
+ | Secondary | `#60a5fa` | `#1e3a5f` |
15
+ | Tertiary | `#93c5fd` | `#1e3a5f` |
16
+ | Start/Trigger | `#fed7aa` | `#c2410c` |
17
+ | End/Success | `#a7f3d0` | `#047857` |
18
+ | Warning/Reset | `#fee2e2` | `#dc2626` |
19
+ | Decision | `#fef3c7` | `#b45309` |
20
+ | AI/LLM | `#ddd6fe` | `#6d28d9` |
21
+ | Inactive/Disabled | `#dbeafe` | `#1e40af` (use dashed stroke) |
22
+ | Error | `#fecaca` | `#b91c1c` |
23
+
24
+ **Rule**: Always pair a darker stroke with a lighter fill for contrast.
25
+
26
+ ---
27
+
28
+ ## Text Colors (Hierarchy)
29
+
30
+ Use color on free-floating text to create visual hierarchy without containers.
31
+
32
+ | Level | Color | Use For |
33
+ |-------|-------|---------|
34
+ | Title | `#1e40af` | Section headings, major labels |
35
+ | Subtitle | `#3b82f6` | Subheadings, secondary labels |
36
+ | Body/Detail | `#64748b` | Descriptions, annotations, metadata |
37
+ | On light fills | `#374151` | Text inside light-colored shapes |
38
+ | On dark fills | `#ffffff` | Text inside dark-colored shapes |
39
+
40
+ ---
41
+
42
+ ## Evidence Artifact Colors
43
+
44
+ Used for code snippets, data examples, and other concrete evidence inside technical diagrams.
45
+
46
+ | Artifact | Background | Text Color |
47
+ |----------|-----------|------------|
48
+ | Code snippet | `#1e293b` | Syntax-colored (language-appropriate) |
49
+ | JSON/data example | `#1e293b` | `#22c55e` (green) |
50
+
51
+ ---
52
+
53
+ ## Default Stroke & Line Colors
54
+
55
+ | Element | Color |
56
+ |---------|-------|
57
+ | Arrows | Use the stroke color of the source element's semantic purpose |
58
+ | Structural lines (dividers, trees, timelines) | Primary stroke (`#1e3a5f`) or Slate (`#64748b`) |
59
+ | Marker dots (fill + stroke) | Primary fill (`#3b82f6`) |
60
+
61
+ ---
62
+
63
+ ## Background
64
+
65
+ | Property | Value |
66
+ |----------|-------|
67
+ | Canvas background | `#ffffff` |
@@ -0,0 +1,182 @@
1
+ # Element Templates
2
+
3
+ Copy-paste JSON templates for each Excalidraw element type. The `strokeColor` and `backgroundColor` values are placeholders — always pull actual colors from `color-palette.md` based on the element's semantic purpose.
4
+
5
+ ## Free-Floating Text (no container)
6
+ ```json
7
+ {
8
+ "type": "text",
9
+ "id": "label1",
10
+ "x": 100, "y": 100,
11
+ "width": 200, "height": 25,
12
+ "text": "Section Title",
13
+ "originalText": "Section Title",
14
+ "fontSize": 20,
15
+ "fontFamily": 3,
16
+ "textAlign": "left",
17
+ "verticalAlign": "top",
18
+ "strokeColor": "<title color from palette>",
19
+ "backgroundColor": "transparent",
20
+ "fillStyle": "solid",
21
+ "strokeWidth": 1,
22
+ "strokeStyle": "solid",
23
+ "roughness": 0,
24
+ "opacity": 100,
25
+ "angle": 0,
26
+ "seed": 11111,
27
+ "version": 1,
28
+ "versionNonce": 22222,
29
+ "isDeleted": false,
30
+ "groupIds": [],
31
+ "boundElements": null,
32
+ "link": null,
33
+ "locked": false,
34
+ "containerId": null,
35
+ "lineHeight": 1.25
36
+ }
37
+ ```
38
+
39
+ ## Line (structural, not arrow)
40
+ ```json
41
+ {
42
+ "type": "line",
43
+ "id": "line1",
44
+ "x": 100, "y": 100,
45
+ "width": 0, "height": 200,
46
+ "strokeColor": "<structural line color from palette>",
47
+ "backgroundColor": "transparent",
48
+ "fillStyle": "solid",
49
+ "strokeWidth": 2,
50
+ "strokeStyle": "solid",
51
+ "roughness": 0,
52
+ "opacity": 100,
53
+ "angle": 0,
54
+ "seed": 44444,
55
+ "version": 1,
56
+ "versionNonce": 55555,
57
+ "isDeleted": false,
58
+ "groupIds": [],
59
+ "boundElements": null,
60
+ "link": null,
61
+ "locked": false,
62
+ "points": [[0, 0], [0, 200]]
63
+ }
64
+ ```
65
+
66
+ ## Small Marker Dot
67
+ ```json
68
+ {
69
+ "type": "ellipse",
70
+ "id": "dot1",
71
+ "x": 94, "y": 94,
72
+ "width": 12, "height": 12,
73
+ "strokeColor": "<marker dot color from palette>",
74
+ "backgroundColor": "<marker dot color from palette>",
75
+ "fillStyle": "solid",
76
+ "strokeWidth": 1,
77
+ "strokeStyle": "solid",
78
+ "roughness": 0,
79
+ "opacity": 100,
80
+ "angle": 0,
81
+ "seed": 66666,
82
+ "version": 1,
83
+ "versionNonce": 77777,
84
+ "isDeleted": false,
85
+ "groupIds": [],
86
+ "boundElements": null,
87
+ "link": null,
88
+ "locked": false
89
+ }
90
+ ```
91
+
92
+ ## Rectangle
93
+ ```json
94
+ {
95
+ "type": "rectangle",
96
+ "id": "elem1",
97
+ "x": 100, "y": 100, "width": 180, "height": 90,
98
+ "strokeColor": "<stroke from palette based on semantic purpose>",
99
+ "backgroundColor": "<fill from palette based on semantic purpose>",
100
+ "fillStyle": "solid",
101
+ "strokeWidth": 2,
102
+ "strokeStyle": "solid",
103
+ "roughness": 0,
104
+ "opacity": 100,
105
+ "angle": 0,
106
+ "seed": 12345,
107
+ "version": 1,
108
+ "versionNonce": 67890,
109
+ "isDeleted": false,
110
+ "groupIds": [],
111
+ "boundElements": [{"id": "text1", "type": "text"}],
112
+ "link": null,
113
+ "locked": false,
114
+ "roundness": {"type": 3}
115
+ }
116
+ ```
117
+
118
+ ## Text (centered in shape)
119
+ ```json
120
+ {
121
+ "type": "text",
122
+ "id": "text1",
123
+ "x": 130, "y": 132,
124
+ "width": 120, "height": 25,
125
+ "text": "Process",
126
+ "originalText": "Process",
127
+ "fontSize": 16,
128
+ "fontFamily": 3,
129
+ "textAlign": "center",
130
+ "verticalAlign": "middle",
131
+ "strokeColor": "<text color — match parent shape's stroke or use 'on light/dark fills' from palette>",
132
+ "backgroundColor": "transparent",
133
+ "fillStyle": "solid",
134
+ "strokeWidth": 1,
135
+ "strokeStyle": "solid",
136
+ "roughness": 0,
137
+ "opacity": 100,
138
+ "angle": 0,
139
+ "seed": 11111,
140
+ "version": 1,
141
+ "versionNonce": 22222,
142
+ "isDeleted": false,
143
+ "groupIds": [],
144
+ "boundElements": null,
145
+ "link": null,
146
+ "locked": false,
147
+ "containerId": "elem1",
148
+ "lineHeight": 1.25
149
+ }
150
+ ```
151
+
152
+ ## Arrow
153
+ ```json
154
+ {
155
+ "type": "arrow",
156
+ "id": "arrow1",
157
+ "x": 282, "y": 145, "width": 118, "height": 0,
158
+ "strokeColor": "<arrow color — typically matches source element's stroke from palette>",
159
+ "backgroundColor": "transparent",
160
+ "fillStyle": "solid",
161
+ "strokeWidth": 2,
162
+ "strokeStyle": "solid",
163
+ "roughness": 0,
164
+ "opacity": 100,
165
+ "angle": 0,
166
+ "seed": 33333,
167
+ "version": 1,
168
+ "versionNonce": 44444,
169
+ "isDeleted": false,
170
+ "groupIds": [],
171
+ "boundElements": null,
172
+ "link": null,
173
+ "locked": false,
174
+ "points": [[0, 0], [118, 0]],
175
+ "startBinding": {"elementId": "elem1", "focus": 0, "gap": 2},
176
+ "endBinding": {"elementId": "elem2", "focus": 0, "gap": 2},
177
+ "startArrowhead": null,
178
+ "endArrowhead": "arrow"
179
+ }
180
+ ```
181
+
182
+ For curves: use 3+ points in `points` array.
@@ -0,0 +1,71 @@
1
+ # Excalidraw JSON Schema
2
+
3
+ ## Element Types
4
+
5
+ | Type | Use For |
6
+ |------|---------|
7
+ | `rectangle` | Processes, actions, components |
8
+ | `ellipse` | Entry/exit points, external systems |
9
+ | `diamond` | Decisions, conditionals |
10
+ | `arrow` | Connections between shapes |
11
+ | `text` | Labels inside shapes |
12
+ | `line` | Non-arrow connections |
13
+ | `frame` | Grouping containers |
14
+
15
+ ## Common Properties
16
+
17
+ All elements share these:
18
+
19
+ | Property | Type | Description |
20
+ |----------|------|-------------|
21
+ | `id` | string | Unique identifier |
22
+ | `type` | string | Element type |
23
+ | `x`, `y` | number | Position in pixels |
24
+ | `width`, `height` | number | Size in pixels |
25
+ | `strokeColor` | string | Border color (hex) |
26
+ | `backgroundColor` | string | Fill color (hex or "transparent") |
27
+ | `fillStyle` | string | "solid", "hachure", "cross-hatch" |
28
+ | `strokeWidth` | number | 1, 2, or 4 |
29
+ | `strokeStyle` | string | "solid", "dashed", "dotted" |
30
+ | `roughness` | number | 0 (smooth), 1 (default), 2 (rough) |
31
+ | `opacity` | number | 0-100 |
32
+ | `seed` | number | Random seed for roughness |
33
+
34
+ ## Text-Specific Properties
35
+
36
+ | Property | Description |
37
+ |----------|-------------|
38
+ | `text` | The display text |
39
+ | `originalText` | Same as text |
40
+ | `fontSize` | Size in pixels (16-20 recommended) |
41
+ | `fontFamily` | 3 for monospace (use this) |
42
+ | `textAlign` | "left", "center", "right" |
43
+ | `verticalAlign` | "top", "middle", "bottom" |
44
+ | `containerId` | ID of parent shape |
45
+
46
+ ## Arrow-Specific Properties
47
+
48
+ | Property | Description |
49
+ |----------|-------------|
50
+ | `points` | Array of [x, y] coordinates |
51
+ | `startBinding` | Connection to start shape |
52
+ | `endBinding` | Connection to end shape |
53
+ | `startArrowhead` | null, "arrow", "bar", "dot", "triangle" |
54
+ | `endArrowhead` | null, "arrow", "bar", "dot", "triangle" |
55
+
56
+ ## Binding Format
57
+
58
+ ```json
59
+ {
60
+ "elementId": "shapeId",
61
+ "focus": 0,
62
+ "gap": 2
63
+ }
64
+ ```
65
+
66
+ ## Rectangle Roundness
67
+
68
+ Add for rounded corners:
69
+ ```json
70
+ "roundness": { "type": 3 }
71
+ ```