@openav/cli 1.0.40 → 1.0.42

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 (600) hide show
  1. package/README.md +625 -38
  2. package/bin/stt/requirements.txt +7 -19
  3. package/bin/stt/stt_server.py +18 -93
  4. package/install.cjs +156 -2
  5. package/llms.txt +34 -7
  6. package/package.json +9 -9
  7. package/web/dist/assets/AssistantsView-Ct3BBpYf.js +1 -0
  8. package/web/dist/assets/AutomationView-CO-jVhee.js +3 -0
  9. package/web/dist/assets/ChannelConfigView-Ct1W584x.js +8 -0
  10. package/web/dist/assets/ChartsView-CAc37Sam.js +1 -0
  11. package/web/dist/assets/ConnectorsView-DP4bbh58.js +1 -0
  12. package/web/dist/assets/FileTreeView-DwsYfssO.js +1 -0
  13. package/web/dist/assets/HookConfigView-uFsqieii.js +2 -0
  14. package/web/dist/assets/InputArea-BY8quOiH.js +14 -0
  15. package/web/dist/assets/MemoryView-Bgd_lcTf.js +1 -0
  16. package/web/dist/assets/MessageBubble-CCTRbIMZ.css +1 -0
  17. package/web/dist/assets/MessageBubble-CVGXupVH.js +453 -0
  18. package/web/dist/assets/ModelsView-B271UV9L.js +1 -0
  19. package/web/dist/assets/PluginsView-Dz4fqQR1.js +2 -0
  20. package/web/dist/assets/ProjectsView-DF-YCV8y.js +1 -0
  21. package/web/dist/assets/SessionGrid-BIREstN2.js +4 -0
  22. package/web/dist/assets/SessionGrid-Bk5CAXEn.css +1 -0
  23. package/web/dist/assets/SettingsModal-ZJeoZcCd.js +4 -0
  24. package/web/dist/assets/SkillsView-CH2ghYL2.js +1 -0
  25. package/web/dist/assets/TemplatesTab-BGe7_67s.js +1 -0
  26. package/web/dist/assets/ThreadsView-XditIHZ4.js +2 -0
  27. package/web/dist/assets/ToolsView-BBzsFdVZ.js +1 -0
  28. package/web/dist/assets/abnfDiagram-WEYOIA3C-DGUPHfRO.js +1 -0
  29. package/web/dist/assets/agentIconSet-B5GUQwel.js +1 -0
  30. package/web/dist/assets/api-plEYhRn0.js +1 -0
  31. package/web/dist/assets/arc-Y1ARJVZ4.js +1 -0
  32. package/web/dist/assets/architecture-WOLXFQ4H-BUERx_-B.js +1 -0
  33. package/web/dist/assets/architectureDiagram-ZHVYKT53-BPsQL7O5.js +36 -0
  34. package/web/dist/assets/array-BifhSqXX.js +1 -0
  35. package/web/dist/assets/blockDiagram-RJAE7QA3-pB7EXp6p.js +140 -0
  36. package/web/dist/assets/c4Diagram-XDPPPE54-BnPeCq_L.js +38 -0
  37. package/web/dist/assets/channel-CSrLW66f.js +1 -0
  38. package/web/dist/assets/channelMeta-BGQXQxgj.js +1 -0
  39. package/web/dist/assets/chunk-2E7WHVMD-xX282MrC.js +88 -0
  40. package/web/dist/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  41. package/web/dist/assets/chunk-4EMNKR2T-BAQDLVqt.js +1 -0
  42. package/web/dist/assets/chunk-55XCU76K-BwAE3Eqq.js +1 -0
  43. package/web/dist/assets/{chunk-5VM5RSS4-CYl9mwa-.js → chunk-5VM5RSS4-ZNzvKenW.js} +2 -2
  44. package/web/dist/assets/chunk-7S6XSTFO-DwwaClMo.js +2 -0
  45. package/web/dist/assets/chunk-AQDTSKZB-DHG5Km_p.js +72 -0
  46. package/web/dist/assets/chunk-DSNLSHJZ-a6-B52h-.js +129 -0
  47. package/web/dist/assets/chunk-DUW6YSOI-Dgx8z5s3.js +1 -0
  48. package/web/dist/assets/chunk-HAGFOTED-DZMcAj3o.js +62 -0
  49. package/web/dist/assets/chunk-HNE4Q36P-gl_4xI6B.js +1 -0
  50. package/web/dist/assets/chunk-J5ZVWO5B-oDCd-gWO.js +1 -0
  51. package/web/dist/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  52. package/web/dist/assets/chunk-NGNAAXSQ-Bw6tHVuc.js +136 -0
  53. package/web/dist/assets/chunk-NQOKRVIF-B8Q-YmhL.js +213 -0
  54. package/web/dist/assets/chunk-UHW7PFBP-isP5lYMB.js +1 -0
  55. package/web/dist/assets/chunk-VQ5W62QI-Bn68syIc.js +1 -0
  56. package/web/dist/assets/chunk-WQQL4CDK-CdZpmEYA.js +10 -0
  57. package/web/dist/assets/chunk-XXDRQBXY-CnbRkih_.js +1 -0
  58. package/web/dist/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  59. package/web/dist/assets/chunk-YZO67HFG-DX9GhJkR.js +1 -0
  60. package/web/dist/assets/chunk-ZAUX2LTX-Ki22UlYp.js +1 -0
  61. package/web/dist/assets/chunk-ZCHMQSOR-BVj0Zx6L.js +2 -0
  62. package/web/dist/assets/classDiagram-v2-4MYWR3UA-C7PV1veb.js +217 -0
  63. package/web/dist/assets/common-Bbatsa0-.js +192 -0
  64. package/web/dist/assets/cose-bilkent-JH36ORCC-DHFtpmij.js +1 -0
  65. package/web/dist/assets/cynefin-EF2NZ3EQ-1rI2T0cc.js +1 -0
  66. package/web/dist/assets/cynefinDiagram-WF24UDRP-C8O_v8xU.js +62 -0
  67. package/web/dist/assets/cytoscape.esm-BY277UBX.js +321 -0
  68. package/web/dist/assets/dagre-NK4GIZVX-BWGoHIUd.js +4 -0
  69. package/web/dist/assets/defaultLocale-BFoDCU3G.js +1 -0
  70. package/web/dist/assets/diagram-CBK3MWTC-kf9v35RN.js +24 -0
  71. package/web/dist/assets/diagram-I5XIIV2D-Ro-ig56_.js +24 -0
  72. package/web/dist/assets/diagram-ODIL2UCW-CtGga01G.js +30 -0
  73. package/web/dist/assets/diagram-PFBEJUXE-C14lcR-6.js +3 -0
  74. package/web/dist/assets/diagram-RJA3I4VV-BBbqaSKU.js +41 -0
  75. package/web/dist/assets/diagram-TYUNFSNR-BynvjQsr.js +200 -0
  76. package/web/dist/assets/dist-CumnGVmJ.js +1 -0
  77. package/web/dist/assets/ebnfDiagram-V4P3TTPT-BdqUCZnk.js +1 -0
  78. package/web/dist/assets/elk-QONTBCTQ-CYCP_9Jy.js +27 -0
  79. package/web/dist/assets/erDiagram-KYQIGQAA-C3L55l_F.js +99 -0
  80. package/web/dist/assets/eventmodeling-K75KTNOO-CTQdA_1v.js +1 -0
  81. package/web/dist/assets/flowDiagram-IUGLLWBU-COLKOzBg.js +1 -0
  82. package/web/dist/assets/ganttDiagram-R7GPNTJY-Be4Qk8Hx.js +292 -0
  83. package/web/dist/assets/gitGraph-VSP46ZUC-B59HXvj1.js +1 -0
  84. package/web/dist/assets/gitGraphDiagram-PDYL7XHY-C2A0VA6q.js +106 -0
  85. package/web/dist/assets/graphlib-DS17s2tU.js +1 -0
  86. package/web/dist/assets/icons-CYDRRPKW.js +1 -0
  87. package/web/dist/assets/index-CTbLW314.js +133 -0
  88. package/web/dist/assets/index-DdzVrZye.css +1 -0
  89. package/web/dist/assets/info-OHQRW6UA-DWlkKvmi.js +1 -0
  90. package/web/dist/assets/infoDiagram-MVDRKAX5-B8e6dTjN.js +2 -0
  91. package/web/dist/assets/init-C-OQMol4.js +1 -0
  92. package/web/dist/assets/ishikawaDiagram-HPEHV2GE-udXPYi9H.js +70 -0
  93. package/web/dist/assets/journeyDiagram-BOSHW7O7-DTyDkf5d.js +139 -0
  94. package/web/dist/assets/kanban-definition-FNSA4HC5-BXgV20qe.js +89 -0
  95. package/web/dist/assets/katex-B940_AAO.js +257 -0
  96. package/web/dist/assets/line-DVabuQAu.js +1 -0
  97. package/web/dist/assets/linear-gLkGxN9m.js +1 -0
  98. package/web/dist/assets/markdown-N5__3T-w.js +14 -0
  99. package/web/dist/assets/mermaid-parser.core-BrXnuEs7.js +7 -0
  100. package/web/dist/assets/mermaid.core-BGbz3k1k.js +44 -0
  101. package/web/dist/assets/mindmap-definition-6OY57UG3-DbtP-bmk.js +98 -0
  102. package/web/dist/assets/ordinal-BDEzSJ7C.js +1 -0
  103. package/web/dist/assets/packet-JDAUHWVQ-iW8w3JF5.js +1 -0
  104. package/web/dist/assets/panels-CIPgN61N.js +1 -0
  105. package/web/dist/assets/path-fybaL0A-.js +1 -0
  106. package/web/dist/assets/pegDiagram-ECIUJNBX-rBWJbaq4.js +1 -0
  107. package/web/dist/assets/pie-XZMESJXO-KHXEq-Yx.js +1 -0
  108. package/web/dist/assets/pieDiagram-GNMPY74T-DsW7yHm0.js +39 -0
  109. package/web/dist/assets/preload-helper-BLdHbfdN.js +1 -0
  110. package/web/dist/assets/profileChange-xrd7jkii.js +1 -0
  111. package/web/dist/assets/quadrantDiagram-D57K4MC3-DF_pwNhM.js +7 -0
  112. package/web/dist/assets/radar-ABXABTNO-BkAUJ_Zd.js +1 -0
  113. package/web/dist/assets/railroad-I3PHUGI6-BdnWRdGt.js +1 -0
  114. package/web/dist/assets/railroad-abnf-LNEFI6M7-C8K36-8b.js +1 -0
  115. package/web/dist/assets/railroad-ebnf-DWYD2UWJ-BlS25T3f.js +1 -0
  116. package/web/dist/assets/railroad-peg-JR7BVNR7-CBKGDi75.js +1 -0
  117. package/web/dist/assets/railroadDiagram-Y72NRBL7-DmrlMIvv.js +1 -0
  118. package/web/dist/assets/react-vendor-CB4cLN-6.js +19 -0
  119. package/web/dist/assets/requirementDiagram-EQYSW5RA-cvUq9H3I.js +84 -0
  120. package/web/dist/assets/rolldown-runtime-COiEfhsA.js +1 -0
  121. package/web/dist/assets/rough.esm-Dy-Kn_BL.js +1 -0
  122. package/web/dist/assets/sankeyDiagram-SY24JHO5-BdxXAbER.js +40 -0
  123. package/web/dist/assets/sequenceDiagram-BLEHNHQU-Druumi0k.js +169 -0
  124. package/web/dist/assets/settingsStore-Xqln0d91.js +1 -0
  125. package/web/dist/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -0
  126. package/web/dist/assets/src-49LUQhkG.js +1 -0
  127. package/web/dist/assets/src-BWF7jMDv.js +1 -0
  128. package/web/dist/assets/state-CSZ50keL.js +1 -0
  129. package/web/dist/assets/stateDiagram-v2-A6IESKWZ-Jgh6qlrr.js +291 -0
  130. package/web/dist/assets/sttLanguages-CSNMgUTz.js +2 -0
  131. package/web/dist/assets/swimlanes-B3ENRKFQ-4xKumvXQ.js +1 -0
  132. package/web/dist/assets/swimlanesDiagram-AYQRV4AK-bHcLKL3d.js +8 -0
  133. package/web/dist/assets/timeline-definition-JXYKGLGB-BYKhga9x.js +120 -0
  134. package/web/dist/assets/treeView-D4JQ5SDB-6-eTVUuH.js +1 -0
  135. package/web/dist/assets/treemap-SAJKECNS-Dxl8yCLE.js +1 -0
  136. package/web/dist/assets/ttsSettings-BwXYpDnk.js +2 -0
  137. package/web/dist/assets/types-JssxRFJn.js +1 -0
  138. package/web/dist/assets/useConfirm-Da8iQ_DZ.js +1 -0
  139. package/web/dist/assets/useTranslation-B-mfApCn.js +1 -0
  140. package/web/dist/assets/usecaseDiagram-WPOLBNNX-BaQ8nAv9.js +328 -0
  141. package/web/dist/assets/vennDiagram-Q3Y3IDCW-DkPvfmfT.js +34 -0
  142. package/web/dist/assets/wardley-7MLQ67FV-CZtI22aa.js +1 -0
  143. package/web/dist/assets/wardleyDiagram-IVAIDKWA-Dgi2OWQ4.js +78 -0
  144. package/web/dist/assets/websocket-BnDwh01e.js +1 -0
  145. package/web/dist/assets/whatsNewStore-LpdLRLGl.js +1 -0
  146. package/web/dist/assets/workspaceSemantics-RaIRer76.js +3 -0
  147. package/web/dist/assets/xychartDiagram-4URNHDU4-Ch96dep-.js +7 -0
  148. package/web/dist/favicon.svg +18 -39
  149. package/web/dist/icons/icon-1024.png +0 -0
  150. package/web/dist/icons/icon-180.png +0 -0
  151. package/web/dist/icons/icon-192.png +0 -0
  152. package/web/dist/icons/icon-512.png +0 -0
  153. package/web/dist/icons/icon-maskable-512.png +0 -0
  154. package/web/dist/index.html +46 -12
  155. package/web/dist/logo.svg +25 -39
  156. package/web/dist/manifest.webmanifest +2 -2
  157. package/web/dist/vendor/MANIFEST.json +24 -0
  158. package/web/dist/vendor/d3.min.js +2 -0
  159. package/web/dist/vendor/echarts.min.js +45 -0
  160. package/web/dist/assets/AssistantsView-BiUiWjhF.js +0 -1
  161. package/web/dist/assets/AutomationView-Dcf_yNaI.js +0 -1
  162. package/web/dist/assets/ChannelConfigView-BLnxsMGm.js +0 -8
  163. package/web/dist/assets/ConnectorsView-CX3E6X6c.js +0 -1
  164. package/web/dist/assets/DesignSystemView--x-P-lpD.js +0 -1
  165. package/web/dist/assets/Drawer-CjAgqH3B.js +0 -1
  166. package/web/dist/assets/FileTreeView-Chb_fzTK.js +0 -11
  167. package/web/dist/assets/HookConfigView-EafYlWdN.js +0 -1
  168. package/web/dist/assets/InputArea-BbHslX7b.js +0 -50
  169. package/web/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  170. package/web/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  171. package/web/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  172. package/web/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  173. package/web/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  174. package/web/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  175. package/web/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  176. package/web/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  177. package/web/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  178. package/web/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  179. package/web/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  180. package/web/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  181. package/web/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  182. package/web/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  183. package/web/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  184. package/web/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  185. package/web/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  186. package/web/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  187. package/web/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  188. package/web/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  189. package/web/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  190. package/web/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  191. package/web/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  192. package/web/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  193. package/web/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  194. package/web/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  195. package/web/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  196. package/web/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  197. package/web/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  198. package/web/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  199. package/web/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  200. package/web/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  201. package/web/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  202. package/web/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  203. package/web/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  204. package/web/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  205. package/web/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  206. package/web/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  207. package/web/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  208. package/web/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  209. package/web/dist/assets/ModelsView-CGN5Nljr.js +0 -1
  210. package/web/dist/assets/PluginsView-CDiJgvI8.js +0 -2
  211. package/web/dist/assets/ProjectsView-C5Usmwqy.js +0 -1
  212. package/web/dist/assets/SessionGrid-BGpz0-op.css +0 -1
  213. package/web/dist/assets/SessionGrid-Drxg0r_u.js +0 -4
  214. package/web/dist/assets/SettingsModal-Cmts6aBG.js +0 -10
  215. package/web/dist/assets/Skeleton-Dsk6B0U3.js +0 -1
  216. package/web/dist/assets/SkillsView-TEDR_3XX.js +0 -1
  217. package/web/dist/assets/TemplatesTab-DtN5Kdgh.js +0 -1
  218. package/web/dist/assets/ToolsView-VukZnIt1.js +0 -1
  219. package/web/dist/assets/VizCardsSkeleton-C_GaEfXd.js +0 -1
  220. package/web/dist/assets/abap-BdImnpbu.js +0 -1
  221. package/web/dist/assets/abnfDiagram-YUKMZFIV-BIFw6B_N.js +0 -1
  222. package/web/dist/assets/actionscript-3-B3316cI-.js +0 -1
  223. package/web/dist/assets/ada-bCR0ucgS.js +0 -1
  224. package/web/dist/assets/ahk-CsyLZFj1.js +0 -1
  225. package/web/dist/assets/ahk2-8Zs4aa1G.js +0 -1
  226. package/web/dist/assets/andromeeda-C4gqWexZ.js +0 -1
  227. package/web/dist/assets/angular-html-DA-rfuFy.js +0 -1
  228. package/web/dist/assets/angular-ts-BrjP3tb8.js +0 -1
  229. package/web/dist/assets/apache-Pmp26Uib.js +0 -1
  230. package/web/dist/assets/apex-DhZFqWV2.js +0 -1
  231. package/web/dist/assets/apl-CORt7UWP.js +0 -1
  232. package/web/dist/assets/applescript-Co6uUVPk.js +0 -1
  233. package/web/dist/assets/ara-BRHolxvo.js +0 -1
  234. package/web/dist/assets/arc-BZQ951h9.js +0 -1
  235. package/web/dist/assets/architectureDiagram-47P4ROYG-BP5qiXzf.js +0 -36
  236. package/web/dist/assets/asciidoc-CSVQ5wI8.js +0 -1
  237. package/web/dist/assets/asm-D_Q5rh1f.js +0 -1
  238. package/web/dist/assets/astro-HNnZUWAn.js +0 -1
  239. package/web/dist/assets/aurora-x-D-2ljcwZ.js +0 -1
  240. package/web/dist/assets/awk-DMzUqQB5.js +0 -1
  241. package/web/dist/assets/ayu-dark-DYE7WIF3.js +0 -1
  242. package/web/dist/assets/ayu-light-BA47KaF1.js +0 -1
  243. package/web/dist/assets/ayu-mirage-32ctXXKs.js +0 -1
  244. package/web/dist/assets/ballerina-BFfxhgS-.js +0 -1
  245. package/web/dist/assets/bat-CickPsom.js +0 -1
  246. package/web/dist/assets/beancount-k_qm7-4y.js +0 -1
  247. package/web/dist/assets/berry-uYugtg8r.js +0 -1
  248. package/web/dist/assets/bibtex-CHM0blh-.js +0 -1
  249. package/web/dist/assets/bicep-Bmn6On1c.js +0 -1
  250. package/web/dist/assets/bird2-Bx8U0n9b.js +0 -1
  251. package/web/dist/assets/blade-2xfisSek.js +0 -1
  252. package/web/dist/assets/blockDiagram-E7TT5TSB-DtRpcE7F.js +0 -140
  253. package/web/dist/assets/bsl-DlhNcFeZ.js +0 -1
  254. package/web/dist/assets/c-BIGW1oBm.js +0 -1
  255. package/web/dist/assets/c3-Dp5svz6Z.js +0 -1
  256. package/web/dist/assets/c4Diagram-CRA5TL53-Gdzn8UBh.js +0 -38
  257. package/web/dist/assets/cadence-Bv_4Rxtq.js +0 -1
  258. package/web/dist/assets/cairo-KRGpt6FW.js +0 -1
  259. package/web/dist/assets/catppuccin-frappe-CZL1YF0i.js +0 -1
  260. package/web/dist/assets/catppuccin-latte-DH-8KZSZ.js +0 -1
  261. package/web/dist/assets/catppuccin-macchiato-B7yYVSCf.js +0 -1
  262. package/web/dist/assets/catppuccin-mocha-Ct7hS0mc.js +0 -1
  263. package/web/dist/assets/channel-BND6_KSH.js +0 -1
  264. package/web/dist/assets/chapel-DTp_pixX.js +0 -1
  265. package/web/dist/assets/chunk-2Q5K7J3B-3U6HMlsm.js +0 -1
  266. package/web/dist/assets/chunk-7TKQ45FW-Dn6ktcY5.js +0 -1
  267. package/web/dist/assets/chunk-AW2ZBBNX-De0QX6p1.js +0 -88
  268. package/web/dist/assets/chunk-FVRAUYC3-CpXDfvz4.js +0 -2
  269. package/web/dist/assets/chunk-HTAEGDNF-D1KDvcDd.js +0 -1
  270. package/web/dist/assets/chunk-JWPE2WC7-umm4A-fq.js +0 -1
  271. package/web/dist/assets/chunk-KQW6MTUR-JYH94hpE.js +0 -1
  272. package/web/dist/assets/chunk-XXDRQBXY-CSlCFByc.js +0 -1
  273. package/web/dist/assets/clarity-Dn5IMItf.js +0 -1
  274. package/web/dist/assets/classDiagram-v2-K4WV4PDN-DnFwS0qN.js +0 -217
  275. package/web/dist/assets/clojure-P80f7IUj.js +0 -1
  276. package/web/dist/assets/cmake-D1j8_8rp.js +0 -1
  277. package/web/dist/assets/cobol-nBiQ_Alo.js +0 -1
  278. package/web/dist/assets/codeowners-Bp6g37R7.js +0 -1
  279. package/web/dist/assets/codeql-DsOJ9woJ.js +0 -1
  280. package/web/dist/assets/coffee-Ch7k5sss.js +0 -1
  281. package/web/dist/assets/common-lisp-Cg-RD9OK.js +0 -1
  282. package/web/dist/assets/coq-C7JzOVbR.js +0 -1
  283. package/web/dist/assets/cose-bilkent-JH36ORCC-BxUTUyep.js +0 -1
  284. package/web/dist/assets/cpp-BMRokrvK.js +0 -1
  285. package/web/dist/assets/crystal-DGywbUpC.js +0 -1
  286. package/web/dist/assets/csharp-DSvCPggb.js +0 -1
  287. package/web/dist/assets/css-CLj8gQPS.js +0 -1
  288. package/web/dist/assets/csv-fuZLfV_i.js +0 -1
  289. package/web/dist/assets/cue-D82EKSYY.js +0 -1
  290. package/web/dist/assets/cynefin-EF2NZ3EQ-CiMvulJr.js +0 -141
  291. package/web/dist/assets/cynefinDiagram-3GCD6N5R-DuXFORdW.js +0 -62
  292. package/web/dist/assets/cypher-COkxafJQ.js +0 -1
  293. package/web/dist/assets/cytoscape.esm-Ix0LnXOy.js +0 -331
  294. package/web/dist/assets/d-85-TOEBH.js +0 -1
  295. package/web/dist/assets/dagre-W4DXFKR2-DzMZHXci.js +0 -4
  296. package/web/dist/assets/dark-plus-C3mMm8J8.js +0 -1
  297. package/web/dist/assets/dart-bE4Kk8sk.js +0 -1
  298. package/web/dist/assets/dax-CEL-wOlO.js +0 -1
  299. package/web/dist/assets/defaultLocale-DX6XiGOO.js +0 -1
  300. package/web/dist/assets/desktop-BmXAJ9_W.js +0 -1
  301. package/web/dist/assets/diagram-2UJZ2QOL-B6tO5G1v.js +0 -200
  302. package/web/dist/assets/diagram-OVF4WLC6-DRZt8tGc.js +0 -24
  303. package/web/dist/assets/diagram-PFPMY2P6-DGh6IecR.js +0 -30
  304. package/web/dist/assets/diagram-UMYRVEAY-BLbnt0yT.js +0 -24
  305. package/web/dist/assets/diagram-YEKJPTXX-C-S5DVhj.js +0 -41
  306. package/web/dist/assets/diagram-ZIFT7M5P-JrGHTWbo.js +0 -3
  307. package/web/dist/assets/diff-D97Zzqfu.js +0 -1
  308. package/web/dist/assets/docker-BcOcwvcX.js +0 -1
  309. package/web/dist/assets/dotenv-Da5cRb03.js +0 -1
  310. package/web/dist/assets/dracula-BzJJZx-M.js +0 -1
  311. package/web/dist/assets/dracula-soft-BXkSAIEj.js +0 -1
  312. package/web/dist/assets/dream-maker-BtqSS_iP.js +0 -1
  313. package/web/dist/assets/ebnfDiagram-VR2GEFS7-DPXA-YOi.js +0 -1
  314. package/web/dist/assets/edge-FbVlp4U3.js +0 -1
  315. package/web/dist/assets/elixir-CkH2-t6x.js +0 -1
  316. package/web/dist/assets/elk-IJKZMXRS-CINeWt2W.js +0 -27
  317. package/web/dist/assets/elm-DbKCFpqz.js +0 -1
  318. package/web/dist/assets/emacs-lisp-C_m_b--Z.js +0 -1
  319. package/web/dist/assets/erDiagram-O2IAPWRE-PPaHmqA1.js +0 -99
  320. package/web/dist/assets/erb-DXfck5VN.js +0 -1
  321. package/web/dist/assets/erlang-DsQrWhSR.js +0 -1
  322. package/web/dist/assets/everforest-dark-BgDCqdQA.js +0 -1
  323. package/web/dist/assets/everforest-light-C8M2exoo.js +0 -1
  324. package/web/dist/assets/fennel-BYunw83y.js +0 -1
  325. package/web/dist/assets/fish-BvzEVeQv.js +0 -1
  326. package/web/dist/assets/flowDiagram-OXPTDLAJ-t-u0QXEA.js +0 -213
  327. package/web/dist/assets/fluent-C4IJs8-o.js +0 -1
  328. package/web/dist/assets/fortran-fixed-form-CkoXwp7k.js +0 -1
  329. package/web/dist/assets/fortran-free-form-BxgE0vQu.js +0 -1
  330. package/web/dist/assets/fsharp-CXgrBDvD.js +0 -1
  331. package/web/dist/assets/ganttDiagram-R7TSEDQI-Bw49ZD_b.js +0 -292
  332. package/web/dist/assets/gdresource-TyuKm33G.js +0 -1
  333. package/web/dist/assets/gdscript-DqcFQ5yU.js +0 -1
  334. package/web/dist/assets/gdshader-DkwncUOv.js +0 -1
  335. package/web/dist/assets/genie-D0YGMca9.js +0 -1
  336. package/web/dist/assets/gherkin-DyxjwDmM.js +0 -1
  337. package/web/dist/assets/git-commit-F4YmCXRG.js +0 -1
  338. package/web/dist/assets/git-rebase-r7XF79zn.js +0 -1
  339. package/web/dist/assets/gitGraphDiagram-XJZIOB7I-BAfOqeeg.js +0 -106
  340. package/web/dist/assets/github-dark-DHJKELXO.js +0 -1
  341. package/web/dist/assets/github-dark-default-Cuk6v7N8.js +0 -1
  342. package/web/dist/assets/github-dark-dimmed-DH5Ifo-i.js +0 -1
  343. package/web/dist/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -1
  344. package/web/dist/assets/github-light-DAi9KRSo.js +0 -1
  345. package/web/dist/assets/github-light-default-D7oLnXFd.js +0 -1
  346. package/web/dist/assets/github-light-high-contrast-BfjtVDDH.js +0 -1
  347. package/web/dist/assets/gleam-BspZqrRM.js +0 -1
  348. package/web/dist/assets/glimmer-js-ByusRIyA.js +0 -1
  349. package/web/dist/assets/glimmer-ts-BfAWNZQY.js +0 -1
  350. package/web/dist/assets/glsl-DplSGwfg.js +0 -1
  351. package/web/dist/assets/gn-n2N0HUVH.js +0 -1
  352. package/web/dist/assets/gnuplot-DdkO51Og.js +0 -1
  353. package/web/dist/assets/go-C27-OAKa.js +0 -1
  354. package/web/dist/assets/graph-Bn3Yngep.js +0 -1
  355. package/web/dist/assets/graphql-ChdNCCLP.js +0 -1
  356. package/web/dist/assets/groovy-gcz8RCvz.js +0 -1
  357. package/web/dist/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -1
  358. package/web/dist/assets/gruvbox-dark-medium-GsRaNv29.js +0 -1
  359. package/web/dist/assets/gruvbox-dark-soft-CVdnzihN.js +0 -1
  360. package/web/dist/assets/gruvbox-light-hard-CH1njM8p.js +0 -1
  361. package/web/dist/assets/gruvbox-light-medium-DRw_LuNl.js +0 -1
  362. package/web/dist/assets/gruvbox-light-soft-hJgmCMqR.js +0 -1
  363. package/web/dist/assets/hack-BWmVpMyf.js +0 -1
  364. package/web/dist/assets/haml-D5jkg6IW.js +0 -1
  365. package/web/dist/assets/handlebars-BpdQsYii.js +0 -1
  366. package/web/dist/assets/haskell-Df6bDoY_.js +0 -1
  367. package/web/dist/assets/haxe-CfZj7gIn.js +0 -1
  368. package/web/dist/assets/hcl-BWvSN4gD.js +0 -1
  369. package/web/dist/assets/hjson-D5-asLiD.js +0 -1
  370. package/web/dist/assets/hlsl-D3lLCCz7.js +0 -1
  371. package/web/dist/assets/horizon-BUw7H-hv.js +0 -1
  372. package/web/dist/assets/horizon-bright-CUuTKBJd.js +0 -1
  373. package/web/dist/assets/houston-DnULxvSX.js +0 -1
  374. package/web/dist/assets/html-derivative-DlHx6ybY.js +0 -1
  375. package/web/dist/assets/html-pp8916En.js +0 -1
  376. package/web/dist/assets/http-jrhK8wxY.js +0 -1
  377. package/web/dist/assets/hurl-irOxFIW8.js +0 -1
  378. package/web/dist/assets/hxml-2-FPmUDs.js +0 -1
  379. package/web/dist/assets/hy-DFXneXwc.js +0 -1
  380. package/web/dist/assets/icons-Bm_ZzSAy.js +0 -964
  381. package/web/dist/assets/imba-DGztddWO.js +0 -1
  382. package/web/dist/assets/index-CeeLdENM.js +0 -677
  383. package/web/dist/assets/index-Ceez9lYk.css +0 -1
  384. package/web/dist/assets/infoDiagram-5W2HQ5XZ-Bv4RBxYW.js +0 -2
  385. package/web/dist/assets/ini-BEwlwnbL.js +0 -1
  386. package/web/dist/assets/init-Gi6I4Gst.js +0 -1
  387. package/web/dist/assets/ishikawaDiagram-K3B6WC7H-DEpj0bRp.js +0 -70
  388. package/web/dist/assets/java-CylS5w8V.js +0 -1
  389. package/web/dist/assets/javascript-wDzz0qaB.js +0 -1
  390. package/web/dist/assets/jinja-f2NsQr07.js +0 -1
  391. package/web/dist/assets/jison-wvAkD_A8.js +0 -1
  392. package/web/dist/assets/journeyDiagram-COXZFDF6-MJu84Iiz.js +0 -139
  393. package/web/dist/assets/json-Cp-IABpG.js +0 -1
  394. package/web/dist/assets/json5-C9tS-k6U.js +0 -1
  395. package/web/dist/assets/jsonc-Des-eS-w.js +0 -1
  396. package/web/dist/assets/jsonl-DcaNXYhu.js +0 -1
  397. package/web/dist/assets/jsonnet-DFQXde-d.js +0 -1
  398. package/web/dist/assets/jssm-C2t-YnRu.js +0 -1
  399. package/web/dist/assets/jsx-g9-lgVsj.js +0 -1
  400. package/web/dist/assets/julia-5Bft2YPA.js +0 -1
  401. package/web/dist/assets/just-Cwhn7H3k.js +0 -1
  402. package/web/dist/assets/kanagawa-dragon-BuwD2xS4.js +0 -1
  403. package/web/dist/assets/kanagawa-lotus-C3DzagqV.js +0 -1
  404. package/web/dist/assets/kanagawa-wave-DFGoQZhC.js +0 -1
  405. package/web/dist/assets/kanban-definition-P3RFRI5V-mlYSRALK.js +0 -89
  406. package/web/dist/assets/kdl-DV7GczEv.js +0 -1
  407. package/web/dist/assets/kotlin-BdnUsdx6.js +0 -1
  408. package/web/dist/assets/kusto-wEQ09or8.js +0 -1
  409. package/web/dist/assets/laserwave-DUszq2jm.js +0 -1
  410. package/web/dist/assets/latex-D5pSuvFb.js +0 -1
  411. package/web/dist/assets/lean-BZvkOJ9d.js +0 -1
  412. package/web/dist/assets/less-B1dDrJ26.js +0 -1
  413. package/web/dist/assets/light-plus-B7mTdjB0.js +0 -1
  414. package/web/dist/assets/linear-5j9gt8MV.js +0 -1
  415. package/web/dist/assets/liquid-C0sCDyMI.js +0 -1
  416. package/web/dist/assets/llvm-BZoOZj88.js +0 -1
  417. package/web/dist/assets/log-2UxHyX5q.js +0 -1
  418. package/web/dist/assets/logo-BtOb2qkB.js +0 -1
  419. package/web/dist/assets/lua-BaeVxFsk.js +0 -1
  420. package/web/dist/assets/luau-BnpPk5vE.js +0 -1
  421. package/web/dist/assets/make-CHLpvVh8.js +0 -1
  422. package/web/dist/assets/markdown-BWXjRrSw.js +0 -30
  423. package/web/dist/assets/markdown-Cvjx9yec.js +0 -1
  424. package/web/dist/assets/marko-DjSrsDqO.js +0 -1
  425. package/web/dist/assets/material-theme-D5KoaKCx.js +0 -1
  426. package/web/dist/assets/material-theme-darker-BfHTSMKl.js +0 -1
  427. package/web/dist/assets/material-theme-lighter-B0m2ddpp.js +0 -1
  428. package/web/dist/assets/material-theme-ocean-CyktbL80.js +0 -1
  429. package/web/dist/assets/material-theme-palenight-Csfq5Kiy.js +0 -1
  430. package/web/dist/assets/matlab-D7o27uSR.js +0 -1
  431. package/web/dist/assets/mdc-D1_yUvq7.js +0 -1
  432. package/web/dist/assets/mdx-Cmh6b_Ma.js +0 -1
  433. package/web/dist/assets/mermaid-CQcHuHx7.js +0 -1
  434. package/web/dist/assets/mermaid.core-DLb6eAON.js +0 -314
  435. package/web/dist/assets/min-dark-CafNBF8u.js +0 -1
  436. package/web/dist/assets/min-light-CTRr51gU.js +0 -1
  437. package/web/dist/assets/mindmap-definition-LZFPQGKD-C9v_57Ex.js +0 -96
  438. package/web/dist/assets/mipsasm-CKIfxQSi.js +0 -1
  439. package/web/dist/assets/mojo-DJz3ZmWd.js +0 -1
  440. package/web/dist/assets/monokai-BRVnQi9A.js +0 -1
  441. package/web/dist/assets/moonbit-CHtswR0a.js +0 -1
  442. package/web/dist/assets/move-el3G9tDJ.js +0 -1
  443. package/web/dist/assets/narrat-DRg8JJMk.js +0 -1
  444. package/web/dist/assets/nextflow-C-mBbutL.js +0 -1
  445. package/web/dist/assets/nextflow-groovy-vE_lwT2v.js +0 -1
  446. package/web/dist/assets/nginx-BpAMiNFr.js +0 -1
  447. package/web/dist/assets/night-owl-C39BiMTA.js +0 -1
  448. package/web/dist/assets/night-owl-light-CMTm3GFP.js +0 -1
  449. package/web/dist/assets/nim-BIad80T-.js +0 -1
  450. package/web/dist/assets/nix-CwoSXNpI.js +0 -1
  451. package/web/dist/assets/nord-Ddv68eIx.js +0 -1
  452. package/web/dist/assets/nsis-BlV79W_Q.js +0 -1
  453. package/web/dist/assets/nushell-D3jzshHO.js +0 -1
  454. package/web/dist/assets/objective-c-DXmwc3jG.js +0 -1
  455. package/web/dist/assets/objective-cpp-CLxacb5B.js +0 -1
  456. package/web/dist/assets/ocaml-C0hk2d4L.js +0 -1
  457. package/web/dist/assets/odin-BBf5iR-q.js +0 -1
  458. package/web/dist/assets/one-dark-pro-DVMEJ2y_.js +0 -1
  459. package/web/dist/assets/one-light-C3Wv6jpd.js +0 -1
  460. package/web/dist/assets/openscad-C4EeE6gA.js +0 -1
  461. package/web/dist/assets/ordinal-Cboi1Yqb.js +0 -1
  462. package/web/dist/assets/org-DM6o9KBp.js +0 -1
  463. package/web/dist/assets/panels-BQOvnbWH.js +0 -1
  464. package/web/dist/assets/pascal-D93ZcfNL.js +0 -1
  465. package/web/dist/assets/pegDiagram-BGZESJAR-KQP26s3-.js +0 -1
  466. package/web/dist/assets/perl-B9cMNwum.js +0 -1
  467. package/web/dist/assets/php-Csjmro_R.js +0 -1
  468. package/web/dist/assets/pieDiagram-CAPJLFHJ-DN3RQ_ih.js +0 -39
  469. package/web/dist/assets/pkl-u5AG7uiY.js +0 -1
  470. package/web/dist/assets/plastic-3e1v2bzS.js +0 -1
  471. package/web/dist/assets/plsql-ChMvpjG-.js +0 -1
  472. package/web/dist/assets/po-BTJTHyun.js +0 -1
  473. package/web/dist/assets/poimandres-CS3Unz2-.js +0 -1
  474. package/web/dist/assets/polar-C0HS_06l.js +0 -1
  475. package/web/dist/assets/postcss-CXtECtnM.js +0 -1
  476. package/web/dist/assets/powerquery-CEu0bR-o.js +0 -1
  477. package/web/dist/assets/powershell-BmBUJMz7.js +0 -1
  478. package/web/dist/assets/prisma-Vru482bI.js +0 -1
  479. package/web/dist/assets/profileChange-B7TaQ18u.js +0 -1
  480. package/web/dist/assets/prolog-CbFg5uaA.js +0 -1
  481. package/web/dist/assets/proto-C7zT0LnQ.js +0 -1
  482. package/web/dist/assets/pug-DKIMFp6K.js +0 -1
  483. package/web/dist/assets/puppet-BMWR74SV.js +0 -1
  484. package/web/dist/assets/purescript-CklMAg4u.js +0 -1
  485. package/web/dist/assets/python-B6aJPvgy.js +0 -1
  486. package/web/dist/assets/qml-3beO22l8.js +0 -1
  487. package/web/dist/assets/qmldir-C8lEn-DE.js +0 -1
  488. package/web/dist/assets/qss-IeuSbFQv.js +0 -1
  489. package/web/dist/assets/quadrantDiagram-GDMTTRAM-BpL_ZL76.js +0 -7
  490. package/web/dist/assets/r-Cf5RLm7j.js +0 -1
  491. package/web/dist/assets/racket-BqYA7rlc.js +0 -1
  492. package/web/dist/assets/railroadDiagram-SM67HX2B-DZ-fPU85.js +0 -1
  493. package/web/dist/assets/raku-DXvB9xmW.js +0 -1
  494. package/web/dist/assets/razor-BjBPvh-w.js +0 -1
  495. package/web/dist/assets/rbs-CpoqiR4B.js +0 -1
  496. package/web/dist/assets/react-vendor-C0HIWSpf.js +0 -9
  497. package/web/dist/assets/red-hvxz__6c.js +0 -1
  498. package/web/dist/assets/reg-C-SQnVFl.js +0 -1
  499. package/web/dist/assets/regexp-CDVJQ6XC.js +0 -1
  500. package/web/dist/assets/rel-C3B-1QV4.js +0 -1
  501. package/web/dist/assets/requirementDiagram-X7JNWC4A-mKPGj64L.js +0 -84
  502. package/web/dist/assets/riscv-BM1_JUlF.js +0 -1
  503. package/web/dist/assets/ron-D8l8udqQ.js +0 -1
  504. package/web/dist/assets/rose-pine-5qJOZa0Y.js +0 -1
  505. package/web/dist/assets/rose-pine-dawn-zx0QlTCp.js +0 -1
  506. package/web/dist/assets/rose-pine-moon-C9pEdX9L.js +0 -1
  507. package/web/dist/assets/rosmsg-BJDFO7_C.js +0 -1
  508. package/web/dist/assets/rst-bs7f0vWN.js +0 -1
  509. package/web/dist/assets/ruby-C0TQ7zu5.js +0 -1
  510. package/web/dist/assets/rust-B1yitclQ.js +0 -1
  511. package/web/dist/assets/sankeyDiagram-UM26HJRW-Bs4xfjQP.js +0 -40
  512. package/web/dist/assets/sas-DEy46yEz.js +0 -1
  513. package/web/dist/assets/sass-Cj5Yp3dK.js +0 -1
  514. package/web/dist/assets/scala-CqE71os6.js +0 -1
  515. package/web/dist/assets/scheme-C98Dy4si.js +0 -1
  516. package/web/dist/assets/scss-D5BDwBP9.js +0 -1
  517. package/web/dist/assets/sdbl-DVxCFoDh.js +0 -1
  518. package/web/dist/assets/sequenceDiagram-ZO4K6R2Y-BjUmzZaO.js +0 -169
  519. package/web/dist/assets/shaderlab-Dg9Lc6iA.js +0 -1
  520. package/web/dist/assets/shellscript-Yzrsuije.js +0 -1
  521. package/web/dist/assets/shellsession-BADoaaVG.js +0 -1
  522. package/web/dist/assets/sizeCapture-INFHLROL-BXBM3j_Q.js +0 -1
  523. package/web/dist/assets/slack-dark-BthQWCQV.js +0 -1
  524. package/web/dist/assets/slack-ochin-DqwNpetd.js +0 -1
  525. package/web/dist/assets/smalltalk-BOQMe2GC.js +0 -1
  526. package/web/dist/assets/smithy-cds9vsN8.js +0 -1
  527. package/web/dist/assets/snazzy-light-Bw305WKR.js +0 -1
  528. package/web/dist/assets/solarized-dark-CpvCGNkr.js +0 -1
  529. package/web/dist/assets/solarized-light-Dlz6yCKv.js +0 -1
  530. package/web/dist/assets/solidity-DijEV5ha.js +0 -1
  531. package/web/dist/assets/soy-8wufbnw4.js +0 -1
  532. package/web/dist/assets/sparql-rVzFXLq3.js +0 -1
  533. package/web/dist/assets/splunk-BtCnVYZw.js +0 -1
  534. package/web/dist/assets/sql-CRqJ_cUM.js +0 -1
  535. package/web/dist/assets/ssh-config-_ykCGR6B.js +0 -1
  536. package/web/dist/assets/stata-DI20mbqo.js +0 -1
  537. package/web/dist/assets/state-Kfon1nTr.js +0 -17
  538. package/web/dist/assets/stateDiagram-v2-TBUQTH76-FGgFDGUU.js +0 -291
  539. package/web/dist/assets/sttLanguages-C7kVulzY.js +0 -1
  540. package/web/dist/assets/stylus-BEDo0Tqx.js +0 -1
  541. package/web/dist/assets/surrealql-Cjom0U5J.js +0 -1
  542. package/web/dist/assets/svelte-Cy7k_4gC.js +0 -1
  543. package/web/dist/assets/swift-C2oV4EkX.js +0 -1
  544. package/web/dist/assets/swimlanes-N4OXWK64-wkd_n4HU.js +0 -1
  545. package/web/dist/assets/swimlanesDiagram-K3J5GTZL-CKnwEuq_.js +0 -8
  546. package/web/dist/assets/synthwave-84-CbfX1IO0.js +0 -1
  547. package/web/dist/assets/system-verilog-0hqHdDBg.js +0 -1
  548. package/web/dist/assets/systemd-4A_iFExJ.js +0 -1
  549. package/web/dist/assets/talonscript-CkByrt1z.js +0 -1
  550. package/web/dist/assets/tasl-QIJgUcNo.js +0 -1
  551. package/web/dist/assets/tcl-dwOrl1Do.js +0 -1
  552. package/web/dist/assets/templ-DhtptRzy.js +0 -1
  553. package/web/dist/assets/terraform-BETggiCN.js +0 -1
  554. package/web/dist/assets/tex-D96PA37w.js +0 -1
  555. package/web/dist/assets/timeline-definition-YOQAKGHF-DyBln1jw.js +0 -120
  556. package/web/dist/assets/tokyo-night-hegEt444.js +0 -1
  557. package/web/dist/assets/toml-vGWfd6FD.js +0 -1
  558. package/web/dist/assets/ts-tags-D351s5mN.js +0 -1
  559. package/web/dist/assets/tsv-B_m7g4N7.js +0 -1
  560. package/web/dist/assets/tsx-COt5Ahok.js +0 -1
  561. package/web/dist/assets/turtle-BsS91CYL.js +0 -1
  562. package/web/dist/assets/twig-27uCiNez.js +0 -1
  563. package/web/dist/assets/typescript-BPQ3VLAy.js +0 -1
  564. package/web/dist/assets/typespec-CAFt9gP4.js +0 -1
  565. package/web/dist/assets/typst-BUadGCkm.js +0 -1
  566. package/web/dist/assets/usecaseDiagram-VIAY4XPW-Cqis3XHX.js +0 -370
  567. package/web/dist/assets/v-BGw2Nkan.js +0 -1
  568. package/web/dist/assets/vala-CsfeWuGM.js +0 -1
  569. package/web/dist/assets/vb-Cu-pLBUe.js +0 -1
  570. package/web/dist/assets/vennDiagram-BLWOH2XV-BaiFLOVS.js +0 -34
  571. package/web/dist/assets/verilog-nZwndyjY.js +0 -1
  572. package/web/dist/assets/vesper-DRje8inN.js +0 -1
  573. package/web/dist/assets/vhdl-CeAyd5Ju.js +0 -1
  574. package/web/dist/assets/viml-CJc9bBzg.js +0 -1
  575. package/web/dist/assets/vitesse-black-Bkuqu6BP.js +0 -1
  576. package/web/dist/assets/vitesse-dark-D0r3Knsf.js +0 -1
  577. package/web/dist/assets/vitesse-light-CVO1_9PV.js +0 -1
  578. package/web/dist/assets/vue-BqiEGhQt.js +0 -1
  579. package/web/dist/assets/vue-html-AaS7Mt5G.js +0 -1
  580. package/web/dist/assets/vue-vine-BoDAl6tE.js +0 -1
  581. package/web/dist/assets/vyper-CDx5xZoG.js +0 -1
  582. package/web/dist/assets/wardleyDiagram-YMQ3BMBF-C4CzpJto.js +0 -78
  583. package/web/dist/assets/wasm-CG6Dc4jp.js +0 -1
  584. package/web/dist/assets/wasm-MzD3tlZU.js +0 -1
  585. package/web/dist/assets/wenyan-BV7otONQ.js +0 -1
  586. package/web/dist/assets/wgsl-Dx-B1_4e.js +0 -1
  587. package/web/dist/assets/wikitext-BhOHFoWU.js +0 -1
  588. package/web/dist/assets/wit-5i3qLPDT.js +0 -1
  589. package/web/dist/assets/wolfram-lXgVvXCa.js +0 -1
  590. package/web/dist/assets/xml-sdJ4AIDG.js +0 -1
  591. package/web/dist/assets/xsl-CtQFsRM5.js +0 -1
  592. package/web/dist/assets/xychartDiagram-TAQBALBS-Dp1hfe3-.js +0 -7
  593. package/web/dist/assets/yaml-Buea-lGh.js +0 -1
  594. package/web/dist/assets/zenscript-DVFEvuxE.js +0 -1
  595. package/web/dist/assets/zig-VOosw3JB.js +0 -1
  596. package/web/dist/figma-demo/product-1.jpg +0 -0
  597. package/web/dist/figma-demo/product-2.jpg +0 -0
  598. package/web/dist/figma-demo/trail-1.jpg +0 -0
  599. package/web/dist/figma-demo/trail-2.jpg +0 -0
  600. package/web/dist/figma-demo/trail-3.jpg +0 -0
