elanous 0.2.12 → 0.2.14

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 (534) 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/chunks/{7334.a6679d9168f37aa8.js → 1268.0840ff91e083fcbd.js} +1 -1
  4. package/apps/pwa/out/_next/static/chunks/1307-6e7e0377c1db0bdc.js +1 -0
  5. package/apps/pwa/out/_next/static/chunks/1826-5d279da64bbbc2de.js +1 -0
  6. package/apps/pwa/out/_next/static/chunks/{9656-c1540088f5859c80.js → 1844-9ec4b1d12f6e80eb.js} +1 -1
  7. package/apps/pwa/out/_next/static/chunks/1866-e7a6999f25548b30.js +1 -0
  8. package/apps/pwa/out/_next/static/chunks/{390.c373e31b3b9d0c41.js → 1948.15f356b15a625597.js} +2 -2
  9. package/apps/pwa/out/_next/static/chunks/211-9c9090c59e2c5907.js +1 -0
  10. package/apps/pwa/out/_next/static/chunks/2196-4700653d12a44b40.js +1 -0
  11. package/apps/pwa/out/_next/static/chunks/224-798346143007ff65.js +1 -0
  12. package/apps/pwa/out/_next/static/chunks/2699-63b73fa4d3bcf6ff.js +1 -0
  13. package/apps/pwa/out/_next/static/chunks/2957-96ffab3d521fb08f.js +1 -0
  14. package/apps/pwa/out/_next/static/chunks/311.e685738f92e6e2ec.js +1 -0
  15. package/apps/pwa/out/_next/static/chunks/3194-807b212fb8eae065.js +1 -0
  16. package/apps/pwa/out/_next/static/chunks/3324-d1d2979821dfa845.js +1 -0
  17. package/apps/pwa/out/_next/static/chunks/3558-bbb5ab553a0471d3.js +1 -0
  18. package/apps/pwa/out/_next/static/chunks/3916-3d02dd1fc257dd3c.js +1 -0
  19. package/apps/pwa/out/_next/static/chunks/4144-a0041c8dc3be57ac.js +1 -0
  20. package/apps/pwa/out/_next/static/chunks/4554-3565eea1f1495ba7.js +1 -0
  21. package/apps/pwa/out/_next/static/chunks/4562-071d8bac44a01069.js +1 -0
  22. package/apps/pwa/out/_next/static/chunks/{4685-c3c1c625b71accd1.js → 4614-21403aac730d4586.js} +1 -1
  23. package/apps/pwa/out/_next/static/chunks/{8039-df92e08fede5de8f.js → 4795-f372490b178583fc.js} +1 -1
  24. package/apps/pwa/out/_next/static/chunks/5135-44008fe8b1f2aa41.js +1 -0
  25. package/apps/pwa/out/_next/static/chunks/5233-bf28bd6bd7a32099.js +1 -0
  26. package/apps/pwa/out/_next/static/chunks/5360-be1f1d8f9fcc9755.js +1 -0
  27. package/apps/pwa/out/_next/static/chunks/5977-2df489622a52a33a.js +1 -0
  28. package/apps/pwa/out/_next/static/chunks/5994-ae92c0de046ab9ba.js +1 -0
  29. package/apps/pwa/out/_next/static/chunks/{1452.93700483b9d4fc61.js → 6110.1297d4093fdfbb0d.js} +1 -1
  30. package/apps/pwa/out/_next/static/chunks/6158.9c0449a9a8d0064b.js +2 -0
  31. package/apps/pwa/out/_next/static/chunks/6877-7c6208705c284124.js +1 -0
  32. package/apps/pwa/out/_next/static/chunks/726.83532d69452ee24b.js +1 -0
  33. package/apps/pwa/out/_next/static/chunks/7290-f09c928a06c52e2d.js +1 -0
  34. package/apps/pwa/out/_next/static/chunks/{1829-b453a1b22d3999bb.js → 7327-2d69fb321ba73389.js} +1 -1
  35. package/apps/pwa/out/_next/static/chunks/7395-164e238f471b5d7b.js +1 -0
  36. package/apps/pwa/out/_next/static/chunks/7787-02a1c0b04e25e811.js +1 -0
  37. package/apps/pwa/out/_next/static/chunks/{9906-482c6619b3fdda20.js → 8060-cc008cc6fedfa818.js} +1 -1
  38. package/apps/pwa/out/_next/static/chunks/8085-d065d0393c1760f5.js +1 -0
  39. package/apps/pwa/out/_next/static/chunks/8682-7061dd4fa7bd62ed.js +1 -0
  40. package/apps/pwa/out/_next/static/chunks/8827-e2f5b09a8d37e83b.js +1 -0
  41. package/apps/pwa/out/_next/static/chunks/8868-10a3a4440fb0ccd8.js +25 -0
  42. package/apps/pwa/out/_next/static/chunks/{8421-1c4acfb1395a0edf.js → 8949-ecb4128a0858b911.js} +1 -1
  43. package/apps/pwa/out/_next/static/chunks/9070.067c106528ec1ae6.js +1 -0
  44. package/apps/pwa/out/_next/static/chunks/9103-7a3ae7f60af3b99f.js +1 -0
  45. package/apps/pwa/out/_next/static/chunks/{3869-3cd46526879f454c.js → 9247-29d889b809288e65.js} +1 -1
  46. package/apps/pwa/out/_next/static/chunks/935.4ddaa99fc1d1126c.js +1 -0
  47. package/apps/pwa/out/_next/static/chunks/{79f8be9e-957d68913b590b08.js → a9f2b54d-7865aba0f4d2ee49.js} +1 -1
  48. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-c1a96669158471ec.js +1 -0
  49. package/apps/pwa/out/_next/static/chunks/app/approvals/page-74383f890f075511.js +1 -0
  50. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-7b2b4f378354869a.js +1 -0
  51. package/apps/pwa/out/_next/static/chunks/app/board/page-c496bb16da85385f.js +1 -0
  52. package/apps/pwa/out/_next/static/chunks/app/botlab/page-1abfe3aec3be6bdc.js +1 -0
  53. package/apps/pwa/out/_next/static/chunks/app/bots/page-1512d91c7491ed62.js +1 -0
  54. package/apps/pwa/out/_next/static/chunks/app/chat/page-a627db94ec6904a0.js +1 -0
  55. package/apps/pwa/out/_next/static/chunks/app/consult/page-fb260b9283dbf646.js +1 -0
  56. package/apps/pwa/out/_next/static/chunks/app/control/page-e6b84ab07d3567d5.js +1 -0
  57. package/apps/pwa/out/_next/static/chunks/app/design-check/page-61ec1d2e92bdd50a.js +1 -0
  58. package/apps/pwa/out/_next/static/chunks/app/editor/page-fed69f9759d248d0.js +1 -0
  59. package/apps/pwa/out/_next/static/chunks/app/exec/{page-a67e11ba962337b5.js → page-15374909d8f1aebd.js} +1 -1
  60. package/apps/pwa/out/_next/static/chunks/app/field/page-012a742f81218b01.js +1 -0
  61. package/apps/pwa/out/_next/static/chunks/app/healthz/route-c1a96669158471ec.js +1 -0
  62. package/apps/pwa/out/_next/static/chunks/app/inside/page-fd7e200d4d83fbd7.js +1 -0
  63. package/apps/pwa/out/_next/static/chunks/app/intake/page-99effd9d893a43dc.js +1 -0
  64. package/apps/pwa/out/_next/static/chunks/app/layout-938de57ae0315e46.js +1 -0
  65. package/apps/pwa/out/_next/static/chunks/app/live/page-d47266766766d227.js +1 -0
  66. package/apps/pwa/out/_next/static/chunks/app/loops/page-160089123a40dd91.js +1 -0
  67. package/apps/pwa/out/_next/static/chunks/app/market/page-629e1ede482ec6eb.js +1 -0
  68. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/{page-793fa536b3a6ef37.js → page-2ce5471926761fdd.js} +1 -1
  69. package/apps/pwa/out/_next/static/chunks/app/morning/page-27e99b4e54a849d4.js +1 -0
  70. package/apps/pwa/out/_next/static/chunks/app/not-found-e995d30f6800b6bf.js +1 -0
  71. package/apps/pwa/out/_next/static/chunks/app/observatory/page-39f89c53038a51d4.js +1 -0
  72. package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-32cde713be47cddb.js +1 -0
  73. package/apps/pwa/out/_next/static/chunks/app/ops/release/page-e7e10cd3386222e5.js +1 -0
  74. package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-5a753bb4ec0cc511.js +1 -0
  75. package/apps/pwa/out/_next/static/chunks/app/outputs/page-04250f0e2c0d03df.js +1 -0
  76. package/apps/pwa/out/_next/static/chunks/app/page-341480ed8e3c1ea8.js +1 -0
  77. package/apps/pwa/out/_next/static/chunks/app/reflection/page-e64caff084f7ce21.js +1 -0
  78. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-db07eaffba0df7e3.js +1 -0
  79. package/apps/pwa/out/_next/static/chunks/app/sessions/page-8ac8d71c2adf9c8a.js +1 -0
  80. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-e1e47d8d940aba3d.js +1 -0
  81. package/apps/pwa/out/_next/static/chunks/app/settings/page-86f91034bd5cabe5.js +1 -0
  82. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-94dc383d3d54db1a.js +1 -0
  83. package/apps/pwa/out/_next/static/chunks/app/setup/layout-c1a96669158471ec.js +1 -0
  84. package/apps/pwa/out/_next/static/chunks/app/setup/page-b3759cc14da80908.js +1 -0
  85. package/apps/pwa/out/_next/static/chunks/app/share/page-ce4d8a1215ce53a3.js +1 -0
  86. package/apps/pwa/out/_next/static/chunks/app/showroom/page-58043db78ba519ae.js +1 -0
  87. package/apps/pwa/out/_next/static/chunks/app/tasks/page-357750dfb91bf960.js +1 -0
  88. package/apps/pwa/out/_next/static/chunks/app/term/{page-e297866051595d81.js → page-274703bc41b71333.js} +1 -1
  89. package/apps/pwa/out/_next/static/chunks/app/today/page-194dce4a83143fce.js +1 -0
  90. package/apps/pwa/out/_next/static/chunks/app/trace/page-35bdeae2e2c17147.js +1 -0
  91. package/apps/pwa/out/_next/static/chunks/app/vault/page-3b7e821dc492bdfd.js +1 -0
  92. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-16bef3da05a900c3.js +1 -0
  93. package/apps/pwa/out/_next/static/chunks/app/workflows/page-f8da5dc6f3752276.js +1 -0
  94. package/apps/pwa/out/_next/static/chunks/app/workspace/page-2f810b18d89ecba6.js +1 -0
  95. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-134c1bc762aee62c.js +1 -0
  96. package/apps/pwa/out/_next/static/chunks/{5cd7e3a9-404fd6b8d0ecd44c.js → f6231284-45726550aba08fca.js} +1 -1
  97. package/apps/pwa/out/_next/static/chunks/{f48170cc-d05d28bf87a43bf4.js → f6b7c9ba.64a895b8b2fedbdc.js} +1 -1
  98. package/apps/pwa/out/_next/static/chunks/framework-5c169757551134ed.js +1 -0
  99. package/apps/pwa/out/_next/static/chunks/main-59fe95fed40c7a01.js +1 -0
  100. package/apps/pwa/out/_next/static/chunks/main-app-4ca74dbbee7057c6.js +1 -0
  101. package/apps/pwa/out/_next/static/chunks/pages/_app-13a0a886df4d97a1.js +1 -0
  102. package/apps/pwa/out/_next/static/chunks/pages/_error-6af8591cd3a3f038.js +1 -0
  103. package/apps/pwa/out/_next/static/chunks/webpack-539cde99554be20f.js +1 -0
  104. package/apps/pwa/out/_next/static/css/2e33713c444d5b39.css +1 -0
  105. package/apps/pwa/out/_next/static/x6mjI6vqOkVVu0jFuDkz1/_buildManifest.js +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 -1
  134. package/apps/pwa/out/inside/index.txt +22 -22
  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/loops/index.html +1 -0
  140. package/apps/pwa/out/loops/index.txt +30 -0
  141. package/apps/pwa/out/market/index.html +1 -1
  142. package/apps/pwa/out/market/index.txt +22 -22
  143. package/apps/pwa/out/missions/placeholder/index.html +1 -1
  144. package/apps/pwa/out/missions/placeholder/index.txt +22 -22
  145. package/apps/pwa/out/morning/index.html +1 -1
  146. package/apps/pwa/out/morning/index.txt +23 -23
  147. package/apps/pwa/out/observatory/index.html +1 -1
  148. package/apps/pwa/out/observatory/index.txt +23 -23
  149. package/apps/pwa/out/ops/checklist/index.html +1 -1
  150. package/apps/pwa/out/ops/checklist/index.txt +22 -22
  151. package/apps/pwa/out/ops/release/index.html +1 -1
  152. package/apps/pwa/out/ops/release/index.txt +22 -22
  153. package/apps/pwa/out/ops/seats/index.html +1 -1
  154. package/apps/pwa/out/ops/seats/index.txt +22 -22
  155. package/apps/pwa/out/outputs/index.html +1 -1
  156. package/apps/pwa/out/outputs/index.txt +22 -22
  157. package/apps/pwa/out/reflection/index.html +1 -1
  158. package/apps/pwa/out/reflection/index.txt +23 -23
  159. package/apps/pwa/out/scheduler/index.html +1 -1
  160. package/apps/pwa/out/scheduler/index.txt +23 -23
  161. package/apps/pwa/out/sessions/index.html +1 -1
  162. package/apps/pwa/out/sessions/index.txt +22 -22
  163. package/apps/pwa/out/settings/devices/index.html +1 -1
  164. package/apps/pwa/out/settings/devices/index.txt +23 -23
  165. package/apps/pwa/out/settings/index.html +1 -1
  166. package/apps/pwa/out/settings/index.txt +23 -23
  167. package/apps/pwa/out/setup/done/index.html +1 -1
  168. package/apps/pwa/out/setup/done/index.txt +23 -23
  169. package/apps/pwa/out/setup/index.html +1 -1
  170. package/apps/pwa/out/setup/index.txt +23 -23
  171. package/apps/pwa/out/share/index.html +1 -1
  172. package/apps/pwa/out/share/index.txt +23 -23
  173. package/apps/pwa/out/showroom/index.html +1 -1
  174. package/apps/pwa/out/showroom/index.txt +22 -22
  175. package/apps/pwa/out/tasks/index.html +1 -1
  176. package/apps/pwa/out/tasks/index.txt +23 -23
  177. package/apps/pwa/out/term/index.html +1 -1
  178. package/apps/pwa/out/term/index.txt +23 -23
  179. package/apps/pwa/out/today/index.html +1 -1
  180. package/apps/pwa/out/today/index.txt +23 -23
  181. package/apps/pwa/out/trace/index.html +1 -1
  182. package/apps/pwa/out/trace/index.txt +23 -23
  183. package/apps/pwa/out/vault/index.html +1 -1
  184. package/apps/pwa/out/vault/index.txt +23 -23
  185. package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
  186. package/apps/pwa/out/workflows/chat-ui/index.txt +23 -23
  187. package/apps/pwa/out/workflows/index.html +1 -1
  188. package/apps/pwa/out/workflows/index.txt +23 -23
  189. package/apps/pwa/out/workspace/index.html +1 -1
  190. package/apps/pwa/out/workspace/index.txt +23 -23
  191. package/apps/pwa/out/worktrees/index.html +1 -1
  192. package/apps/pwa/out/worktrees/index.txt +23 -23
  193. package/examples/teams/personas/backend.yaml +4 -0
  194. package/examples/teams/personas/pm.yaml +4 -0
  195. package/examples/teams/personas/qa.yaml +4 -0
  196. package/examples/teams/small-product.yaml +20 -0
  197. package/graphs/lecture/lecture-note.yaml +28 -0
  198. package/graphs/lecture/recipes.yaml +17 -0
  199. package/graphs/orchestrator/orchestrator.yaml +59 -0
  200. package/graphs/orchestrator/recipes.yaml +18 -0
  201. package/graphs/release/recipes.yaml +3 -0
  202. package/graphs/release/release-loop.yaml +4 -1
  203. package/graphs/rhythm/daily.yaml +38 -0
  204. package/graphs/rhythm/recipes.yaml +18 -0
  205. package/graphs/rhythm/weekly.yaml +39 -0
  206. package/graphs/video/recipes.yaml +3 -0
  207. package/graphs/video/youtube-summary.yaml +17 -0
  208. package/package.json +2 -1
  209. package/scripts/audit-test-state-writes.ts +72 -17
  210. package/scripts/brand/check.ts +186 -0
  211. package/scripts/context-hooks/emit.ts +36 -14
  212. package/scripts/coord-channel-watch.sh +1 -0
  213. package/scripts/coord-post.sh +11 -1
  214. package/scripts/discord-seat-probe.ts +144 -0
  215. package/scripts/docs-cli-check.ts +23 -6
  216. package/scripts/expose-rubric-check.ts +118 -0
  217. package/scripts/expose-rubric-suggest.ts +163 -0
  218. package/scripts/heal/run-role.ts +14 -0
  219. package/scripts/hq/hq-standby.sh +65 -0
  220. package/scripts/hq/standby-promote.ts +173 -0
  221. package/scripts/hq/standby-role.ts +59 -0
  222. package/scripts/hq/standby-snapshot.ts +226 -0
  223. package/scripts/hq/standby-verify.ts +223 -0
  224. package/scripts/lecture-note/node.ts +256 -0
  225. package/scripts/lessons/handbook-page.ts +85 -0
  226. package/scripts/release-loop/gate-node.ts +62 -15
  227. package/scripts/release-loop/ops-upgrade-node.ts +17 -5
  228. package/scripts/release-loop/publish-node.ts +14 -1
  229. package/scripts/release-loop/unattended-release.ts +23 -1
  230. package/scripts/release-loop/vault-note-node.ts +196 -0
  231. package/scripts/release-story/draft.ts +172 -0
  232. package/scripts/rhythm/daily.ts +383 -0
  233. package/scripts/rhythm/weekly.ts +294 -0
  234. package/scripts/skills/public-check.ts +169 -0
  235. package/scripts/test-deterministic.ts +57 -11
  236. package/scripts/test-diet/effectiveness.ts +195 -0
  237. package/scripts/test-diet/lib.ts +16 -8
  238. package/scripts/test-diet/node.ts +77 -9
  239. package/scripts/ux/demo-rehearsal.ts +2 -2
  240. package/scripts/ux/lib/rehearsal-verdict.ts +1 -0
  241. package/scripts/video/youtube-summary.ts +133 -0
  242. package/skills/diagram-master/SKILL.md +42 -49
  243. package/skills/diagram-master/references/pyproject.toml +4 -1
  244. package/skills/diagram-master/references/routing-guide.md +4 -2
  245. package/skills/grill-me/SKILL.md +1 -0
  246. package/skills/omni-crawl/SKILL.md +16 -16
  247. package/skills/omni-crawl/package-lock.json +1 -544
  248. package/skills/omni-crawl/package.json +3 -4
  249. package/skills/omni-crawl/scripts/main.ts +13 -13
  250. package/skills/omni-crawl/scripts/monitor.ts +8 -8
  251. package/skills/omni-crawl/src/apify.ts +13 -2
  252. package/skills/omni-crawl/src/capture.ts +6 -0
  253. package/skills/omni-crawl/src/registry.ts +2 -2
  254. package/skills/omni-crawl/src/stdout-json.ts +4 -0
  255. package/skills/omni-digest/SKILL.md +10 -11
  256. package/skills/omni-digest/package-lock.json +0 -545
  257. package/skills/omni-digest/package.json +2 -5
  258. package/skills/omni-digest/scripts/main.ts +3 -3
  259. package/skills/omni-digest/src/delegate.ts +5 -5
  260. package/skills/omni-digest/src/fetch.ts +2 -2
  261. package/skills/omni-digest/src/media.ts +25 -11
  262. package/skills/omni-digest/src/visual.ts +3 -2
  263. package/skills/omni-market/scripts/main.ts +1 -1
  264. package/skills/omni-market/scripts/stdout-json.ts +4 -0
  265. package/skills/youtube-master/SKILL.md +13 -13
  266. package/skills/youtube-master/package-lock.json +0 -545
  267. package/skills/youtube-master/package.json +2 -5
  268. package/skills/youtube-master/scripts/main.ts +2 -2
  269. package/skills/youtube-master/scripts/transcribe-local.ts +1 -1
  270. package/skills/youtube-master/src/util.ts +30 -7
  271. package/src/agent/identity-env.ts +11 -0
  272. package/src/agent-mission/driver.ts +15 -10
  273. package/src/agent-mission/duo.ts +94 -0
  274. package/src/agent-mission/pty-decision.ts +1 -1
  275. package/src/autopilot/build/llm-conflict-merge.ts +45 -8
  276. package/src/autopilot/build/merge-intent.ts +53 -0
  277. package/src/autopilot/track-agent-shadow.ts +2 -1
  278. package/src/autopilot/track-agent.ts +4 -1
  279. package/src/boot/daemon-prompt-request.ts +3 -0
  280. package/src/boot/daemon-prompt-turn.ts +6 -2
  281. package/src/boot/daemon-runtime.ts +48 -16
  282. package/src/chat/index.ts +2 -0
  283. package/src/claims/claims-ledger.ts +232 -0
  284. package/src/claims/claims-render.ts +157 -0
  285. package/src/cli/claims-cli.ts +94 -0
  286. package/src/cli/decisions-cli.ts +84 -20
  287. package/src/cli/docs-cli.ts +2 -0
  288. package/src/cli/flow-cli.ts +11 -0
  289. package/src/cli/freeze-cli.ts +45 -0
  290. package/src/cli/lesson-cli.ts +108 -0
  291. package/src/cli/logs-cli.ts +104 -2
  292. package/src/cli/logs-model-input.ts +131 -0
  293. package/src/cli/outputs-cli.ts +92 -0
  294. package/src/cli/persona-cli.ts +29 -0
  295. package/src/cli/pod-cli.ts +10 -3
  296. package/src/cli/pr-cli.ts +44 -2
  297. package/src/cli/private-ledger-commands.ts +54 -4
  298. package/src/cli/pty-drive-verdict.ts +11 -2
  299. package/src/cli/release-cli.ts +248 -45
  300. package/src/cli/rfc-status.ts +91 -0
  301. package/src/connectors/linear.ts +5 -3
  302. package/src/context-bus/condense.ts +189 -0
  303. package/src/context-bus/context-day.ts +82 -0
  304. package/src/context-bus/context-now-public.ts +86 -0
  305. package/src/context-bus/context-now-surfaces.ts +70 -4
  306. package/src/context-bus/context-now.ts +4 -3
  307. package/src/context-bus/long-term-memory.ts +201 -24
  308. package/src/context-bus/nightly-condense.ts +1 -1
  309. package/src/dashboard/index.ts +75 -22
  310. package/src/dashboard/slash-runtime/chat-persona.ts +66 -0
  311. package/src/dashboard/slash-runtime/dashboard-handlers.ts +99 -0
  312. package/src/dashboard/slash-runtime/loops-table.ts +77 -0
  313. package/src/decisions/decision-cards.ts +13 -7
  314. package/src/decisions/decision-ledger.ts +83 -18
  315. package/src/discord/sprint21-runtime.ts +16 -0
  316. package/src/discord-self-message.ts +8 -0
  317. package/src/discord-slash-wire.ts +31 -2
  318. package/src/domains/outbound-alert.ts +1 -1
  319. package/src/elanous-config-dir.ts +29 -4
  320. package/src/execution-loop/launch-gate.ts +29 -14
  321. package/src/flow/cards.ts +239 -0
  322. package/src/graph-kinds/registry.ts +2 -2
  323. package/src/graph-runner/graph-approval-card.ts +2 -2
  324. package/src/graph-runner/graph-grow.ts +64 -11
  325. package/src/graph-runner/graph-tick.ts +13 -2
  326. package/src/graph-runner/runner.ts +111 -22
  327. package/src/harness/harness-cli-command.ts +178 -27
  328. package/src/harness/harness-incidents.ts +43 -12
  329. package/src/harness/harness-pod-dispatch.ts +2 -0
  330. package/src/harness/harness-queue-child.ts +37 -0
  331. package/src/harness/harness-queue.ts +494 -0
  332. package/src/harness/helper-scan.ts +139 -0
  333. package/src/harness/model-input-observation.ts +37 -0
  334. package/src/hooks/github-shadow.ts +72 -2
  335. package/src/hooks/receiver.ts +4 -2
  336. package/src/hq/hq.ts +318 -0
  337. package/src/hq/lease.ts +210 -0
  338. package/src/hq/ledger-write-target.ts +41 -0
  339. package/src/hq/promote.ts +301 -0
  340. package/src/index.ts +281 -27
  341. package/src/intake-plane/discord-seat-work.ts +13 -6
  342. package/src/intake-plane/linear-wish.ts +72 -0
  343. package/src/intake-plane/persona-answer.ts +5 -0
  344. package/src/intake-plane/telegram-seat-work.ts +13 -6
  345. package/src/intake-plane/wish-benchmark-ledger.ts +129 -0
  346. package/src/intake-plane/wish-card.ts +53 -2
  347. package/src/intake-plane/wish-folder.ts +5 -2
  348. package/src/intake-plane/wish-reply.ts +72 -0
  349. package/src/lessons/lesson-import.ts +106 -0
  350. package/src/lessons/lesson-ledger.ts +206 -0
  351. package/src/loops/activity.ts +203 -0
  352. package/src/loops/budget.ts +32 -0
  353. package/src/loops/checker.ts +180 -0
  354. package/src/loops/contract/examples/orchestrator.loop.yaml +1 -1
  355. package/src/loops/loop-cli.ts +72 -6
  356. package/src/loops/neighbors.ts +40 -0
  357. package/src/loops/observe.ts +59 -0
  358. package/src/loops/orchestrator/author-depth.ts +164 -0
  359. package/src/loops/orchestrator/author-input-check.ts +77 -0
  360. package/src/loops/orchestrator/author-ledger.ts +230 -0
  361. package/src/loops/orchestrator/finish-rate.ts +175 -0
  362. package/src/loops/orchestrator/overlap.ts +180 -0
  363. package/src/loops/orchestrator/resync-shadow.ts +227 -0
  364. package/src/loops/orchestrator/tick.ts +302 -0
  365. package/src/loops/orchestrator/traffic.ts +165 -0
  366. package/src/loops/package/verify.ts +125 -0
  367. package/src/loops/registry.ts +454 -9
  368. package/src/loops/status-rows.ts +118 -0
  369. package/src/loops/verdict.ts +34 -0
  370. package/src/maturity/bot-slash-catalog.ts +66 -0
  371. package/src/maturity/feature-maturity.ts +8 -5
  372. package/src/memory.ts +37 -4
  373. package/src/nexus/api/card-followup-route.ts +118 -0
  374. package/src/nexus/api/dashboard.ts +6 -1
  375. package/src/nexus/api/decisions-route.ts +68 -0
  376. package/src/nexus/api/http-server.ts +65 -2
  377. package/src/nexus/api/merge-approvals-gate.ts +1 -1
  378. package/src/nexus/api/personas.ts +2 -1
  379. package/src/nexus/api/schedules-read.ts +5 -1
  380. package/src/nexus/api/skill-exec-route.ts +97 -0
  381. package/src/nexus/api/task-cards-api.ts +44 -5
  382. package/src/nexus/api/workflows.ts +2 -1
  383. package/src/persona/loader.ts +18 -0
  384. package/src/persona/persona-todo.ts +14 -9
  385. package/src/persona/presets.ts +2 -1
  386. package/src/persona/team.ts +105 -0
  387. package/src/persona/types.ts +4 -0
  388. package/src/pod-lease/host-lease.ts +130 -20
  389. package/src/release-loop/auto-start.ts +48 -0
  390. package/src/release-loop/checklist.ts +13 -4
  391. package/src/release-loop/feature-store.ts +28 -16
  392. package/src/release-loop/landed-but-yellow.ts +12 -0
  393. package/src/release-loop/landing-freeze.ts +121 -0
  394. package/src/release-loop/placement.ts +242 -0
  395. package/src/release-loop/release-schedule.ts +3 -1
  396. package/src/seat-dispatch/ceo-commands.ts +2 -2
  397. package/src/seat-dispatch/seat-ask.ts +73 -15
  398. package/src/seat-dispatch/seat-questions.ts +58 -0
  399. package/src/seat-loop/seat-loop.ts +495 -46
  400. package/src/seat-loop/seat-pack.ts +127 -0
  401. package/src/self-dev/ask-launch-flow.ts +3 -0
  402. package/src/self-dev/dev-pipeline.ts +6 -2
  403. package/src/self-dev/draft-sweep.ts +76 -0
  404. package/src/self-dev/run-store.ts +73 -1
  405. package/src/self-dev/run-supervisor.ts +8 -0
  406. package/src/self-dev/self-orchestrate-runtime.ts +5 -1
  407. package/src/self-implement/budget-gate.ts +29 -0
  408. package/src/self-implement/expose-gate.ts +47 -0
  409. package/src/self-implement/frozen-merges.ts +294 -0
  410. package/src/self-implement/gate-cli.ts +10 -4
  411. package/src/self-implement/gate-scope.ts +46 -9
  412. package/src/self-implement/goal-archive.ts +222 -0
  413. package/src/self-implement/goal-lookup.ts +147 -0
  414. package/src/self-implement/heal-intake.ts +79 -0
  415. package/src/self-implement/host-regate.ts +25 -2
  416. package/src/self-implement/l8-merge-queue.ts +157 -1
  417. package/src/self-implement/orchestrator.ts +114 -10
  418. package/src/self-implement/revert-guard.ts +62 -0
  419. package/src/self-implement/run-ledger.ts +1 -1
  420. package/src/self-implement/seams.ts +28 -8
  421. package/src/session/index.ts +2 -0
  422. package/src/steward/launch.ts +5 -1
  423. package/src/steward/readiness.ts +125 -0
  424. package/src/steward/rescue.ts +75 -0
  425. package/src/steward/triage.ts +48 -9
  426. package/src/task-cards/card-cli.ts +86 -0
  427. package/src/task-cards/card-store.ts +10 -6
  428. package/src/task-orchestrator/surfaces/pod-lease.ts +23 -8
  429. package/src/task-orchestrator/surfaces/pod-ledger-collect.ts +46 -6
  430. package/src/task-orchestrator/surfaces/pod-pool.ts +27 -10
  431. package/src/task-orchestrator/surfaces/self-implement-pod.ts +112 -18
  432. package/src/telegram-commands.ts +27 -3
  433. package/src/telegram-dispatch-forward.ts +1 -1
  434. package/src/telegram-fabric-plan.ts +90 -0
  435. package/src/telegram-loops-command.ts +44 -0
  436. package/src/telegram-project-command.ts +10 -4
  437. package/src/telegram.ts +5 -0
  438. package/src/tool-runtime/elanous-control-runtimes.ts +2 -1
  439. package/src/user-config.ts +204 -16
  440. package/src/version/packed-revision.json +1 -1
  441. package/src/workflow-runtime/executor.ts +4 -0
  442. package/src/workflow-runtime/node-catalog.ts +13 -0
  443. package/src/workflow-runtime/nodes/knowledge.ts +38 -0
  444. package/src/workflow-runtime/schema.ts +17 -1
  445. package/src/workflow-runtime/storage.ts +31 -13
  446. package/src/workflow-runtime/types.ts +13 -1
  447. package/apps/pwa/out/_next/static/-6XrAoD3eU7NyMHAE4xPS/_buildManifest.js +0 -1
  448. package/apps/pwa/out/_next/static/chunks/1147-466ec15afacc1a65.js +0 -1
  449. package/apps/pwa/out/_next/static/chunks/1159-0c5ef8bc21cb6afb.js +0 -1
  450. package/apps/pwa/out/_next/static/chunks/1394-ee3795b112907122.js +0 -1
  451. package/apps/pwa/out/_next/static/chunks/2176-c379e3ebce874151.js +0 -1
  452. package/apps/pwa/out/_next/static/chunks/2426.8c6ee0c668d53def.js +0 -1
  453. package/apps/pwa/out/_next/static/chunks/3170-7ec60a56fa0e4728.js +0 -1
  454. package/apps/pwa/out/_next/static/chunks/3278-ae6ef084769f6195.js +0 -1
  455. package/apps/pwa/out/_next/static/chunks/3454-988a53dac60a1763.js +0 -1
  456. package/apps/pwa/out/_next/static/chunks/3638-aa80b4641ea439db.js +0 -1
  457. package/apps/pwa/out/_next/static/chunks/3735-fe3402553ac1c9c6.js +0 -1
  458. package/apps/pwa/out/_next/static/chunks/3992-2e522a8ac5f2afde.js +0 -25
  459. package/apps/pwa/out/_next/static/chunks/4215-c9d91dd644ec1719.js +0 -1
  460. package/apps/pwa/out/_next/static/chunks/4508-5d0161d1e724d735.js +0 -1
  461. package/apps/pwa/out/_next/static/chunks/4733-623a79345b171e1c.js +0 -1
  462. package/apps/pwa/out/_next/static/chunks/4883.3bd969ea1d3aaaff.js +0 -2
  463. package/apps/pwa/out/_next/static/chunks/5532.6899a12958a89b72.js +0 -1
  464. package/apps/pwa/out/_next/static/chunks/5845-e6c003ce8d5fd36a.js +0 -1
  465. package/apps/pwa/out/_next/static/chunks/5978-b27004c677119115.js +0 -1
  466. package/apps/pwa/out/_next/static/chunks/6048-4c5c33579bc4ef78.js +0 -1
  467. package/apps/pwa/out/_next/static/chunks/6303-422dbf0f67c72aac.js +0 -1
  468. package/apps/pwa/out/_next/static/chunks/6751-bb3595948b2e311b.js +0 -1
  469. package/apps/pwa/out/_next/static/chunks/7274-19b7279f18b47ab3.js +0 -1
  470. package/apps/pwa/out/_next/static/chunks/7277-0b2fc7c16ba2d64b.js +0 -1
  471. package/apps/pwa/out/_next/static/chunks/7551-a0e0707b79164ddd.js +0 -1
  472. package/apps/pwa/out/_next/static/chunks/7758-0b018a9e4fc56200.js +0 -1
  473. package/apps/pwa/out/_next/static/chunks/7777-79f845045aa1ed86.js +0 -1
  474. package/apps/pwa/out/_next/static/chunks/8025-cc24ee5d8f2fb6f8.js +0 -1
  475. package/apps/pwa/out/_next/static/chunks/8206-c6684dcde12be721.js +0 -1
  476. package/apps/pwa/out/_next/static/chunks/8605-0259994816604c49.js +0 -1
  477. package/apps/pwa/out/_next/static/chunks/8725.bf46bb1395dd0fa2.js +0 -1
  478. package/apps/pwa/out/_next/static/chunks/8734-252d511cd276c0dc.js +0 -1
  479. package/apps/pwa/out/_next/static/chunks/8834-ca1cb09c1cb1a6bf.js +0 -1
  480. package/apps/pwa/out/_next/static/chunks/9269.d2a4795bc6812717.js +0 -1
  481. package/apps/pwa/out/_next/static/chunks/9538-2816b90923606459.js +0 -1
  482. package/apps/pwa/out/_next/static/chunks/9920-5cfdc5e8fd209825.js +0 -1
  483. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-d16993889b125c42.js +0 -1
  484. package/apps/pwa/out/_next/static/chunks/app/approvals/page-cb169620945d1952.js +0 -1
  485. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-cefe8169e36cf62a.js +0 -1
  486. package/apps/pwa/out/_next/static/chunks/app/board/page-d2e35228bc497119.js +0 -1
  487. package/apps/pwa/out/_next/static/chunks/app/botlab/page-5c05b0da4bc1392c.js +0 -1
  488. package/apps/pwa/out/_next/static/chunks/app/bots/page-e0ccdb576812b523.js +0 -1
  489. package/apps/pwa/out/_next/static/chunks/app/chat/page-813c4a52c9d05ca8.js +0 -1
  490. package/apps/pwa/out/_next/static/chunks/app/consult/page-4731f2c215358937.js +0 -1
  491. package/apps/pwa/out/_next/static/chunks/app/control/page-a022b257950f39e6.js +0 -1
  492. package/apps/pwa/out/_next/static/chunks/app/design-check/page-a2ffc717e04b8b0a.js +0 -1
  493. package/apps/pwa/out/_next/static/chunks/app/editor/page-b59ee4e70fc18fcf.js +0 -1
  494. package/apps/pwa/out/_next/static/chunks/app/field/page-c172dabd796eb7a3.js +0 -1
  495. package/apps/pwa/out/_next/static/chunks/app/healthz/route-d16993889b125c42.js +0 -1
  496. package/apps/pwa/out/_next/static/chunks/app/inside/page-1efd0cb9e0ed9d13.js +0 -1
  497. package/apps/pwa/out/_next/static/chunks/app/intake/page-d5dc7ff69a37b4cf.js +0 -1
  498. package/apps/pwa/out/_next/static/chunks/app/layout-e71c84189e8c683e.js +0 -1
  499. package/apps/pwa/out/_next/static/chunks/app/live/page-1d6a533ce5a6efcb.js +0 -1
  500. package/apps/pwa/out/_next/static/chunks/app/market/page-dfca9b7d2de0b135.js +0 -1
  501. package/apps/pwa/out/_next/static/chunks/app/morning/page-6dd3bfbbde2a5c2c.js +0 -1
  502. package/apps/pwa/out/_next/static/chunks/app/not-found-490653e8d4cc8852.js +0 -1
  503. package/apps/pwa/out/_next/static/chunks/app/observatory/page-77447356baad75d2.js +0 -1
  504. package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-29e961191f6057df.js +0 -1
  505. package/apps/pwa/out/_next/static/chunks/app/ops/release/page-c822f55b884d9104.js +0 -1
  506. package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-fa4ccfc432424e52.js +0 -1
  507. package/apps/pwa/out/_next/static/chunks/app/outputs/page-6d604227e1664b71.js +0 -1
  508. package/apps/pwa/out/_next/static/chunks/app/page-9c7e8f744a765daf.js +0 -1
  509. package/apps/pwa/out/_next/static/chunks/app/reflection/page-4048543b4b7ad5e0.js +0 -1
  510. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-4c3a3126abed551a.js +0 -1
  511. package/apps/pwa/out/_next/static/chunks/app/sessions/page-64b0aecb1ca75e75.js +0 -1
  512. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-4292d0149020e8a7.js +0 -1
  513. package/apps/pwa/out/_next/static/chunks/app/settings/page-db14d0be7f1c460c.js +0 -1
  514. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-e5d8072cd7cfef73.js +0 -1
  515. package/apps/pwa/out/_next/static/chunks/app/setup/layout-d16993889b125c42.js +0 -1
  516. package/apps/pwa/out/_next/static/chunks/app/setup/page-9547b5cec7cf76bf.js +0 -1
  517. package/apps/pwa/out/_next/static/chunks/app/share/page-e6dcb83265530636.js +0 -1
  518. package/apps/pwa/out/_next/static/chunks/app/showroom/page-45248f08d6aecae5.js +0 -1
  519. package/apps/pwa/out/_next/static/chunks/app/tasks/page-2cddeb9e2aeedc55.js +0 -1
  520. package/apps/pwa/out/_next/static/chunks/app/today/page-baba2e047872fb0f.js +0 -1
  521. package/apps/pwa/out/_next/static/chunks/app/trace/page-e895da4ec9cac345.js +0 -1
  522. package/apps/pwa/out/_next/static/chunks/app/vault/page-4344faf20216233b.js +0 -1
  523. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-698bb29f11864b89.js +0 -1
  524. package/apps/pwa/out/_next/static/chunks/app/workflows/page-bd6a6dc1ddc273f2.js +0 -1
  525. package/apps/pwa/out/_next/static/chunks/app/workspace/page-2e9e2fb01c9da1c9.js +0 -1
  526. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-d62ceb13411ebba4.js +0 -1
  527. package/apps/pwa/out/_next/static/chunks/framework-172630e6aa5e2d7f.js +0 -1
  528. package/apps/pwa/out/_next/static/chunks/main-app-f0fe2d7477845181.js +0 -1
  529. package/apps/pwa/out/_next/static/chunks/main-fc98ac70b44eccb0.js +0 -1
  530. package/apps/pwa/out/_next/static/chunks/pages/_app-5bd7f10271f72413.js +0 -1
  531. package/apps/pwa/out/_next/static/chunks/pages/_error-97d0d85ea05fef9b.js +0 -1
  532. package/apps/pwa/out/_next/static/chunks/webpack-9e4d02d567b98240.js +0 -1
  533. package/apps/pwa/out/_next/static/css/128fb7fb670b2fbf.css +0 -1
  534. /package/apps/pwa/out/_next/static/{-6XrAoD3eU7NyMHAE4xPS → x6mjI6vqOkVVu0jFuDkz1}/_ssgManifest.js +0 -0
@@ -9,12 +9,11 @@ requires: []
9
9
 
10
10
  # Diagram Master
11
11
 
12
- 6개 엔진을 자동 라우팅하는 통합 다이어그램 스킬. (Nano Banana 2 AI 생성 포함)
13
-
14
- **모든 렌더러의 공통 venv**: `references/` 디렉토리에서 `uv run python engines/<engine>/render_*.py`
12
+ Mermaid는 elanous 자체 `MermaidRender` 도구로 터미널 그림을 그린다. Python·venv·Playwright·외부 API 없이 동작하는 기본 경로다. Python 기반 PNG 렌더러(Matplotlib, Excalidraw, Nano Banana 2, Mermaid PNG 및 SVG 캡처)는 **선택 애드온**이며 기본 경로의 전제 조건이 아니다.
15
13
 
16
14
  **핵심 원칙**
17
15
  - 콘텐츠를 분석하여 **최적 엔진 자동 선택** — 사용자가 엔진을 몰라도 됨
16
+ - 선택 엔진의 애드온이 없으면 `이 엔진은 애드온 설치가 필요합니다 (cd skills/diagram-master/references && uv sync --extra python-engines && uv run --extra python-engines playwright install chromium)`라고 안내한다. 구조/흐름처럼 Mermaid로 대체 가능한 요청이면 먼저 Mermaid로 실제 그림을 렌더하고, 정밀 곡선·3D·AI 이미지 등 대체 불가능한 요청에는 없는 결과물을 만들어냈다고 말하지 않는다. 명시적으로 다른 엔진을 요청했다면 대체했음을 밝힌다.
18
17
  - 각 엔진의 레퍼런스 문서는 `references/engines/<engine>/` 에 위치