@@ -0,0 +1 @@
1
+ import{a as e,c as t,d as n,f as r,l as i,n as a,p as o,r as s,s as c,t as l,u as ee}from"./types-JssxRFJn.js";function u(e){return{schema:o(),...e}}var d=[],f=new Set;function p(e){for(let t of e){if(f.has(t.type))throw Error(`[protocol] duplicate event type: ${t.type}`);f.add(t.type),d.push(t)}return e}function m(e){return d.find(t=>t.type===e)}new Proxy({},{get:(e,t)=>typeof t==`string`?m(t)?.schema:void 0,has:(e,t)=>typeof t==`string`&&!!m(t)?.schema,ownKeys:()=>d.map(e=>e.type),getOwnPropertyDescriptor:(e,t)=>typeof t==`string`&&m(t)?{enumerable:!0,configurable:!0,value:m(t)?.schema}:void 0}),p([u({type:`connected`,description:`WebSocket 已连接`,category:`session`,emittedBy:[`server`],handledByCli:!0,handledByWeb:!0}),u({type:`session_created`,description:`新会话已创建`,category:`session`,emittedBy:[`server`,`core`],handledByCli:!0,handledByWeb:!0,note:`CLI/Web 均已处理(Web: systemHandlers session_created);background=true 表示后台新建,客户端只入列不抢前台`,schema:i({id:n(),newSessionId:n().optional(),title:n().optional(),workspaceDir:n().optional(),background:s().optional()}).partial()}),u({type:`session_resumed`,description:`会话从存储中恢复`,category:`session`,emittedBy:[`core`,`server`],handledByCli:!0,handledByWeb:!0,note:`CLI/Web 均已处理(Web: systemHandlers session_resumed)`,schema:i({id:n()}).partial()}),u({type:`session_forked`,description:`会话已复制(fork),新会话已创建并广播`,category:`session`,emittedBy:[`core`,`server`],handledByCli:!1,handledByWeb:!0,intentionalGap:!0,note:`Web: useWebSocket 收到广播后在标签栏插入新标签(已存在则跳过,且不夺走当前焦点)。CLI 侧为记录在案的刻意缺口(见 cli/hooks/forkCommand.ts)`,schema:i({sourceId:n(),newSessionId:n(),title:n()}).partial()}),u({type:`auth_required`,description:`需要认证`,category:`session`,emittedBy:[`server`],handledByCli:!0,handledByWeb:!0,note:`CLI 已处理(2026-07-18)`}),u({type:`auth_success`,description:`认证成功`,category:`session`,emittedBy:[`server`],handledByCli:!0,handledByWeb:!0,note:`CLI 已处理(2026-07-18)`}),u({type:`auth_failed`,description:`认证失败`,category:`session`,emittedBy:[`server`],handledByCli:!0,handledByWeb:!0,note:`CLI 已处理(2026-07-18)`}),u({type:`message_ack`,description:`消息确认`,category:`session`,emittedBy:[`client`],handledByCli:!1,handledByWeb:!1,note:`CLI 发送给服务器的入站事件,无需 handler`}),u({type:`workspace_changed`,description:`工作空间已切换`,category:`session`,emittedBy:[`server`],handledByCli:!0,handledByWeb:!0,schema:i({workspaceDir:n()}).partial()}),u({type:`session_switched`,description:`会话已切换`,category:`session`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`CLI 已处理(2026-07-18); Web 已处理(切换 activeSessionId)`,schema:i({id:n()}).partial()}),u({type:`disconnected`,description:`连接断开`,category:`session`,emittedBy:[`server`],handledByCli:!0,handledByWeb:!0}),u({type:`session_delegation_start`,description:`会话 A 向会话 B 发起委派任务(send_to_session 工具)`,category:`session`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`客户端把 task 作为一条系统消息展示在目标会话(B)时间线上;A 阻塞等待 B 完成`,schema:i({fromSessionId:n(),fromTitle:n(),toSessionId:n(),toTitle:n(),task:n()}).partial()}),u({type:`session_delegation_end`,description:`会话委派任务完成(成功/失败)`,category:`session`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`结果回填到 A 的 send_to_session 工具结果;客户端据此关闭目标会话的委派横幅`,schema:i({fromSessionId:n(),toSessionId:n(),fromTitle:n(),toTitle:n(),ok:s(),summary:n()}).partial()}),u({type:`session_direct_delivered`,description:`用户消息经会话 A 直连投递给会话 B(deliverDirectMessage,不经 A 的模型)`,category:`session`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`投递卡渲染在 A(邮局)的时间线;queued=true 表示 B 正在跑、已排队作新一轮(复用 delegationQueue 互斥门)`,schema:i({fromSessionId:n(),fromTitle:n(),toSessionId:n(),toTitle:n(),text:n(),deliveryId:n(),traceId:n(),hopCount:t(),queued:s()}).partial()}),u({type:`session_direct_completed`,description:`直连消息在会话 B 执行完成(成功/失败),结果转达回 A`,category:`session`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`回复卡渲染在 A 的时间线:summary 是展示优化,outputMessageIds 是事实链(可回溯 B 的原始输出)`,schema:i({fromSessionId:n(),toSessionId:n(),deliveryId:n(),traceId:n(),hopCount:t(),ok:s(),status:n(),summary:n(),outputMessageIds:a(n())}).partial()}),u({type:`session_run_changed`,description:`会话的 run 状态发生迁移(**只是刷新提示,不是状态**)`,category:`session`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,intentionalGap:!0,note:"⚠️ **payload 刻意不含 status** —— 状态以 `GET /api/sessions` 的查询为准(响应里的 `status` 字段一直都在,本事件只用来标记「该重拉了」)。理由照抄 `worktree_service_changed`:事件是瞬时的,而「我下午回来看它还在跑吗」必须能重新查询;带上 status 就等于同时存在两份真相,必然漂移。⚠️ 本事件**只覆盖 `setActiveRun` 的迁移**(running / paused / complete / error / stopped / interrupted)。「等用户」那两态(等审批 / 等回答)**不走这里** —— 它们由既有的 `hook_ask` / `ask_user_question` 覆盖。消费方不要把它当成「所有分组变化」的统一广播点。接线:core 侧挂在 `SessionStore.onRunStatusChange` 的既有订阅上(与 watchdog、notifyDispatchedSessionTerminal 同一个订阅,**不改 setActiveRun** 那条热路径)。CLI 侧未接线(无「按需分组」消费面),故 intentionalGap 保持 true —— 该 flag 与 handledByCli 被 CLI 接线完整性门禁共用,提前置 false 会把它当成新缺口误报(同 worktree_service_changed 的口径)。设计:docs/architecture-design/SESSION_TRIAGE_PLAN.md 的 D1",schema:i({sessionId:n()}).partial()}),u({type:`effort_set`,description:`设置会话推理力度(入站控制消息:Web 的 chip / CLI 的 /effort 上行)`,category:`session`,emittedBy:[`client`],handledByCli:!1,handledByWeb:!1,note:`入站事件(client→server):core.handleControlMessage 处理,写 session.reasoningEffort 后回 reasoning_effort_ack`}),u({type:`reasoning_effort_ack`,description:`推理力度回执(会话级设置已生效,或输入被拒)`,category:`session`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`会话级状态:server 用 sendToSession 定向发往**绑定了该会话**的连接(与 hook_auto_ack 同款,否则 A 会话改档会串到 B 会话客户端的显示上);无绑定连接时退化为广播(headless / 尚未 resume)。payload { ok, effort, ui, error }:effort 是归一后的 wire 值(与写进请求体的同一份),ui 是 UI 轴档位 off|low|medium|high|extra_high|max。客户端只认回执,不各自推档位。`,schema:i({ok:s(),effort:n(),ui:n(),error:n()}).partial()})]),p([u({type:`start`,description:`AI 开始生成`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`content`,description:`生成内容增量`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,schema:i({text:n(),content:n(),index:t()}).partial(),note:`载荷 { text, index }:index 为服务端稳定 block index(TurnEngine 每轮分配),客户端据此把多段正文与思考/工具按时间序穿插;content 为兼容旧字段`}),u({type:`thinking`,description:`思考过程增量`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,schema:i({text:n(),content:n(),index:t()}).partial(),note:`载荷 { text, index }:index 为服务端稳定 block index,客户端按 index upsert 成独立思考块(工具调用前后各一段)`}),u({type:`tool_call`,description:`工具调用流式增量`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`tool_result`,description:`工具执行结果`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`tool_execution_start`,description:`工具执行阶段开始(无流事件时段开始)`,category:`stream`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!1,note:`纯 core 内部遥测:供运行时暂停/恢复 stall 心跳与全局看门狗;CLI/Web 无 handler(前端无需展示),仅 queryEngine 消费`,intentionalGap:!0}),u({type:`tool_execution_end`,description:`工具执行阶段结束(恢复 stall 心跳与全局看门狗)`,category:`stream`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!1,note:`配合 tool_execution_start:防止 180s 心跳把合法长等待误判为流挂起而 abort + 重放整轮工具调用;CLI/Web 无 handler`,intentionalGap:!0}),u({type:`tool_diff`,description:`工具执行中的参数 diff 增量(P0-2 diffConsumer 生产者推送)`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`tool_output`,description:`工具执行期间的实时输出增量(stdout/stderr chunk,Phase0 OutputStream 生产者推送)`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,schema:i({toolCallId:n(),stream:e([`stdout`,`stderr`]),chunk:n(),seq:t(),timestamp:t()}).partial(),note:`增量、可丢;权威输出仍是 tool_result,权威时序仍是 ExecutionLedger。生产者侧节流(时间窗聚合 + 每调用字节上限),不得用于 reset stall 心跳。命名对齐 tool_call/tool_result/tool_diff 家族`}),u({type:`step_start`,description:`步骤开始`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`step_thinking`,description:`步骤思考`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`step_action`,description:`步骤动作`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`step_complete`,description:`步骤完成`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`turn_summary`,description:`回合结束摘要(思考时长+工具计数+头条)`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`CLI/Web 渲染为折叠摘要行(Thought for Ns, ran N …)`}),u({type:`cache_stats`,description:`本轮 run 前缀缓存命中统计(命中/未命中 token、命中率、调用次数)`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`run 结束时由 queryEngine 发送;CLI/Web 在模型名旁展示命中率`,schema:i({cacheHitTokens:t(),cacheMissTokens:t(),cacheHitRate:t().optional(),cacheStatsCalls:t()}).partial()}),u({type:`web_search`,description:`模型内置联网搜索状态(DeepSeek Responses web_search_call:searching/completed/failed)`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`由服务端执行搜索,客户端仅展示状态(🔍搜索中 → ✅完成)`,schema:i({state:n()}).partial()}),u({type:`progress`,description:`通用进度(当前未使用)`,category:`stream`,emittedBy:[`none`],handledByCli:!1,handledByWeb:!1,deprecated:!0,note:`已定义但从未发送;原先唯一提及它的 SendMessageTool 空壳已于 2026-10-05 删除`}),u({type:`complete`,description:`生成完成`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`error`,description:`生成错误`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,schema:i({message:n()}).partial()}),u({type:`generation_paused`,description:`生成已暂停`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`generation_resumed`,description:`生成已恢复`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`stall_detected`,description:`流级卡死检测(自动重试/通知)`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`由 StreamHeartbeat 或 StallDetector 触发;CLI/Web 显示重试进度`}),u({type:`task_interrupted`,description:`任务中断(服务重启/异常退出)`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`服务启动扫描时将 running activeRun 标记为 interrupted 后触发;对话会话由看门狗自动续跑(客户端提示「已开始自动续跑」),/continue 退化为手动接管入口,/resume 仍用于切换会话`}),u({type:`prompt_suggestion`,description:`回合结束后生成的下一条输入建议(预填输入框的幽灵提示)`,category:`stream`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`core 在正常收场后用一次轻量 LLM 调用生成单条建议(settings.promptSuggestion.* 可关);CLI/Web 把它渲染成输入框里的幽灵文本,Enter 直接发送、任意键改写`,schema:i({text:n(),source:n().optional()}).partial()}),u({type:`step_prompt`,description:`步骤提示(Web 路由用)`,category:`stream`,emittedBy:[`none`],handledByCli:!1,handledByWeb:!0,note:`Web 路由的内部事件,不通过 WS 发送`}),u({type:`browser_frame`,description:`浏览器实时画面帧(A 方案截图流:Playwright 有头 Chromium 的页面帧推给 Web 渲染)`,category:`stream`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,schema:i({tabId:n(),url:n(),title:n(),seq:t(),timestamp:t(),dataUri:n(),format:e([`jpeg`,`png`])}).partial(),note:`增量、可丢、只读呈现(A 方案「只能看」):由 BrowserFrameStream 生产者按帧率节流后推送;权威状态仍是浏览器本身与 browser_snapshot。dataUri 为 data:image/<format>;base64,... 内联帧;CLI 无 handler(终端无法渲染位图)`})]),p([u({type:`plan_mode_change`,description:`模式切换`,category:`plan`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`历史名称,实际承载 act/goal/chat/normal 的模式切换(core modeManager 变更 → server 分发;Web 用户切换时也会回发)。data 携带 previousMode/newMode/frontendMode/sessionId/timestamp`}),u({type:`plan_mode_change_ack`,description:`模式切换 ACK(服务器确认模式变更)`,category:`plan`,emittedBy:[`server`],handledByCli:!0,handledByWeb:!1,note:`server app.ts 对 plan_mode_change 消息的应答;data 携带 mode/auto`}),u({type:`mode_state`,description:`模式状态同步(值 + 来源 + 锁定)`,category:`plan`,emittedBy:[`server`],handledByCli:!1,handledByWeb:!0,note:`server 在 ModeManager 任意变更时广播:data 携带 mode/previousMode/source(default|user_override|auto_router)/locked/reason/auto/autoLevel;Web 据此同步模式值、锁定状态与 auto 档位(autoLevel 是该会话的生效档位,已含会话 floor)——只覆盖基础模式,且不回发 plan_mode_change(否则一次广播会被 server 判成 user_override 误锁模式)`,schema:i({mode:n(),previousMode:n(),source:n(),locked:s(),reason:n(),auto:s(),autoLevel:t()}).partial()}),u({type:`mode_suggestion`,description:`自动评估建议切换模式(被用户锁定拦截,待用户确认)`,category:`plan`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`queryEngine 仲裁拒绝自动建议时 emit(仅 user_override 场景)。Web 弹建议横幅,Apply 走既有 plan_mode_change(user_override 语义);CLI 以**非交互**方式消费:状态行上方一行「建议切到 X · 走 /X 应用」,到点自清(不弹窗、不抢键、不改模式)。CLI 没有确认入口这一事实不变,故不再标记 intentionalGap。`,schema:i({currentMode:n(),suggestedMode:n(),confidence:t(),reason:n(),decisionSource:n()}).partial()})]);var h=i({id:n().optional(),type:n().optional(),scope:n().optional(),confidence:t().optional(),priority:n().optional(),tokens:t().optional(),preview:n().optional(),summary:n().optional(),reason:n().optional()}).partial(),te=i({id:n().optional(),type:n().optional(),scope:n().optional(),confidence:t().optional(),tags:a(n()).optional(),preview:n().optional()}).partial(),ne=i({query:n().optional(),hits:a(te).optional(),count:t().optional()}).partial();p([u({type:`token_update`,description:`Token 用量更新`,category:`context`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:"data 携带 promptTokens/completionTokens(+promptCache*),可选 model/source/workflowNodeTokens;core 在 provider delta 发射点就地补 costUsd(models.dev 单价,只有这一条路径会盖章),CLI/Web 据此累加会话级 `$ spent`"}),u({type:`context_compressed`,description:`上下文已压缩`,category:`context`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`compaction_progress`,description:`压缩进度更新`,category:`context`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`context_analysis`,description:`上下文分布分析`,category:`context`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`CLI 已处理(2026-07-18); Web 有 handler 但路由不可达`}),u({type:`threshold_warning`,description:`Token 阈值警告`,category:`context`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`CLI 已处理(2026-07-18); Web 有 handler 但路由不可达`}),u({type:`threshold_error`,description:`Token 阈值错误`,category:`context`,emittedBy:[`none`],handledByCli:!1,handledByWeb:!1,deprecated:!0,note:`功能存在但被 context_blocked 覆盖,事件未使用`}),u({type:`context_blocked`,description:`上下文已满,生成被阻止`,category:`context`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`CLI 已处理(2026-07-18); Web 有 handler 但路由不可达`}),u({type:`blocking_limit`,description:`已达到阻止极限`,category:`context`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`CLI 已处理(2026-07-18); Web 有 handler 但路由不可达`}),u({type:`compaction_started`,description:`压缩任务已启动(phase/trigger)`,category:`context`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`compaction_finished`,description:`压缩任务结束(done/failed/aborted)`,category:`context`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`tool_retry`,description:`工具重试`,category:`context`,emittedBy:[`none`],handledByCli:!1,handledByWeb:!0,deprecated:!0,note:`重试信息已含于 tool_result/error,Web handler 保留但路由不可达`}),u({type:`model_fallback`,description:`模型回退`,category:`context`,emittedBy:[`none`],handledByCli:!1,handledByWeb:!0,deprecated:!0,note:`降级信息已含于 degradation_update,Web handler 保留但路由不可达`}),u({type:`usage`,description:`Token 用量`,category:`context`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`context_breakdown`,description:`上下文容量分类占比(系统提示词/消息/工具/技能/MCP),供 Web 上下文条抽屉与 CLI 状态行容量横条展示`,category:`context`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`每轮 query 上下文组装后估算各组件 token,并带出 contextWindow(容量条的分母);Web 端点状态栏上下文条上拉展示明细,CLI 只画同一条堆叠横条(不重复文字)`}),u({type:`memory_recall`,description:`本回合记忆召回快照(真正注入的条目 + 被预算挡掉的候选)`,category:`context`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,note:`每轮上下文组装后发出。items = 预算截断后**真正进入 prompt** 的那批,dropped = 有相关性但被 maxItems/token 预算挡掉的候选(二者都只带 200 字预览,全文不下发 —— 每轮都发,全文会把 WS 单帧撑到几十 KB);turnId 供 Web 按回合分组、高亮当前回合。tool = 模型主动调 memory_search 的一次快照,由该工具执行后以**独立帧**发出(不带 turnId,客户端按会话累积)—— 同一个类型承载两种帧,靠字段区分。CLI 无 handler:终端没有右栏,/memory 命令走本地 store 另一条路。`,schema:i({turnId:n().optional(),query:n().optional(),items:a(h).optional(),dropped:a(h).optional(),itemCount:t().optional(),droppedCount:t().optional(),totalTokens:t().optional(),wasTruncated:s().optional(),tool:ne.optional()}).partial()})]),p([u({type:`workflow_started`,description:`工作流已启动`,category:`workflow`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`data.nodes 携带 LLM 合成完整节点清单(含 type/children/priority,前端可分层渲染)`,schema:i({workflowId:n().optional(),title:n().optional(),goalId:n().optional(),totalNodes:t().optional(),nodes:a(l()).optional()}).partial()}),u({type:`workflow_event`,description:`工作流事件`,category:`workflow`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`workflow_progress`,description:`工作流进度`,category:`workflow`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`nodeStatuses: 逐节点状态全量映射(断线重连可重建视图)`,schema:i({runId:n().optional(),status:n().optional(),completedNodes:t().optional(),totalNodes:t().optional(),tokensUsed:t().optional(),tokensRemaining:t().optional(),currentNodeId:n().optional(),nodeStatuses:ee(n(),n()).optional()}).partial()}),u({type:`workflow_finished`,description:`工作流完成`,category:`workflow`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,schema:i({runId:n().optional(),status:n().optional(),output:l().optional(),error:n().optional()}).partial()}),u({type:`workflow_error`,description:`工作流错误`,category:`workflow`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`workflow_checkpoint`,description:`工作流检查点`,category:`workflow`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`workflow_node_start`,description:`工作流节点开始`,category:`workflow`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,schema:i({nodeId:n().optional(),title:n().optional(),type:n().optional()}).partial()}),u({type:`workflow_node_complete`,description:`工作流节点完成`,category:`workflow`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`durationMs: 节点耗时;attempts: retry 重试次数(retry 原语节点)`,schema:i({nodeId:n().optional(),title:n().optional(),status:n().optional(),result:l().optional(),error:n().optional(),durationMs:t().optional(),attempts:t().optional()}).partial()}),u({type:`workflow_node_retry`,description:`工作流节点重试(retry 原语每次重试发出)`,category:`workflow`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`attempt > 1 时发出;reason 为上一次尝试的失败原因`,schema:i({nodeId:n().optional(),childId:n().optional(),attempt:t().optional(),maxAttempts:t().optional(),reason:n().optional()}).partial()}),u({type:`workflow_paused`,description:`工作流已暂停`,category:`workflow`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`workflow_resumed`,description:`工作流已恢复`,category:`workflow`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`workflow_cancelled`,description:`工作流已取消`,category:`workflow`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`workflow_recovered`,description:`工作流已恢复(从故障)`,category:`workflow`,emittedBy:[`none`],handledByCli:!1,handledByWeb:!1,deprecated:!0,note:`已被 workflow_resumed 覆盖,核心从未发送`}),u({type:`workflow_handoff`,description:`ReAct 转交 workflow(范式切换)`,category:`workflow`,emittedBy:[`none`],handledByCli:!0,handledByWeb:!0,deprecated:!0,note:`Agent Loop 单核模型重构后退役:workflow 判定改为计划注入(见 workflow_plan_ready),核心不再发送;CLI/Web 保留 handler 兼容旧服务端回放`}),u({type:`workflow_plan_ready`,description:`范式路由:LLM 合成的执行计划提案就绪(confirm=true 时等待用户确认)`,category:`workflow`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`payload 携带 planId/title/nodes/parallelGroups/estimatedTokens/runtimeAvailable;confirm=false 保持兼容的立即执行路径`,schema:i({planId:n(),title:n().optional(),reason:n().optional(),confirm:s().optional(),nodes:a(l()).optional(),parallelGroups:a(a(n())).optional(),estimatedTokens:t().optional(),runtimeAvailable:s().optional()}).partial()}),u({type:`workflow_confirm_ack`,description:`工作流提案确认结果(start/cancel/change/runtime)`,category:`workflow`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,schema:i({planId:n().optional(),action:n().optional(),ok:s().optional(),auto:s().optional()}).partial()}),u({type:`workflow_status`,description:`workflow run 状态查询响应(状态对账:连接/重连后拉取终态)`,category:`workflow`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`2026-08-14: 配合 get_workflow_status 请求,修复一次性事件流漏终态导致的 UI 卡死;runs[].nodeStatuses 为逐节点状态映射`,schema:i({runs:a(l()).optional()}).partial()})]),p([u({type:`dwf_offer`,description:`动态工作流确认请求(模型写了 _<name>_workflow.js,询问是否运行)`,category:`workflow`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`回合尾嗅探到新写的 workflow 脚本时发出;用户经 dwf_confirm(run|view|no) 应答;执行期进度复用 workflow_* 事件`,schema:i({offerId:n(),sessionId:n().optional(),fileName:n(),filePath:n().optional(),title:n().optional(),description:n().optional(),phases:a(i({title:n(),detail:n().optional()})).optional(),agentCount:t().optional(),scriptPreview:n().optional(),tokenWarning:n().optional()}).partial()}),u({type:`dwf_confirm_ack`,description:`动态工作流确认应答(服务器处理 dwf_confirm 后回执)`,category:`workflow`,emittedBy:[`server`],handledByCli:!0,handledByWeb:!0,note:`data 携带 offerId/action/ok;view 时 scriptPreview 为全量脚本;未知 offerId → ok:false`,schema:i({offerId:n(),action:n(),ok:s(),scriptPreview:n().optional(),error:n().optional()}).partial()}),u({type:`dwf_cancelled`,description:`动态工作流已取消(用户 no / 运行中取消)`,category:`workflow`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,schema:i({offerId:n().optional(),runId:n().optional(),reason:n().optional()}).partial()}),u({type:`dwf_promotable`,description:`动态工作流可沉淀为模板(provenance 账本 successfulRuns ≥3,邀请 Save as template)`,category:`workflow`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`run 终态后由 onTerminal 检测发出;门槛按成功 run 数(successfulRuns,COMPLETED 计数)计,总 run 含失败不达标;用户经 dwf_promote { workflowId } 确认沉淀;promote 成功后模板存在 → 不再提示;用户 No/本地 dismiss 仅清除提示不落服务端标记 → 后续成功 run 终态仍会再次提示(幂等提示而非只提示一次)`,schema:i({workflowId:n(),sessionId:n().optional(),name:n().optional(),runs:t().optional(),successRate:t().optional(),avgTokens:t().optional(),lastRunAt:t().optional()}).partial()}),u({type:`dwf_promote_ack`,description:`沉淀为模板的结果回执(处理 dwf_promote 后)`,category:`workflow`,emittedBy:[`server`],handledByCli:!0,handledByWeb:!0,schema:i({workflowId:n(),ok:s(),templateId:n().optional(),reason:n().optional()}).partial()})]),p([u({type:`filejob_start`,description:`文件处理任务开始(解析/渲染)`,category:`task`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`对话内嵌文件处理面板;Web 已处理,CLI 已处理(2026-08-07 状态行)`}),u({type:`filejob_progress`,description:`文件处理进度更新`,category:`task`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`解析/渲染进度百分比`,schema:i({progress:t()}).partial()}),u({type:`filejob_result`,description:`文件处理完成(结果文件列表)`,category:`task`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`携带 RenderedFileResult[]`,schema:a(l())}),u({type:`filejob_error`,description:`文件处理失败`,category:`task`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`脱敏错误详情`})]),p([u({type:`goal_created`,description:`目标已创建`,category:`goal`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`2026-07-21: Web handled via goal_tasks/goal_task_update`}),u({type:`goal_tasks`,description:`目标任务列表(批量初始化看板)`,category:`goal`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`2026-07-21: 统一看板数据源`}),u({type:`goal_task_update`,description:`目标任务更新`,category:`goal`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`2026-07-21: Web 已添加 handler`}),u({type:`goal_update`,description:`目标元信息更新(retitle / 看板整体刷新)`,category:`goal`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`漂移修复:goalManager.retitle / GoalTool 此前已在发射但未注册;tasks 为空数组时 Web 清空看板`}),u({type:`goal_completed`,description:`目标已完成(workflow 终态自动推导)`,category:`goal`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`2026-08-14: 此前 goals.complete() 无任何调用点,goal 工作流跑完后 goal 永远停在 active —— 新增终态事件供两端对账`}),u({type:`goal_route_decision`,description:`Goal 智能路由结果(simple/medium/hard 分流结论)`,category:`goal`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`2026-09-06 P1: goal 模式消息不再固定跑 4 子代理流水线。默认层只展示一行结论(tier 标签 + 一句话理由 + 耗时),完整判定细节走 debug 层日志`,schema:i({tier:e([`simple`,`medium`,`hard`]),summary:n().optional(),source:e([`override`,`llm`,`fallback`]).optional(),latencyMs:t().optional(),reason:n().optional(),confidence:t().optional(),goalId:n().optional(),runId:n().optional(),message:n().optional()}).partial()})]),p([u({type:`hook_ask`,description:`Hook 审批请求`,category:`hook`,emittedBy:[`server`],handledByCli:!0,handledByWeb:!0}),u({type:`hook_allow`,description:`Hook 允许响应`,category:`hook`,emittedBy:[`client`],handledByCli:!1,handledByWeb:!1,note:`入站事件(CLI→服务器),无需 handler`}),u({type:`hook_deny`,description:`Hook 拒绝响应`,category:`hook`,emittedBy:[`client`],handledByCli:!1,handledByWeb:!1,note:`入站事件(CLI→服务器),无需 handler`}),u({type:`hook_response_ack`,description:`Hook 响应确认`,category:`hook`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`CLI 已添加 handler(2026-07-01); Web systemHandlers 已处理(2026-08-07)`}),u({type:`ask_user_question`,description:`向用户提问`,category:`hook`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`question_answer_ack`,description:`提问回答确认`,category:`hook`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`Web useWebSocket 已处理(dismiss 提问弹窗)`}),u({type:`form_request`,description:`右栏表单待填请求(collect_form)`,category:`hook`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,note:`Web 已接线(2026-02):useWebSocket 早于 sessionId 守卫分派到 formStore → 右栏 FormWidget。CLI 物理上没有右栏,终端里 collect_form 靠超时退化成提问。`}),u({type:`form_answer`,description:`右栏表单提交(Web→服务器,转 core submitFormAnswer)`,category:`hook`,emittedBy:[`client`],handledByCli:!1,handledByWeb:!1,note:`入站事件(Web→服务器),由 server dispatch 转给 core,无需 handler`}),u({type:`form_answer_ack`,description:`表单提交确认(含会话中断取消)`,category:`hook`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,note:`Web 已接线:useWebSocket → formStore.applyAck(成功转「已提交」摘要态,失败把 issues 摊回字段)。CLI 无右栏,不消费。`}),u({type:`form_cancelled`,description:`表单被会话中断/停止取消`,category:`hook`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,note:`Web 已接线:→ formStore.markCancelled,卡不删(答案仍会落盘),只标注「AI 已不再等待」。CLI 无右栏,不消费。`}),u({type:`hook_auto_ack`,description:`Hook 自动模式确认`,category:`hook`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`Web 已处理(2026-08-07 toast 提示)`}),u({type:`tool.approval_required`,description:`工具调用需要审批(无人值守运行触发,未放行即拒绝)`,category:`hook`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`无人值守/定时运行写操作需审批的通知;Inbox 审批队列已退役,Web 显式 no-op,CLI 走 hook 链审批`}),u({type:`permission_decision`,description:`审批决策已落审计(结构化条目 + 环形缓冲)`,category:`hook`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!1,intentionalGap:!0,note:`读者尚未接线(recently-denied 面板 / REST,见 a2)。先声明并发射,接线时只改订阅方、不动发射端;handledBy* 保持 false 是为了不谎报有 handler。`})]),p([u({type:`mcp_update`,description:`MCP 状态更新`,category:`mcp`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`CLI 已添加 handler(2026-07-01)`})]),p([u({type:`doctor_result`,description:`诊断完成`,category:`diagnostic`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`degradation`,description:`降级状态更新(遗留)`,category:`diagnostic`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`degradation_update`,description:`降级状态更新`,category:`diagnostic`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0})]),p([u({type:`commands_list`,description:`命令列表(服务器→客户端)`,category:`system`,emittedBy:[`core`,`server`],handledByCli:!0,handledByWeb:!0,note:`CLI 已处理(setDynamicCommands); Web systemHandlers 已处理(2026-08-07)`}),u({type:`ping`,description:`心跳 Ping`,category:`system`,emittedBy:[`client`],handledByCli:!1,handledByWeb:!1,note:`由 Server 的 WS 层自动处理`}),u({type:`pong`,description:`心跳 Pong`,category:`system`,emittedBy:[`server`],handledByCli:!1,handledByWeb:!1,note:`由 Client 的 WS 层自动处理`}),u({type:`hello`,description:`客户端首帧握手`,category:`system`,emittedBy:[`client`],handledByCli:!1,handledByWeb:!1,note:`由 Server rpc/handshake.ts 拦截处理,不进事件总线;web 已接入(services/websocket.ts)。规范见 docs/protocol-compatibility.md`}),u({type:`hello_ack`,description:`首帧握手回执(serverVersion/protocolVersion/capabilities)`,category:`system`,emittedBy:[`server`],handledByCli:!1,handledByWeb:!1,note:`由 Client 的 WS 层拦截处理(web: services/websocket.ts → stores/connectionStore),不进事件总线;capabilities 是 R4 能力门禁的唯一合法依据`}),u({type:`log`,description:`服务端日志`,category:`system`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`notification`,description:`通知消息`,category:`system`,emittedBy:[`server`],handledByCli:!0,handledByWeb:!0}),u({type:`channel_message`,description:`频道入站消息(转发到 Web UI)`,category:`system`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`CLI 已处理(2026-07-18); Web 已处理(2026-08-07 通知)`}),u({type:`channel_status`,description:`频道连接状态变更`,category:`system`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`CLI 已处理(2026-07-18); Web 已处理(channelsStore)`}),u({type:`channel_error`,description:`频道运行时错误`,category:`system`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`CLI 已处理(2026-07-18); Web 已处理(2026-08-07 通知)`}),u({type:`todo_update`,description:`待办事项更新`,category:`system`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0}),u({type:`todo_item_done`,description:`待办项完成`,category:`system`,emittedBy:[`none`],handledByCli:!1,handledByWeb:!0,deprecated:!0,note:`已退役:core/server 无发射点(待办统一走 todo_update 全表替换);Web handler 保留兼容`}),u({type:`todo_progress`,description:`待办进度`,category:`system`,emittedBy:[`none`],handledByCli:!1,handledByWeb:!1,deprecated:!0,note:`已退役:core/server 无发射点,CLI 无 handler,Web 侧为空 case`}),u({type:`board_update`,description:`共享工作板更新(作用域 = 工作目录 + 会话类型)`,category:`system`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`BoardTool emit;payload.data 为 {items:[...]} 的 JSON 字符串。板按会话类型分作用域(board/boardBinding.ts),当前只有 PM 有板。CLI 渲染 BoardPanel,Web 写入 workflowStore(source=board) 复用 TaskBoardWidget`}),u({type:`tombstone`,description:`消息已删除/墓碑`,category:`system`,emittedBy:[`none`],handledByCli:!1,handledByWeb:!1,deprecated:!0,note:`Web/CLI 本地消息删除渲染概念,无 WS 发射端`}),u({type:`status`,description:`状态更新(modelName/connected/statusText)`,category:`system`,emittedBy:[`core`,`server`],handledByCli:!0,handledByWeb:!0,schema:i({modelName:n(),connected:s(),statusText:n()}).partial()}),u({type:`model_name`,description:`当前模型名称`,category:`system`,emittedBy:[`core`,`server`],handledByCli:!0,handledByWeb:!0,schema:i({model:n(),modelRef:n(),source:e([`session`,`mode`,`global`]),data:n()}).partial(),note:`model 顶层裸模型 id;modelRef 为 provider:model 复合身份(同 id 多 provider 去歧义,CLI/Web 状态行 + 模型选择器用);source 标记模型来源 session/mode/global(session = 仅本会话切换)`}),u({type:`models_updated`,description:`模型列表已更新(models.dev 快照刷新后广播)`,category:`system`,emittedBy:[`server`],handledByCli:!0,handledByWeb:!0,note:`app.ts 模型端点写入 / config.yaml 外部变更后全量广播;CLI useAppConnection 重拉并预热列表,Web useWebSocket 转 window 'models-updated'(ModelsView / ModelPicker 监听刷新)。两端接线由 useWebSocket.modelsUpdated.test.tsx 从原始 wire 字节锁定`}),u({type:`throttle`,description:`速率限制状态`,category:`system`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`Web 已处理(2026-08-07 toast 提示)`}),u({type:`code_review_ready`,description:`代码审查结果就绪`,category:`system`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`Web 已处理(2026-08-07 toast 提示)`}),u({type:`pdca_phase`,description:`PDCA 循环阶段`,category:`system`,emittedBy:[`none`],handledByCli:!0,handledByWeb:!1,deprecated:!0,note:`已退役:5-phase light pipeline 被 WorkflowRuntime 取代`}),u({type:`command_start`,description:`命令开始(Web 路由用)`,category:`system`,emittedBy:[`none`],handledByCli:!1,handledByWeb:!0,deprecated:!0,note:`Web systemHandler 有 case 但核心无发送方,保留兼容`}),u({type:`command_complete`,description:`命令完成(Web 路由用)`,category:`system`,emittedBy:[`none`],handledByCli:!1,handledByWeb:!0,deprecated:!0,note:`Web systemHandler 有 case 但核心无发送方,保留兼容`}),u({type:`command_error`,description:`命令错误(Web 路由用)`,category:`system`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`core index.ts:1270 真实 emit;CLI useStreamHandlers:741 与 Web systemHandlers 均已处理`}),u({type:`worktree_service_changed`,description:`worktree 声明的服务已启动/停止(**只是刷新提示,不是状态**)`,category:`system`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,intentionalGap:!0,note:"⚠️ **payload 刻意不含 status** —— 状态以 `GET /api/worktree-services` 的查询为准,事件只用来标记「该重拉了」。这是 thread.ts 文件头已经写死的那条不变量(「任何消费方都不能靠事件推导状态,必须以查询快照为准」),照抄而非新立。理由:事件是瞬时的,而「我下午回来看它还活着吗」必须能重新查询。接线:core 侧由 DeepSeekCodeRuntime 把 WorktreeServiceRuntime 的变更监听接到 emit;Web 已接线。CLI 侧未接线(S3 待定),故 intentionalGap 保持 true —— 该 flag 与 handledByCli 被 CLI 接线完整性门禁共用,提前置 false 会把它当成新缺口误报。设计:docs/architecture-design/WORKTREE_SERVICE_STATUS_UI_PLAN.md",schema:i({sessionId:n(),name:n(),action:e([`started`,`stopped`])}).partial()}),u({type:`visual_artifacts_updated`,description:`视觉产物注册表落了新版本(**只是刷新提示,不是状态**)`,category:`system`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,intentionalGap:!0,note:"⚠️ payload 只给**地址**(sessionId + logicalId),不给版本号/类型/渲染器等内容 —— 内容以 `GET /api/visual-artifacts` 的查询为准。理由照抄上面 worktree_service_changed:事件是瞬时的,而「我下午回来看它还在不在」必须能重新查询;带上内容就等于同时存在两份真相,必然漂移。两个地址各有各的用处,且**必须都给**:sessionId 是清单刷新键(该会话的「产物」视图),logicalId 是版本链刷新键 —— 链的取数键**不含产者**(身份 = 工作区 + 产物路径,见 visualArtifacts/artifact.ts 文件头),所以「产者会话」与「正在看这条链的会话」可能不是同一个,少给 logicalId 就只能重拉产者自己那个槽。接线:core 侧由 createVisualArtifactRegistrar 的 notify(**落盘成功后**)→ runtime.emit;Web 已接线(useWebSocket → visualArtifactsStore.refreshPublished,只重拉**已持有**的槽与链)。CLI 侧未接线(无「产物」面板),故 intentionalGap 保持 true —— 该 flag 与 handledByCli 被CLI 接线完整性门禁共用,提前置 false 会把它当成新缺口误报(同 worktree_service_changed 的口径)。设计:docs/architecture-design/VISUAL_ARTIFACT_READ_SIDE_PLAN.md §4「实时刷新」行",schema:i({sessionId:n(),logicalId:n()}).partial()})]),p([u({type:`automation.update`,description:`自动化任务新增/更新/删除/状态变更`,category:`automation`,emittedBy:[`server`],handledByCli:!0,handledByWeb:!0,note:`REST /api/automations 已可用;Web 自动化视图消费`}),u({type:`automation.run`,description:`自动化触发运行(started/finished/error)`,category:`automation`,emittedBy:[`core`,`server`],handledByCli:!0,handledByWeb:!0,note:`CLI 状态提示;Web RunDetail 消费`})]),p([u({type:`agent_started`,description:`Agent 启动(统一生命周期)`,category:`system`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`AgentRunner.beginLifecycle 注册控制面时 emit;data 携带 agentId/toolCallId/parentAgentId/rootId/depth/sessionId/scope/state/elapsedMs`,schema:i({agentId:n(),toolCallId:n().optional(),parentAgentId:n().optional(),rootId:n().optional(),depth:t().optional(),sessionId:n().optional(),scope:n().optional(),state:n().optional(),elapsedMs:t().optional()}).partial()}),u({type:`agent_progress`,description:`Agent 实时进度(派生行,零 LLM 成本)`,category:`system`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`AgentRunner 包装 onProgress 节流(≥1s 或轮次变化穿透)后 emit;data 携带 agentId/toolCallId/iteration{current,max}/tools{current,recent}/lastContent/elapsedMs`,schema:i({agentId:n(),toolCallId:n().optional(),iteration:i({current:t(),max:t().optional()}).optional(),tools:i({current:n().optional(),recent:a(n()).optional()}).optional(),lastContent:n().optional(),elapsedMs:t().optional(),totalTokens:t().optional()}).partial()}),u({type:`agent_completed`,description:`Agent 正常完成`,category:`system`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`AgentRunner endLifecycle(status=completed)时 emit`,schema:i({agentId:n(),toolCallId:n().optional(),scope:n().optional(),state:n().optional(),elapsedMs:t().optional()}).partial()}),u({type:`agent_cancelled`,description:`Agent 被用户/控制面停止(partial result 已返回)`,category:`system`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`AgentRunner endLifecycle(status=cancelled)时 emit;detail 携带停止原因。语义 = 停止工作、整理已有发现,partial result 已随工具结果回传父 agent`,schema:i({agentId:n(),toolCallId:n().optional(),scope:n().optional(),state:n().optional(),elapsedMs:t().optional(),detail:n().optional()}).partial()}),u({type:`agent_failed`,description:`Agent 失败/超时/被硬杀`,category:`system`,emittedBy:[`core`],handledByCli:!0,handledByWeb:!0,note:`AgentRunner endLifecycle(status=error/timeout/max_iterations/budget_exceeded)或 kill 时 emit;error 携带原因`,schema:i({agentId:n(),toolCallId:n().optional(),scope:n().optional(),state:n().optional(),elapsedMs:t().optional(),error:n().optional()}).partial()})]);var re=e([`info`,`action_required`,`error`]),g={threadId:n(),runId:n().optional(),alias:n().optional(),severity:re.optional(),dedupKey:n().optional()};p([u({type:`thread_started`,description:`Thread 开始执行`,category:`thread`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,intentionalGap:!0,note:`P0-A 立契约;P1 由 ThreadScheduler 发射。replyMode:batch,不进 outbox(易失可接受)`,schema:i({...g,source:n().optional(),model:n().optional(),branch:n().optional(),worktreePath:n().optional(),cwd:n().optional()}).partial()}),u({type:`thread_progress`,description:`Thread 中间进度(派生行,零 LLM 成本)`,category:`thread`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,intentionalGap:!0,note:`P0-A 立契约;P1 由 RuntimeNotification 经 dispatcher 出口发射。⚠️ payload 摘要必须自带上界 ≤600 字符(对齐 goalNotifier.MAX_RESULT_CHARS),否则 batch 的 4000 字闸在合并多条后会立刻触发。replyMode:batch,不进 outbox`,schema:i({...g,summary:n().optional(),round:t().optional(),maxRounds:t().optional(),currentTool:n().optional(),elapsedMs:t().optional()}).partial()}),u({type:`thread_checkpoint`,description:`Thread 到达检查点(瞬态通知,**不是**状态)`,category:`thread`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,intentionalGap:!0,note:`⚠️ 这是**通知事件**,不是 ThreadStatus 的取值(v9.1 §3.2(a):v9 曾把它写进状态枚举,导致 watcher 无法判断『还能不能 await』;处于 checkpoint 的 thread 实际仍是 RUNNING/PAUSED)`,schema:i({...g,checkpointId:n().optional(),label:n().optional(),resumable:s().optional()}).partial()}),u({type:`thread_completed`,description:`Thread 正常完成(全部 Run 终态)`,category:`thread`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,intentionalGap:!0,note:`进 outbox + replyMode:immediate —— detach 后这是用户**唯一**的结果来源(v9.1 §10 约束②)`,schema:i({...g,summary:n().optional(),artifactCount:t().optional(),durationMs:t().optional()}).partial()}),u({type:`thread_failed`,description:`Thread 失败(Run 报错 / 审批超时且高风险 / 预算终止)`,category:`thread`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,intentionalGap:!0,note:`进 outbox + replyMode:immediate(同 thread_completed,结果必须送达)`,schema:i({...g,error:n().optional(),reason:e([`run_error`,`approval_expired`,`budget_exceeded`,`interrupted`,`unknown`]).optional()}).partial()}),u({type:`thread_artifact`,description:`Thread 产出 Artifact(§3.4 的 Manifest 条目落定)`,category:`thread`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,intentionalGap:!0,note:"replyMode:batch。⚠️ `id` 逐次唯一、`logicalId` 跨版本稳定 —— 消费方按 logicalId 归组、按 id 溯源(v9.1 §3.4:只有 id+version 时语义二义)。接线进展(P0-C A2):**core 侧已有 emitter** —— 产者用 `register_thread_artifact` 登记,经 ArtifactManifest 落定后由宿主出口发出(artifactStore 自己不发,§10 约束①)。消费端:Web 的项目「库」面板(`scheduleLibraryRefresh`)订阅本事件去**重拉**,事件只作提示、内容以 `GET /api/projects/:id/library` 为准(400ms 合并窗口,库未打开时零请求);CLI 侧仍无消费方,故 `intentionalGap` 保持 true;payload.locator 刻意不含 `content`(schema 无此字段,且正文由 path/commit 指过去)",schema:i({...g,artifactId:n().optional(),logicalId:n().optional(),version:t().optional(),producerRunId:n().optional(),artifactType:e([`patch`,`test-report`,`decision`,`design`,`benchmark`]).optional(),status:e([`draft`,`pending_review`,`approved`,`published`,`deprecated`]).optional(),locator:i({commit:n().optional(),files:a(n()).optional(),path:n().optional(),messageIds:a(n()).optional()}).partial().optional()}).partial()}),u({type:`thread_cost`,description:`Thread 成本汇总(token / 轮次)`,category:`thread`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,intentionalGap:!0,note:`replyMode:batch,不进 outbox。数据源 = provider 返回的 usage,与预算强制点(§3.5)同处采集,不重复埋点。预算按 **Run** 计数(Thread 1:N Run,retry 应重置预算)`,schema:i({...g,tokensIn:t().optional(),tokensOut:t().optional(),rounds:t().optional(),maxTokens:t().optional(),utilization:t().optional()}).partial()}),u({type:`approval_expired`,description:`审批单据已失效(重启 sweep 或 TTL 到期)`,category:`thread`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,intentionalGap:!0,note:"进 outbox + replyMode:immediate。作用是**清理悬空单据**:`permissions.ts` 的 pending Map 在内存,进程重启后 IM 侧那条『请回复 批准/拒绝』仍在,用户回复会落进『不认』分支 = 静默失败。发这条让它显式失效(v9.1 §8.2b)",schema:i({...g,approvalId:n().optional(),toolName:n().optional(),risk:n().optional(),expiredAt:n().optional(),cause:e([`ttl`,`restart`]).optional()}).partial()})]);var ie=e([`info`,`action_required`,`error`]),ae=[`task-terminal`,`goal-raised`,`review-resolved`,`approval-resolved`,`escalation-raised`,`user-message`,`heartbeat-stall`,`alarm`],_={projectKey:n(),pmThreadId:n().optional(),runId:n().optional(),severity:ie.optional(),dedupKey:n().optional()};p([u({type:`pm_started`,description:`项目经理开始值守(启用/恢复)`,category:`pm`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,intentionalGap:!0,note:`replyMode:batch(⚠️ 目标口径,见文件头注②),不进 outbox。项目页据此渲染 PM 面板的『值守中』态`,schema:i({..._,enabledBy:e([`user`,`im`,`config`,`restart`]).optional()}).partial()}),u({type:`pm_wakeup`,description:`项目经理被唤醒(事件驱动 turn 开始)`,category:`pm`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,intentionalGap:!0,note:`replyMode:batch(⚠️ 目标口径,见文件头注②),不进 outbox(高频易失)。默认层只展示一行『被 X 唤醒』,合并窗口细节走 debug 日志`,schema:i({..._,reason:e(ae).optional(),summary:n().optional()}).partial()}),u({type:`pm_report`,description:`项目经理进度汇报`,category:`pm`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,intentionalGap:!0,note:`replyMode:batch(⚠️ 目标口径,见文件头注②),不进 outbox。IM 出向经 dispatcher(照 goalNotifier 模式);各摘要字段 ≤600 字符(文件头注③)`,schema:i({..._,title:n().optional(),progressSummary:n().optional(),blockers:n().optional(),nextAction:n().optional(),approvalsPending:t().optional(),route:i({kind:e([`answer`,`thread`,`goal`,`handoff`,`approval`,`session`]),refs:i({goalId:n().optional(),threadIds:a(n()).optional(),projectKey:n().optional()}).optional(),suggest:i({title:n(),seed:n().optional()}).optional(),reason:n()}).optional()}).partial()}),u({type:`pm_approval_requested`,description:`项目经理发起审批(L1 必审动作)`,category:`pm`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,intentionalGap:!0,note:`replyMode:immediate(⚠️ 目标口径,见文件头注②:outbox 尚未实现)。action_required 不能被合并进 30s 窗口(v9.1 §10)。底层复用 escalation:escalationId 即 REST 裁决门 POST /api/threads/escalations/:id/resolve 的 id`,schema:i({..._,escalationId:n().optional(),title:n().optional(),summary:n().optional(),requestedAction:n().optional(),reason:e([`budget-exceeded`,`policy`,`external-send`]).optional()}).partial()}),u({type:`pm_approval_resolved`,description:`项目经理审批已决议(批准/拒绝)`,category:`pm`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,intentionalGap:!0,note:`replyMode:immediate(⚠️ 目标口径,见文件头注②)。终态通知必须送达。决议同时触发 coordinatorWakeup(approval-resolved)唤醒 PM 继续或放弃`,schema:i({..._,escalationId:n().optional(),decision:e([`approved`,`rejected`]).optional(),comment:n().optional()}).partial()}),u({type:`pm_stopped`,description:`项目经理停止值守`,category:`pm`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,intentionalGap:!0,note:`replyMode:immediate(⚠️ 目标口径,见文件头注②)。停止后不再唤醒;在跑 turn 自然结束;执行线程不受影响`,schema:i({..._,cause:e([`user`,`project-archived`,`error`]).optional()}).partial()}),u({type:`pm_duty_changed`,description:`全局值守经理(总经理)席位变更(选任/转回前台)`,category:`pm`,emittedBy:[`core`],handledByCli:!1,handledByWeb:!0,intentionalGap:!0,note:`replyMode:batch(⚠️ 目标口径,见文件头注②),不进 outbox。全局唯一席位的选任/清空(spec 2026-09-26);dutyProjectKey 为空 = 转回前台(席位空缺)。Web 经理名册据此翻转值守徽标`,schema:i({..._,dutyProjectKey:n().nullable().optional(),previousProjectKey:n().nullable().optional()}).partial()})]);var v=n().min(1).max(128).regex(/^[a-z][a-z0-9._-]*$/,`command id must match ^[a-z][a-z0-9._-]*$`);i({id:n().min(1).max(128),command:v,payload:o().optional(),timeoutMs:t().int().positive().max(3e5).optional(),sender:n().max(128).optional()}),i({success:s(),requestId:n(),command:v,result:o().optional(),error:n().optional(),durationMs:t().min(0).optional()});var oe=i({capability:v,command:v,description:n().max(500).optional(),provider:n().max(128).optional()});i({version:c(`1`),capabilities:a(oe)});var y=i({version:c(`1`),type:e([`ready`,`select`,`inspect`,`screenshot`,`highlight`,`command`,`event`]),requestId:n().min(1).max(128),payload:o().optional()}).passthrough();i({type:n().min(1).max(128).regex(/^[a-z][a-z0-9._-]*$/,`event type must match ^[a-z][a-z0-9._-]*$`),payload:o().optional(),source:n().max(128).optional(),timestamp:t().nonnegative().optional()}),i({type:c(`workspace_event`),sessionId:n().optional(),data:r([n(),y]).optional(),traceId:n().optional()});var se=d.map(e=>({eventType:e.type,description:e.description,category:e.category,emittedBy:e.emittedBy,handledByCli:e.handledByCli,handledByWeb:e.handledByWeb,...e.deprecated===void 0?{}:{deprecated:e.deprecated},...e.intentionalGap===void 0?{}:{intentionalGap:e.intentionalGap},...e.note===void 0?{}:{note:e.note}})),b=[`none`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`,`ultra`,`persistent`];b.filter(e=>e!==`ultra`&&e!==`persistent`);var x={off:`none`,disable:`none`,disabled:`none`,no:`none`,extra_high:`xhigh`,"extra-high":`xhigh`,extrahigh:`xhigh`,very_high:`xhigh`,"very-high":`xhigh`,x_high:`xhigh`,"x-high":`xhigh`,default:`medium`};new Set(b);function ce(e){if(typeof e!=`string`)return;let t=e.trim().toLowerCase();if(t)return x[t]??t}function le(e){return e===`ultra`?`max`:e===`persistent`?`disabled`:e}var S=[`off`,`low`,`medium`,`high`,`extra_high`,`max`],ue={off:{level:`off`,wire:`none`,label:`OFF`,hint:`关闭思考(wire: none)`},low:{level:`low`,wire:`low`,label:`LOW`,hint:`最省 token,适合一句话就能答的活`},medium:{level:`medium`,wire:`medium`,label:`MED`,hint:`默认档(wire 上等价于不指定)`},high:{level:`high`,wire:`high`,label:`HIGH`,hint:`高:复杂重构、长链路排查`},extra_high:{level:`extra_high`,wire:`xhigh`,label:`XHIGH`,hint:`超高:难调试的并发/跨包改动`},max:{level:`max`,wire:`max`,label:`MAX`,hint:`最高:最难的问题,更慢也更贵`}};function C(e){return typeof e==`string`&&S.includes(e)}function de(e,t=`medium`){return C(e)?e:t}function fe(e){let t=ce(e);if(t===void 0)return;let n=le(t);if(n===`none`||n===`disabled`)return`off`;if(n===`minimal`||n===`low`)return`low`;if(n===`medium`)return`medium`;if(n===`high`)return`high`;if(n===`xhigh`)return`extra_high`;if(n===`max`)return`max`}function w(e,t){let n=S.indexOf(e)+t;return n<0?S[0]:n>=S.length?S[S.length-1]:S[n]}var T=[`waiting`,`review`,`working`,`paused`,`done`];function E(e){let t=new Map;for(let n of e){let e=t.get(n.logicalId);e?e.push(n):t.set(n.logicalId,[n])}let n=[...t.values()];for(let e of n)e.sort((e,t)=>t.version-e.version||(e.artifactId<t.artifactId?-1:+(e.artifactId>t.artifactId)));return n.sort((e,t)=>{let n=e[0]?.version??0,r=t[0]?.version??0;if(n!==r)return r-n;let i=e[0]?.logicalId??``,a=t[0]?.logicalId??``;return i<a?-1:+(i>a)}),n}function D(e){if(typeof e!=`string`)return;let t=e.trim().replace(/\\/g,`/`).replace(/\/{2,}/g,`/`);if(!t)return;let n=t.replace(/\/+$/,``);return n?/^[a-zA-Z]:$/.test(n)?`${n}/`:n:`/`}function O(e){return D(e)?.toLowerCase()}function k(e){if(!e)return;let t=e.replace(/\/+$/,``).split(`/`);return t[t.length-1]||e}function A(e){switch(e.group){case`waiting`:return`blocked`;case`review`:return`review`;case`working`:return e.status===`WAITING_COORDINATOR`?`coordinating`:e.status===`BLOCKED_CLAIM`?`claim-blocked`:`working`;case`paused`:return e.status===`INTERRUPTED`?`interrupted`:`paused`;case`done`:return e.status===`FAILED`?`failed`:e.status===`CANCELLED`?`cancelled`:`completed`;default:return}}function j(e){if(e.status===`WAITING_COORDINATOR`)return`waitingCoordinator`;if(e.status===`BLOCKED_CLAIM`)return`blockedClaim`;if(e.group===`waiting`)return`waitingApproval`;if(e.status===`INTERRUPTED`)return`interrupted`}function M(e,t=Date.now()){if(!e)return;let n=Date.parse(e);if(!Number.isFinite(n))return;let r=Math.floor(Math.max(0,t-n)/6e4);if(r<1)return`<1m`;if(r<60)return`${r}m`;let i=Math.floor(r/60);return i<24?`${i}h`:`${Math.floor(i/24)}d`}var N=`[A-Za-z0-9]{4,}`,P=RegExp(`(?<![A-Za-z0-9_])(th_${N})`),F=RegExp(`^th_${N}$`);function I(e){return F.test(e)}var L=`THREADS_DISABLED`,R=[{code:`zh`,name:`Simplified Chinese`,native:`简体中文`},{code:`en`,name:`English`,native:`English`},{code:`ja`,name:`Japanese`,native:`日本語`},{code:`ko`,name:`Korean`,native:`한국어`},{code:`de`,name:`German`,native:`Deutsch`},{code:`fr`,name:`French`,native:`Français`},{code:`es`,name:`Spanish`,native:`Español`},{code:`pt`,name:`Portuguese`,native:`Português`},{code:`ru`,name:`Russian`,native:`Русский`},{code:`it`,name:`Italian`,native:`Italiano`},{code:`ar`,name:`Arabic`,native:`العربية`},{code:`id`,name:`Indonesian`,native:`Bahasa Indonesia`}].map(e=>e.code);function z(e){return typeof e==`string`&&R.includes(e)}var B=[`1`];function V(e){return B.includes(e)}var H={maxFields:12,maxOptions:20,maxIdChars:40,maxTitleChars:120,maxSubmitLabelChars:20,maxLabelChars:60,maxHelpChars:200,maxPlaceholderChars:80,maxDescriptionChars:4e3,maxTextValueChars:2e4,maxAcceptChars:120,maxFiles:5,maxFileSizeMb:10,maxAnswerBytes:524288},pe=/^f-[0-9]{8}-[0-9]{1,6}$/;function U(e){return typeof e==`string`&&pe.test(e)}var me=`.agent/forms`,he=`.agent/uploads`;function ge(e){return`${he}/${e}`}var _e=[`text`,`textarea`,`number`,`select`,`multi`,`boolean`,`date`,`file`];function ve(e){switch(e.kind){case`number`:return null;case`boolean`:return!1;case`multi`:case`file`:return[];default:return``}}function ye(e){return e==null?!0:typeof e==`string`?e.trim()===``:Array.isArray(e)?e.length===0:!1}function be(e){return e.maxLength??H.maxTextValueChars}function xe(e){return e.maxSizeMb??H.maxFileSizeMb}var Se=[`native`],Ce=/^[A-Za-z_][A-Za-z0-9_]{0,39}$/,we=new Set(_e);function W(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function G(e){return typeof e==`number`&&Number.isFinite(e)}function Te(e){let t;try{t=JSON.parse(e)}catch{return{ok:!1,issues:[{code:`descriptor.not_json`}]}}return K(t)}function K(e){if(!W(e))return{ok:!1,issues:[{code:`descriptor.not_object`}]};let t=[];e.type!==`form`&&t.push({code:`descriptor.bad_type`,value:Q(e.type)});let n=e.renderer;typeof n==`string`&&Se.includes(n)||t.push({code:`descriptor.bad_renderer`,value:Q(n)});let r=e.version;typeof r==`string`&&V(r)||t.push({code:`descriptor.bad_version`,value:Q(r)});let i=e.source;if(!W(i))return t.push({code:`descriptor.bad_source`}),{ok:!1,issues:t};U(i.id)||t.push({code:`descriptor.bad_id`,value:Q(i.id)}),(typeof i.sessionId!=`string`||i.sessionId.trim()===``)&&t.push({code:`descriptor.bad_session`});let a=X(i.title,H.maxTitleChars,t),o=Z(i.description,H.maxDescriptionChars,`description`,t),s=Z(i.submitLabel,H.maxSubmitLabelChars,`submitLabel`,t),c=q(i.fields,t);if(t.length>0)return{ok:!1,issues:t};let l={id:i.id,sessionId:i.sessionId,title:a,fields:c};return o!==void 0&&(l.description=o),s!==void 0&&(l.submitLabel=s),{ok:!0,value:{type:`form`,renderer:n,version:`1`,source:l}}}function q(e,t){if(!Array.isArray(e)||e.length===0)return t.push({code:`descriptor.no_fields`}),[];e.length>H.maxFields&&t.push({code:`descriptor.too_many_fields`,limit:H.maxFields,actual:e.length});let n=[],r=new Set;return e.slice(0,H.maxFields).forEach((e,i)=>{let a=Ee(e,i,r,t);a&&n.push(a)}),n}function Ee(e,t,n,r){if(!W(e))return r.push({code:`descriptor.field_not_object`,fieldIndex:t}),null;let i=e.id;if(typeof i!=`string`||i.length>H.maxIdChars||!Ce.test(i))return r.push({code:`descriptor.bad_field_id`,fieldIndex:t,value:Q(i)}),null;if(n.has(i))return r.push({code:`descriptor.duplicate_field_id`,fieldId:i}),null;n.add(i);let a=e.kind;if(typeof a!=`string`||!we.has(a))return r.push({code:`descriptor.bad_kind`,fieldId:i,fieldIndex:t,value:Q(a)}),null;let o=X(e.label,H.maxLabelChars,r,i);if(o===null)return null;let s={id:i,label:o};e.required!==void 0&&(typeof e.required==`boolean`?s.required=e.required:r.push({code:`descriptor.bad_required`,fieldId:i}));let c=Z(e.help,H.maxHelpChars,`help`,r,i);c!==void 0&&(s.help=c);let l=Z(e.placeholder,H.maxPlaceholderChars,`placeholder`,r,i);switch(l!==void 0&&(s.placeholder=l),a){case`text`:return{...s,...J(e,i,r),kind:`text`};case`textarea`:return{...s,...J(e,i,r),kind:`textarea`};case`number`:return{...s,...De(e,i,r),kind:`number`};case`select`:return{...s,...Y(e,i,r),kind:`select`};case`multi`:return{...s,...Y(e,i,r),kind:`multi`};case`boolean`:return{...s,kind:`boolean`};case`date`:return{...s,kind:`date`};case`file`:return{...s,...Oe(e,i,r),kind:`file`}}}function J(e,t,n){let r=e.maxLength;return r===void 0?{}:!G(r)||r<=0||r>H.maxTextValueChars?(n.push({code:`descriptor.bad_limit`,fieldId:t,value:`maxLength`}),{}):{maxLength:Math.floor(r)}}function De(e,t,n){let r={};for(let i of[`min`,`max`,`step`]){let a=e[i];a!==void 0&&(!G(a)||i===`step`&&a<=0?n.push({code:`descriptor.bad_limit`,fieldId:t,value:i}):r[i]=a)}return r.min!==void 0&&r.max!==void 0&&r.min>r.max&&n.push({code:`descriptor.bad_limit`,fieldId:t,value:`min>max`}),r}function Y(e,t,n){let r=e.options;if(!Array.isArray(r)||r.length===0)return n.push({code:`descriptor.missing_options`,fieldId:t}),{options:[]};r.length>H.maxOptions&&n.push({code:`descriptor.too_many_options`,fieldId:t,limit:H.maxOptions,actual:r.length});let i=[],a=new Set;for(let e of r)typeof e!=`string`||e.trim()===``||e.length>H.maxLabelChars?n.push({code:`descriptor.bad_option`,fieldId:t,value:Q(e)}):a.has(e)?n.push({code:`descriptor.duplicate_option`,fieldId:t,value:e}):(a.add(e),i.push(e));return{options:i}}function Oe(e,t,n){let r={},i=e.accept;i!==void 0&&(typeof i!=`string`||i.length>H.maxAcceptChars?n.push({code:`descriptor.bad_file_limit`,fieldId:t,value:`accept`}):i.trim()!==``&&(r.accept=i));let a=e.maxSizeMb;return a!==void 0&&(!G(a)||a<=0||a>H.maxFileSizeMb?n.push({code:`descriptor.bad_file_limit`,fieldId:t,value:`maxSizeMb`}):r.maxSizeMb=a),r}function X(e,t,n,r){let i=r?{fieldId:r}:{};return typeof e!=`string`||e.trim()===``?(n.push({code:r===void 0?`descriptor.missing_title`:`descriptor.missing_label`,...i}),null):e.length>t?(n.push({code:r===void 0?`descriptor.title_too_long`:`descriptor.label_too_long`,...i,limit:t,actual:e.length}),null):e}function Z(e,t,n,r,i){if(typeof e==`string`&&e.trim()!==``){if(e.length>t)r.push({code:{description:`descriptor.description_too_long`,submitLabel:`descriptor.submit_label_too_long`,help:`descriptor.help_too_long`,placeholder:`descriptor.placeholder_too_long`}[n],...i?{fieldId:i}:{},limit:t,actual:e.length});else return e}}function Q(e){return typeof e==`string`?e.slice(0,80):e===null?`null`:e===void 0?`undefined`:typeof e==`number`||typeof e==`boolean`?String(e):Array.isArray(e)?`array`:typeof e}var ke=[`openai-chat-completions`,`openai-completions`,`openai-responses`,`anthropic-messages`,`codex-responses`,`claude-code`],Ae=[`mode_instruction`,`session_mentions`,`retry_instruction`,`system_stable`,`system_dynamic`,`memory_injection`,`session_memory_summary`,`pm_wakeup_context`,`thread_task_context`];function $(e){return typeof e==`string`&&Ae.includes(e)}function je(e){return $(e.kind)?!0:e.type===`system`&&typeof e.content==`string`&&e.content.trimStart().startsWith(`[Session Memory Summary]`)}se.map(e=>e.eventType);export{C as A,j as C,ue as D,S as E,de as O,O as S,k as T,P as _,K as a,I as b,xe as c,H as d,ge as f,T as g,L as h,Te as i,w as j,fe as k,ye as l,z as m,je as n,ve as o,U as p,$ as r,be as s,ke as t,me as u,M as v,A as w,D as x,E as y};
@@ -0,0 +1 @@
1
+ import{i as e,t}from"./rolldown-runtime-COiEfhsA.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";var r=t(((e,t,n)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs=r()})(n,(function(){var e=1e3,t=6e4,n=36e5,r=`millisecond`,i=`second`,a=`minute`,o=`hour`,s=`day`,c=`week`,l=`month`,u=`quarter`,d=`year`,f=`date`,p=`Invalid Date`,m=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,h=/\[([^\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:`en`,weekdays:`Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday`.split(`_`),months:`January_February_March_April_May_June_July_August_September_October_November_December`.split(`_`),ordinal:function(e){var t=[`th`,`st`,`nd`,`rd`],n=e%100;return`[`+e+(t[(n-20)%10]||t[n]||t[0])+`]`}},_=function(e,t,n){var r=String(e);return!r||r.length>=t?e:``+Array(t+1-r.length).join(n)+e},v={s:_,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),i=n%60;return(t<=0?`+`:`-`)+_(r,2,`0`)+`:`+_(i,2,`0`)},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var r=12*(n.year()-t.year())+(n.month()-t.month()),i=t.clone().add(r,l),a=n-i<0,o=t.clone().add(r+(a?-1:1),l);return+(-(r+(n-i)/(a?i-o:o-i))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:l,y:d,w:c,d:s,D:f,h:o,m:a,s:i,ms:r,Q:u}[e]||String(e||``).toLowerCase().replace(/s$/,``)},u:function(e){return e===void 0}},y=`en`,b={};b[y]=g;var x=`$isDayjsObject`,S=function(e){return e instanceof E||!(!e||!e[x])},C=function e(t,n,r){var i;if(!t)return y;if(typeof t==`string`){var a=t.toLowerCase();b[a]&&(i=a),n&&(b[a]=n,i=a);var o=t.split(`-`);if(!i&&o.length>1)return e(o[0])}else{var s=t.name;b[s]=t,i=s}return!r&&i&&(y=i),i||!r&&y},w=function(e,t){if(S(e))return e.clone();var n=typeof t==`object`?t:{};return n.date=e,n.args=arguments,new E(n)},T=v;T.l=C,T.i=S,T.w=function(e,t){return w(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var E=function(){function g(e){this.$L=C(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[x]=!0}var _=g.prototype;return _.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(t===null)return new Date(NaN);if(T.u(t))return new Date;if(t instanceof Date)return new Date(t);if(typeof t==`string`&&!/Z$/i.test(t)){var r=t.match(m);if(r){var i=r[2]-1||0,a=(r[7]||`0`).substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)}}return new Date(t)}(e),this.init()},_.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},_.$utils=function(){return T},_.isValid=function(){return this.$d.toString()!==p},_.isSame=function(e,t){var n=w(e);return this.startOf(t)<=n&&n<=this.endOf(t)},_.isAfter=function(e,t){return w(e)<this.startOf(t)},_.isBefore=function(e,t){return this.endOf(t)<w(e)},_.$g=function(e,t,n){return T.u(e)?this[t]:this.set(n,e)},_.unix=function(){return Math.floor(this.valueOf()/1e3)},_.valueOf=function(){return this.$d.getTime()},_.startOf=function(e,t){var n=this,r=!!T.u(t)||t,u=T.p(e),p=function(e,t){var i=T.w(n.$u?Date.UTC(n.$y,t,e):new Date(n.$y,t,e),n);return r?i:i.endOf(s)},m=function(e,t){return T.w(n.toDate()[e].apply(n.toDate(`s`),(r?[0,0,0,0]:[23,59,59,999]).slice(t)),n)},h=this.$W,g=this.$M,_=this.$D,v=`set`+(this.$u?`UTC`:``);switch(u){case d:return r?p(1,0):p(31,11);case l:return r?p(1,g):p(0,g+1);case c:var y=this.$locale().weekStart||0,b=(h<y?h+7:h)-y;return p(r?_-b:_+(6-b),g);case s:case f:return m(v+`Hours`,0);case o:return m(v+`Minutes`,1);case a:return m(v+`Seconds`,2);case i:return m(v+`Milliseconds`,3);default:return this.clone()}},_.endOf=function(e){return this.startOf(e,!1)},_.$set=function(e,t){var n,c=T.p(e),u=`set`+(this.$u?`UTC`:``),p=(n={},n[s]=u+`Date`,n[f]=u+`Date`,n[l]=u+`Month`,n[d]=u+`FullYear`,n[o]=u+`Hours`,n[a]=u+`Minutes`,n[i]=u+`Seconds`,n[r]=u+`Milliseconds`,n)[c],m=c===s?this.$D+(t-this.$W):t;if(c===l||c===d){var h=this.clone().set(f,1);h.$d[p](m),h.init(),this.$d=h.set(f,Math.min(this.$D,h.daysInMonth())).$d}else p&&this.$d[p](m);return this.init(),this},_.set=function(e,t){return this.clone().$set(e,t)},_.get=function(e){return this[T.p(e)]()},_.add=function(r,u){var f,p=this;r=Number(r);var m=T.p(u),h=function(e){var t=w(p);return T.w(t.date(t.date()+Math.round(e*r)),p)};if(m===l)return this.set(l,this.$M+r);if(m===d)return this.set(d,this.$y+r);if(m===s)return h(1);if(m===c)return h(7);var g=(f={},f[a]=t,f[o]=n,f[i]=e,f)[m]||1,_=this.$d.getTime()+r*g;return T.w(_,this)},_.subtract=function(e,t){return this.add(-1*e,t)},_.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||p;var r=e||`YYYY-MM-DDTHH:mm:ssZ`,i=T.z(this),a=this.$H,o=this.$m,s=this.$M,c=n.weekdays,l=n.months,u=n.meridiem,d=function(e,n,i,a){return e&&(e[n]||e(t,r))||i[n].slice(0,a)},f=function(e){return T.s(a%12||12,e,`0`)},m=u||function(e,t,n){var r=e<12?`AM`:`PM`;return n?r.toLowerCase():r};return r.replace(h,(function(e,r){return r||function(e){switch(e){case`YY`:return String(t.$y).slice(-2);case`YYYY`:return T.s(t.$y,4,`0`);case`M`:return s+1;case`MM`:return T.s(s+1,2,`0`);case`MMM`:return d(n.monthsShort,s,l,3);case`MMMM`:return d(l,s);case`D`:return t.$D;case`DD`:return T.s(t.$D,2,`0`);case`d`:return String(t.$W);case`dd`:return d(n.weekdaysMin,t.$W,c,2);case`ddd`:return d(n.weekdaysShort,t.$W,c,3);case`dddd`:return c[t.$W];case`H`:return String(a);case`HH`:return T.s(a,2,`0`);case`h`:return f(1);case`hh`:return f(2);case`a`:return m(a,o,!0);case`A`:return m(a,o,!1);case`m`:return String(o);case`mm`:return T.s(o,2,`0`);case`s`:return String(t.$s);case`ss`:return T.s(t.$s,2,`0`);case`SSS`:return T.s(t.$ms,3,`0`);case`Z`:return i}return null}(e)||i.replace(`:`,``)}))},_.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},_.diff=function(r,f,p){var m,h=this,g=T.p(f),_=w(r),v=(_.utcOffset()-this.utcOffset())*t,y=this-_,b=function(){return T.m(h,_)};switch(g){case d:m=b()/12;break;case l:m=b();break;case u:m=b()/3;break;case c:m=(y-v)/6048e5;break;case s:m=(y-v)/864e5;break;case o:m=y/n;break;case a:m=y/t;break;case i:m=y/e;break;default:m=y}return p?m:T.a(m)},_.daysInMonth=function(){return this.endOf(l).$D},_.$locale=function(){return b[this.$L]},_.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),r=C(e,t,!0);return r&&(n.$L=r),n},_.clone=function(){return T.w(this.$d,this)},_.toDate=function(){return new Date(this.valueOf())},_.toJSON=function(){return this.isValid()?this.toISOString():null},_.toISOString=function(){return this.$d.toISOString()},_.toString=function(){return this.$d.toUTCString()},g}(),ee=E.prototype;return w.prototype=ee,[[`$ms`,r],[`$s`,i],[`$m`,a],[`$H`,o],[`$W`,s],[`$M`,l],[`$y`,d],[`$D`,f]].forEach((function(e){ee[e[1]]=function(t){return this.$g(t,e[0],e[1])}})),w.extend=function(e,t){return e.$i||=(e(t,E,w),!0),w},w.locale=C,w.isDayjs=S,w.unix=function(e){return w(1e3*e)},w.en=b[y],w.Ls=b,w.p={},w}))})),i=e(r(),1),a={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},o={trace:n((...e)=>{},`trace`),debug:n((...e)=>{},`debug`),info:n((...e)=>{},`info`),warn:n((...e)=>{},`warn`),error:n((...e)=>{},`error`),fatal:n((...e)=>{},`fatal`)},s=n(function(e=`fatal`){let t=a.fatal;typeof e==`string`?e.toLowerCase()in a&&(t=a[e]):typeof e==`number`&&(t=e),o.trace=()=>{},o.debug=()=>{},o.info=()=>{},o.warn=()=>{},o.error=()=>{},o.fatal=()=>{},t<=a.fatal&&(o.fatal=console.error?console.error.bind(console,c(`FATAL`),`color: orange`):console.log.bind(console,`\x1B[35m`,c(`FATAL`))),t<=a.error&&(o.error=console.error?console.error.bind(console,c(`ERROR`),`color: orange`):console.log.bind(console,`\x1B[31m`,c(`ERROR`))),t<=a.warn&&(o.warn=console.warn?console.warn.bind(console,c(`WARN`),`color: orange`):console.log.bind(console,`\x1B[33m`,c(`WARN`))),t<=a.info&&(o.info=console.info?console.info.bind(console,c(`INFO`),`color: lightblue`):console.log.bind(console,`\x1B[34m`,c(`INFO`))),t<=a.debug&&(o.debug=console.debug?console.debug.bind(console,c(`DEBUG`),`color: lightgreen`):console.log.bind(console,`\x1B[32m`,c(`DEBUG`))),t<=a.trace&&(o.trace=console.debug?console.debug.bind(console,c(`TRACE`),`color: lightgreen`):console.log.bind(console,`\x1B[32m`,c(`TRACE`)))},`setLogLevel`),c=n(e=>`%c${(0,i.default)().format(`ss.SSS`)} : ${e} : `,`format`),l={value:()=>{}};function u(){for(var e=0,t=arguments.length,n={},r;e<t;++e){if(!(r=arguments[e]+``)||r in n||/[\s.]/.test(r))throw Error(`illegal type: `+r);n[r]=[]}return new d(n)}function d(e){this._=e}function f(e,t){return e.trim().split(/^|\s+/).map(function(e){var n=``,r=e.indexOf(`.`);if(r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw Error(`unknown type: `+e);return{type:e,name:n}})}d.prototype=u.prototype={constructor:d,on:function(e,t){var n=this._,r=f(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a<o;)if((i=(e=r[a]).type)&&(i=p(n[i],e.name)))return i}else{if(t!=null&&typeof t!=`function`)throw Error(`invalid callback: `+t);for(;++a<o;)if(i=(e=r[a]).type)n[i]=m(n[i],e.name,t);else if(t==null)for(i in n)n[i]=m(n[i],e.name,null);return this}},copy:function(){var e={},t=this._;for(var n in t)e[n]=t[n].slice();return new d(e)},call:function(e,t){if((i=arguments.length-2)>0)for(var n=Array(i),r=0,i,a;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(a=this._[e],r=0,i=a.length;r<i;++r)a[r].value.apply(t,n)},apply:function(e,t,n){if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(var r=this._[e],i=0,a=r.length;i<a;++i)r[i].value.apply(t,n)}};function p(e,t){for(var n=0,r=e.length,i;n<r;++n)if((i=e[n]).name===t)return i.value}function m(e,t,n){for(var r=0,i=e.length;r<i;++r)if(e[r].name===t){e[r]=l,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var h={svg:`http://www.w3.org/2000/svg`,xhtml:`http://www.w3.org/1999/xhtml`,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`};function g(e){var t=e+=``,n=t.indexOf(`:`);return n>=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),h.hasOwnProperty(t)?{space:h[t],local:e}:e}function _(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===`http://www.w3.org/1999/xhtml`&&t.documentElement.namespaceURI===`http://www.w3.org/1999/xhtml`?t.createElement(e):t.createElementNS(n,e)}}function v(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function y(e){var t=g(e);return(t.local?v:_)(t)}function b(){}function x(e){return e==null?b:function(){return this.querySelector(e)}}function S(e){typeof e!=`function`&&(e=x(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=Array(o),c,l,u=0;u<o;++u)(c=a[u])&&(l=e.call(c,c.__data__,u,a))&&(`__data__`in c&&(l.__data__=c.__data__),s[u]=l);return new O(r,this._parents)}function C(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function w(){return[]}function T(e){return e==null?w:function(){return this.querySelectorAll(e)}}function E(e){return function(){return C(e.apply(this,arguments))}}function ee(e){e=typeof e==`function`?E(e):T(e);for(var t=this._groups,n=t.length,r=[],i=[],a=0;a<n;++a)for(var o=t[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&(r.push(e.call(c,c.__data__,l,o)),i.push(c));return new O(r,i)}function te(e){return function(){return this.matches(e)}}function ne(e){return function(t){return t.matches(e)}}var re=Array.prototype.find;function ie(e){return function(){return re.call(this.children,e)}}function ae(){return this.firstElementChild}function oe(e){return this.select(e==null?ae:ie(typeof e==`function`?e:ne(e)))}var se=Array.prototype.filter;function ce(){return Array.from(this.children)}function le(e){return function(){return se.call(this.children,e)}}function ue(e){return this.selectAll(e==null?ce:le(typeof e==`function`?e:ne(e)))}function de(e){typeof e!=`function`&&(e=te(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new O(r,this._parents)}function fe(e){return Array(e.length)}function pe(){return new O(this._enter||this._groups.map(fe),this._parents)}function me(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}me.prototype={constructor:me,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function he(e){return function(){return e}}function ge(e,t,n,r,i,a){for(var o=0,s,c=t.length,l=a.length;o<l;++o)(s=t[o])?(s.__data__=a[o],r[o]=s):n[o]=new me(e,a[o]);for(;o<c;++o)(s=t[o])&&(i[o]=s)}function _e(e,t,n,r,i,a,o){var s,c,l=new Map,u=t.length,d=a.length,f=Array(u),p;for(s=0;s<u;++s)(c=t[s])&&(f[s]=p=o.call(c,c.__data__,s,t)+``,l.has(p)?i[s]=c:l.set(p,c));for(s=0;s<d;++s)p=o.call(e,a[s],s,a)+``,(c=l.get(p))?(r[s]=c,c.__data__=a[s],l.delete(p)):n[s]=new me(e,a[s]);for(s=0;s<u;++s)(c=t[s])&&l.get(f[s])===c&&(i[s]=c)}function ve(e){return e.__data__}function ye(e,t){if(!arguments.length)return Array.from(this,ve);var n=t?_e:ge,r=this._parents,i=this._groups;typeof e!=`function`&&(e=he(e));for(var a=i.length,o=Array(a),s=Array(a),c=Array(a),l=0;l<a;++l){var u=r[l],d=i[l],f=d.length,p=be(e.call(u,u&&u.__data__,l,r)),m=p.length,h=s[l]=Array(m),g=o[l]=Array(m);n(u,d,h,g,c[l]=Array(f),p,t);for(var _=0,v=0,y,b;_<m;++_)if(y=h[_]){for(_>=v&&(v=_+1);!(b=g[v])&&++v<m;);y._next=b||null}}return o=new O(o,r),o._enter=s,o._exit=c,o}function be(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function xe(){return new O(this._exit||this._groups.map(fe),this._parents)}function Se(e,t,n){var r=this.enter(),i=this,a=this.exit();return typeof e==`function`?(r=e(r),r&&=r.selection()):r=r.append(e+``),t!=null&&(i=t(i),i&&=i.selection()),n==null?a.remove():n(a),r&&i?r.merge(i).order():i}function Ce(e){for(var t=e.selection?e.selection():e,n=this._groups,r=t._groups,i=n.length,a=r.length,o=Math.min(i,a),s=Array(i),c=0;c<o;++c)for(var l=n[c],u=r[c],d=l.length,f=s[c]=Array(d),p,m=0;m<d;++m)(p=l[m]||u[m])&&(f[m]=p);for(;c<i;++c)s[c]=n[c];return new O(s,this._parents)}function we(){for(var e=this._groups,t=-1,n=e.length;++t<n;)for(var r=e[t],i=r.length-1,a=r[i],o;--i>=0;)(o=r[i])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function Te(e){e||=Ee;function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}for(var n=this._groups,r=n.length,i=Array(r),a=0;a<r;++a){for(var o=n[a],s=o.length,c=i[a]=Array(s),l,u=0;u<s;++u)(l=o[u])&&(c[u]=l);c.sort(t)}return new O(i,this._parents).order()}function Ee(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function De(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function Oe(){return Array.from(this)}function ke(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null}function Ae(){let e=0;for(let t of this)++e;return e}function je(){return!this.node()}function Me(e){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var i=t[n],a=0,o=i.length,s;a<o;++a)(s=i[a])&&e.call(s,s.__data__,a,i);return this}function Ne(e){return function(){this.removeAttribute(e)}}function Pe(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Fe(e,t){return function(){this.setAttribute(e,t)}}function Ie(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function Le(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function Re(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function ze(e,t){var n=g(e);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((t==null?n.local?Pe:Ne:typeof t==`function`?n.local?Re:Le:n.local?Ie:Fe)(n,t))}function Be(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function Ve(e){return function(){this.style.removeProperty(e)}}function He(e,t,n){return function(){this.style.setProperty(e,t,n)}}function Ue(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function We(e,t,n){return arguments.length>1?this.each((t==null?Ve:typeof t==`function`?Ue:He)(e,t,n??``)):D(this.node(),e)}function D(e,t){return e.style.getPropertyValue(t)||Be(e).getComputedStyle(e,null).getPropertyValue(t)}function Ge(e){return function(){delete this[e]}}function Ke(e,t){return function(){this[e]=t}}function qe(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function Je(e,t){return arguments.length>1?this.each((t==null?Ge:typeof t==`function`?qe:Ke)(e,t)):this.node()[e]}function Ye(e){return e.trim().split(/^|\s+/)}function Xe(e){return e.classList||new Ze(e)}function Ze(e){this._node=e,this._names=Ye(e.getAttribute(`class`)||``)}Ze.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute(`class`,this._names.join(` `)))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute(`class`,this._names.join(` `)))},contains:function(e){return this._names.indexOf(e)>=0}};function Qe(e,t){for(var n=Xe(e),r=-1,i=t.length;++r<i;)n.add(t[r])}function $e(e,t){for(var n=Xe(e),r=-1,i=t.length;++r<i;)n.remove(t[r])}function et(e){return function(){Qe(this,e)}}function tt(e){return function(){$e(this,e)}}function nt(e,t){return function(){(t.apply(this,arguments)?Qe:$e)(this,e)}}function rt(e,t){var n=Ye(e+``);if(arguments.length<2){for(var r=Xe(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof t==`function`?nt:t?et:tt)(n,t))}function it(){this.textContent=``}function at(e){return function(){this.textContent=e}}function ot(e){return function(){var t=e.apply(this,arguments);this.textContent=t??``}}function st(e){return arguments.length?this.each(e==null?it:(typeof e==`function`?ot:at)(e)):this.node().textContent}function ct(){this.innerHTML=``}function lt(e){return function(){this.innerHTML=e}}function ut(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??``}}function dt(e){return arguments.length?this.each(e==null?ct:(typeof e==`function`?ut:lt)(e)):this.node().innerHTML}function ft(){this.nextSibling&&this.parentNode.appendChild(this)}function pt(){return this.each(ft)}function mt(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function ht(){return this.each(mt)}function gt(e){var t=typeof e==`function`?e:y(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function _t(){return null}function vt(e,t){var n=typeof e==`function`?e:y(e),r=t==null?_t:typeof t==`function`?t:x(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function yt(){var e=this.parentNode;e&&e.removeChild(this)}function bt(){return this.each(yt)}function xt(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function St(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Ct(e){return this.select(e?St:xt)}function wt(e){return arguments.length?this.property(`__data__`,e):this.node().__data__}function Tt(e){return function(t){e.call(this,t,this.__data__)}}function Et(e){return e.trim().split(/^|\s+/).map(function(e){var t=``,n=e.indexOf(`.`);return n>=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}function Dt(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,a;n<i;++n)a=t[n],(!e.type||a.type===e.type)&&a.name===e.name?this.removeEventListener(a.type,a.listener,a.options):t[++r]=a;++r?t.length=r:delete this.__on}}}function Ot(e,t,n){return function(){var r=this.__on,i,a=Tt(t);if(r){for(var o=0,s=r.length;o<s;++o)if((i=r[o]).type===e.type&&i.name===e.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=a,i.options=n),i.value=t;return}}this.addEventListener(e.type,a,n),i={type:e.type,name:e.name,value:t,listener:a,options:n},r?r.push(i):this.__on=[i]}}function kt(e,t,n){var r=Et(e+``),i,a=r.length,o;if(arguments.length<2){var s=this.node().__on;if(s){for(var c=0,l=s.length,u;c<l;++c)for(i=0,u=s[c];i<a;++i)if((o=r[i]).type===u.type&&o.name===u.name)return u.value}}else{for(s=t?Ot:Dt,i=0;i<a;++i)this.each(s(r[i],t,n));return this}}function At(e,t,n){var r=Be(e),i=r.CustomEvent;typeof i==`function`?i=new i(t,n):(i=r.document.createEvent(`Event`),n?(i.initEvent(t,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(t,!1,!1)),e.dispatchEvent(i)}function jt(e,t){return function(){return At(this,e,t)}}function Mt(e,t){return function(){return At(this,e,t.apply(this,arguments))}}function Nt(e,t){return this.each((typeof t==`function`?Mt:jt)(e,t))}function*Pt(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length,o;i<a;++i)(o=r[i])&&(yield o)}var Ft=[null];function O(e,t){this._groups=e,this._parents=t}function k(){return new O([[document.documentElement]],Ft)}function It(){return this}O.prototype=k.prototype={constructor:O,select:S,selectAll:ee,selectChild:oe,selectChildren:ue,filter:de,data:ye,enter:pe,exit:xe,join:Se,merge:Ce,selection:It,order:we,sort:Te,call:De,nodes:Oe,node:ke,size:Ae,empty:je,each:Me,attr:ze,style:We,property:Je,classed:rt,text:st,html:dt,raise:pt,lower:ht,append:gt,insert:vt,remove:bt,clone:Ct,datum:wt,on:kt,dispatch:Nt,[Symbol.iterator]:Pt};function Lt(e){return typeof e==`string`?new O([[document.querySelector(e)]],[document.documentElement]):new O([[e]],Ft)}function Rt(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function zt(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function A(){}var j=.7,M=1/j,N=`\\s*([+-]?\\d+)\\s*`,P=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,F=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,Bt=/^#([0-9a-f]{3,8})$/,Vt=RegExp(`^rgb\\(${N},${N},${N}\\)$`),Ht=RegExp(`^rgb\\(${F},${F},${F}\\)$`),Ut=RegExp(`^rgba\\(${N},${N},${N},${P}\\)$`),Wt=RegExp(`^rgba\\(${F},${F},${F},${P}\\)$`),Gt=RegExp(`^hsl\\(${P},${F},${F}\\)$`),Kt=RegExp(`^hsla\\(${P},${F},${F},${P}\\)$`),qt={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Rt(A,I,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Jt,formatHex:Jt,formatHex8:Yt,formatHsl:Xt,formatRgb:Zt,toString:Zt});function Jt(){return this.rgb().formatHex()}function Yt(){return this.rgb().formatHex8()}function Xt(){return cn(this).formatHsl()}function Zt(){return this.rgb().formatRgb()}function I(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=Bt.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?Qt(t):n===3?new L(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?$t(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?$t(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Vt.exec(e))?new L(t[1],t[2],t[3],1):(t=Ht.exec(e))?new L(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Ut.exec(e))?$t(t[1],t[2],t[3],t[4]):(t=Wt.exec(e))?$t(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Gt.exec(e))?sn(t[1],t[2]/100,t[3]/100,1):(t=Kt.exec(e))?sn(t[1],t[2]/100,t[3]/100,t[4]):qt.hasOwnProperty(e)?Qt(qt[e]):e===`transparent`?new L(NaN,NaN,NaN,0):null}function Qt(e){return new L(e>>16&255,e>>8&255,e&255,1)}function $t(e,t,n,r){return r<=0&&(e=t=n=NaN),new L(e,t,n,r)}function en(e){return e instanceof A||(e=I(e)),e?(e=e.rgb(),new L(e.r,e.g,e.b,e.opacity)):new L}function tn(e,t,n,r){return arguments.length===1?en(e):new L(e,t,n,r??1)}function L(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Rt(L,tn,zt(A,{brighter(e){return e=e==null?M:M**+e,new L(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?j:j**+e,new L(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new L(R(this.r),R(this.g),R(this.b),on(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:nn,formatHex:nn,formatHex8:rn,formatRgb:an,toString:an}));function nn(){return`#${z(this.r)}${z(this.g)}${z(this.b)}`}function rn(){return`#${z(this.r)}${z(this.g)}${z(this.b)}${z((isNaN(this.opacity)?1:this.opacity)*255)}`}function an(){let e=on(this.opacity);return`${e===1?`rgb(`:`rgba(`}${R(this.r)}, ${R(this.g)}, ${R(this.b)}${e===1?`)`:`, ${e})`}`}function on(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function R(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function z(e){return e=R(e),(e<16?`0`:``)+e.toString(16)}function sn(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new B(e,t,n,r)}function cn(e){if(e instanceof B)return new B(e.h,e.s,e.l,e.opacity);if(e instanceof A||(e=I(e)),!e)return new B;if(e instanceof B)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n<r)*6:n===a?(r-t)/s+2:(t-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new B(o,s,c,e.opacity)}function ln(e,t,n,r){return arguments.length===1?cn(e):new B(e,t,n,r??1)}function B(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Rt(B,ln,zt(A,{brighter(e){return e=e==null?M:M**+e,new B(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?j:j**+e,new B(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new L(dn(e>=240?e-240:e+120,i,r),dn(e,i,r),dn(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new B(un(this.h),V(this.s),V(this.l),on(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=on(this.opacity);return`${e===1?`hsl(`:`hsla(`}${un(this.h)}, ${V(this.s)*100}%, ${V(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function un(e){return e=(e||0)%360,e<0?e+360:e}function V(e){return Math.max(0,Math.min(1,e||0))}function dn(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var H=e=>()=>e;function fn(e,t){return function(n){return e+n*t}}function pn(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function mn(e,t){var n=t-e;return n?fn(e,n>180||n<-180?n-360*Math.round(n/360):n):H(isNaN(e)?t:e)}function hn(e){return(e=+e)==1?gn:function(t,n){return n-t?pn(t,n,e):H(isNaN(t)?n:t)}}function gn(e,t){var n=t-e;return n?fn(e,n):H(isNaN(e)?t:e)}var _n=(function e(t){var n=hn(t);function r(e,t){var r=n((e=tn(e)).r,(t=tn(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=gn(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function U(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}var vn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,yn=new RegExp(vn.source,`g`);function bn(e){return function(){return e}}function xn(e){return function(t){return e(t)+``}}function Sn(e,t){var n=vn.lastIndex=yn.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=vn.exec(e))&&(i=yn.exec(t));)(a=i.index)>n&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:U(r,i)})),n=yn.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?xn(c[0].x):bn(t):(t=c.length,function(e){for(var n=0,r;n<t;++n)s[(r=c[n]).i]=r.x(e);return s.join(``)})}var Cn=180/Math.PI,wn={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Tn(e,t,n,r,i,a){var o,s,c;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(c=e*n+t*r)&&(n-=e*c,r-=t*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),e*r<t*n&&(e=-e,t=-t,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(t,e)*Cn,skewX:Math.atan(c)*Cn,scaleX:o,scaleY:s}}var En;function Dn(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?wn:Tn(t.a,t.b,t.c,t.d,t.e,t.f)}function On(e){return e==null||(En||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),En.setAttribute(`transform`,e),!(e=En.transform.baseVal.consolidate()))?wn:(e=e.matrix,Tn(e.a,e.b,e.c,e.d,e.e,e.f))}function kn(e,t,n,r){function i(e){return e.length?e.pop()+` `:``}function a(e,r,i,a,o,s){if(e!==i||r!==a){var c=o.push(`translate(`,null,t,null,n);s.push({i:c-4,x:U(e,i)},{i:c-2,x:U(r,a)})}else(i||a)&&o.push(`translate(`+i+t+a+n)}function o(e,t,n,a){e===t?t&&n.push(i(n)+`rotate(`+t+r):(e-t>180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:U(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:U(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:U(e,n)},{i:s-2,x:U(t,r)})}else(n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t<n;)r[(a=i[t]).i]=a.x(e);return r.join(``)}}}var An=kn(Dn,`px, `,`px)`,`deg)`),jn=kn(On,`, `,`)`,`)`),W=0,G=0,Mn=0,Nn=1e3,Pn,K,Fn=0,q=0,In=0,J=typeof performance==`object`&&performance.now?performance:Date,Ln=typeof window==`object`&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function Rn(){return q||=(Ln(zn),J.now()+In)}function zn(){q=0}function Bn(){this._call=this._time=this._next=null}Bn.prototype=Vn.prototype={constructor:Bn,restart:function(e,t,n){if(typeof e!=`function`)throw TypeError(`callback is not a function`);n=(n==null?Rn():+n)+(t==null?0:+t),!this._next&&K!==this&&(K?K._next=this:Pn=this,K=this),this._call=e,this._time=n,Kn()},stop:function(){this._call&&(this._call=null,this._time=1/0,Kn())}};function Vn(e,t,n){var r=new Bn;return r.restart(e,t,n),r}function Hn(){Rn(),++W;for(var e=Pn,t;e;)(t=q-e._time)>=0&&e._call.call(void 0,t),e=e._next;--W}function Un(){q=(Fn=J.now())+In,W=G=0;try{Hn()}finally{W=0,Gn(),q=0}}function Wn(){var e=J.now(),t=e-Fn;t>Nn&&(In-=t,Fn=e)}function Gn(){for(var e,t=Pn,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:Pn=n);K=e,Kn(r)}function Kn(e){W||(G&&=clearTimeout(G),e-q>24?(e<1/0&&(G=setTimeout(Un,e-J.now()-In)),Mn&&=clearInterval(Mn)):(Mn||=(Fn=J.now(),setInterval(Wn,Nn)),W=1,Ln(Un)))}function qn(e,t,n){var r=new Bn;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var Jn=u(`start`,`end`,`cancel`,`interrupt`),Yn=[];function Xn(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;Qn(e,n,{name:t,index:r,group:i,on:Jn,tween:Yn,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function Zn(e,t){var n=X(e,t);if(n.state>0)throw Error(`too late; already scheduled`);return n}function Y(e,t){var n=X(e,t);if(n.state>3)throw Error(`too late; already running`);return n}function X(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function Qn(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=Vn(a,0,n.time);function a(e){n.state=1,n.timer.restart(o,n.delay,n.time),n.delay<=e&&o(e-n.delay)}function o(a){var l,u,d,f;if(n.state!==1)return c();for(l in r)if(f=r[l],f.name===n.name){if(f.state===3)return qn(o);f.state===4?(f.state=6,f.timer.stop(),f.on.call(`interrupt`,e,e.__data__,f.index,f.group),delete r[l]):+l<t&&(f.state=6,f.timer.stop(),f.on.call(`cancel`,e,e.__data__,f.index,f.group),delete r[l])}if(qn(function(){n.state===3&&(n.state=4,n.timer.restart(s,n.delay,n.time),s(a))}),n.state=2,n.on.call(`start`,e,e.__data__,n.index,n.group),n.state===2){for(n.state=3,i=Array(d=n.tween.length),l=0,u=-1;l<d;++l)(f=n.tween[l].value.call(e,e.__data__,n.index,n.group))&&(i[++u]=f);i.length=u+1}}function s(t){for(var r=t<n.duration?n.ease.call(null,t/n.duration):(n.timer.restart(c),n.state=5,1),a=-1,o=i.length;++a<o;)i[a].call(e,r);n.state===5&&(n.on.call(`end`,e,e.__data__,n.index,n.group),c())}function c(){for(var i in n.state=6,n.timer.stop(),delete r[t],r)return;delete e.__transition}}function $n(e,t){var n=e.__transition,r,i,a=!0,o;if(n){for(o in t=t==null?null:t+``,n)(r=n[o]).name===t?(i=r.state>2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(i?`interrupt`:`cancel`,e,e.__data__,r.index,r.group),delete n[o]):a=!1;a&&delete e.__transition}}function er(e){return this.each(function(){$n(this,e)})}function tr(e,t){var n,r;return function(){var i=Y(this,e),a=i.tween;if(a!==n){r=n=a;for(var o=0,s=r.length;o<s;++o)if(r[o].name===t){r=r.slice(),r.splice(o,1);break}}i.tween=r}}function nr(e,t,n){var r,i;if(typeof n!=`function`)throw Error();return function(){var a=Y(this,e),o=a.tween;if(o!==r){i=(r=o).slice();for(var s={name:t,value:n},c=0,l=i.length;c<l;++c)if(i[c].name===t){i[c]=s;break}c===l&&i.push(s)}a.tween=i}}function rr(e,t){var n=this._id;if(e+=``,arguments.length<2){for(var r=X(this.node(),n).tween,i=0,a=r.length,o;i<a;++i)if((o=r[i]).name===e)return o.value;return null}return this.each((t==null?tr:nr)(n,e,t))}function ir(e,t,n){var r=e._id;return e.each(function(){var e=Y(this,r);(e.value||={})[t]=n.apply(this,arguments)}),function(e){return X(e,r).value[t]}}function ar(e,t){var n;return(typeof t==`number`?U:t instanceof I?_n:(n=I(t))?(t=n,_n):Sn)(e,t)}function or(e){return function(){this.removeAttribute(e)}}function sr(e){return function(){this.removeAttributeNS(e.space,e.local)}}function cr(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttribute(e);return o===i?null:o===r?a:a=t(r=o,n)}}function lr(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttributeNS(e.space,e.local);return o===i?null:o===r?a:a=t(r=o,n)}}function ur(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttribute(e):(o=this.getAttribute(e),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function dr(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttributeNS(e.space,e.local):(o=this.getAttributeNS(e.space,e.local),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function fr(e,t){var n=g(e),r=n===`transform`?jn:ar;return this.attrTween(e,typeof t==`function`?(n.local?dr:ur)(n,r,ir(this,`attr.`+e,t)):t==null?(n.local?sr:or)(n):(n.local?lr:cr)(n,r,t))}function pr(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function mr(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function hr(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&mr(e,i)),n}return i._value=t,i}function gr(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&pr(e,i)),n}return i._value=t,i}function _r(e,t){var n=`attr.`+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!=`function`)throw Error();var r=g(e);return this.tween(n,(r.local?hr:gr)(r,t))}function vr(e,t){return function(){Zn(this,e).delay=+t.apply(this,arguments)}}function yr(e,t){return t=+t,function(){Zn(this,e).delay=t}}function br(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?vr:yr)(t,e)):X(this.node(),t).delay}function xr(e,t){return function(){Y(this,e).duration=+t.apply(this,arguments)}}function Sr(e,t){return t=+t,function(){Y(this,e).duration=t}}function Cr(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?xr:Sr)(t,e)):X(this.node(),t).duration}function wr(e,t){if(typeof t!=`function`)throw Error();return function(){Y(this,e).ease=t}}function Tr(e){var t=this._id;return arguments.length?this.each(wr(t,e)):X(this.node(),t).ease}function Er(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!=`function`)throw Error();Y(this,e).ease=n}}function Dr(e){if(typeof e!=`function`)throw Error();return this.each(Er(this._id,e))}function Or(e){typeof e!=`function`&&(e=te(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new Z(r,this._parents,this._name,this._id)}function kr(e){if(e._id!==this._id)throw Error();for(var t=this._groups,n=e._groups,r=t.length,i=n.length,a=Math.min(r,i),o=Array(r),s=0;s<a;++s)for(var c=t[s],l=n[s],u=c.length,d=o[s]=Array(u),f,p=0;p<u;++p)(f=c[p]||l[p])&&(d[p]=f);for(;s<r;++s)o[s]=t[s];return new Z(o,this._parents,this._name,this._id)}function Ar(e){return(e+``).trim().split(/^|\s+/).every(function(e){var t=e.indexOf(`.`);return t>=0&&(e=e.slice(0,t)),!e||e===`start`})}function jr(e,t,n){var r,i,a=Ar(t)?Zn:Y;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function Mr(e,t){var n=this._id;return arguments.length<2?X(this.node(),n).on.on(e):this.each(jr(n,e,t))}function Nr(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function Pr(){return this.on(`end.remove`,Nr(this._id))}function Fr(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=x(e));for(var r=this._groups,i=r.length,a=Array(i),o=0;o<i;++o)for(var s=r[o],c=s.length,l=a[o]=Array(c),u,d,f=0;f<c;++f)(u=s[f])&&(d=e.call(u,u.__data__,f,s))&&(`__data__`in u&&(d.__data__=u.__data__),l[f]=d,Xn(l[f],t,n,f,l,X(u,n)));return new Z(a,this._parents,t,n)}function Ir(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=T(e));for(var r=this._groups,i=r.length,a=[],o=[],s=0;s<i;++s)for(var c=r[s],l=c.length,u,d=0;d<l;++d)if(u=c[d]){for(var f=e.call(u,u.__data__,d,c),p,m=X(u,n),h=0,g=f.length;h<g;++h)(p=f[h])&&Xn(p,t,n,h,f,m);a.push(f),o.push(u)}return new Z(a,o,t,n)}var Lr=k.prototype.constructor;function Rr(){return new Lr(this._groups,this._parents)}function zr(e,t){var n,r,i;return function(){var a=D(this,e),o=(this.style.removeProperty(e),D(this,e));return a===o?null:a===n&&o===r?i:i=t(n=a,r=o)}}function Br(e){return function(){this.style.removeProperty(e)}}function Vr(e,t,n){var r,i=n+``,a;return function(){var o=D(this,e);return o===i?null:o===r?a:a=t(r=o,n)}}function Hr(e,t,n){var r,i,a;return function(){var o=D(this,e),s=n(this),c=s+``;return s??(c=s=(this.style.removeProperty(e),D(this,e))),o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s))}}function Ur(e,t){var n,r,i,a=`style.`+t,o=`end.`+a,s;return function(){var c=Y(this,e),l=c.on,u=c.value[a]==null?s||=Br(t):void 0;(l!==n||i!==u)&&(r=(n=l).copy()).on(o,i=u),c.on=r}}function Wr(e,t,n){var r=(e+=``)==`transform`?An:ar;return t==null?this.styleTween(e,zr(e,r)).on(`end.style.`+e,Br(e)):typeof t==`function`?this.styleTween(e,Hr(e,r,ir(this,`style.`+e,t))).each(Ur(this._id,e)):this.styleTween(e,Vr(e,r,t),n).on(`end.style.`+e,null)}function Gr(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function Kr(e,t,n){var r,i;function a(){var a=t.apply(this,arguments);return a!==i&&(r=(i=a)&&Gr(e,a,n)),r}return a._value=t,a}function qr(e,t,n){var r=`style.`+(e+=``);if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!=`function`)throw Error();return this.tween(r,Kr(e,t,n??``))}function Jr(e){return function(){this.textContent=e}}function Yr(e){return function(){var t=e(this);this.textContent=t??``}}function Xr(e){return this.tween(`text`,typeof e==`function`?Yr(ir(this,`text`,e)):Jr(e==null?``:e+``))}function Zr(e){return function(t){this.textContent=e.call(this,t)}}function Qr(e){var t,n;function r(){var r=e.apply(this,arguments);return r!==n&&(t=(n=r)&&Zr(r)),t}return r._value=e,r}function $r(e){var t=`text`;if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!=`function`)throw Error();return this.tween(t,Qr(e))}function ei(){for(var e=this._name,t=this._id,n=ri(),r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)if(c=o[l]){var u=X(c,t);Xn(c,e,n,l,o,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new Z(r,this._parents,e,n)}function ti(){var e,t,n=this,r=n._id,i=n.size();return new Promise(function(a,o){var s={value:o},c={value:function(){--i===0&&a()}};n.each(function(){var n=Y(this,r),i=n.on;i!==e&&(t=(e=i).copy(),t._.cancel.push(s),t._.interrupt.push(s),t._.end.push(c)),n.on=t}),i===0&&a()})}var ni=0;function Z(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function ri(){return++ni}var Q=k.prototype;Z.prototype={constructor:Z,select:Fr,selectAll:Ir,selectChild:Q.selectChild,selectChildren:Q.selectChildren,filter:Or,merge:kr,selection:Rr,transition:ei,call:Q.call,nodes:Q.nodes,node:Q.node,size:Q.size,empty:Q.empty,each:Q.each,on:Mr,attr:fr,attrTween:_r,style:Wr,styleTween:qr,text:Xr,textTween:$r,remove:Pr,tween:rr,delay:br,duration:Cr,ease:Tr,easeVarying:Dr,end:ti,[Symbol.iterator]:Q[Symbol.iterator]};function ii(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var ai={time:null,delay:0,duration:250,ease:ii};function oi(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw Error(`transition ${t} not found`);return n}function si(e){var t,n;e instanceof Z?(t=e._id,e=e._name):(t=ri(),(n=ai).time=Rn(),e=e==null?null:e+``);for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&Xn(c,e,t,l,o,n||oi(c,t));return new Z(r,this._parents,e,t)}k.prototype.interrupt=er,k.prototype.transition=si;var{abs:ci,max:li,min:ui}=Math;[`w`,`e`].map(di),[`n`,`s`].map(di),[`n`,`w`,`e`,`s`,`nw`,`ne`,`sw`,`se`].map(di);function di(e){return{type:e}}function $(e,t,n){this.k=e,this.x=t,this.y=n}$.prototype={constructor:$,scale:function(e){return e===1?this:new $(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new $(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return`translate(`+this.x+`,`+this.y+`) scale(`+this.k+`)`}};var fi=new $(1,0,0);pi.prototype=$.prototype;function pi(e){for(;!e.__zoom;)if(!(e=e.parentNode))return fi;return e.__zoom}export{gn as a,L as c,Rt as d,zt as f,r as g,s as h,mn as i,I as l,o as m,U as n,H as o,Lt as p,_n as r,A as s,Sn as t,en as u};
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{Kr as t}from"./icons-CYDRRPKW.js";var n=e(t(),1),r=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},i=(e=>e?r(e):r),a=e=>e;function o(e,t=a){let r=n.useSyncExternalStore(e.subscribe,n.useCallback(()=>t(e.getState()),[e,t]),n.useCallback(()=>t(e.getInitialState()),[e,t]));return n.useDebugValue(r),r}var s=e=>{let t=i(e),n=e=>o(t,e);return Object.assign(n,t),n},c=(e=>e?s(e):s);function l(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}var u=e=>t=>{try{let n=e(t);return n instanceof Promise?n:{then(e){return u(e)(n)},catch(e){return this}}}catch(e){return{then(e){return this},catch(t){return u(t)(e)}}}},d=(e,t)=>(n,r,i)=>{let a={storage:l(()=>window.localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},o=!1,s=0,c=new Set,d=new Set,f=a.storage;if(!f)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),n(...e)},r,i);let p=()=>{let e=a.partialize({...r()});return f.setItem(a.name,{state:e,version:a.version})},m=i.setState;i.setState=(e,t)=>(m(e,t),p());let h=e((...e)=>(n(...e),p()),r,i);i.getInitialState=()=>h;let g,_=()=>{if(!f)return;let e=++s;o=!1,c.forEach(e=>e(r()??h));let t=a.onRehydrateStorage?.call(a,r()??h)||void 0;return u(f.getItem.bind(f))(a.name).then(e=>{if(e){if(typeof e.version==`number`&&e.version!==a.version){if(a.migrate){let t=a.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state]}return[!1,void 0]}).then(t=>{if(e!==s)return;let[i,o]=t;if(g=a.merge(o,r()??h),n(g,!0),i)return p()}).then(()=>{e===s&&(t?.(r(),void 0),g=r(),o=!0,d.forEach(e=>e(g)))}).catch(n=>{e===s&&t?.(void 0,n)})};return i.persist={setOptions:e=>{a={...a,...e},e.storage&&(f=e.storage)},clearStorage:()=>{++s,f?.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>_(),hasHydrated:()=>o,onHydrate:e=>(c.add(e),()=>{c.delete(e)}),onFinishHydration:e=>(d.add(e),()=>{d.delete(e)})},a.skipHydration||_(),g||h};export{c as n,d as t};