19
18
  - 생성 후 **품질 검증** 필수 — `references/quality-checklist.md` 참조
20
19
 
@@ -66,7 +65,7 @@ Step 5: 자유형 레이아웃이 필요한가?
66
65
  → YES: Excalidraw
67
66
 
68
67
  Step 6: 기본 → Mermaid
69
- 흐름도, 구조도, 시퀀스, 상태, ER, 타임라인, 간트, 마인드맵
68
+ 흐름도/구조도는 MermaidRender 그림; 시퀀스·상태·ER·타임라인·간트·마인드맵은 Mermaid 코드 블록 또는 PNG 애드온
70
69
  ```
71
70
 
72
71
  ---
@@ -78,13 +77,13 @@ Step 6: 기본 → Mermaid
78
77
  **레퍼런스**: `references/engines/mermaid/syntax-reference.md`, `references/engines/mermaid/domain-templates.md`
79
78
 
80
79
  - **용도**: 흐름도, 구조도, 시퀀스, 상태, ER, 타임라인, 간트, 마인드맵, 클래스, 파이
81
- - **수식 포함 시**: `@svg-katex` + `render_mermaid_katex.py` (수식 1개라도 있으면 필수)
82
- - **수식 없을 때**: `render_mermaid.py`
83
- - **강점**: 컨텍스트 가장 단순, 텍스트 기반, ELK 레이아웃 강력
80
+ - **기본 렌더**: `MermaidRender` 네이티브 도구. Python 없이 `flowchart LR/RL/TB/BT`의 라벨 노드·화살표를 Unicode/ASCII로 렌더한다. `MermaidSyntax`는 문법 참고용이며 출력 포맷을 넓히지 않는다.
81
+ - **수식/그 밖의 Mermaid 타입**: Mermaid 코드 블록으로 제공하되 `MermaidRender`가 지원하지 않는 타입을 렌더했다고 주장하지 않는다. PNG가 꼭 필요하면 별도 Python/Playwright 애드온의 `render_mermaid.py`를 선택한다 (`@svg-katex` 전용 렌더러는 이 팩에 없음).
82
+ - **강점**: 기본 경로는 텍스트 기반으로 Python/venv 없이 작동; ELK·PNG는 선택 애드온의 별도 렌더 경로
84
83
 
85
- **Mermaid rich 코드 규칙**:
84
+ **Mermaid rich 코드 규칙 (선택 PNG 애드온용; 아래 classDef 색상은 터미널 MermaidRender에 반영되지 않음)**:
86
85
  - classDef + :::className — 시맨틱 스타일 적용
87
- - Frontmatter 필수: `title`, `config.layout: elk`, `config.theme: base`
86
+ - PNG 애드온에서는 Frontmatter `title`, `config.layout: elk`, `config.theme: base` 사용 가능. 기본 `MermaidRender`용 flowchart에는 붙이지 않는다 (이 도구가 지원하는 간단한 문법만 사용).
88
87
  - NEVER guess syntax — 반드시 `syntax-reference.md` 참조
89
88
  - `end` 예약어는 `"end"`로 감쌈
90
89
  - `%%` 주석 사용 (// 금지)
@@ -105,9 +104,9 @@ Step 6: 기본 → Mermaid
105
104
  - Compact (기본, ≤6 노드): `flowchart LR`, 세로 길이 최소화
106
105
  - Complex (>6 노드, 2단계+ 중첩): `flowchart TB` 허용
107
106
 
108
- **@svg-katex 수식 렌더링**:
107
+ **수식 라벨**:
109
108
 
110
- 노드/엣지 라벨에 수식 요소(부등호, 첨자, 분수, 그리스 문자, 수학 기호)가 **하나라도** 있으면 반드시 @svg-katex 사용:
109
+ 수식은 Mermaid 코드 블록으로 표현하거나, 이미지가 필수면 지원되는 애드온을 사용한다. `@svg-katex` 표기는 텍스트 레퍼런스용이며 이 팩에는 이를 PNG로 변환하는 전용 스크립트가 없다. 예:
111
110
 
112
111
  ````markdown
113
112
  ```mermaid
@@ -139,20 +138,15 @@ flowchart LR
139
138
  | 시스템 레이아웃 | `block` |
140
139
  | 다축 비교 | `radar-beta` |
141
140
 
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
- ```
141
+ **기본 렌더링 (Python 불필요)**: `MermaidRender({"source":"flowchart LR\n A[시작] --> B[완료]"})`를 호출하고 반환된 그림을 사용자에게 보여준다. 파일로도 필요하면 `.mmd` 원본을 저장한다. 터미널의 Unicode/ASCII 그림이지 PNG/SVG 이미지가 아니다. 실제 지원 범위는 `MermaidRender` 설명대로 flowchart 방향 LR/RL/TB/BT의 노드·화살표이며, 시퀀스/ER/ELK 및 복잡한 스타일은 이 도구로 렌더되었다고 주장하지 않는다.
142
+
143
+ **선택 PNG 애드온**: 먼저 아래 설치 명령으로 애드온을 설치한 환경에서만 `references/`에서 `uv run --extra python-engines python engines/mermaid/render_mermaid.py {mmd_file} --scale 3`을 사용한다. 이 경로는 Playwright와 Mermaid.js CDN을 사용하며 오프라인 기본 경로가 아니다.
150
144
 
151
145
  **Known Issues**:
152
146
  - Playwright에서 `ElementHandle.screenshot(scale=N)` 에러 → `device_scale_factor` 사용
153
147
  - Typora: classDef 대신 `style NodeId fill:...` 인라인 사용
154
148
  - ELK: `wrappingWidth` 무시 → `<br/>`로 명시적 줄바꿈
155
- - HTML/PDF에서 Mermaid.js CDN 타이밍 이슈 → **render_mermaid.py로 PNG 사전 렌더링 후 `<img>` 삽입**
149
+ - HTML/PDF에서 Mermaid.js CDN 타이밍 이슈 → PNG가 필요할 때에만 **애드온 설치 후** `render_mermaid.py`로 사전 렌더링하여 `<img>` 삽입
156
150
 
157
151
  ---
158
152
 
@@ -167,10 +161,10 @@ python render_mermaid_katex.py {mmd_file} --output diagram.png --scale 2
167
161
  **렌더링**:
168
162
  ```bash
169
163
  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
164
+ uv run --extra python-engines python engines/matplotlib/render_matplotlib.py {script.py} --dpi 300
165
+ uv run --extra python-engines python engines/matplotlib/render_matplotlib.py {script.py} --output /path/out.png
166
+ uv run --extra python-engines python engines/matplotlib/render_matplotlib.py {script.py} --figsize 12 8
167
+ uv run --extra python-engines python engines/matplotlib/render_matplotlib.py {script.py} --style dark_background
174
168
  ```
175
169
 
176
170
  ---
@@ -189,7 +183,7 @@ uv run python engines/matplotlib/render_matplotlib.py {script.py} --style dark_b
189
183
  3. 개념 → 비주얼 패턴 매핑 (Fan-Out, Convergence, Tree, Timeline, Spiral, Assembly Line 등)
190
184
  4. 각 주요 개념에 **다른 비주얼 패턴** 사용 — 균일 카드 그리드 금지
191
185
  5. JSON 생성 (대형 다이어그램은 섹션별 빌드)
192
- 6. 렌더링 & 검증 루프
186
+ 6. 선택 애드온이 없으면 설치 한 줄 안내 또는 Mermaid 대체; 있으면 렌더링 & 검증 루프
193
187
 
194
188
  **Container vs Free-Floating Text**: 기본은 free-floating text. Container는 focal point, visual grouping, 화살표 연결 대상일 때만 사용. <30% 텍스트만 container 안에.
195
189
 
@@ -200,7 +194,7 @@ uv run python engines/matplotlib/render_matplotlib.py {script.py} --style dark_b
200
194
  **렌더링**:
201
195
  ```bash
202
196
  cd ./references
203
- uv run python engines/excalidraw/render_excalidraw.py {excalidraw_file}
197
+ uv run --extra python-engines python engines/excalidraw/render_excalidraw.py {excalidraw_file}
204
198
  ```
205
199
 
206
200
  ---
@@ -229,7 +223,7 @@ uv run python engines/excalidraw/render_excalidraw.py {excalidraw_file}
229
223
  **렌더링**:
230
224
  ```bash
231
225
  cd ./references
232
- uv run python engines/svg/render_interactive_svg.py {html_file} --capture-states
226
+ uv run --extra python-engines python engines/svg/render_interactive_svg.py {html_file} --capture-states
233
227
  ```
234
228
 
235
229
  ---
@@ -247,11 +241,11 @@ Google Gemini 3.1 Flash Image Preview 기반 AI 다이어그램 생성.
247
241
  ```bash
248
242
  cd ./references
249
243
  # 텍스트 프롬프트
250
- uv run python engines/nanobannana/render_nanobannana2.py "수요 공급 곡선" --output diagram.png
244
+ uv run --extra python-engines python engines/nanobannana/render_nanobannana2.py "수요 공급 곡선" --output diagram.png
251
245
  # 참고 이미지 + 프롬프트
252
- uv run python engines/nanobannana/render_nanobannana2.py "깔끔하게 재생성" --ref original.png --output clean.png
246
+ uv run --extra python-engines python engines/nanobannana/render_nanobannana2.py "깔끔하게 재생성" --ref original.png --output clean.png
253
247
  # 프롬프트 파일
254
- uv run python engines/nanobannana/render_nanobannana2.py --file prompt.txt --output result.png
248
+ uv run --extra python-engines python engines/nanobannana/render_nanobannana2.py --file prompt.txt --output result.png
255
249
  ```
256
250
 
257
251
  ---
@@ -275,19 +269,18 @@ magick {input.png} -crop WxH+X+Y {output.png}
275
269
 
276
270
  ## Unified Render Pipeline
277
271
 
278
- 모든 엔진 공통 워크플로우:
279
-
280
272
  ```
281
273
  1. 콘텐츠 분석 → 엔진 자동 선택 (Decision Tree)
282
274
  2. 참고 이미지가 있으면 → Read tool로 시각적 분석
283
275
  3. 선택된 엔진의 reference docs 읽기 (필수)
284
- 4. 코드/데이터 생성
285
- 5. 렌더링 → PNG/SVG 출력
286
- 6. Read tool로 렌더링 결과 시각적 확인
287
- 7. quality-checklist.md 기반 품질 검증
288
- 8. 필요시 수정 → 재렌더링 (2-5회 반복)
276
+ 4. Mermaid 가능 → 간단한 flowchart 코드를 Bash가 아닌 MermaidRender에 전달해 실제 터미널 그림을 얻는다. Python·설치 명령을 실행하지 않는다.
277
+ 5. 다른 엔진 필수 → 애드온 설치 여부를 확인한다. 없으면 위 한 줄을 안내하고, Mermaid로 대체 가능하면 4로 돌아간다. 설치를 사용자 동의 없이 자동 수행하지 않는다.
278
+ 6. 선택 엔진으로 렌더링 → Mermaid는 Unicode/ASCII, 애드온은 PNG/SVG 등 해당 형식으로 출력
279
+ 7. 렌더 결과 확인 및 quality-checklist.md 기반 품질 검증, 필요시 수정/재렌더링
289
280
  ```
290
281
 
282
+ `MermaidRender`가 숨겨져 있거나 호출에 실패하면 그림을 만들었다고 주장하지 않는다. 사용 가능한 Mermaid 코드 블록을 제시하고 도구 의존성(`bun add mermaidtui`)을 안내한다. Python 애드온 설치로 기본 렌더 실패를 우회하지 않는다.
283
+
291
284
  ### 참고 이미지 (--ref) 통합 워크플로우
292
285
 
293
286
  | 엔진 | --ref 처리 방식 |
@@ -296,7 +289,7 @@ magick {input.png} -crop WxH+X+Y {output.png}
296
289
  | Matplotlib | Read tool로 분석 → 색상/레이아웃/축 스타일 코드 반영 |
297
290
  | Excalidraw | Read tool로 분석 → 구조/배치/연결선 JSON 반영 |
298
291
  | SVG | Read tool로 분석 → 레이어/색상/인터랙션 HTML 반영 |
299
- | Mermaid | Read tool로 분석 → 노드 구조/classDef 색상 코드 반영 |
292
+ | Mermaid | Read tool로 분석 → 기본 MermaidRender는 노드 구조만 반영; 색상 classDef는 PNG 애드온일 때 사용 |
300
293
 
301
294
  ## 목표 품질 기준
302
295
 
@@ -326,17 +319,17 @@ magick {input.png} -crop WxH+X+Y {output.png}
326
319
  Phase 3 다이어그램 처리 시:
327
320
  1. 기존 PDF 다이어그램 → PDF 추출 검토
328
321
  2. 새 다이어그램 필요 → diagram-master auto-routing
329
- 3. 수식 포함 구조도 → Mermaid @svg-katex
330
- 4. 경제학 곡선/분포 → Matplotlib
331
- 5. 기타 구조도 → Mermaid 기본
322
+ 3. 수식 포함 구조도 → Mermaid 코드 블록 (전용 PNG 수식 렌더러 없음)
323
+ 4. 경제학 곡선/분포 → Matplotlib 선택 애드온 (없으면 설치 한 줄 안내)
324
+ 5. 기타 흐름/구조도 → MermaidRender 기본 그림
332
325
  ```
333
326
 
334
327
  ### lecture-note-digitizer 연동
335
328
  ```
336
329
  Phase 3 Chart PNG 생성 시:
337
330
  1. 다이어그램 유형 판단 → diagram-master auto-routing에 위임
338
- 2. 수학 곡선이 필요하면 → Matplotlib 자동 선택
339
- 3. 나머지는 Mermaid 기본
331
+ 2. 수학 곡선이 필요하면 → Matplotlib 선택 애드온; 없으면 설치 한 줄 안내 (정밀 곡선을 Mermaid 그림이라고 속이지 않음)
332
+ 3. 그 외 PNG가 필수라면 Mermaid PNG 애드온을 설치; 터미널 그림으로 충분한 흐름도라면 MermaidRender 기본
340
333
  ```
341
334
 
342
335
  ## Content-Aware 전처리 (선택적)
@@ -349,18 +342,18 @@ Phase 3 Chart PNG 생성 시:
349
342
 
350
343
  ## 무료로 쓰는 길 (키 없이)
351
344
 
352
- `references/`의 Mermaid 문법으로 흐름도를 작성하거나 PDF의 기존 도표를 `pdfimages`로 추출합니다. 로컬 렌더러를 사용할 때는 아래 설치 후 Mermaid·Matplotlib·SVG·Excalidraw 엔진을 선택합니다. Nano Banana AI 이미지만 별도의 API 키가 필요합니다.
345
+ `MermaidRender`로 Python 없는 환경에서도 흐름도의 터미널 그림을 생성합니다. 정밀한 PNG·인터랙티브 캡처는 별도의 Python 애드온 설치 후 사용합니다. Nano Banana AI 이미지는 애드온과 API 키가 모두 필요합니다.
353
346
 
354
347
  ## 내 키로 쓰는 길
355
348
 
356
349
  AI 이미지 생성이 필요하면 실행 환경의 `GEMINI_API_KEY`(또는 코드가 허용하는 `GOOGLE_API_KEY`)에 자신의 키를 설정하고 `references/engines/nanobannana/render_nanobannana2.py`를 실행합니다. 다른 엔진에는 이 키가 필요하지 않습니다. 키 값이나 자격 파일은 사본에 넣지 않습니다.
357
350
 
358
- ## 설치
351
+ ## 선택 애드온 설치
359
352
 
360
- 이 스킬 폴더에서 실행합니다.
353
+ Mermaid 기본 렌더에는 설치가 필요하지 않습니다 (`MermaidRender`는 elanous의 `mermaidtui` 의존성을 사용). Python 엔진으로 PNG/캡처를 만들 때에만 저장소 루트에서 다음 한 줄을 실행합니다:
361
354
 
362
355
  ```bash
363
- cd references
364
- uv sync
365
- uv run playwright install chromium
356
+ cd skills/diagram-master/references && uv sync --extra python-engines && uv run --extra python-engines playwright install chromium
366
357
  ```
358
+
359
+ 애드온 설치 후 Python 스크립트는 `references/`에서 `uv run --extra python-engines python engines/<engine>/render_*.py`로 실행합니다. Nano Banana는 추가로 `GEMINI_API_KEY` 또는 `GOOGLE_API_KEY`가 필요합니다.
@@ -3,7 +3,10 @@ name = "diagram-master"
3
3
  version = "2.0.0"
4
4
  description = "Diagram Master - unified renderer for all diagram engines"
5
5
  requires-python = ">=3.11"
6
- dependencies = [
6
+ dependencies = []
7
+
8
+ [project.optional-dependencies]
9
+ python-engines = [
7
10
  "matplotlib>=3.9",
8
11
  "numpy>=1.26",
9
12
  "pillow>=10.0",
@@ -21,6 +21,8 @@
21
21
 
22
22
  ## Decision Tree (순서대로 판단)
23
23
 
24
+ 아래는 **표현 형식 선택**이다. 기본 출력은 `MermaidRender`의 터미널 flowchart 그림 (Python 불필요)이며, 다른 형식/엔진이 필요할 때는 먼저 Python 애드온 설치 여부를 확인한다. 없으면 `이 엔진은 애드온 설치가 필요합니다 (cd skills/diagram-master/references && uv sync --extra python-engines && uv run --extra python-engines playwright install chromium)`라고 안내하고 흐름/구조로 표현 가능한 경우 Mermaid 그림으로 대체한다. 정밀 곡선·3D·AI 이미지 등은 동등한 대체가 불가능하므로 결과물을 가장하지 않는다. 명시 엔진을 대체했다면 사용자에게 알린다. `MermaidRender`는 LR/RL/TB/BT flowchart 노드·화살표 범위만 지원하며, 그 외 Mermaid 타입은 코드 블록 또는 애드온의 PNG 렌더 경로다.
25
+
24
26
  ```
25
27
  ┌─────────────────────────────────────────────────────┐
26
28
  │ Step 0: 모드 판단 │
@@ -75,7 +77,7 @@
75
77
  | 관계 모델 | ER 다이어그램, 클래스 다이어그램 |
76
78
  | 시간 기반 | 타임라인, 간트 차트, 마일스톤 |
77
79
  | 분류/범주 | 마인드맵, 파이 차트 |
78
- | 수식 포함 구조도 | `@svg-katex` + `render_mermaid_katex.py` |
80
+ | 수식 포함 구조도 | Mermaid 코드 블록 (`@svg-katex` 전용 PNG 렌더러는 이 팩에 없음); 단순 라벨 흐름도만 `MermaidRender` |
79
81
 
80
82
  ### Matplotlib (수학/과학 정밀)
81
83
 
@@ -148,7 +150,7 @@
148
150
  ## 경계 사례 판단
149
151
 
150
152
  ### Mermaid vs Matplotlib
151
- - 구조 + 수식 라벨 → Mermaid (`@svg-katex`)
153
+ - 구조 + 수식 라벨 → Mermaid 코드 블록 (`@svg-katex` 전용 렌더러 없음). 단순 라벨 흐름도면 `MermaidRender` 그림 가능
152
154
  - 연속 곡선 + 정밀 축 → **Matplotlib**
153
155
  - XY 데이터 단순 차트 → Mermaid `xychart-beta`도 가능하지만, 축 커스터마이징이 필요하면 Matplotlib
154
156
 
@@ -2,6 +2,7 @@
2
2
  name: grill-me
3
3
  description: 계획·설계·결정을 «공감대에 이를 때까지» 끈질기게 인터뷰한다. 설계 트리를 가지마다 내려가며 결정 간 의존을 풀고, 산출을 SCQA 카드 ⊕ 골 문면으로 남긴다. "grill me", "그릴미", "캐물어줘", "추궁해줘", "인터뷰해줘", "나를 인터뷰", "계획 캐물어", "설계 캐물어", "이 계획 파고들어", "전제를 캐줘", "요구사항 캐내줘", "뭘 빠뜨렸나", "계획 스트레스 테스트", "설계 스트레스 테스트", "공감대" 등의 언급 시 이 스킬 사용. Use when the user wants to: grill me, grill this plan, grill this design, interview me, stress-test this plan, pressure-test my design, find what I am missing, resolve the decision tree.
4
4
  disable-model-invocation: true
5
+ prompt-only: true
5
6
  argument-hint: "무엇을 캐물을까 — 계획·설계·결정 하나"
6
7
  # 오픈코어 경계(scripts/skill-boundary.ts) — requires = 없으면 이 스킬이 일을 못 하는 catalog/resources.yaml 자원 id
7
8
  requires: []
@@ -54,7 +54,7 @@ requires: []
54
54
 
55
55
  ## 무료로 쓰는 길 (키 없이)
56
56
 
57
- 이 스킬 폴더에서 `npx tsx scripts/main.ts "<검색어>" --free --print`로 DDG 검색을 사용합니다. URL 본문은 키 없는 Jina Reader 또는 로컬 HTML 추출을 사용할 수 있습니다. `--free`는 유료 엔진을 피하려는 명시적 선택이며, 검색 서비스 접속이 막히면 결과가 없을 수 있습니다.
57
+ 이 스킬 폴더에서 `bun scripts/main.ts "<검색어>" --free --print`로 DDG 검색을 사용합니다. URL 본문은 키 없는 Jina Reader 또는 로컬 HTML 추출을 사용할 수 있습니다. `--free`는 유료 엔진을 피하려는 명시적 선택이며, 검색 서비스 접속이 막히면 결과가 없을 수 있습니다.
58
58
 
59
59
  ## 내 키로 쓰는 길
60
60
 
@@ -93,34 +93,34 @@ requires: []
93
93
  이 스킬 폴더에서 실행합니다.
94
94
 
95
95
  ```bash
96
- npx tsx scripts/main.ts "<검색어>" [OPTIONS]
96
+ bun scripts/main.ts "<검색어>" [OPTIONS]
97
97
  ```
98
98
 
99
99
  ### 예시
100
100
 
101
101
  ```bash
102
102
  # 기본 (tavily · OMNI_CRAWL_TAVILY=0 이면 ddg 무료)
103
- npx tsx scripts/main.ts "Samsung HBM4 경쟁력" --print
103
+ bun scripts/main.ts "Samsung HBM4 경쟁력" --print
104
104
 
105
105
  # 뉴스 (오늘자)
106
- npx tsx scripts/main.ts "삼성전자 뉴스" --time-range day --print
106
+ bun scripts/main.ts "삼성전자 뉴스" --time-range day --print
107
107
 
108
108
  # 딥리서치
109
- npx tsx scripts/main.ts "SK하이닉스 전망" --mode deep --print
109
+ bun scripts/main.ts "SK하이닉스 전망" --mode deep --print
110
110
 
111
111
  # Conatus 파이프라인 (구조화 JSON)
112
- npx tsx scripts/main.ts "NVDA earnings" --json
112
+ bun scripts/main.ts "NVDA earnings" --json
113
113
 
114
114
  # 전 엔진 라이브 진단 (+크레딧 잔량)
115
- npx tsx scripts/main.ts --health
115
+ bun scripts/main.ts --health
116
116
 
117
117
  # 개발 아티팩트 (라이브러리 동작·에러·버그 수정 여부)
118
- npx tsx scripts/main.ts "pydantic model_validator wrap mode" --engine fc-dev --print
118
+ bun scripts/main.ts "pydantic model_validator wrap mode" --engine fc-dev --print
119
119
 
120
120
  # X 트윗 벌크 / 커뮤니티 / 사이트 크롤
121
- npx tsx scripts/main.ts "bitcoin outlook" --engine apify --min-favs 50 --print
122
- npx tsx scripts/main.ts "Claude Code 반응" --engine grok-community --print
123
- npx tsx scripts/main.ts "https://news.samsung.com" --engine fc-crawl --print
121
+ bun scripts/main.ts "bitcoin outlook" --engine apify --min-favs 50 --print
122
+ bun scripts/main.ts "Claude Code 반응" --engine grok-community --print
123
+ bun scripts/main.ts "https://news.samsung.com" --engine fc-crawl --print
124
124
  ```
125
125
 
126
126
  ## 옵션
@@ -189,13 +189,13 @@ changed/new 페이지를 텔레그램(/v1/outbound)으로 알림. 첫 체크는
189
189
 
190
190
  ```bash
191
191
  # 생성 (자연어 스케줄 · goal=judge 판정으로 노이즈 억제·변경페이지당 1cr)
192
- npx tsx scripts/monitor.ts create --name "삼성전자 뉴스룸" \
192
+ bun scripts/monitor.ts create --name "삼성전자 뉴스룸" \
193
193
  --urls "https://news.samsung.com/kr/latest" --schedule "every 1 hours" \
194
194
  --goal "새 기사 등장 시 알림. 날짜/배너 등 사소한 변경 무시."
195
- npx tsx scripts/monitor.ts list # 목록+예상 크레딧/월
196
- npx tsx scripts/monitor.ts checks <monitorId> # 체크 이력 (same/changed/new)
197
- npx tsx scripts/monitor.ts run <monitorId> # 즉시 1회 체크
198
- npx tsx scripts/monitor.ts delete <monitorId>
195
+ bun scripts/monitor.ts list # 목록+예상 크레딧/월
196
+ bun scripts/monitor.ts checks <monitorId> # 체크 이력 (same/changed/new)
197
+ bun scripts/monitor.ts run <monitorId> # 즉시 1회 체크
198
+ bun scripts/monitor.ts delete <monitorId>
199
199
  ```
200
200
 
201
201
  운영 중(2026-07-06~): 삼성전자 뉴스룸·SK하이닉스 뉴스룸 (각 1h·~1,440cr/월).