@a-company/paradigm 5.10.0 → 5.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) hide show
  1. package/dist/accept-orchestration-IUAWQZUN.js +18 -0
  2. package/dist/add-P76GEMGF.js +8 -0
  3. package/dist/agent-UUTYOFTH.js +33 -0
  4. package/dist/agent-loader-EPXURMO7.js +2 -0
  5. package/dist/agent-loader-PYGPX6D2.js +2 -0
  6. package/dist/agent-state-KSQ3S7OB.js +2 -0
  7. package/dist/agents-suggest-HYTFMQD3.js +10 -0
  8. package/dist/aggregate-W66DM3GA.js +10 -0
  9. package/dist/ambient-HYZR42NX.js +35 -0
  10. package/dist/assess-UFPYEJKP.js +9 -0
  11. package/dist/auto-RHJXOZFL.js +14 -0
  12. package/dist/beacon-5QVYV5DF.js +13 -0
  13. package/dist/calibration-OLJYB5HN.js +7 -0
  14. package/dist/check-THVGY4R5.js +14 -0
  15. package/dist/chunk-22ISTMKI.js +31 -0
  16. package/dist/chunk-2QO33NYK.js +3 -0
  17. package/dist/chunk-33LKBMVK.js +134 -0
  18. package/dist/chunk-4QADCWPU.js +7 -0
  19. package/dist/chunk-4TXOVRWD.js +3 -0
  20. package/dist/chunk-4UJ4NIEQ.js +4 -0
  21. package/dist/chunk-4ZGGWZ32.js +3 -0
  22. package/dist/chunk-5TAVYPOV.js +2 -0
  23. package/dist/chunk-6EX37L4Q.js +8 -0
  24. package/dist/chunk-AD5TAD2A.js +5 -0
  25. package/dist/chunk-AGVAHVUA.js +2 -0
  26. package/dist/chunk-AO7ZSRME.js +13 -0
  27. package/dist/chunk-BFD3GFRK.js +2 -0
  28. package/dist/chunk-D34YFK4M.js +6 -0
  29. package/dist/chunk-DVZWCXB6.js +2 -0
  30. package/dist/chunk-EKZDFEJW.js +2 -0
  31. package/dist/chunk-ET5XJTSX.js +2 -0
  32. package/dist/chunk-FYDRENK7.js +3 -0
  33. package/dist/chunk-HMQ5BHP2.js +743 -0
  34. package/dist/chunk-HXKWL3VK.js +29 -0
  35. package/dist/chunk-IZSBGW6E.js +2 -0
  36. package/dist/chunk-J32OPJEX.js +2 -0
  37. package/dist/chunk-JBDMCRPP.js +7 -0
  38. package/dist/chunk-JIXHEBGK.js +7 -0
  39. package/dist/chunk-JNSJVCTU.js +2 -0
  40. package/dist/chunk-JQKKVAAN.js +2 -0
  41. package/dist/chunk-KLBH26PA.js +429 -0
  42. package/dist/chunk-L6K5HNDL.js +24 -0
  43. package/dist/chunk-LKAT7IAK.js +2 -0
  44. package/dist/chunk-M4UMM6DC.js +5 -0
  45. package/dist/chunk-NKYNHSA5.js +424 -0
  46. package/dist/chunk-NW6OKHE6.js +5 -0
  47. package/dist/chunk-NXRVR37G.js +60 -0
  48. package/dist/chunk-ODVKPZZ4.js +2 -0
  49. package/dist/chunk-PUBB7LIT.js +5 -0
  50. package/dist/chunk-Q2J542ST.js +2 -0
  51. package/dist/chunk-QGZRM6ZB.js +2 -0
  52. package/dist/chunk-QNZEG7IT.js +13 -0
  53. package/dist/chunk-QT2LKB3P.js +7 -0
  54. package/dist/chunk-RVRARWSY.js +9 -0
  55. package/dist/chunk-T6IDXUUA.js +2 -0
  56. package/dist/chunk-TYWB5IQJ.js +3 -0
  57. package/dist/chunk-UIKLE3WD.js +2 -0
  58. package/dist/chunk-V7K6CQVX.js +111 -0
  59. package/dist/chunk-VCKKJDLP.js +8 -0
  60. package/dist/chunk-VG7FN2TU.js +4 -0
  61. package/dist/chunk-W5IWDW4Y.js +16 -0
  62. package/dist/chunk-W7C6FFMO.js +8 -0
  63. package/dist/chunk-WESTEMIM.js +10 -0
  64. package/dist/chunk-WR6D3SC6.js +5 -0
  65. package/dist/chunk-WS2N27RX.js +3 -0
  66. package/dist/chunk-XMAV5AG6.js +2 -0
  67. package/dist/chunk-XROULIQN.js +2 -0
  68. package/dist/chunk-XUFYOXOU.js +3 -0
  69. package/dist/chunk-Y4XFVDZC.js +3 -0
  70. package/dist/chunk-Y6KXTQBG.js +2 -0
  71. package/dist/{chunk-GTR2TBIJ.js → chunk-Z2UZUCY6.js} +237 -1047
  72. package/dist/chunk-Z34K6GY2.js +8 -0
  73. package/dist/claude-4LR3LJQZ.js +13 -0
  74. package/dist/claude-cli-UP6HGH7C.js +6 -0
  75. package/dist/claude-code-RLJ4GX77.js +11 -0
  76. package/dist/claude-code-teams-R37HJY3Y.js +29 -0
  77. package/dist/commands-LMUD5L6R.js +455 -0
  78. package/dist/compliance-GZ7UAOG3.js +6 -0
  79. package/dist/conductor-Y5IXELTL.js +4 -0
  80. package/dist/config-schema-HR7LDEQ6.js +2 -0
  81. package/dist/constellation-CG7C4WFE.js +13 -0
  82. package/dist/context-audit-RSSRX6XC.js +6 -0
  83. package/dist/cost-IDNVMAEV.js +10 -0
  84. package/dist/cost-PK4KIF7R.js +2 -0
  85. package/dist/cursor-cli-QKF7Z6M2.js +4 -0
  86. package/dist/cursorrules-U5O4G5T4.js +14 -0
  87. package/dist/decision-loader-2XPZE4EZ.js +2 -0
  88. package/dist/delete-P5VULXR4.js +14 -0
  89. package/dist/diff-RTFUKJHF.js +9 -0
  90. package/dist/discipline-H7LDI6NT.js +2 -0
  91. package/dist/dist-3ZCH25SG.js +2 -0
  92. package/dist/dist-KGRCLBJP-2QAPFYNF.js +39 -0
  93. package/dist/dist-R3RWD35F.js +2 -0
  94. package/dist/dist-VGFSP3XM.js +2 -0
  95. package/dist/dist-VXCZWVVJ.js +2 -0
  96. package/dist/dist-W3XCATBJ.js +2 -0
  97. package/dist/docs-EDQ2STFK.js +2 -0
  98. package/dist/docs-RXPN6CK7.js +12 -0
  99. package/dist/doctor-2T2QL6VM.js +2 -0
  100. package/dist/drift-ILZE5BFJ.js +13 -0
  101. package/dist/echo-UPTQUEDU.js +46 -0
  102. package/dist/edit-GUU3HBVW.js +9 -0
  103. package/dist/event-Y3VXC2RV.js +3 -0
  104. package/dist/explain-files-3GPZUETV.js +4 -0
  105. package/dist/export-CV5KCTPS.js +2 -0
  106. package/dist/flow-S3RQ4YPY.js +11 -0
  107. package/dist/global-C44FW4G2.js +13 -0
  108. package/dist/graduate-3BBSC27A.js +5 -0
  109. package/dist/graph-CNDE5TAT.js +2 -0
  110. package/dist/graph-server-COZR5C3Z.js +14 -0
  111. package/dist/habits-4J2KRYUL.js +42 -0
  112. package/dist/history-UW454SDP.js +12 -0
  113. package/dist/hooks-XH52VGOU.js +2 -0
  114. package/dist/index.js +15 -1039
  115. package/dist/init-24MAQJFM.js +2 -0
  116. package/dist/integrity-UYDOOJDP.js +7 -0
  117. package/dist/integrity-checker-DHGMZQDG.js +2 -0
  118. package/dist/journal-loader-GLH7XFTK.js +2 -0
  119. package/dist/lint-IGKE6UPS.js +26 -0
  120. package/dist/list-5IUGP3ZB.js +7 -0
  121. package/dist/list-YKIQNKGB.js +6 -0
  122. package/dist/lore-loader-RVQI5GXL.js +2 -0
  123. package/dist/lore-loader-XY5MZRR2.js +2 -0
  124. package/dist/lore-server-FC2GMDLT.js +14 -0
  125. package/dist/manual-RXSPSFLL.js +20 -0
  126. package/dist/mcp.js +93 -20484
  127. package/dist/migrate-X5OMAFAQ.js +59 -0
  128. package/dist/migrate-assessments-GEI5WMI2.js +4 -0
  129. package/dist/model-discovery-HMB3YI4L.js +2 -0
  130. package/dist/nomination-engine-XF7TWPAP.js +2 -0
  131. package/dist/notebook-PE3JSYZI.js +11 -0
  132. package/dist/notebook-loader-CENTDDUJ.js +2 -0
  133. package/dist/orchestrate-35HBQ3O3.js +8 -0
  134. package/dist/peers-P2KXU7ZK.js +5 -0
  135. package/dist/persona-STQWZH5P.js +29 -0
  136. package/dist/pipeline-MZUITRVN.js +4 -0
  137. package/dist/platform-server-2KXHGHFV.js +25 -0
  138. package/dist/plugin-update-checker-M7PW434O.js +2 -0
  139. package/dist/portal-check-3JVNLOEP.js +8 -0
  140. package/dist/portal-compliance-2UG4VKWH.js +2 -0
  141. package/dist/probe-5L5BQDGE.js +6 -0
  142. package/dist/project-type-SURTOIG7.js +2 -0
  143. package/dist/promote-NJQDZBZA.js +8 -0
  144. package/dist/providers-4PXMWA7V.js +8 -0
  145. package/dist/quiz-FE5UGAY2.js +10 -0
  146. package/dist/record-YXPB34MY.js +6 -0
  147. package/dist/reindex-PGDQSM42.js +2 -0
  148. package/dist/remember-MJRNTXYS.js +14 -0
  149. package/dist/retag-N5XF3KXP.js +6 -0
  150. package/dist/review-6UAH6V3R.js +11 -0
  151. package/dist/review-77QI6VOC.js +6 -0
  152. package/dist/ripple-ZGDITCGB.js +10 -0
  153. package/dist/roster-FLRZ5J42.js +2 -0
  154. package/dist/sentinel-HYAZ3CO5.js +19 -0
  155. package/dist/sentinel-bridge-VR357PKL.js +2 -0
  156. package/dist/sentinel-mcp.js +38 -3808
  157. package/dist/sentinel.js +1 -34
  158. package/dist/serve-JE6UF5P2.js +8 -0
  159. package/dist/serve-L52ZUTU6.js +10 -0
  160. package/dist/serve-OY6XYL7F.js +12 -0
  161. package/dist/server-2MNROHF6.js +7 -0
  162. package/dist/server-4YNUIK4W.js +8 -0
  163. package/dist/session-tracker-SKOMBDOW.js +2 -0
  164. package/dist/session-work-log-3MNUDEZ6.js +2 -0
  165. package/dist/session-work-log-J2H5OZBR.js +2 -0
  166. package/dist/setup-3F5IK7MO.js +31 -0
  167. package/dist/setup-KPIMRZ4Q.js +2 -0
  168. package/dist/shift-6GCNH666.js +11 -0
  169. package/dist/show-BOAVWZPZ.js +7 -0
  170. package/dist/show-PJ5LFLIL.js +5 -0
  171. package/dist/snapshot-L2G56RPL.js +8 -0
  172. package/dist/spawn-UH5RENSE.js +12 -0
  173. package/dist/status-77M3SDIF.js +8 -0
  174. package/dist/status-A37ECYNJ.js +6 -0
  175. package/dist/summary-ZJLQ6KHB.js +7 -0
  176. package/dist/sweep-HU74OPVW.js +17 -0
  177. package/dist/switch-CTW4PDGI.js +17 -0
  178. package/dist/symphony-3QMBGCZY.js +2 -0
  179. package/dist/symphony-QI63XL62.js +53 -0
  180. package/dist/symphony-loader-XACVV2E3.js +2 -0
  181. package/dist/symphony-peers-U4KHMKGI.js +2 -0
  182. package/dist/symphony-peers-X5NGWXFP.js +2 -0
  183. package/dist/symphony-relay-5GY5JIPT.js +3 -0
  184. package/dist/sync-QRDSFETO.js +2 -0
  185. package/dist/sync-llms-HL5PPW3M.js +15 -0
  186. package/dist/task-loader-NZFDTUQ5.js +2 -0
  187. package/dist/team-WGERKGNP.js +2 -0
  188. package/dist/test-BQJMS4Y2.js +111 -0
  189. package/dist/thread-HFXK65D4.js +41 -0
  190. package/dist/timeline-K3ZFKJ3R.js +6 -0
  191. package/dist/triage-FCWOZASE.js +18 -0
  192. package/dist/tutorial-UC6YQMNN.js +305 -0
  193. package/dist/university-content/courses/.purpose +74 -5
  194. package/dist/university-content/courses/para-701.json +807 -0
  195. package/dist/university-content/plsat/.purpose +3 -2
  196. package/dist/university-ui/assets/{index-BjewBB6s.js → index-CGFJczb1.js} +2 -2
  197. package/dist/university-ui/assets/{index-BjewBB6s.js.map → index-CGFJczb1.js.map} +1 -1
  198. package/dist/university-ui/index.html +1 -1
  199. package/dist/upgrade-B4IOLZYK.js +53 -0
  200. package/dist/validate-C6SMKGYD.js +9 -0
  201. package/dist/validate-LSCDOLBO.js +13 -0
  202. package/dist/validate-VZXTJHGO.js +6 -0
  203. package/dist/watch-LRM5XD46.js +8 -0
  204. package/dist/watch-PZCCUP6K.js +9 -0
  205. package/dist/wisdom-XZ3QKPNP.js +7 -0
  206. package/dist/work-log-loader-DL5GZ2BQ.js +2 -0
  207. package/dist/workspace-2ODL5WLY.js +2 -0
  208. package/package.json +1 -1
  209. package/platform-ui/dist/assets/AmbientSection-DqQ2mfCO.js +1 -0
  210. package/platform-ui/dist/assets/{CanvasSection-DwPTRdIN.js → CanvasSection-DLW0s-Bu.js} +1 -1
  211. package/platform-ui/dist/assets/{DocsSection-BJc_ws4I.js → DocsSection-BQ9Hi51g.js} +1 -1
  212. package/platform-ui/dist/assets/{GitSection-DhqBo1xc.js → GitSection-QQeUX6o3.js} +1 -1
  213. package/platform-ui/dist/assets/{GraphSection-D9fhVnZ0.js → GraphSection-0c9C-w7K.js} +2 -2
  214. package/platform-ui/dist/assets/{GraphSection-BlgXTl53.css → GraphSection-Bbs2a8sC.css} +1 -1
  215. package/platform-ui/dist/assets/LoreSection--t56kCj2.js +1 -0
  216. package/platform-ui/dist/assets/LoreSection-qnmm3o4y.css +1 -0
  217. package/platform-ui/dist/assets/SentinelSection-C4OoME9U.js +1 -0
  218. package/platform-ui/dist/assets/{SymphonySection-BRoBaUSS.js → SymphonySection-B-rvsLxq.js} +1 -1
  219. package/platform-ui/dist/assets/TeamSection-CBFmNEEo.js +1 -0
  220. package/platform-ui/dist/assets/index-Bxp0TVaf.css +1 -0
  221. package/platform-ui/dist/assets/index-DPpOdAtC.js +57 -0
  222. package/platform-ui/dist/index.html +2 -2
  223. package/dist/accept-orchestration-UQLM7PTQ.js +0 -189
  224. package/dist/add-FZRKEGH4.js +0 -81
  225. package/dist/agent-WERIO2XV.js +0 -523
  226. package/dist/agent-loader-TFIANSF4.js +0 -44
  227. package/dist/agent-state-S5DAWPTF.js +0 -24
  228. package/dist/agents-suggest-DNSYJ6IA.js +0 -83
  229. package/dist/aggregate-H57K7PNV.js +0 -88
  230. package/dist/assess-4WVXZLZQ.js +0 -68
  231. package/dist/auto-QFS5NHQU.js +0 -504
  232. package/dist/beacon-KXZXYQHX.js +0 -251
  233. package/dist/calibration-V46G7JTY.js +0 -135
  234. package/dist/check-OWAIWV23.js +0 -175
  235. package/dist/chunk-2IO7JAG2.js +0 -148
  236. package/dist/chunk-2T6BTYBN.js +0 -712
  237. package/dist/chunk-36TKPM5Z.js +0 -400
  238. package/dist/chunk-45MUDW6E.js +0 -804
  239. package/dist/chunk-4BLYIB7J.js +0 -5701
  240. package/dist/chunk-4L3UTYQX.js +0 -677
  241. package/dist/chunk-4NCFWYGG.js +0 -110
  242. package/dist/chunk-54LTTQBH.js +0 -138
  243. package/dist/chunk-5EWAQHFY.js +0 -269
  244. package/dist/chunk-5JGJACDU.js +0 -37
  245. package/dist/chunk-5OUOLN6M.js +0 -659
  246. package/dist/chunk-5VKJBNJL.js +0 -444
  247. package/dist/chunk-6N3JTACN.js +0 -2260
  248. package/dist/chunk-6QC3YGB6.js +0 -114
  249. package/dist/chunk-7N7GSU6K.js +0 -34
  250. package/dist/chunk-ABVQGRF7.js +0 -268
  251. package/dist/chunk-CL7JSK52.js +0 -129
  252. package/dist/chunk-CSD7IHSN.js +0 -152
  253. package/dist/chunk-EDOAWN7J.js +0 -717
  254. package/dist/chunk-EKGMAM62.js +0 -525
  255. package/dist/chunk-EZ3GOCYC.js +0 -132
  256. package/dist/chunk-F3BCHPYT.js +0 -143
  257. package/dist/chunk-FKJUBQU3.js +0 -3081
  258. package/dist/chunk-GT5QGC2H.js +0 -253
  259. package/dist/chunk-GZDFVP2N.js +0 -540
  260. package/dist/chunk-IRKUEJVW.js +0 -405
  261. package/dist/chunk-J2JEQRT3.js +0 -164
  262. package/dist/chunk-JASGXLK3.js +0 -679
  263. package/dist/chunk-KVDYJLTC.js +0 -121
  264. package/dist/chunk-L27I3CPZ.js +0 -357
  265. package/dist/chunk-LHLIAYQ3.js +0 -185
  266. package/dist/chunk-MCMOGQMU.js +0 -145
  267. package/dist/chunk-NQKQG45G.js +0 -688
  268. package/dist/chunk-PBHIFAL4.js +0 -259
  269. package/dist/chunk-PDX44BCA.js +0 -11
  270. package/dist/chunk-PMXRGPRQ.js +0 -305
  271. package/dist/chunk-RAB5IKPR.js +0 -487
  272. package/dist/chunk-RJE5G7WO.js +0 -590
  273. package/dist/chunk-RTHA3XRE.js +0 -880
  274. package/dist/chunk-S2HO5MLR.js +0 -621
  275. package/dist/chunk-S3ORKP3V.js +0 -716
  276. package/dist/chunk-TAIJOFOE.js +0 -124
  277. package/dist/chunk-TXESEO7Y.js +0 -245
  278. package/dist/chunk-UPLDI7CN.js +0 -1334
  279. package/dist/chunk-VL67H5IC.js +0 -506
  280. package/dist/chunk-VPPK3SY4.js +0 -1136
  281. package/dist/chunk-YMDLDELF.js +0 -314
  282. package/dist/chunk-YO6DVTL7.js +0 -99
  283. package/dist/chunk-YRZ5RPEB.js +0 -1561
  284. package/dist/chunk-ZDHLG5VP.js +0 -5676
  285. package/dist/chunk-ZGUAAVMA.js +0 -756
  286. package/dist/chunk-ZSYVKSY6.js +0 -2602
  287. package/dist/claude-FRRWJSTJ.js +0 -362
  288. package/dist/claude-cli-XJLK2X4L.js +0 -276
  289. package/dist/claude-code-HTBA4XRB.js +0 -126
  290. package/dist/claude-code-teams-T4SP24MD.js +0 -199
  291. package/dist/commands-5N4ILTPH.js +0 -5859
  292. package/dist/conductor-CQVGTEQN.js +0 -161
  293. package/dist/config-schema-EA4XALGG.js +0 -154
  294. package/dist/constellation-A26CCGQS.js +0 -225
  295. package/dist/context-audit-RLO3ETRP.js +0 -682
  296. package/dist/cost-BGM32XJU.js +0 -93
  297. package/dist/cost-VI46A4XL.js +0 -174
  298. package/dist/cursor-cli-JVEZGHWQ.js +0 -269
  299. package/dist/cursorrules-HLIKJJZT.js +0 -84
  300. package/dist/decision-loader-WWCLIQPJ.js +0 -20
  301. package/dist/delete-KBRPQLPC.js +0 -56
  302. package/dist/diff-D4X53HAC.js +0 -126
  303. package/dist/discipline-FA4OZXIS.js +0 -24
  304. package/dist/dist-34NA5RS5.js +0 -74
  305. package/dist/dist-5QE2BB2B-5S3T6Y3T.js +0 -6919
  306. package/dist/dist-77JDTVAY.js +0 -62
  307. package/dist/dist-OGTSAZ55.js +0 -1358
  308. package/dist/dist-QK4SQAK7.js +0 -64
  309. package/dist/dist-TA6LSC2Q.js +0 -20
  310. package/dist/docs-PBZB7LYP.js +0 -89
  311. package/dist/docs-QIYKO3BR.js +0 -155
  312. package/dist/doctor-ULBOHEIC.js +0 -11
  313. package/dist/drift-R5NRKFHI.js +0 -251
  314. package/dist/echo-O2LY7CC2.js +0 -248
  315. package/dist/edit-R2HNLMOG.js +0 -63
  316. package/dist/event-25OJKDCE.js +0 -31
  317. package/dist/export-IWVL7XLF.js +0 -38
  318. package/dist/flow-CRRVV3O3.js +0 -185
  319. package/dist/global-3NG5JXUB.js +0 -136
  320. package/dist/graduate-USAWGBJM.js +0 -160
  321. package/dist/graph-VHUMAAS6.js +0 -12
  322. package/dist/graph-server-YL22VBBN.js +0 -116
  323. package/dist/habits-OL5NGPXO.js +0 -1405
  324. package/dist/history-WOWC573W.js +0 -277
  325. package/dist/hooks-HFWSCGPV.js +0 -12
  326. package/dist/integrity-IHO4FZTS.js +0 -194
  327. package/dist/integrity-checker-PSKJA5SB.js +0 -12
  328. package/dist/journal-loader-5EYSBFFY.js +0 -18
  329. package/dist/lint-K6CJGGPH.js +0 -456
  330. package/dist/list-4YK7QKFF.js +0 -57
  331. package/dist/list-ENR7Q4CR.js +0 -56
  332. package/dist/lore-loader-7NO6N6FT.js +0 -26
  333. package/dist/lore-server-UNJY5KC3.js +0 -118
  334. package/dist/manual-G6FISID5.js +0 -204
  335. package/dist/migrate-LS45DNEV.js +0 -889
  336. package/dist/migrate-assessments-RGH4O6IX.js +0 -97
  337. package/dist/model-discovery-D2H3VBGC.js +0 -8
  338. package/dist/nomination-engine-RV5CNO5B.js +0 -42
  339. package/dist/notebook-YWIYGEHV.js +0 -155
  340. package/dist/orchestrate-JLILBBJE.js +0 -324
  341. package/dist/peers-DEOUIZM6.js +0 -82
  342. package/dist/persona-UHAHIVST.js +0 -390
  343. package/dist/pipeline-L4HCSBGN.js +0 -263
  344. package/dist/platform-server-H5YO3DQD.js +0 -1475
  345. package/dist/plugin-update-checker-KRRSGXMV.js +0 -12
  346. package/dist/portal-check-NPYGII2D.js +0 -42
  347. package/dist/portal-compliance-J7DGAPFX.js +0 -18
  348. package/dist/probe-MHL5HQZ2.js +0 -167
  349. package/dist/promote-F6ZYZZAL.js +0 -182
  350. package/dist/providers-GK7PB2OL.js +0 -104
  351. package/dist/quiz-M66SC7F7.js +0 -99
  352. package/dist/record-RA4WR2BO.js +0 -49
  353. package/dist/reindex-5LTD53ZC.js +0 -16
  354. package/dist/remember-HBWJ655S.js +0 -77
  355. package/dist/retag-3OLCVDEQ.js +0 -62
  356. package/dist/review-27ATYTD2.js +0 -33
  357. package/dist/review-57QMURZV.js +0 -334
  358. package/dist/ripple-JPBXP5I3.js +0 -215
  359. package/dist/sentinel-4XIG4STA.js +0 -63
  360. package/dist/sentinel-bridge-MDUXTQRL.js +0 -109
  361. package/dist/serve-CAH3PHE7.js +0 -33
  362. package/dist/serve-INL7SNBK.js +0 -36
  363. package/dist/serve-KBSE36PL.js +0 -49
  364. package/dist/server-54SKYFFY.js +0 -1647
  365. package/dist/server-XUOIO7E6.js +0 -338
  366. package/dist/session-tracker-C4BMD5WG.js +0 -13
  367. package/dist/session-work-log-MZ47OAPB.js +0 -20
  368. package/dist/setup-EDS27WUR.js +0 -25
  369. package/dist/setup-KO5AFC4K.js +0 -296
  370. package/dist/shift-D2JOHHBF.js +0 -668
  371. package/dist/show-5PV5KFJE.js +0 -176
  372. package/dist/show-NQKYX6WQ.js +0 -82
  373. package/dist/snapshot-BK4RBPCG.js +0 -62
  374. package/dist/spawn-RCHNXDHE.js +0 -196
  375. package/dist/status-WGIAQODY.js +0 -71
  376. package/dist/summary-NIRABMF5.js +0 -140
  377. package/dist/sweep-QMHNSIY5.js +0 -934
  378. package/dist/switch-6EJPZDIA.js +0 -232
  379. package/dist/symphony-4OCY36AI.js +0 -791
  380. package/dist/symphony-B75X2MME.js +0 -326
  381. package/dist/symphony-loader-UZGON56V.js +0 -90
  382. package/dist/symphony-peers-2ZQYLRNI.js +0 -34
  383. package/dist/symphony-peers-OL7F6M5S.js +0 -121
  384. package/dist/symphony-relay-UJYUXN65.js +0 -710
  385. package/dist/sync-VEHUH4OA.js +0 -11
  386. package/dist/sync-llms-YHCFIE6X.js +0 -166
  387. package/dist/task-loader-LDYWQSLM.js +0 -20
  388. package/dist/team-O5MIIFMA.js +0 -34
  389. package/dist/test-566CP5KC.js +0 -1017
  390. package/dist/thread-N754I4D5.js +0 -274
  391. package/dist/timeline-M3CICQFE.js +0 -112
  392. package/dist/triage-HHYGT3HY.js +0 -671
  393. package/dist/tutorial-KD22SUNO.js +0 -666
  394. package/dist/upgrade-H5PF32BW.js +0 -551
  395. package/dist/validate-CNKEKO6A.js +0 -134
  396. package/dist/validate-MB5ULIHS.js +0 -39
  397. package/dist/validate-QH3LADM6.js +0 -64
  398. package/dist/watch-2TKP5PVL.js +0 -199
  399. package/dist/watch-ZF4ML6CD.js +0 -111
  400. package/dist/wisdom-AATMGNFA.js +0 -319
  401. package/dist/work-log-loader-5L45XNYZ.js +0 -14
  402. package/dist/workspace-6E6OSRNU.js +0 -21
  403. package/platform-ui/dist/assets/AmbientSection-WtHfNedO.js +0 -1
  404. package/platform-ui/dist/assets/LoreSection-C3EixkjW.css +0 -1
  405. package/platform-ui/dist/assets/LoreSection-CwDDHrz9.js +0 -1
  406. package/platform-ui/dist/assets/SentinelSection-Cl7e5oZ6.js +0 -1
  407. package/platform-ui/dist/assets/TeamSection-CqSIMrKz.js +0 -1
  408. package/platform-ui/dist/assets/index-CfpZFjea.css +0 -1
  409. package/platform-ui/dist/assets/index-F0KL9xrN.js +0 -57
@@ -1 +1 @@
1
- .react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}:root{--bg-base: #0a0a0f;--bg-panel: #0f172a;--bg-surface: #1e293b;--bg-hover: #334155;--text-primary: #e2e8f0;--text-secondary: #94a3b8;--text-muted: #64748b;--border: #1e293b;--border-focus: #475569;--color-component: #86efac;--color-flow: #fbbf24;--color-gate: #f87171;--color-signal: #fde047;--color-aspect: #a78bfa}*{margin:0;padding:0;box-sizing:border-box}body{background:var(--bg-base);color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;overflow:hidden}.app{display:flex;height:100vh;width:100vw}.app__main{flex:1;display:flex;flex-direction:column;min-width:0}.symbol-panel{width:280px;min-width:280px;background:var(--bg-panel);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.symbol-panel__header{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid var(--border)}.symbol-panel__header h2{font-size:14px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-secondary)}.symbol-panel__count{font-size:12px;background:var(--bg-surface);color:var(--text-muted);padding:2px 8px;border-radius:10px}.symbol-panel__search{margin:12px 16px;padding:8px 12px;background:var(--bg-surface);border:1px solid var(--border);border-radius:6px;color:var(--text-primary);font-size:13px;outline:none;transition:border-color .15s}.symbol-panel__search:focus{border-color:var(--border-focus)}.symbol-panel__search::placeholder{color:var(--text-muted)}.symbol-panel__list{flex:1;overflow-y:auto;padding:0 8px 16px}.symbol-panel__section{margin-top:4px}.symbol-panel__section-header{display:flex;align-items:center;gap:6px;width:100%;padding:6px 8px;background:none;border:none;font-size:12px;font-weight:600;cursor:pointer;text-transform:uppercase;letter-spacing:.05em}.symbol-panel__section-arrow{font-size:10px;width:12px}.symbol-panel__section-count{margin-left:auto;font-size:11px;opacity:.5;font-weight:400}.symbol-panel__section-items{padding:2px 0}.symbol-panel__item{display:flex;flex-direction:column;gap:2px;padding:6px 8px 6px 12px;margin:1px 0;border-left:2px solid transparent;border-radius:4px;cursor:grab;transition:background .1s}.symbol-panel__item:hover{background:var(--bg-surface)}.symbol-panel__item:active{cursor:grabbing}.symbol-panel__item-name{font-size:13px;font-weight:500;font-family:SF Mono,Fira Code,monospace}.symbol-panel__item-desc{font-size:11px;color:var(--text-muted);line-height:1.3}.toolbar{display:flex;align-items:center;gap:8px;padding:8px 16px;background:var(--bg-panel);border-bottom:1px solid var(--border)}.toolbar__name{background:transparent;border:1px solid transparent;color:var(--text-primary);font-size:14px;font-weight:600;padding:4px 8px;border-radius:4px;width:200px;outline:none;transition:border-color .15s}.toolbar__name:hover,.toolbar__name:focus{border-color:var(--border-focus)}.toolbar__actions{display:flex;align-items:center;gap:6px;margin-left:auto}.toolbar__btn{padding:6px 12px;background:var(--bg-surface);border:1px solid var(--border);color:var(--text-secondary);font-size:12px;font-weight:500;border-radius:6px;cursor:pointer;transition:all .15s}.toolbar__btn:hover{background:var(--bg-hover);color:var(--text-primary)}.toolbar__btn--primary{background:#1d4ed8;border-color:#2563eb;color:#fff}.toolbar__btn--primary:hover{background:#2563eb}.toolbar__divider{width:1px;height:20px;background:var(--border);margin:0 4px}.canvas-wrapper{flex:1;position:relative}.paradigm-flow{background:var(--bg-base)!important}.react-flow__controls{background:var(--bg-panel)!important;border:1px solid var(--border)!important;border-radius:8px!important;overflow:hidden}.react-flow__controls-button{background:var(--bg-panel)!important;border-bottom:1px solid var(--border)!important;fill:var(--text-secondary)!important}.react-flow__controls-button:hover{background:var(--bg-surface)!important}.react-flow__minimap{border:1px solid var(--border)!important;border-radius:8px!important;overflow:hidden}.react-flow__edge-path{stroke:var(--text-muted)!important;stroke-width:2}.react-flow__edge.selected .react-flow__edge-path{stroke:var(--text-primary)!important}.react-flow__edge-text{fill:var(--text-secondary)!important;font-size:11px}.react-flow__edge-textbg{fill:var(--bg-panel)!important}.symbol-node{background:var(--bg-panel);border:1px solid var(--border);border-left:3px solid var(--color-component);border-radius:8px;padding:8px 12px;min-width:160px;max-width:240px;transition:border-color .15s}.symbol-node:hover{border-color:var(--border-focus)}.symbol-node__name{font-size:13px;font-weight:600;font-family:SF Mono,Fira Code,monospace;line-height:1.4}.symbol-node__desc{font-size:11px;color:var(--text-muted);line-height:1.3;margin-top:2px}.group-node{background:#1e293b80;border:2px dashed var(--border-focus);border-radius:12px;width:100%;height:100%;position:relative}.group-node__header{padding:8px 16px;border-bottom:1px solid var(--border);border-radius:12px 12px 0 0;background:#0f172acc;cursor:default}.group-node__label{font-size:13px;font-weight:600;color:var(--text-primary)}.group-node__input{background:var(--bg-surface);border:1px solid var(--border-focus);color:var(--text-primary);font-size:13px;font-weight:600;padding:2px 8px;border-radius:4px;outline:none;width:100%}.group-node__resizer-line{border-color:var(--color-component)!important}.group-node__resizer-handle{background:var(--color-component)!important;width:8px!important;height:8px!important;border-radius:2px!important}.group-handle{width:10px!important;height:10px!important;background:var(--bg-hover)!important;border:2px solid var(--text-muted)!important}.export-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.export-dialog{background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;width:640px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column}.export-dialog__header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}.export-dialog__header h3{font-size:16px;font-weight:600}.export-dialog__close{background:none;border:none;color:var(--text-muted);font-size:24px;cursor:pointer;line-height:1;padding:0 4px}.export-dialog__close:hover{color:var(--text-primary)}.export-dialog__content{flex:1;margin:16px 20px;padding:12px;background:var(--bg-base);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);font-size:13px;font-family:SF Mono,Fira Code,monospace;resize:none;outline:none;overflow-y:auto}.export-dialog__actions{display:flex;gap:8px;padding:16px 20px;border-top:1px solid var(--border);justify-content:flex-end}.load-dialog{width:520px}.load-dialog__body{padding:16px 20px;display:flex;flex-direction:column;gap:12px}.load-dialog__section{display:flex;flex-direction:column;gap:8px}.load-dialog__label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary)}.load-dialog__divider{display:flex;align-items:center;gap:12px;color:var(--text-muted);font-size:12px}.load-dialog__divider:before,.load-dialog__divider:after{content:"";flex:1;height:1px;background:var(--border)}.load-dialog__status{font-size:12px;padding:8px 12px;border-radius:6px}.load-dialog__status--error{background:#f871711a;color:#f87171;border:1px solid rgba(248,113,113,.2)}.load-dialog__status--success{background:#86efac1a;color:#86efac;border:1px solid rgba(134,239,172,.2)}.load-dialog__loading{color:#94a3b8;font-size:.85rem;padding:8px 0}.load-dialog__graph-list{display:flex;flex-direction:column;gap:4px;max-height:200px;overflow-y:auto}.load-dialog__graph-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 12px;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:6px;cursor:pointer;text-align:left;color:inherit;font:inherit;transition:background .15s,border-color .15s}.load-dialog__graph-item:hover{background:#ffffff14;border-color:#7dd3fc4d}.load-dialog__graph-name{font-weight:500;font-size:.9rem;color:#e2e8f0}.load-dialog__graph-meta{font-size:.75rem;color:#64748b}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-hover);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}
1
+ .react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}.app{display:flex;height:100vh;width:100vw}.app__main{flex:1;display:flex;flex-direction:column;min-width:0}.symbol-panel{width:280px;min-width:280px;background:var(--p-bg-panel);border-right:1px solid var(--p-border);display:flex;flex-direction:column;overflow:hidden}.symbol-panel__header{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid var(--p-border)}.symbol-panel__header h2{font-size:14px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--p-text-secondary)}.symbol-panel__count{font-size:12px;background:var(--p-bg-tertiary);color:var(--p-text-muted);padding:2px 8px;border-radius:10px}.symbol-panel__search{margin:12px 16px;padding:8px 12px;background:var(--p-bg-tertiary);border:1px solid var(--p-border);border-radius:6px;color:var(--p-text-primary);font-size:13px;outline:none;transition:border-color .15s}.symbol-panel__search:focus{border-color:var(--p-border-active)}.symbol-panel__search::placeholder{color:var(--p-text-muted)}.symbol-panel__list{flex:1;overflow-y:auto;padding:0 8px 16px}.symbol-panel__section{margin-top:4px}.symbol-panel__section-header{display:flex;align-items:center;gap:6px;width:100%;padding:6px 8px;background:none;border:none;font-size:12px;font-weight:600;cursor:pointer;text-transform:uppercase;letter-spacing:.05em}.symbol-panel__section-arrow{font-size:10px;width:12px}.symbol-panel__section-count{margin-left:auto;font-size:11px;opacity:.5;font-weight:400}.symbol-panel__section-items{padding:2px 0}.symbol-panel__item{display:flex;flex-direction:column;gap:2px;padding:6px 8px 6px 12px;margin:1px 0;border-left:2px solid transparent;border-radius:4px;cursor:grab;transition:background .1s}.symbol-panel__item:hover{background:var(--p-bg-tertiary)}.symbol-panel__item:active{cursor:grabbing}.symbol-panel__item-name{font-size:13px;font-weight:500;font-family:SF Mono,Fira Code,monospace}.symbol-panel__item-desc{font-size:11px;color:var(--p-text-muted);line-height:1.3}.toolbar{display:flex;align-items:center;gap:8px;padding:8px 16px;background:var(--p-bg-panel);border-bottom:1px solid var(--p-border)}.toolbar__name{background:transparent;border:1px solid transparent;color:var(--p-text-primary);font-size:14px;font-weight:600;padding:4px 8px;border-radius:4px;width:200px;outline:none;transition:border-color .15s}.toolbar__name:hover,.toolbar__name:focus{border-color:var(--p-border-active)}.toolbar__actions{display:flex;align-items:center;gap:6px;margin-left:auto}.toolbar__btn{padding:6px 12px;background:var(--p-bg-tertiary);border:1px solid var(--p-border);color:var(--p-text-secondary);font-size:12px;font-weight:500;border-radius:6px;cursor:pointer;transition:all .15s}.toolbar__btn:hover{background:var(--p-bg-hover);color:var(--p-text-primary)}.toolbar__btn--primary{background:#1d4ed8;border-color:#2563eb;color:#fff}.toolbar__btn--primary:hover{background:#2563eb}.toolbar__divider{width:1px;height:20px;background:var(--p-border);margin:0 4px}.canvas-wrapper{flex:1;position:relative}.paradigm-flow{background:var(--p-bg-primary)!important}.react-flow__controls{background:var(--p-bg-panel)!important;border:1px solid var(--p-border)!important;border-radius:8px!important;overflow:hidden}.react-flow__controls-button{background:var(--p-bg-panel)!important;border-bottom:1px solid var(--p-border)!important;fill:var(--p-text-secondary)!important}.react-flow__controls-button:hover{background:var(--p-bg-tertiary)!important}.react-flow__minimap{border:1px solid var(--p-border)!important;border-radius:8px!important;overflow:hidden}.react-flow__edge-path{stroke:var(--p-text-muted)!important;stroke-width:2}.react-flow__edge.selected .react-flow__edge-path{stroke:var(--p-text-primary)!important}.react-flow__edge-text{fill:var(--p-text-secondary)!important;font-size:11px}.react-flow__edge-textbg{fill:var(--p-bg-panel)!important}.symbol-node{background:var(--p-bg-panel);border:1px solid var(--p-border);border-left:3px solid var(--p-symbol-component);border-radius:8px;padding:8px 12px;min-width:160px;max-width:240px;transition:border-color .15s}.symbol-node:hover{border-color:var(--p-border-active)}.symbol-node__name{font-size:13px;font-weight:600;font-family:SF Mono,Fira Code,monospace;line-height:1.4}.symbol-node__desc{font-size:11px;color:var(--p-text-muted);line-height:1.3;margin-top:2px}.group-node{background:#1e293b80;border:2px dashed var(--p-border-active);border-radius:12px;width:100%;height:100%;position:relative}.group-node__header{padding:8px 16px;border-bottom:1px solid var(--p-border);border-radius:12px 12px 0 0;background:#0f172acc;cursor:default}.group-node__label{font-size:13px;font-weight:600;color:var(--p-text-primary)}.group-node__input{background:var(--p-bg-tertiary);border:1px solid var(--p-border-active);color:var(--p-text-primary);font-size:13px;font-weight:600;padding:2px 8px;border-radius:4px;outline:none;width:100%}.group-node__resizer-line{border-color:var(--p-symbol-component)!important}.group-node__resizer-handle{background:var(--p-symbol-component)!important;width:8px!important;height:8px!important;border-radius:2px!important}.group-handle{width:10px!important;height:10px!important;background:var(--p-bg-hover)!important;border:2px solid var(--p-text-muted)!important}.export-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.export-dialog{background:var(--p-bg-panel);border:1px solid var(--p-border);border-radius:12px;width:640px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column}.export-dialog__header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--p-border)}.export-dialog__header h3{font-size:16px;font-weight:600}.export-dialog__close{background:none;border:none;color:var(--p-text-muted);font-size:24px;cursor:pointer;line-height:1;padding:0 4px}.export-dialog__close:hover{color:var(--p-text-primary)}.export-dialog__content{flex:1;margin:16px 20px;padding:12px;background:var(--p-bg-primary);border:1px solid var(--p-border);border-radius:8px;color:var(--p-text-primary);font-size:13px;font-family:SF Mono,Fira Code,monospace;resize:none;outline:none;overflow-y:auto}.export-dialog__actions{display:flex;gap:8px;padding:16px 20px;border-top:1px solid var(--p-border);justify-content:flex-end}.load-dialog{width:520px}.load-dialog__body{padding:16px 20px;display:flex;flex-direction:column;gap:12px}.load-dialog__section{display:flex;flex-direction:column;gap:8px}.load-dialog__label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--p-text-secondary)}.load-dialog__divider{display:flex;align-items:center;gap:12px;color:var(--p-text-muted);font-size:12px}.load-dialog__divider:before,.load-dialog__divider:after{content:"";flex:1;height:1px;background:var(--p-border)}.load-dialog__status{font-size:12px;padding:8px 12px;border-radius:6px}.load-dialog__status--error{background:#f871711a;color:var(--p-accent-red);border:1px solid rgba(248,113,113,.2)}.load-dialog__status--success{background:#86efac1a;color:var(--p-accent-green);border:1px solid rgba(134,239,172,.2)}.load-dialog__loading{color:var(--p-text-secondary);font-size:.85rem;padding:8px 0}.load-dialog__graph-list{display:flex;flex-direction:column;gap:4px;max-height:200px;overflow-y:auto}.load-dialog__graph-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 12px;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:6px;cursor:pointer;text-align:left;color:inherit;font:inherit;transition:background .15s,border-color .15s}.load-dialog__graph-item:hover{background:#ffffff14;border-color:#7dd3fc4d}.load-dialog__graph-name{font-weight:500;font-size:.9rem;color:var(--p-text-primary)}.load-dialog__graph-meta{font-size:.75rem;color:var(--p-text-muted)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--p-bg-hover);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--p-text-muted)}
@@ -0,0 +1 @@
1
+ import{c as R,j as e,r as p,R as S}from"./index-DPpOdAtC.js";function L(){try{const s=localStorage.getItem("paradigm-lore-theme");if(s==="light"||s==="dark")return s}catch{}return"dark"}function $(){try{const s=localStorage.getItem("paradigm-lore-left-authors");if(s)return JSON.parse(s)}catch{}return[]}let g=null,f=null,v=null,b=null,y=null,N=null;const d=R((s,l)=>({entries:[],filter:{},view:"timeline",selectedEntryId:null,symbols:[],authors:[],selectedSymbol:null,selectedAuthor:null,sessions:[],selectedSessionId:null,loading:!1,projectName:"",theme:L(),leftAuthors:$(),setView:t=>s({view:t}),setFilter:t=>{s(n=>({filter:{...n.filter,...t}})),l().fetchEntries()},clearFilters:()=>{s({filter:{}}),l().fetchEntries()},selectEntry:t=>s({selectedEntryId:t}),selectSymbol:t=>s({selectedSymbol:t}),selectAuthor:t=>s({selectedAuthor:t}),toggleTheme:()=>{const t=l().theme==="dark"?"light":"dark";document.documentElement.setAttribute("data-theme",t);try{localStorage.setItem("paradigm-lore-theme",t)}catch{}s({theme:t})},toggleLeftAuthor:t=>{const n=l().leftAuthors,i=n.includes(t)?n.filter(a=>a!==t):[...n,t];try{localStorage.setItem("paradigm-lore-left-authors",JSON.stringify(i))}catch{}s({leftAuthors:i})},selectSession:async t=>{if(s({selectedSessionId:t}),t){y==null||y.abort(),y=new AbortController;const{signal:n}=y;try{const a=await(await fetch(`/api/sessions/${encodeURIComponent(t)}`,{signal:n})).json();s(c=>({sessions:c.sessions.map(o=>o.id===t?{...o,entries:a.entries}:o)}))}catch(i){if(i instanceof Error&&i.name==="AbortError")return}}},fetchEntries:async()=>{var n;g==null||g.abort(),g=new AbortController;const{signal:t}=g;s({loading:!0});try{const i=l().filter,a=new URLSearchParams;i.author&&a.set("author",i.author),i.hasAgent!==void 0?a.set("hasAgent",String(i.hasAgent)):i.authorType&&a.set("authorType",i.authorType),i.symbol&&a.set("symbol",i.symbol),i.type&&a.set("type",i.type),i.dateFrom&&a.set("from",i.dateFrom),i.dateTo&&a.set("to",i.dateTo),i.tag&&a.set("tag",i.tag),(n=i.tags)!=null&&n.length&&a.set("tags",i.tags.join(",")),i.hasReview!==void 0&&a.set("hasReview",String(i.hasReview)),i.hasBody!==void 0&&a.set("hasBody",String(i.hasBody)),a.set("limit","200");let m=(await(await fetch(`/api/lore?${a}`,{signal:t})).json()).entries||[];if(i.search){const x=i.search.toLowerCase();m=m.filter(h=>{var u;return h.title.toLowerCase().includes(x)||h.summary.toLowerCase().includes(x)||((u=h.symbols_touched)==null?void 0:u.some(_=>_.toLowerCase().includes(x)))})}s({entries:m,loading:!1})}catch(i){if(i instanceof Error&&i.name==="AbortError")return;s({loading:!1})}},fetchSymbols:async()=>{f==null||f.abort(),f=new AbortController;const{signal:t}=f;try{const i=await(await fetch("/api/lore/symbols",{signal:t})).json();s({symbols:i.symbols||[]})}catch(n){if(n instanceof Error&&n.name==="AbortError")return}},fetchAuthors:async()=>{v==null||v.abort(),v=new AbortController;const{signal:t}=v;try{const i=await(await fetch("/api/lore/authors",{signal:t})).json();s({authors:i.authors||[]})}catch(n){if(n instanceof Error&&n.name==="AbortError")return}},fetchSessions:async()=>{b==null||b.abort(),b=new AbortController;const{signal:t}=b;try{const i=await(await fetch("/api/sessions",{signal:t})).json();s({sessions:i.sessions||[]})}catch(n){if(n instanceof Error&&n.name==="AbortError")return}},fetchAll:async()=>{N==null||N.abort(),N=new AbortController;const{signal:t}=N;try{const i=await(await fetch("/api/info",{signal:t})).json();s({projectName:i.project||""})}catch(n){if(n instanceof Error&&n.name==="AbortError")return}await Promise.all([l().fetchEntries(),l().fetchSymbols(),l().fetchAuthors(),l().fetchSessions()])}})),z=[{mode:"timeline",label:"Timeline"},{mode:"session",label:"Sessions"},{mode:"symbol",label:"Symbol"},{mode:"author",label:"Author"}];function D(){const s=d(t=>t.view),l=d(t=>t.setView);return e.jsx("div",{className:"view-switcher-row",children:e.jsx("div",{className:"view-switcher",children:z.map(t=>e.jsx("button",{className:`view-tab ${s===t.mode?"active":""}`,onClick:()=>l(t.mode),children:t.label},t.mode))})})}const B=["","agent-session","human-note","decision","review","incident","milestone","retro","insight"],I=[{value:void 0,label:"All"},{value:!1,label:"Human Only"},{value:!0,label:"AI-Assisted"}];function V(){const s=d(r=>r.filter),l=d(r=>r.setFilter),t=d(r=>r.clearFilters),n=d(r=>r.authors),i=d(r=>r.symbols),[a,c]=p.useState(""),[o,m]=p.useState(!1),x=p.useRef(null),h=p.useRef(null),[u,_]=p.useState([]),F=Object.values(s).some(r=>r!==void 0&&r!==""&&(Array.isArray(r)?r.length>0:!0)),k=a?i.filter(r=>r.symbol.toLowerCase().includes(a.toLowerCase())).slice(0,10):i.slice(0,10);return p.useEffect(()=>{fetch("/api/lore/tags").then(r=>r.json()).then(r=>_(r.tags||[])).catch(()=>{})},[]),p.useEffect(()=>{function r(C){h.current&&!h.current.contains(C.target)&&x.current&&!x.current.contains(C.target)&&m(!1)}return document.addEventListener("mousedown",r),()=>document.removeEventListener("mousedown",r)},[]),e.jsxs("div",{className:"filter-bar",children:[e.jsx("div",{className:"author-type-toggle",children:I.map(r=>e.jsx("button",{className:`author-type-pill ${s.hasAgent===r.value?"active":""} ${r.value===void 0?"all":r.value?"agent":"human"}`,onClick:()=>l({hasAgent:r.value}),children:r.label},r.label))}),e.jsxs("select",{value:s.author||"",onChange:r=>l({author:r.target.value||void 0}),children:[e.jsx("option",{value:"",children:"All authors"}),n.map(r=>e.jsxs("option",{value:r.id,children:[r.hasAgent?"🤖":"👤"," ",r.id]},r.id))]}),e.jsxs("select",{value:s.type||"",onChange:r=>l({type:r.target.value||void 0}),children:[e.jsx("option",{value:"",children:"All types"}),B.filter(Boolean).map(r=>e.jsx("option",{value:r,children:r},r))]}),u.length>0&&e.jsxs("select",{value:s.tag||"",onChange:r=>l({tag:r.target.value||void 0}),children:[e.jsx("option",{value:"",children:"All tags"}),u.map(r=>e.jsxs("option",{value:r.tag,children:[r.tag," (",r.count,")"]},r.tag))]}),e.jsxs("div",{className:"symbol-autocomplete-wrapper",children:[e.jsx("input",{ref:x,type:"text",placeholder:s.symbol?`Symbol: ${s.symbol}`:"Filter by symbol...",value:a,onChange:r=>{c(r.target.value),m(!0)},onFocus:()=>m(!0),style:{width:160}}),s.symbol&&e.jsx("button",{className:"symbol-clear",onClick:()=>{l({symbol:void 0}),c("")},children:"x"}),o&&k.length>0&&e.jsx("div",{className:"symbol-dropdown",ref:h,children:k.map(r=>e.jsxs("div",{className:`symbol-dropdown-item ${s.symbol===r.symbol?"active":""}`,onClick:()=>{l({symbol:r.symbol}),c(""),m(!1)},children:[e.jsx("span",{className:"symbol-dropdown-name",children:r.symbol}),e.jsx("span",{className:"symbol-dropdown-count",children:r.count})]},r.symbol))})]}),e.jsx("input",{type:"text",placeholder:"Search...",value:s.search||"",onChange:r=>l({search:r.target.value||void 0}),style:{width:140}}),e.jsx("input",{type:"date",value:s.dateFrom||"",onChange:r=>l({dateFrom:r.target.value||void 0}),title:"From date"}),e.jsx("input",{type:"date",value:s.dateTo||"",onChange:r=>l({dateTo:r.target.value||void 0}),title:"To date"}),e.jsx("button",{className:`filter-preset ${s.hasReview===!1?"active":""}`,onClick:()=>l({hasReview:s.hasReview===!1?void 0:!1}),children:"Needs Review"}),F&&e.jsx("button",{className:"filter-clear",onClick:t,children:"Clear filters"})]})}function O({entry:s}){return e.jsxs("div",{className:"detail-section",children:[e.jsx("h3",{children:"Details"}),e.jsxs("dl",{className:"detail-meta",children:[e.jsx("dt",{children:"Author"}),e.jsxs("dd",{children:["👤"," ",typeof s.author=="string"?s.author:"unknown"]}),s.agent&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{children:"AI Agent"}),e.jsxs("dd",{children:["🤖"," ",s.agent.model,s.agent.provider?` (${s.agent.provider})`:""]})]}),e.jsx("dt",{children:"Time"}),e.jsx("dd",{children:new Date(s.timestamp).toLocaleString()}),s.duration_minutes&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{children:"Duration"}),e.jsxs("dd",{children:[s.duration_minutes," minutes"]})]}),s.commit&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{children:"Commit"}),e.jsx("dd",{style:{fontFamily:"monospace",fontSize:12},children:s.commit})]})]}),(s.confidence!=null||s.assessment)&&e.jsxs("dl",{className:"detail-meta",style:{marginTop:12},children:[s.confidence!=null&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{children:"Confidence"}),e.jsx("dd",{children:e.jsxs("span",{style:{padding:"2px 8px",background:"rgba(139, 92, 246, 0.15)",border:"1px solid rgba(139, 92, 246, 0.3)",borderRadius:10,fontSize:12,color:"var(--p-accent-purple)"},children:[(s.confidence*100).toFixed(0),"%"]})})]}),s.assessment&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{children:"Verdict"}),e.jsx("dd",{children:e.jsx("span",{style:{padding:"2px 8px",background:s.assessment.verdict==="correct"?"rgba(52, 211, 153, 0.15)":s.assessment.verdict==="partial"?"rgba(251, 191, 36, 0.15)":"rgba(248, 113, 113, 0.15)",border:`1px solid ${s.assessment.verdict==="correct"?"rgba(52, 211, 153, 0.3)":s.assessment.verdict==="partial"?"rgba(251, 191, 36, 0.3)":"rgba(248, 113, 113, 0.3)"}`,borderRadius:10,fontSize:12,color:s.assessment.verdict==="correct"?"var(--p-accent-green)":s.assessment.verdict==="partial"?"var(--p-accent-orange)":"var(--p-accent-red)"},children:s.assessment.verdict})}),e.jsx("dt",{children:"Assessed by"}),e.jsx("dd",{children:s.assessment.assessed_by}),e.jsx("dt",{children:"Assessed at"}),e.jsx("dd",{children:new Date(s.assessment.assessed_at).toLocaleString()}),s.assessment.notes&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{children:"Notes"}),e.jsx("dd",{children:s.assessment.notes})]})]}),s.assessment_delta!=null&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{children:"Delta"}),e.jsxs("dd",{style:{color:Math.abs(s.assessment_delta)<=.1?"var(--p-accent-green)":Math.abs(s.assessment_delta)<=.3?"var(--p-accent-orange)":"var(--p-accent-red)"},children:[s.assessment_delta>0?"+":"",s.assessment_delta.toFixed(2)," ",e.jsxs("span",{style:{fontSize:11,color:"var(--p-text-muted)"},children:["(",s.assessment_delta>.1?"under-confident":s.assessment_delta<-.1?"over-confident":"well-calibrated",")"]})]})]})]}),s.tags&&s.tags.length>0&&e.jsx("div",{style:{marginTop:12},children:e.jsx("div",{style:{display:"flex",gap:4,flexWrap:"wrap"},children:s.tags.map(l=>{const t=l.startsWith("arc:");return e.jsxs("span",{style:{padding:"2px 8px",background:t?"rgba(96, 165, 250, 0.15)":"var(--p-bg-primary)",border:`1px solid ${t?"var(--p-lore-milestone)":"var(--p-border)"}`,borderRadius:12,fontSize:11,color:t?"var(--p-lore-milestone)":"var(--p-text-secondary)"},children:[t?"↻ ":"",l]},l)})})}),s.git_context&&e.jsxs("dl",{className:"detail-meta",style:{marginTop:12},children:[e.jsx("dt",{children:"Commit"}),e.jsx("dd",{style:{fontFamily:"monospace",fontSize:12},children:s.git_context.ref.slice(0,8)}),e.jsx("dt",{children:"Branch"}),e.jsx("dd",{children:s.git_context.branch}),e.jsx("dt",{children:"Working tree"}),e.jsx("dd",{children:s.git_context.dirty?"Dirty (uncommitted changes)":"Clean"})]}),s.meta&&Object.keys(s.meta).length>0&&e.jsx("dl",{className:"detail-meta",style:{marginTop:12},children:Object.entries(s.meta).map(([l,t])=>e.jsxs(S.Fragment,{children:[e.jsx("dt",{children:l}),e.jsx("dd",{children:typeof t=="object"?JSON.stringify(t):String(t)})]},l))})]})}const M={"#":"component","^":"gate",$:"flow","!":"signal","~":"aspect"};function j({symbol:s}){const l=s.charAt(0),t=M[l]||"component";return e.jsx("span",{className:`symbol-tag ${t}`,children:s})}function W({entry:s,onSelectEntry:l}){var t,n,i,a;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"detail-section",children:[e.jsx("h3",{children:"Summary"}),e.jsx("p",{style:{fontSize:13,color:"var(--p-text-secondary)"},children:s.summary})]}),s.body&&e.jsxs("div",{className:"detail-section",children:[e.jsx("h3",{children:"Body"}),e.jsx("pre",{style:{fontSize:12,color:"var(--p-text-secondary)",whiteSpace:"pre-wrap",wordBreak:"break-word",background:"var(--p-bg-primary)",padding:12,borderRadius:6,border:"1px solid var(--p-border)",maxHeight:300,overflowY:"auto"},children:s.body})]}),(t=s.linked_lore)!=null&&t.length||(n=s.linked_tasks)!=null&&n.length||(i=s.linked_commits)!=null&&i.length?e.jsxs("div",{className:"detail-section",children:[e.jsx("h3",{children:"Linked"}),e.jsxs("dl",{className:"detail-meta",children:[s.linked_lore&&s.linked_lore.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{children:"Lore"}),e.jsx("dd",{children:s.linked_lore.map(c=>e.jsx("span",{onClick:()=>l(c),style:{cursor:"pointer",color:"var(--p-symbol-component)",textDecoration:"underline",marginRight:8,fontSize:12},children:c},c))})]}),s.linked_tasks&&s.linked_tasks.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{children:"Tasks"}),e.jsx("dd",{children:s.linked_tasks.map(c=>e.jsx("span",{style:{fontFamily:"monospace",fontSize:12,marginRight:8},children:c},c))})]}),s.linked_commits&&s.linked_commits.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{children:"Commits"}),e.jsx("dd",{children:s.linked_commits.map(c=>e.jsx("span",{style:{fontFamily:"monospace",fontSize:12,marginRight:8},children:c.slice(0,8)},c))})]})]})]}):null,((a=s.symbols_touched)==null?void 0:a.length)>0&&e.jsxs("div",{className:"detail-section",children:[e.jsx("h3",{children:"Symbols Touched"}),e.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:4},children:s.symbols_touched.map(c=>e.jsx(j,{symbol:c},c))})]}),s.symbols_created&&s.symbols_created.length>0&&e.jsxs("div",{className:"detail-section",children:[e.jsx("h3",{children:"Symbols Created"}),e.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:4},children:s.symbols_created.map(c=>e.jsx(j,{symbol:c},c))})]}),s.errors_encountered&&s.errors_encountered.length>0&&e.jsxs("div",{className:"detail-section",children:[e.jsx("h3",{children:"Errors Encountered"}),s.errors_encountered.map((c,o)=>e.jsxs("div",{className:"detail-error",children:[e.jsx("div",{style:{color:"var(--p-lore-incident)",fontSize:13},children:c.description}),e.jsxs("div",{style:{color:"var(--p-text-secondary)",fontSize:12,marginTop:2},children:["→"," ",c.resolution,c.time_to_fix?` (${c.time_to_fix})`:""]})]},o))]}),s.learnings&&s.learnings.length>0&&e.jsxs("div",{className:"detail-section",children:[e.jsx("h3",{children:"Learnings"}),s.learnings.map((c,o)=>e.jsx("div",{className:"detail-learning",children:c},o))]})]})}function P({entry:s}){return!s.decisions||s.decisions.length===0?null:e.jsxs("div",{className:"detail-section",children:[e.jsx("h3",{children:"Decisions"}),s.decisions.map(l=>e.jsxs("div",{className:"detail-decision",children:[e.jsx("div",{className:"decision-text",children:l.decision}),e.jsx("div",{className:"decision-rationale",children:l.rationale})]},l.id))]})}function E({status:s}){if(!s)return null;const l={pass:{icon:"✓",className:"pass"},fail:{icon:"✗",className:"fail"},partial:{icon:"⚠",className:"partial"},untested:{icon:"·",className:""}},t=l[s]||l.untested;return e.jsxs("span",{className:`lore-card-verify ${t.className}`,children:[t.icon," ",s]})}function T({rating:s}){return e.jsxs("span",{className:"review-stars",children:["★".repeat(s),"☆".repeat(5-s)]})}function U({entry:s}){const l=!!s.verification,t=!!s.review;return!l&&!t?null:e.jsxs(e.Fragment,{children:[s.verification&&e.jsxs("div",{className:"detail-section",children:[e.jsx("h3",{children:"Verification"}),e.jsx(E,{status:s.verification.status}),s.verification.details&&e.jsx("dl",{className:"detail-meta",style:{marginTop:8},children:Object.entries(s.verification.details).map(([n,i])=>e.jsxs(S.Fragment,{children:[e.jsx("dt",{children:n}),e.jsx("dd",{style:{color:i==="pass"?"var(--p-accent-green)":"var(--p-accent-red)"},children:i})]},n))})]}),s.review?e.jsxs("div",{className:"detail-section",children:[e.jsx("h3",{children:"Review"}),e.jsxs("dl",{className:"detail-meta",children:[e.jsx("dt",{children:"Reviewer"}),e.jsx("dd",{children:s.review.reviewer}),e.jsx("dt",{children:"Completeness"}),e.jsx("dd",{children:e.jsx(T,{rating:s.review.completeness})}),e.jsx("dt",{children:"Quality"}),e.jsx("dd",{children:e.jsx(T,{rating:s.review.quality})}),s.review.notes&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{children:"Notes"}),e.jsx("dd",{children:s.review.notes})]})]})]}):e.jsxs("div",{className:"detail-section",children:[e.jsx("h3",{children:"Review"}),e.jsxs("p",{style:{color:"var(--p-text-muted)",fontSize:13},children:["No review yet. Run ",e.jsxs("code",{style:{background:"var(--p-bg-card)",padding:"2px 4px",borderRadius:3},children:["paradigm lore review ",s.id]})]})]})]})}function Y({entry:s}){var l,t,n,i,a,c;return!((l=s.files_created)!=null&&l.length)&&!((t=s.files_modified)!=null&&t.length)?null:e.jsxs("div",{className:"detail-section",children:[e.jsxs("h3",{children:["Files (",(((n=s.files_created)==null?void 0:n.length)||0)+(((i=s.files_modified)==null?void 0:i.length)||0),")"]}),e.jsxs("ul",{className:"detail-files",children:[(a=s.files_created)==null?void 0:a.map(o=>e.jsxs("li",{style:{color:"var(--p-accent-green)"},children:["+ ",o]},o)),(c=s.files_modified)==null?void 0:c.map(o=>e.jsxs("li",{style:{color:"var(--p-accent-orange)"},children:["~ ",o]},o))]}),s.lines_added||s.lines_removed?e.jsxs("p",{style:{fontSize:12,color:"var(--p-text-muted)",marginTop:4},children:[e.jsxs("span",{style:{color:"var(--p-accent-green)"},children:["+",s.lines_added||0]})," ",e.jsxs("span",{style:{color:"var(--p-accent-red)"},children:["-",s.lines_removed||0]})," lines"]}):null]})}function q(){const s=d(i=>i.selectedEntryId),l=d(i=>i.selectEntry),[t,n]=p.useState(null);return p.useEffect(()=>{if(!s){n(null);return}fetch(`/api/lore/${s}`).then(i=>i.json()).then(n).catch(()=>n(null))},[s]),!s||!t?null:e.jsxs("div",{className:"detail-overlay",children:[e.jsx("div",{className:"detail-backdrop",onClick:()=>l(null)}),e.jsxs("div",{className:"detail-panel",children:[e.jsxs("div",{className:"detail-header",children:[e.jsxs("div",{children:[e.jsx("div",{className:"lore-card-title",style:{fontSize:16},children:t.title}),e.jsxs("div",{style:{display:"flex",gap:8,marginTop:4,alignItems:"center"},children:[e.jsx("span",{className:`lore-card-type ${t.type}`,children:t.type}),e.jsx("span",{style:{color:"var(--p-text-muted)",fontSize:12},children:t.id})]})]}),e.jsx("button",{className:"detail-close",onClick:()=>l(null),children:"✕"})]}),e.jsxs("div",{className:"detail-body",children:[e.jsx(O,{entry:t}),e.jsx(W,{entry:t,onSelectEntry:l}),e.jsx(Y,{entry:t}),e.jsx(P,{entry:t}),e.jsx(U,{entry:t})]})]})]})}function J(s){return new Date(s).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"})}function A({entry:s,side:l="right"}){var c,o,m,x;const t=d(h=>h.selectEntry),n=s.agent!=null,i=(((c=s.files_created)==null?void 0:c.length)||0)+(((o=s.files_modified)==null?void 0:o.length)||0),a=(s.lines_added||0)+(s.lines_removed||0);return e.jsx("div",{className:`lore-card-row ${l} ${n?"agent":"human"}`,children:e.jsxs("div",{className:"lore-card",onClick:()=>t(s.id),children:[e.jsxs("div",{className:"lore-card-header",children:[e.jsx("div",{className:"lore-card-author",children:e.jsxs("span",{className:`author-badge ${n?"agent":"human"}`,children:[n?"🤖":"👤"," ",typeof s.author=="string"?s.author:"unknown"]})}),e.jsx("span",{className:`lore-card-type ${s.type||"agent-session"}`,children:s.type||"agent-session"})]}),e.jsx("div",{className:"lore-card-title",children:s.title}),e.jsx("div",{className:"lore-card-summary",children:s.summary}),s.body&&e.jsxs("div",{style:{fontSize:11,color:"var(--p-text-muted)",marginTop:4,fontStyle:"italic",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[s.body.slice(0,100),s.body.length>100?"...":""]}),((m=s.symbols_touched)==null?void 0:m.length)>0&&e.jsxs("div",{className:"lore-card-symbols",children:[s.symbols_touched.slice(0,5).map(h=>e.jsx(j,{symbol:h},h)),s.symbols_touched.length>5&&e.jsxs("span",{className:"symbol-tag component",children:["+",s.symbols_touched.length-5]})]}),Array.isArray(s.tags)&&s.tags.some(h=>h.startsWith("arc:"))&&e.jsx("div",{style:{display:"flex",gap:4,marginTop:4,flexWrap:"wrap"},children:s.tags.filter(h=>h.startsWith("arc:")).map(h=>e.jsxs("span",{style:{padding:"1px 6px",background:"rgba(96, 165, 250, 0.15)",border:"1px solid rgba(96, 165, 250, 0.3)",borderRadius:10,fontSize:10,color:"var(--p-lore-milestone)"},children:["↻"," ",h]},h))}),e.jsxs("div",{className:"lore-card-footer",children:[e.jsxs("div",{className:"lore-card-stats",children:[i>0&&e.jsxs("span",{children:[i," files"]}),a>0&&e.jsxs("span",{children:[a," loc"]}),s.duration_minutes&&e.jsxs("span",{children:[s.duration_minutes,"m"]}),e.jsx(E,{status:(x=s.verification)==null?void 0:x.status}),s.confidence!=null&&e.jsxs("span",{style:{padding:"1px 5px",background:"rgba(139, 92, 246, 0.15)",border:"1px solid rgba(139, 92, 246, 0.3)",borderRadius:8,fontSize:10,color:"var(--p-accent-purple)"},children:[(s.confidence*100).toFixed(0),"%"]}),s.assessment&&e.jsx("span",{style:{padding:"1px 5px",background:s.assessment.verdict==="correct"?"rgba(52, 211, 153, 0.15)":s.assessment.verdict==="partial"?"rgba(251, 191, 36, 0.15)":"rgba(248, 113, 113, 0.15)",border:`1px solid ${s.assessment.verdict==="correct"?"rgba(52, 211, 153, 0.3)":s.assessment.verdict==="partial"?"rgba(251, 191, 36, 0.3)":"rgba(248, 113, 113, 0.3)"}`,borderRadius:8,fontSize:10,color:s.assessment.verdict==="correct"?"var(--p-accent-green)":s.assessment.verdict==="partial"?"var(--p-accent-orange)":"var(--p-accent-red)"},children:s.assessment.verdict})]}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[s.review&&e.jsx(T,{rating:s.review.quality}),e.jsx("span",{children:J(s.timestamp)})]})]})]})})}function Q({date:s,humanCount:l,agentCount:t}){const i=new Date(s).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"});return e.jsxs("div",{className:"date-separator",children:[e.jsx("span",{className:"date-count human",children:l}),e.jsx("span",{className:"date-badge",children:i}),e.jsx("span",{className:"date-count agent",children:t})]})}function H(){const s=d(o=>o.entries),l=d(o=>o.authors),t=d(o=>o.leftAuthors),n=d(o=>o.toggleLeftAuthor);if(s.length===0)return e.jsxs("div",{className:"empty-state",children:[e.jsx("h2",{children:"No lore entries yet"}),e.jsxs("p",{children:["Record your first entry with ",e.jsx("code",{children:"paradigm lore record"})," or via the MCP tool ",e.jsx("code",{children:"paradigm_lore_record"}),"."]})]});const i=t.length>0,a=new Map;for(const o of s){const m=o.timestamp.slice(0,10);a.has(m)||a.set(m,[]),a.get(m).push(o)}const c=o=>t.includes(o);return e.jsxs("div",{className:`thread-view ${i?"":"single-column"}`,children:[i&&e.jsx("div",{className:"timeline-spine"}),e.jsx("div",{className:"timeline-column-labels",children:i?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"column-label-group left",children:t.map(o=>e.jsxs("button",{className:"column-author-pill active",onClick:()=>n(o),title:"Remove from left column",children:[o," ×"]},o))}),e.jsx("div",{className:"column-label-group right",children:e.jsx("span",{className:"column-label-text",children:"EVERYONE ELSE"})})]}):e.jsxs("div",{className:"column-author-selector",children:[e.jsx("span",{className:"column-label-text",children:"Pick an author for the left column:"}),l.map(o=>e.jsx("button",{className:"column-author-pill",onClick:()=>n(o.id),children:o.id},o.id))]})}),Array.from(a.entries()).map(([o,m])=>{const x=m.filter(u=>c(u.author)).length,h=m.filter(u=>!c(u.author)).length;return e.jsxs(S.Fragment,{children:[e.jsx(Q,{date:o,humanCount:x,agentCount:h}),m.map(u=>e.jsx(A,{entry:u,side:i&&c(u.author)?"left":"right"},u.id))]},o)})]})}function G(){const s=d(a=>a.symbols),l=d(a=>a.entries),t=d(a=>a.selectedSymbol),n=d(a=>a.selectSymbol),i=d(a=>a.setFilter);return p.useEffect(()=>{i(t?{symbol:t}:{symbol:void 0})},[t]),e.jsxs("div",{className:"sidebar-view",children:[e.jsxs("div",{className:"sidebar",children:[e.jsxs("div",{style:{padding:"12px 16px",borderBottom:"1px solid var(--p-border)",fontSize:11,color:"var(--p-text-muted)",textTransform:"uppercase",letterSpacing:"0.05em"},children:["Symbols (",s.length,")"]}),s.map(a=>e.jsxs("div",{className:`sidebar-item ${t===a.symbol?"active":""}`,onClick:()=>n(t===a.symbol?null:a.symbol),children:[e.jsx("span",{className:"sidebar-item-name",children:e.jsx(j,{symbol:a.symbol})}),e.jsx("span",{className:"sidebar-item-count",children:a.count})]},a.symbol)),s.length===0&&e.jsx("div",{style:{padding:20,color:"var(--p-text-muted)",textAlign:"center",fontSize:13},children:"No symbols found"})]}),e.jsx("div",{className:"sidebar-content",children:t?e.jsxs(e.Fragment,{children:[e.jsxs("h2",{style:{fontSize:16,marginBottom:16},children:[e.jsx(j,{symbol:t})," entries"]}),l.length===0?e.jsx("div",{style:{color:"var(--p-text-muted)"},children:"No entries for this symbol"}):l.map(a=>e.jsx("div",{style:{marginBottom:12},children:e.jsx(A,{entry:a})},a.id))]}):e.jsxs("div",{className:"empty-state",children:[e.jsx("h2",{children:"Select a symbol"}),e.jsx("p",{children:"Choose a symbol from the sidebar to view its history."})]})})]})}function K(){const s=d(a=>a.authors),l=d(a=>a.entries),t=d(a=>a.selectedAuthor),n=d(a=>a.selectAuthor),i=d(a=>a.setFilter);return p.useEffect(()=>{i(t?{author:t}:{author:void 0})},[t]),e.jsxs("div",{className:"sidebar-view",children:[e.jsxs("div",{className:"sidebar",children:[e.jsxs("div",{style:{padding:"12px 16px",borderBottom:"1px solid var(--p-border)",fontSize:11,color:"var(--p-text-muted)",textTransform:"uppercase",letterSpacing:"0.05em"},children:["Authors (",s.length,")"]}),s.map(a=>e.jsxs("div",{className:`sidebar-item ${t===a.id?"active":""}`,onClick:()=>n(t===a.id?null:a.id),children:[e.jsxs("div",{children:[e.jsxs("span",{className:"sidebar-item-name",children:[a.hasAgent?"🤖":"👤"," ",a.id]}),e.jsxs("div",{style:{fontSize:10,color:"var(--p-text-muted)",marginTop:2},children:["Last active: ",new Date(a.lastActive).toLocaleDateString()]})]}),e.jsx("span",{className:"sidebar-item-count",children:a.count})]},a.id)),s.length===0&&e.jsx("div",{style:{padding:20,color:"var(--p-text-muted)",textAlign:"center",fontSize:13},children:"No authors found"})]}),e.jsx("div",{className:"sidebar-content",children:t?e.jsxs(e.Fragment,{children:[e.jsxs("h2",{style:{fontSize:16,marginBottom:16},children:[t,"'s entries"]}),l.length===0?e.jsx("div",{style:{color:"var(--p-text-muted)"},children:"No entries for this author"}):l.map(a=>e.jsx("div",{style:{marginBottom:12},children:e.jsx(A,{entry:a})},a.id))]}):e.jsxs("div",{className:"empty-state",children:[e.jsx("h2",{children:"Select an author"}),e.jsx("p",{children:"Choose an author from the sidebar to view their work."})]})})]})}function w(s){return new Date(s).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"})}function X(s,l){const t=new Date(l).getTime()-new Date(s).getTime(),n=Math.round(t/6e4);if(n<60)return`${n}m`;const i=Math.floor(n/60),a=n%60;return a>0?`${i}h ${a}m`:`${i}h`}function Z({session:s,active:l,onClick:t}){var i;const n=s.author.hasAgent;return e.jsxs("div",{className:`sidebar-item session-sidebar-item ${l?"active":""}`,onClick:t,children:[e.jsxs("div",{className:"session-sidebar-info",children:[e.jsxs("span",{className:`session-author-badge ${n?"agent":"human"}`,children:[n?"🤖":"👤"," ",s.author.name]}),e.jsxs("div",{className:"session-sidebar-meta",children:[w(s.startTime),s.startTime!==s.endTime&&` - ${w(s.endTime)}`]})]}),e.jsxs("div",{className:"session-sidebar-stats",children:[e.jsxs("span",{className:"sidebar-item-count",children:[s.entryCount," entries"]}),((i=s.symbolsTouched)==null?void 0:i.length)>0&&e.jsxs("span",{className:"sidebar-item-count",children:[s.symbolsTouched.length," symbols"]})]})]})}function ee({session:s}){var n;const l=X(s.startTime,s.endTime),t=new Date(s.date).toLocaleDateString("en-US",{weekday:"long",year:"numeric",month:"long",day:"numeric"});return e.jsxs("div",{className:"session-detail",children:[e.jsxs("div",{className:"session-detail-header",children:[e.jsx("h2",{children:e.jsxs("span",{className:`session-author-badge ${s.author.hasAgent?"agent":"human"}`,children:[s.author.hasAgent?"🤖":"👤"," ",s.author.name]})}),e.jsxs("div",{className:"session-detail-meta",children:[e.jsx("span",{children:t}),e.jsxs("span",{children:[w(s.startTime)," - ",w(s.endTime)]}),e.jsx("span",{children:l}),e.jsxs("span",{children:[s.entryCount," entries"]})]})]}),((n=s.symbolsTouched)==null?void 0:n.length)>0&&e.jsxs("div",{className:"session-detail-section",children:[e.jsx("h3",{children:"Symbols Touched"}),e.jsx("div",{className:"session-symbols",children:s.symbolsTouched.map(i=>e.jsx(j,{symbol:i},i))})]}),s.breadcrumbs&&s.breadcrumbs.length>0&&e.jsxs("div",{className:"session-detail-section",children:[e.jsx("h3",{children:"Session Breadcrumbs"}),e.jsx("div",{className:"breadcrumb-list",children:s.breadcrumbs.map((i,a)=>e.jsxs("div",{className:"breadcrumb-item",children:[i.phase&&e.jsx("span",{className:"breadcrumb-phase",children:i.phase}),i.context&&e.jsx("span",{className:"breadcrumb-context",children:i.context}),i.timestamp&&e.jsx("span",{className:"breadcrumb-time",children:w(i.timestamp)}),i.decisions&&i.decisions.length>0&&e.jsx("div",{className:"breadcrumb-decisions",children:i.decisions.map((c,o)=>e.jsx("span",{className:"breadcrumb-decision",children:c},o))})]},a))})]}),e.jsxs("div",{className:"session-detail-section",children:[e.jsx("h3",{children:"Lore Entries"}),s.entries?s.entries.map(i=>e.jsx("div",{style:{marginBottom:12},children:e.jsx(A,{entry:i})},i.id)):e.jsx("div",{style:{color:"var(--p-text-muted)",fontSize:13},children:"Loading entries..."})]})]})}function se(){const s=d(a=>a.sessions),l=d(a=>a.selectedSessionId),t=d(a=>a.selectSession),n=s.find(a=>a.id===l),i=new Map;for(const a of s)i.has(a.date)||i.set(a.date,[]),i.get(a.date).push(a);return e.jsxs("div",{className:"sidebar-view",children:[e.jsxs("div",{className:"sidebar",children:[e.jsxs("div",{style:{padding:"12px 16px",borderBottom:"1px solid var(--p-border)",fontSize:11,color:"var(--p-text-muted)",textTransform:"uppercase",letterSpacing:"0.05em"},children:["Sessions (",s.length,")"]}),s.length===0?e.jsx("div",{style:{padding:20,color:"var(--p-text-muted)",textAlign:"center",fontSize:13},children:"No sessions found"}):Array.from(i.entries()).map(([a,c])=>{const o=new Date(a).toLocaleDateString("en-US",{month:"short",day:"numeric"});return e.jsxs(S.Fragment,{children:[e.jsx("div",{className:"session-date-header",children:o}),c.map(m=>e.jsx(Z,{session:m,active:l===m.id,onClick:()=>t(l===m.id?null:m.id)},m.id))]},a)})]}),e.jsx("div",{className:"sidebar-content",children:n?e.jsx(ee,{session:n}):e.jsxs("div",{className:"empty-state",children:[e.jsx("h2",{children:"Select a session"}),e.jsx("p",{children:"Choose a session from the sidebar to view its details, entries, and breadcrumbs."})]})})]})}function ae(){const s=d(a=>a.view),l=d(a=>a.entries),t=d(a=>a.projectName),n=d(a=>a.authors),i=d(a=>a.fetchAll);return p.useEffect(()=>{i()},[]),e.jsxs("div",{style:{display:"flex",flexDirection:"column",height:"100%"},children:[e.jsxs("div",{style:{padding:"12px 16px",borderBottom:"1px solid var(--p-border)"},children:[e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:s==="timeline"?8:0},children:[e.jsxs("div",{children:[e.jsx("span",{style:{fontSize:16,fontWeight:600},children:"Lore"}),e.jsxs("span",{style:{fontSize:12,color:"var(--p-text-muted)",marginLeft:10},children:[t||"project"," · ",l.length," entries · ",n.length," authors"]})]}),e.jsx(D,{})]}),s==="timeline"&&e.jsx(V,{})]}),e.jsxs("main",{style:{flex:1,overflow:"auto",paddingBottom:32},children:[s==="timeline"&&e.jsx(H,{}),s==="session"&&e.jsx(se,{}),s==="symbol"&&e.jsx(G,{}),s==="author"&&e.jsx(K,{})]}),e.jsx(q,{})]})}export{ae as default};
@@ -0,0 +1 @@
1
+ .header{position:sticky;top:0;z-index:100;background:var(--p-bg-secondary);border-bottom:1px solid var(--p-border);padding:12px 24px}.header-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.header-title{display:flex;align-items:center;gap:12px}.header-title h1{font-size:18px;font-weight:600;letter-spacing:-.01em}.header-title .project-name{color:var(--p-text-secondary);font-size:13px}.header-stats{color:var(--p-text-muted);font-size:12px}.view-switcher-row{display:flex;align-items:center;gap:8px}.view-switcher{display:flex;gap:2px;background:var(--p-bg-primary);border-radius:6px;padding:2px}.theme-toggle{width:32px;height:32px;border:1px solid var(--p-border);background:var(--p-bg-primary);border-radius:6px;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .15s}.theme-toggle:hover{border-color:var(--p-border-active);background:var(--p-bg-hover)}.view-tab{padding:6px 16px;border:none;background:none;color:var(--p-text-secondary);font-size:13px;cursor:pointer;border-radius:4px;transition:all .15s}.view-tab:hover{color:var(--p-text-primary);background:var(--p-bg-hover)}.view-tab.active{color:var(--p-text-primary);background:var(--p-bg-card)}.filter-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.filter-bar select,.filter-bar input{background:var(--p-bg-primary);border:1px solid var(--p-border);color:var(--p-text-primary);padding:5px 10px;border-radius:4px;font-size:12px;outline:none}.filter-bar select:focus,.filter-bar input:focus{border-color:var(--p-symbol-component)}.filter-preset{padding:4px 10px;border:1px solid var(--p-border);background:none;color:var(--p-text-secondary);border-radius:12px;font-size:11px;cursor:pointer;transition:all .15s}.filter-preset:hover{border-color:var(--p-border-active);color:var(--p-text-primary)}.filter-preset.active{background:var(--p-bg-card);color:var(--p-text-primary);border-color:var(--p-symbol-component)}.filter-clear{padding:4px 10px;border:none;background:none;color:var(--p-text-muted);font-size:11px;cursor:pointer}.filter-clear:hover{color:var(--p-lore-incident)}.thread-view{position:relative;max-width:900px;margin:0 auto;padding:24px 16px}.thread-view.single-column{max-width:600px}.timeline-spine{position:absolute;left:50%;top:0;bottom:0;width:var(--p-spine-width);background:var(--p-spine-color);transform:translate(-50%)}.timeline-column-labels{position:sticky;top:90px;z-index:10;display:flex;justify-content:space-between;align-items:center;padding:0 4px;margin-bottom:8px}.column-label-group{display:flex;align-items:center;gap:4px}.column-label-group.left,.column-label-group.right{max-width:48%}.column-label-text{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--p-text-muted);padding:3px 10px;border-radius:3px;background:var(--p-bg-secondary);white-space:nowrap}.column-author-selector{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.column-author-pill{padding:3px 10px;border:1px solid var(--p-border);background:var(--p-bg-secondary);color:var(--p-text-secondary);border-radius:12px;font-size:11px;cursor:pointer;transition:all .15s}.column-author-pill:hover{border-color:var(--p-border-active);color:var(--p-text-primary)}.column-author-pill.active{background:#818cf826;border-color:var(--p-lore-agent-session);color:var(--p-lore-agent-session)}.date-separator{position:relative;z-index:3;display:flex;align-items:center;justify-content:center;margin:24px 0 16px;gap:8px}.date-badge{background:var(--p-bg-secondary);color:var(--p-text-secondary);font-size:11px;font-weight:600;padding:4px 14px;border-radius:12px;border:1px solid var(--p-border);letter-spacing:.02em;white-space:nowrap}.date-count{font-size:10px;font-weight:500;padding:2px 6px;border-radius:8px;min-width:20px;text-align:center}.date-count.human{color:var(--p-lore-human-note);background:#34d3991a}.date-count.agent{color:var(--p-lore-agent-session);background:#818cf81a}.lore-card-row{display:flex;align-items:flex-start;margin-bottom:16px;position:relative}.lore-card-row.left{justify-content:flex-start;padding-right:52%}.lore-card-row.right{justify-content:flex-end;padding-left:52%}.single-column .lore-card-row.right{justify-content:flex-start;padding-left:0}.lore-card-row:before{content:"";position:absolute;left:50%;top:16px;width:8px;height:8px;border-radius:50%;background:var(--p-spine-color);border:2px solid var(--p-bg-primary);transform:translate(-50%);z-index:2}.single-column .lore-card-row:before{display:none}.lore-card-row.human:before{background:var(--p-lore-human-note)}.lore-card-row.agent:before{background:var(--p-lore-agent-session)}.lore-card-row.left:after,.lore-card-row.right:after{content:"";position:absolute;top:19px;height:1px}.single-column .lore-card-row:after{display:none}.lore-card-row.left:after{left:calc(48% + 8px);right:50%;background:var(--p-lore-human-note);opacity:.4}.lore-card-row.left.agent:after{background:var(--p-lore-agent-session)}.lore-card-row.right:after{left:50%;right:calc(48% + 8px);background:var(--p-lore-agent-session);opacity:.4}.lore-card-row.right.human:after{background:var(--p-lore-human-note)}.lore-card{background:var(--p-bg-card);border:1px solid var(--p-border);border-radius:8px;padding:12px 16px;cursor:pointer;transition:all .15s;width:100%}.lore-card:hover{border-color:var(--p-border-active);background:var(--p-bg-hover)}.lore-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.lore-card-author{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--p-text-secondary)}.author-badge{display:inline-flex;align-items:center;gap:4px;padding:1px 6px;border-radius:4px;font-size:11px;font-weight:500}.author-badge.human{background:#34d3991a;color:var(--p-lore-human-note)}[data-theme=light] .author-badge.human{background:#20c9971f}.author-badge.agent{background:#818cf81a;color:var(--p-lore-agent-session)}[data-theme=light] .author-badge.agent{background:#5c7cfa1f}.lore-card-type{font-size:10px;text-transform:uppercase;letter-spacing:.05em;padding:2px 6px;border-radius:3px}.lore-card-type.agent-session{background:#818cf826;color:var(--p-lore-agent-session)}.lore-card-type.human-note{background:#34d39926;color:var(--p-lore-human-note)}.lore-card-type.decision{background:#fbbf2426;color:var(--p-lore-decision)}.lore-card-type.review{background:#c084fc26;color:var(--p-lore-review)}.lore-card-type.incident{background:#f8717126;color:var(--p-lore-incident)}.lore-card-type.milestone{background:#60a5fa26;color:var(--p-lore-milestone)}.lore-card-title{font-size:14px;font-weight:500;margin-bottom:4px;color:var(--p-text-primary)}.lore-card-summary{font-size:12px;color:var(--p-text-secondary);margin-bottom:8px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.lore-card-symbols{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}.lore-card-footer{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--p-text-muted)}.lore-card-stats{display:flex;gap:8px}.lore-card-verify{display:inline-flex;align-items:center;gap:3px}.lore-card-verify.pass{color:var(--p-accent-green)}.lore-card-verify.fail{color:var(--p-accent-red)}.lore-card-verify.partial{color:var(--p-accent-orange)}.review-stars{color:var(--p-accent-orange);letter-spacing:1px}.symbol-tag{display:inline-flex;align-items:center;padding:1px 6px;border-radius:3px;font-size:11px;font-family:SF Mono,Fira Code,monospace}.symbol-tag.component{background:#7dd3fc1f;color:var(--p-symbol-component)}.symbol-tag.gate{background:#86efac1f;color:var(--p-symbol-gate)}.symbol-tag.flow{background:#fbbf241f;color:var(--p-symbol-flow)}.symbol-tag.signal{background:#fde0471f;color:var(--p-symbol-signal)}.symbol-tag.aspect{background:#a78bfa1f;color:var(--p-symbol-aspect)}.detail-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;justify-content:flex-end}.detail-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#0006}[data-theme=light] .detail-backdrop{background:#0003}.detail-panel{position:relative;width:520px;max-width:90vw;background:var(--p-bg-panel);border-left:1px solid var(--p-border);overflow-y:auto;animation:slideIn .2s ease-out}@keyframes slideIn{0%{transform:translate(100%)}to{transform:translate(0)}}.detail-header{position:sticky;top:0;background:var(--p-bg-panel);border-bottom:1px solid var(--p-border);padding:16px 20px;display:flex;align-items:flex-start;justify-content:space-between;z-index:1}.detail-close{background:none;border:none;color:var(--p-text-muted);cursor:pointer;font-size:18px;padding:4px}.detail-close:hover{color:var(--p-text-primary)}.detail-body{padding:20px}.detail-section{margin-bottom:20px}.detail-section h3{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--p-text-muted);margin-bottom:8px}.detail-meta{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:13px}.detail-meta dt{color:var(--p-text-muted)}.detail-meta dd{color:var(--p-text-primary)}.detail-files{font-size:12px;font-family:SF Mono,Fira Code,monospace}.detail-files li{list-style:none;padding:2px 0;color:var(--p-text-secondary)}.detail-decision{border-left:2px solid var(--p-lore-decision);padding-left:12px;margin-bottom:8px}.detail-decision .decision-text{font-size:13px;color:var(--p-text-primary)}.detail-decision .decision-rationale{font-size:12px;color:var(--p-text-secondary);margin-top:2px}.detail-error{border-left:2px solid var(--p-lore-incident);padding-left:12px;margin-bottom:8px}.detail-learning{padding-left:12px;margin-bottom:4px;font-size:13px;color:var(--p-text-secondary)}.detail-learning:before{content:"•";color:var(--p-symbol-component);margin-right:8px}.sidebar-view{display:flex;height:calc(100vh - 100px)}.sidebar{width:260px;border-right:1px solid var(--p-border);overflow-y:auto;flex-shrink:0}.sidebar-item{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;cursor:pointer;border-bottom:1px solid var(--p-border);transition:background .1s}.sidebar-item:hover{background:var(--p-bg-hover)}.sidebar-item.active{background:var(--p-bg-card);border-left:2px solid var(--p-symbol-component)}.sidebar-item-name{font-size:13px;font-family:SF Mono,Fira Code,monospace}.sidebar-item-count{font-size:11px;color:var(--p-text-muted);background:var(--p-bg-primary);padding:1px 6px;border-radius:8px}.sidebar-content{flex:1;overflow-y:auto;padding:16px}.status-bar{position:fixed;bottom:0;left:0;right:0;background:var(--p-bg-secondary);border-top:1px solid var(--p-border);padding:4px 24px;font-size:11px;color:var(--p-text-muted);display:flex;justify-content:space-between;z-index:50}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 20px;color:var(--p-text-muted);text-align:center}.empty-state h2{font-size:16px;color:var(--p-text-secondary);margin-bottom:8px}.empty-state p{font-size:13px;max-width:400px}.empty-state code{background:var(--p-bg-card);padding:2px 6px;border-radius:3px;font-size:12px}.author-type-toggle{display:flex;gap:2px;background:var(--p-bg-primary);border-radius:6px;padding:2px}.author-type-pill{padding:4px 10px;border:none;background:none;color:var(--p-text-secondary);font-size:11px;cursor:pointer;border-radius:4px;transition:all .15s}.author-type-pill:hover{color:var(--p-text-primary);background:var(--p-bg-hover)}.author-type-pill.active{color:var(--p-text-primary);background:var(--p-bg-card)}.author-type-pill.active.human{color:var(--p-lore-human-note)}.author-type-pill.active.agent{color:var(--p-lore-agent-session)}.symbol-autocomplete-wrapper{position:relative}.symbol-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--p-text-muted);cursor:pointer;font-size:11px;padding:2px 4px}.symbol-clear:hover{color:var(--p-lore-incident)}.symbol-dropdown{position:absolute;top:100%;left:0;right:0;background:var(--p-bg-card);border:1px solid var(--p-border);border-radius:4px;max-height:200px;overflow-y:auto;z-index:100;margin-top:2px}.symbol-dropdown-item{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;cursor:pointer;font-size:12px;transition:background .1s}.symbol-dropdown-item:hover,.symbol-dropdown-item.active{background:var(--p-bg-hover)}.symbol-dropdown-name{font-family:SF Mono,Fira Code,monospace;color:var(--p-symbol-component)}.symbol-dropdown-count{font-size:10px;color:var(--p-text-muted);background:var(--p-bg-primary);padding:1px 5px;border-radius:6px}.session-date-header{padding:6px 16px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--p-text-muted);background:var(--p-bg-primary);border-bottom:1px solid var(--p-border)}.session-sidebar-item{flex-direction:column;align-items:flex-start;gap:4px}.session-sidebar-info{display:flex;align-items:center;justify-content:space-between;width:100%}.session-author-badge{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:500}.session-author-badge.human{color:var(--p-lore-human-note)}.session-author-badge.agent{color:var(--p-lore-agent-session)}.session-sidebar-meta{font-size:10px;color:var(--p-text-muted)}.session-sidebar-stats{display:flex;gap:6px}.session-detail{max-width:700px}.session-detail-header{margin-bottom:20px}.session-detail-header h2{font-size:16px;margin-bottom:8px}.session-detail-meta{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--p-text-secondary)}.session-detail-section{margin-bottom:20px}.session-detail-section h3{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--p-text-muted);margin-bottom:8px}.session-symbols{display:flex;flex-wrap:wrap;gap:4px}.breadcrumb-list{display:flex;flex-direction:column;gap:8px}.breadcrumb-item{display:flex;align-items:flex-start;gap:8px;padding:8px 12px;background:var(--p-bg-card);border-radius:6px;border-left:2px solid var(--p-symbol-flow);font-size:12px}.breadcrumb-phase{font-weight:600;color:var(--p-symbol-flow);text-transform:uppercase;font-size:10px;letter-spacing:.05em;padding:1px 6px;background:#fbbf241a;border-radius:3px;flex-shrink:0}.breadcrumb-context{color:var(--p-text-secondary);flex:1}.breadcrumb-time{color:var(--p-text-muted);font-size:10px;flex-shrink:0}.breadcrumb-decisions{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.breadcrumb-decision{font-size:10px;color:var(--p-text-muted);padding:1px 6px;background:var(--p-bg-primary);border-radius:3px}
@@ -0,0 +1 @@
1
+ import{c as _,r,j as e}from"./index-DPpOdAtC.js";const Q=_((t,n)=>({logs:[],services:[],flowEvents:[],isLoading:!1,error:null,isLive:!1,levelFilter:"all",serviceFilter:null,symbolFilter:null,searchQuery:"",excludedSymbols:new Set,excludedSymbolTypes:new Set,excludedMessages:new Set,excludedServices:new Set,loadLogs:async()=>{t({isLoading:!0,error:null});try{const s=new URLSearchParams,l=n();l.levelFilter!=="all"&&s.set("level",l.levelFilter),l.serviceFilter&&s.set("service",l.serviceFilter),l.symbolFilter&&s.set("symbol",l.symbolFilter),l.searchQuery&&s.set("search",l.searchQuery),s.set("limit","200");const a=await fetch(`/api/sentinel/logs?${s}`);if(!a.ok)throw new Error(`API error: ${a.status}`);const c=await a.json();t({logs:c.logs||[],isLoading:!1})}catch(s){t({isLoading:!1,error:s instanceof Error?s.message:"Failed to load logs",logs:[]})}},loadServices:async()=>{try{const s=await fetch("/api/sentinel/services");if(!s.ok)return;const l=await s.json();t({services:l.services||[]})}catch{}},handleWsMessage:s=>{if(s.type==="sentinel:log"&&s.entry&&t(l=>({logs:[s.entry,...l.logs].slice(0,500)})),s.type==="sentinel:flow_event"){const l={type:"flow_event",flowId:s.flowId,nodeSymbol:s.nodeSymbol,event:s.event,timestamp:s.timestamp,service:s.service};t(a=>({flowEvents:[l,...a.flowEvents].slice(0,200)}))}},setIsLive:s=>t({isLive:s}),setLevelFilter:s=>t({levelFilter:s}),setServiceFilter:s=>t({serviceFilter:s}),setSymbolFilter:s=>t({symbolFilter:s}),setSearchQuery:s=>t({searchQuery:s}),clearLogs:()=>t({logs:[],flowEvents:[]}),toggleExcludedSymbol:s=>{const l=new Set(n().excludedSymbols);l.has(s)?l.delete(s):l.add(s),t({excludedSymbols:l})},toggleExcludedSymbolType:s=>{const l=new Set(n().excludedSymbolTypes);l.has(s)?l.delete(s):l.add(s),t({excludedSymbolTypes:l})},toggleExcludedMessage:s=>{const l=new Set(n().excludedMessages);l.has(s)?l.delete(s):l.add(s),t({excludedMessages:l})},toggleExcludedService:s=>{const l=new Set(n().excludedServices);l.has(s)?l.delete(s):l.add(s),t({excludedServices:l})},clearAllExclusions:()=>t({excludedSymbols:new Set,excludedSymbolTypes:new Set,excludedMessages:new Set,excludedServices:new Set}),getFilteredLogs:()=>{const s=n();let l=s.logs;if(s.levelFilter!=="all"&&(l=l.filter(a=>a.level===s.levelFilter)),s.serviceFilter&&(l=l.filter(a=>a.service===s.serviceFilter)),s.symbolFilter&&(l=l.filter(a=>a.symbol.includes(s.symbolFilter))),s.searchQuery){const a=s.searchQuery.toLowerCase();l=l.filter(c=>c.message.toLowerCase().includes(a)||c.symbol.toLowerCase().includes(a))}return s.excludedSymbols.size>0&&(l=l.filter(a=>!s.excludedSymbols.has(a.symbol))),s.excludedSymbolTypes.size>0&&(l=l.filter(a=>!s.excludedSymbolTypes.has(a.symbolType))),s.excludedMessages.size>0&&(l=l.filter(a=>!s.excludedMessages.has(a.message))),s.excludedServices.size>0&&(l=l.filter(a=>!s.excludedServices.has(a.service))),l}})),R=_((t,n)=>({events:[],scopes:[],selectedScope:null,excludedTypes:new Set,excludedServices:new Set,categoryFilter:null,loading:!1,error:null,total:0,fetchEvents:async(s,l={})=>{t({loading:!0,error:null});try{const a=new URLSearchParams({schemaId:s,...l}),c=await fetch(`/api/sentinel/events?${a}`);if(!c.ok)throw new Error(`Failed to fetch events: ${c.status}`);const d=await c.json();t({events:d.events||[],total:d.total||0,loading:!1})}catch(a){t({error:a instanceof Error?a.message:"Failed to fetch events",loading:!1})}},fetchScopes:async s=>{try{const l=await fetch(`/api/sentinel/events/scopes?schemaId=${encodeURIComponent(s)}`);if(!l.ok)throw new Error(`Failed to fetch scopes: ${l.status}`);const a=await l.json();t({scopes:a.scopes||[]})}catch(l){t({error:l instanceof Error?l.message:"Failed to fetch scopes"})}},fetchScopeEvents:async(s,l)=>{t({loading:!0,error:null,selectedScope:l});try{const a=await fetch(`/api/sentinel/events/scope/${encodeURIComponent(l)}?schemaId=${encodeURIComponent(s)}`);if(!a.ok)throw new Error(`Failed to fetch scope events: ${a.status}`);const c=await a.json();t({events:c.events||[],total:c.count||0,loading:!1})}catch(a){t({error:a instanceof Error?a.message:"Failed to fetch scope events",loading:!1})}},selectScope:s=>t({selectedScope:s}),toggleExcludedType:s=>{const l=new Set(n().excludedTypes);l.has(s)?l.delete(s):l.add(s),t({excludedTypes:l})},toggleExcludedService:s=>{const l=new Set(n().excludedServices);l.has(s)?l.delete(s):l.add(s),t({excludedServices:l})},clearAllExclusions:()=>t({excludedTypes:new Set,excludedServices:new Set}),setCategoryFilter:s=>t({categoryFilter:s}),handleWsMessage:s=>{s.type==="sentinel:event"&&s.event&&t(l=>({events:[s.event,...l.events].slice(0,500),total:l.total+1}))}}));function te(){r.useEffect(()=>{function t(n){const s=n.detail;s!=null&&s.type&&((s.type==="sentinel:log"||s.type==="sentinel:flow_event")&&Q.getState().handleWsMessage(s),s.type==="sentinel:event"&&R.getState().handleWsMessage(s))}return window.addEventListener("sentinel-ws",t),()=>window.removeEventListener("sentinel-ws",t)},[])}function ne(t){const[n,s]=r.useState(t),l=r.useRef(null),a=r.useCallback((d,f)=>{f.preventDefault(),l.current={idx:d,startX:f.clientX,startW:n[d]};const h=j=>{const g=l.current;if(!g)return;const v=Math.max(40,g.startW+(j.clientX-g.startX));s(i=>{const x=[...i];return x[g.idx]=v,x})},u=()=>{l.current=null,window.removeEventListener("mousemove",h),window.removeEventListener("mouseup",u)};window.addEventListener("mousemove",h),window.addEventListener("mouseup",u)},[n]);return{gridTemplate:n.map(d=>`${d}px`).join(" ")+" 1fr",onMouseDown:a}}function z({idx:t,onMouseDown:n}){return e.jsx("span",{className:"col-resize-handle",onMouseDown:s=>n(t,s)})}const ae={debug:"var(--p-accent-slate)",info:"var(--p-accent-blue)",warn:"var(--p-accent-amber)",error:"var(--p-accent-red)"},Y={component:"var(--p-symbol-component)",gate:"var(--p-symbol-gate)",signal:"var(--p-symbol-signal)",flow:"var(--p-symbol-flow)",aspect:"var(--p-symbol-aspect)",raw:"var(--p-text-muted)"};function ce(t){const n=new Date(t),s=(l,a=2)=>String(l).padStart(a,"0");return`${n.getFullYear()}-${s(n.getMonth()+1)}-${s(n.getDate())} ${s(n.getHours())}:${s(n.getMinutes())}:${s(n.getSeconds())}`}function ie({entry:t,isExpanded:n,onToggle:s,onContextMenu:l}){const a=Y[t.symbolType]||Y.raw;return e.jsxs("div",{className:`log-row log-row--${t.level}${n?" log-row--expanded":""}`,onClick:s,onContextMenu:l,children:[e.jsx("span",{className:"log-time",children:ce(t.timestamp)}),e.jsx("span",{className:"log-level",style:{color:ae[t.level]},children:t.level.toUpperCase().padEnd(5)}),e.jsx("span",{className:"log-symbol",style:{color:a},children:t.symbol}),e.jsx("span",{className:"log-service",children:t.service}),e.jsxs("span",{className:"log-message",children:[t.message,t.durationMs!==void 0&&e.jsxs("span",{className:"log-duration",children:[t.durationMs.toFixed(1),"ms"]})]}),n&&t.data&&e.jsx("div",{className:"log-data",onClick:c=>c.stopPropagation(),children:e.jsx("pre",{children:JSON.stringify(t.data,null,2)})})]})}function oe(){const{isLoading:t,error:n,isLive:s,services:l,levelFilter:a,serviceFilter:c,searchQuery:d,excludedSymbols:f,excludedSymbolTypes:h,excludedMessages:u,excludedServices:j,loadLogs:g,loadServices:v,setIsLive:i,setLevelFilter:x,setServiceFilter:m,setSearchQuery:y,getFilteredLogs:N,clearLogs:T,toggleExcludedSymbol:w,toggleExcludedSymbolType:k,toggleExcludedMessage:b,toggleExcludedService:F,clearAllExclusions:p}=Q(),S=N(),L=r.useRef(null),[C,V]=r.useState(new Set),[M,U]=r.useState(!1),[I,q]=r.useState(!0),[E,$]=r.useState(null),{gridTemplate:K,onMouseDown:D}=ne([180,50,160,100]),Z=f.size>0||h.size>0||u.size>0||j.size>0,ee=r.useCallback((o,A)=>{o.preventDefault(),$({x:o.clientX,y:o.clientY,entry:A})},[]);r.useEffect(()=>{if(!E)return;const o=()=>$(null);return window.addEventListener("click",o),()=>window.removeEventListener("click",o)},[E]);const se=o=>{V(A=>{const O=new Set(A);return O.has(o)?(O.delete(o),U(!1)):O.add(o),O})},le=()=>{M?(V(new Set),U(!1)):U(!0)};return r.useEffect(()=>(g(),v(),i(!0),()=>i(!1)),[]),r.useEffect(()=>{I&&L.current&&L.current.scrollIntoView({behavior:"smooth"})},[S.length,I]),t&&S.length===0?e.jsx("div",{className:"logs-view s-loading-state",children:e.jsxs("div",{className:"s-loading-content",children:[e.jsx("div",{className:"s-loading-spinner"}),e.jsx("p",{children:"Loading logs..."})]})}):n&&S.length===0?e.jsx("div",{className:"logs-view s-error-state",children:e.jsxs("div",{className:"s-error-content",children:[e.jsx("h2",{children:"Failed to load logs"}),e.jsx("p",{children:n}),e.jsx("button",{onClick:()=>g(),children:"Retry"})]})}):e.jsxs("div",{className:"logs-view",children:[e.jsxs("div",{className:"logs-toolbar",children:[e.jsxs("div",{className:"logs-filters",children:[e.jsxs("select",{value:a,onChange:o=>x(o.target.value),className:"logs-select",children:[e.jsx("option",{value:"all",children:"All Levels"}),e.jsx("option",{value:"debug",children:"Debug"}),e.jsx("option",{value:"info",children:"Info"}),e.jsx("option",{value:"warn",children:"Warn"}),e.jsx("option",{value:"error",children:"Error"})]}),e.jsxs("select",{value:c||"",onChange:o=>m(o.target.value||null),className:"logs-select",children:[e.jsx("option",{value:"",children:"All Services"}),l.map(o=>e.jsx("option",{value:o.name,children:o.name},o.name))]}),e.jsx("input",{type:"text",placeholder:"Search logs...",value:d,onChange:o=>y(o.target.value),className:"logs-search"})]}),e.jsxs("div",{className:"logs-actions",children:[e.jsxs("span",{className:"logs-count",children:[S.length," entries"]}),e.jsx("button",{className:`logs-expand-btn ${M?"active":""}`,onClick:le,title:M?"Collapse all payloads":"Expand all payloads",children:M?"Collapse All":"Expand All"}),e.jsxs("button",{className:`logs-live-btn ${s?"active":""}`,onClick:()=>i(!s),title:s?"Streaming live":"Click to connect",children:[e.jsx("span",{className:`live-dot ${s?"live":""}`}),s?"Live":"Paused"]}),e.jsx("button",{className:`logs-scroll-btn ${I?"active":""}`,onClick:()=>q(!I),title:"Auto-scroll to new logs",children:I?"Auto":"Manual"}),e.jsx("button",{className:"logs-clear-btn",onClick:T,title:"Clear log buffer",children:"Clear"})]})]}),Z&&e.jsxs("div",{className:"exclusion-bar",children:[[...f].map(o=>e.jsxs("span",{className:"exclusion-chip",children:["symbol: ",o," ",e.jsx("button",{onClick:()=>w(o),children:"×"})]},`sym-${o}`)),[...h].map(o=>e.jsxs("span",{className:"exclusion-chip",children:["type: ",o," ",e.jsx("button",{onClick:()=>k(o),children:"×"})]},`type-${o}`)),[...u].map(o=>e.jsxs("span",{className:"exclusion-chip",children:["msg: ",o.length>40?o.slice(0,40)+"...":o," ",e.jsx("button",{onClick:()=>b(o),children:"×"})]},`msg-${o}`)),[...j].map(o=>e.jsxs("span",{className:"exclusion-chip",children:["service: ",o," ",e.jsx("button",{onClick:()=>F(o),children:"×"})]},`svc-${o}`)),e.jsx("button",{className:"exclusion-clear",onClick:p,children:"Clear all"})]}),E&&e.jsxs("div",{className:"context-menu",style:{top:E.y,left:E.x},onClick:o=>o.stopPropagation(),children:[e.jsxs("button",{onClick:()=>{w(E.entry.symbol),$(null)},children:['Exclude symbol "',E.entry.symbol,'"']}),e.jsxs("button",{onClick:()=>{k(E.entry.symbolType),$(null)},children:['Exclude type "',E.entry.symbolType,'"']}),e.jsx("button",{onClick:()=>{b(E.entry.message),$(null)},children:"Exclude this message"}),e.jsxs("button",{onClick:()=>{F(E.entry.service),$(null)},children:['Exclude service "',E.entry.service,'"']})]}),e.jsxs("div",{className:"logs-table",style:{"--log-cols":K},children:[e.jsxs("div",{className:"logs-header",children:[e.jsxs("span",{className:"log-time",children:["Time",e.jsx(z,{idx:0,onMouseDown:D})]}),e.jsxs("span",{className:"log-level",children:["Level",e.jsx(z,{idx:1,onMouseDown:D})]}),e.jsxs("span",{className:"log-symbol",children:["Symbol",e.jsx(z,{idx:2,onMouseDown:D})]}),e.jsxs("span",{className:"log-service",children:["Service",e.jsx(z,{idx:3,onMouseDown:D})]}),e.jsx("span",{className:"log-message",children:"Message"})]}),e.jsxs("div",{className:"logs-body",children:[e.jsx("div",{ref:L}),S.length===0?e.jsxs("div",{className:"logs-empty",children:[e.jsx("p",{children:"No logs yet."}),e.jsxs("p",{className:"hint",children:["POST structured logs to ",e.jsx("code",{children:"/api/sentinel/logs"})," or connect an app with the Sentinel client SDK."]})]}):S.map(o=>e.jsx(ie,{entry:o,isExpanded:M||C.has(o.id),onToggle:()=>se(o.id),onContextMenu:A=>ee(A,o)},o.id))]})]})]})}const re=_((t,n)=>({incidents:[],patterns:[],selectedIncidentId:null,isLoading:!1,error:null,statusFilter:"all",environmentFilter:null,symbolFilter:null,loadIncidents:async()=>{t({isLoading:!0,error:null});try{const s=await fetch("/api/sentinel/incidents");if(!s.ok)throw new Error(`API error: ${s.status}`);const l=await s.json();t({incidents:l.incidents||[],isLoading:!1})}catch(s){t({isLoading:!1,error:s instanceof Error?s.message:"Failed to load incidents",incidents:[]})}},loadPatterns:async()=>{try{const s=await fetch("/api/sentinel/patterns");if(!s.ok)throw new Error(`API error: ${s.status}`);const l=await s.json();t({patterns:l.patterns||[]})}catch{}},selectIncident:s=>t({selectedIncidentId:s}),setStatusFilter:s=>t({statusFilter:s}),setEnvironmentFilter:s=>t({environmentFilter:s}),setSymbolFilter:s=>t({symbolFilter:s}),resolveIncident:async s=>{try{const l=await fetch(`/api/sentinel/incidents/${s}/resolve`,{method:"POST",headers:{"Content-Type":"application/json"}});if(!l.ok)throw new Error(`API error: ${l.status}`);await n().loadIncidents()}catch(l){throw l}},getFilteredIncidents:()=>{const s=n();let l=s.incidents;return s.statusFilter!=="all"&&(l=l.filter(a=>a.status===s.statusFilter)),s.environmentFilter&&(l=l.filter(a=>a.environment===s.environmentFilter)),s.symbolFilter&&(l=l.filter(a=>{const c=a.symbols;return c.feature===s.symbolFilter||c.component===s.symbolFilter||c.flow===s.symbolFilter||c.gate===s.symbolFilter||c.signal===s.symbolFilter})),l},getSelectedIncident:()=>{const s=n();return s.incidents.find(l=>l.id===s.selectedIncidentId)}})),H={open:"var(--p-accent-red)",investigating:"var(--p-accent-amber)",resolved:"var(--p-accent-green)","wont-fix":"var(--p-text-muted)"},B={open:"Open",investigating:"Investigating",resolved:"Resolved","wont-fix":"Won't Fix"};function de(){const{isLoading:t,error:n,statusFilter:s,selectedIncidentId:l,loadIncidents:a,loadPatterns:c,selectIncident:d,setStatusFilter:f,getFilteredIncidents:h,getSelectedIncident:u,resolveIncident:j}=re(),g=h(),v=u();return r.useEffect(()=>{a(),c()},[]),t?e.jsx("div",{className:"incidents-view s-loading-state",children:e.jsxs("div",{className:"s-loading-content",children:[e.jsx("div",{className:"s-loading-spinner"}),e.jsx("p",{children:"Loading incidents..."})]})}):n?e.jsx("div",{className:"incidents-view s-error-state",children:e.jsxs("div",{className:"s-error-content",children:[e.jsx("h2",{children:"Failed to load incidents"}),e.jsx("p",{children:n}),e.jsx("button",{onClick:()=>a(),children:"Retry"})]})}):e.jsxs("div",{className:"incidents-view",children:[e.jsxs("div",{className:"incidents-filters",children:[e.jsxs("div",{className:"filter-group",children:[e.jsx("label",{children:"Status:"}),e.jsxs("select",{value:s,onChange:i=>f(i.target.value),children:[e.jsx("option",{value:"all",children:"All"}),e.jsx("option",{value:"open",children:"Open"}),e.jsx("option",{value:"investigating",children:"Investigating"}),e.jsx("option",{value:"resolved",children:"Resolved"}),e.jsx("option",{value:"wont-fix",children:"Won't Fix"})]})]}),e.jsxs("div",{className:"filter-stats",children:[g.length," incident",g.length!==1?"s":""]})]}),e.jsxs("div",{className:"incidents-content",children:[e.jsx("div",{className:"incidents-list",children:g.length===0?e.jsxs("div",{className:"incidents-empty",children:[e.jsx("p",{children:"No incidents found."}),e.jsx("p",{className:"hint",children:"Incidents are recorded when errors occur in your application."})]}):g.map(i=>e.jsxs("div",{className:`incident-card ${l===i.id?"selected":""}`,onClick:()=>d(i.id),children:[e.jsxs("div",{className:"incident-header",children:[e.jsx("span",{className:"incident-id",children:i.id}),e.jsx("span",{className:"incident-status",style:{color:H[i.status]},children:B[i.status]})]}),e.jsx("div",{className:"incident-error",children:i.error.message}),e.jsxs("div",{className:"incident-meta",children:[e.jsx("span",{className:"incident-env",children:i.environment}),e.jsx("span",{className:"incident-time",children:new Date(i.timestamp).toLocaleString()})]}),i.symbols&&Object.keys(i.symbols).length>0&&e.jsxs("div",{className:"incident-symbols",children:[i.symbols.component&&e.jsxs("span",{className:"symbol-tag component",children:["#",i.symbols.component]}),i.symbols.flow&&e.jsxs("span",{className:"symbol-tag flow",children:["$",i.symbols.flow]}),i.symbols.gate&&e.jsxs("span",{className:"symbol-tag gate",children:["^",i.symbols.gate]}),i.symbols.signal&&e.jsxs("span",{className:"symbol-tag signal",children:["!",i.symbols.signal]})]}),i.patternMatches&&i.patternMatches.length>0&&e.jsx("div",{className:"incident-patterns",children:e.jsxs("span",{className:"pattern-match",children:["Matched: ",i.patternMatches[0].patternName,"(",Math.round(i.patternMatches[0].confidence),"%)"]})})]},i.id))}),v&&e.jsxs("div",{className:"incident-detail",children:[e.jsxs("div",{className:"detail-header",children:[e.jsx("h2",{children:v.id}),e.jsx("button",{className:"detail-close",onClick:()=>d(null),children:"×"})]}),e.jsxs("div",{className:"detail-content",children:[e.jsxs("section",{className:"detail-section",children:[e.jsx("h3",{children:"Error"}),e.jsx("div",{className:"error-message",children:v.error.message}),v.error.type&&e.jsxs("div",{className:"error-type",children:["Type: ",v.error.type]})]}),e.jsxs("section",{className:"detail-section",children:[e.jsx("h3",{children:"Context"}),e.jsxs("div",{className:"detail-field",children:[e.jsx("label",{children:"Status"}),e.jsx("span",{className:"status-badge",style:{backgroundColor:H[v.status]},children:B[v.status]})]}),e.jsxs("div",{className:"detail-field",children:[e.jsx("label",{children:"Environment"}),e.jsx("span",{children:v.environment})]}),e.jsxs("div",{className:"detail-field",children:[e.jsx("label",{children:"Timestamp"}),e.jsx("span",{children:new Date(v.timestamp).toLocaleString()})]})]}),v.symbols&&Object.keys(v.symbols).length>0&&e.jsxs("section",{className:"detail-section",children:[e.jsx("h3",{children:"Symbols"}),e.jsx("div",{className:"symbols-list",children:Object.entries(v.symbols).map(([i,x])=>x&&e.jsxs("div",{className:"symbol-item",children:[e.jsx("label",{children:i}),e.jsx("span",{className:`symbol-value ${i}`,children:x})]},i))})]}),v.patternMatches&&v.patternMatches.length>0&&e.jsxs("section",{className:"detail-section",children:[e.jsx("h3",{children:"Pattern Matches"}),e.jsx("div",{className:"patterns-list",children:v.patternMatches.map(i=>e.jsxs("div",{className:"pattern-item",children:[e.jsx("div",{className:"pattern-name",children:i.patternName}),e.jsxs("div",{className:"pattern-confidence",children:[Math.round(i.confidence),"% confidence"]})]},i.patternId))})]}),v.status==="open"&&e.jsx("section",{className:"detail-actions",children:e.jsx("button",{className:"action-btn resolve",onClick:()=>j(v.id),children:"Mark Resolved"})})]})]})]})]})}const X=_((t,n)=>({schemas:[],selectedSchemaId:null,loading:!1,error:null,fetchSchemas:async()=>{t({loading:!0,error:null});try{const s=await fetch("/api/sentinel/schemas");if(!s.ok)throw new Error(`Failed to fetch schemas: ${s.status}`);const a=(await s.json()).schemas||[];t({schemas:a,loading:!1}),!n().selectedSchemaId&&a.length>0&&t({selectedSchemaId:a[0].id})}catch(s){t({error:s instanceof Error?s.message:"Failed to fetch schemas",loading:!1})}},selectSchema:s=>t({selectedSchemaId:s}),getSelectedSchema:()=>{const s=n();return s.schemas.find(l=>l.id===s.selectedSchemaId)}}));function ue(t){const[n,s]=r.useState(t),l=r.useRef(null),a=r.useCallback((d,f)=>{f.preventDefault(),l.current={idx:d,startX:f.clientX,startW:n[d]};const h=j=>{const g=l.current;if(!g)return;const v=Math.max(40,g.startW+(j.clientX-g.startX));s(i=>{const x=[...i];return x[g.idx]=v,x})},u=()=>{l.current=null,window.removeEventListener("mousemove",h),window.removeEventListener("mouseup",u)};window.addEventListener("mousemove",h),window.addEventListener("mouseup",u)},[n]);return{gridTemplate:n.map(d=>`${d}px`).join(" ")+" 1fr",onMouseDown:a}}function P({idx:t,onMouseDown:n}){return e.jsx("span",{className:"col-resize-handle",onMouseDown:s=>n(t,s)})}const me={debug:"var(--p-accent-slate)",info:"var(--p-accent-blue)",warn:"var(--p-accent-amber)",error:"var(--p-accent-red)"},pe={logs:"var(--p-accent-blue)",metrics:"var(--p-accent-green)",traces:"var(--p-accent-purple)",incidents:"var(--p-accent-red)",rules:"var(--p-accent-amber)",state:"var(--p-accent-cyan)",cascade:"var(--p-accent-pink)",lifecycle:"var(--p-accent-lime)"};function he(t){const n=new Date(t),s=(l,a=2)=>String(l).padStart(a,"0");return`${n.getFullYear()}-${s(n.getMonth()+1)}-${s(n.getDate())} ${s(n.getHours())}:${s(n.getMinutes())}:${s(n.getSeconds())}`}function W(t,n){var l;const s=(l=n==null?void 0:n.visualization)==null?void 0:l.categoryColors;return s&&s[t]?s[t]:pe[t]||"var(--p-text-muted)"}function ve(){const{schemas:t,selectedSchemaId:n,selectSchema:s,fetchSchemas:l,loading:a}=X();return r.useEffect(()=>{l()},[]),a?e.jsx("div",{className:"events-loading",children:"Loading schemas..."}):t.length===0?e.jsxs("div",{className:"events-empty-state",children:[e.jsx("p",{children:"No event schemas registered."}),e.jsxs("p",{className:"hint",children:["Applications register schemas via ",e.jsx("code",{children:"POST /api/sentinel/schemas"}),"."]})]}):e.jsx("select",{className:"events-schema-select",value:n||"",onChange:c=>s(c.target.value||null),children:t.map(c=>e.jsxs("option",{value:c.id,children:[c.name," (v",c.version,")"]},c.id))})}function xe({schema:t}){const{scopes:n,selectedScope:s,fetchScopes:l,fetchScopeEvents:a,selectScope:c,fetchEvents:d}=R();r.useEffect(()=>{l(t.id)},[t.id]);const f=h=>{s===h?(c(null),d(t.id)):a(t.id,h)};return n.length===0?null:e.jsxs("div",{className:"events-scope-nav",children:[e.jsxs("div",{className:"events-scope-label",children:[t.scope.label,"s"]}),e.jsx("div",{className:"events-scope-list",children:n.slice(0,50).map(h=>e.jsxs("button",{className:`events-scope-chip ${s===h.scopeValue?"active":""}`,onClick:()=>f(h.scopeValue),title:`${h.eventCount} events`,children:[e.jsx("span",{className:"scope-value",children:t.scope.type==="number"?`#${h.scopeValue}`:h.scopeValue}),e.jsx("span",{className:"scope-count",children:h.eventCount})]},h.scopeValue))})]})}function ge({schema:t}){var h;const{events:n,categoryFilter:s,setCategoryFilter:l,excludedTypes:a,toggleExcludedType:c}=R(),d=[...new Set(n.map(u=>u.category))],f=((h=t.visualization)==null?void 0:h.defaultExcluded)||[];return r.useEffect(()=>{for(const u of f)a.has(u)||c(u)},[t.id]),e.jsxs("div",{className:"events-category-filters",children:[e.jsx("button",{className:`events-category-chip ${s?"":"active"}`,onClick:()=>l(null),children:"All"}),d.map(u=>e.jsx("button",{className:`events-category-chip ${s===u?"active":""}`,onClick:()=>l(s===u?null:u),style:{borderColor:W(u,t),color:s===u?"var(--p-bg-primary)":W(u,t),backgroundColor:s===u?W(u,t):"transparent"},children:u},u))]})}function fe({event:t,schema:n,isExpanded:s,onToggle:l,onContextMenu:a}){const c=W(t.category,n);return e.jsxs("div",{className:`event-row event-row--${t.severity||"info"}${s?" event-row--expanded":""}`,onClick:l,onContextMenu:a,children:[e.jsx("span",{className:"event-time",children:he(t.timestamp)}),e.jsx("span",{className:"event-severity",style:{color:me[t.severity||"info"]},children:(t.severity||"info").toUpperCase().padEnd(5)}),e.jsxs("span",{className:"event-type",children:[t.category&&t.category!=="unknown"&&e.jsxs("span",{className:"event-category-badge",style:{color:c},children:["[",t.category,"]"]})," ",t.eventType]}),e.jsx("span",{className:"event-service",children:t.service}),t.scopeValue&&e.jsx("span",{className:"event-scope",children:t.scopeValue}),t.depth!=null&&t.depth>0&&e.jsx("span",{className:"event-depth",style:{paddingLeft:`${t.depth*12}px`},children:" ".repeat(t.depth)}),s&&t.data&&e.jsx("div",{className:"event-data",onClick:d=>d.stopPropagation(),children:e.jsx("pre",{children:JSON.stringify(t.data,null,2)})})]})}function je({schema:t}){const{events:n,excludedTypes:s,excludedServices:l,categoryFilter:a,loading:c,toggleExcludedType:d,toggleExcludedService:f,clearAllExclusions:h}=R(),[u,j]=r.useState(new Set),[g,v]=r.useState(!1),i=r.useRef(null),{gridTemplate:x,onMouseDown:m}=ue([180,50,200,100]),y=p=>{j(S=>{const L=new Set(S);return L.has(p)?(L.delete(p),v(!1)):L.add(p),L})},N=n.filter(p=>!(s.has(p.eventType)||l.has(p.service)||a&&p.category!==a)),T=s.size>0||l.size>0,[w,k]=r.useState(null),b=r.useCallback((p,S)=>{p.preventDefault(),k({x:p.clientX,y:p.clientY,event:S})},[]);r.useEffect(()=>{if(!w)return;const p=()=>k(null);return window.addEventListener("click",p),()=>window.removeEventListener("click",p)},[w]);const F=()=>{g?(j(new Set),v(!1)):v(!0)};return c?e.jsx("div",{className:"events-loading",children:"Loading events..."}):N.length===0?e.jsxs("div",{className:"events-empty-state",children:[e.jsx("p",{children:"No events to display."}),e.jsx("p",{className:"hint",children:"Events will appear here when applications send them to Sentinel."})]}):e.jsxs("div",{className:"events-table",ref:i,style:{"--evt-cols":x},children:[e.jsxs("div",{className:"events-table-actions",children:[e.jsxs("span",{className:"events-count",children:[N.length," events"]}),e.jsx("button",{className:`events-expand-btn ${g?"active":""}`,onClick:F,title:g?"Collapse all payloads":"Expand all payloads",children:g?"Collapse All":"Expand All"})]}),T&&e.jsxs("div",{className:"exclusion-bar",children:[[...s].map(p=>e.jsxs("span",{className:"exclusion-chip",children:["type: ",p," ",e.jsx("button",{onClick:()=>d(p),children:"×"})]},`type-${p}`)),[...l].map(p=>e.jsxs("span",{className:"exclusion-chip",children:["service: ",p," ",e.jsx("button",{onClick:()=>f(p),children:"×"})]},`svc-${p}`)),e.jsx("button",{className:"exclusion-clear",onClick:h,children:"Clear all"})]}),w&&e.jsxs("div",{className:"context-menu",style:{top:w.y,left:w.x},onClick:p=>p.stopPropagation(),children:[e.jsxs("button",{onClick:()=>{d(w.event.eventType),k(null)},children:['Exclude type "',w.event.eventType,'"']}),e.jsxs("button",{onClick:()=>{f(w.event.service),k(null)},children:['Exclude service "',w.event.service,'"']})]}),e.jsxs("div",{className:"events-table-header",children:[e.jsxs("span",{className:"event-time",children:["Time",e.jsx(P,{idx:0,onMouseDown:m})]}),e.jsxs("span",{className:"event-severity",children:["Level",e.jsx(P,{idx:1,onMouseDown:m})]}),e.jsxs("span",{className:"event-type",children:["Type",e.jsx(P,{idx:2,onMouseDown:m})]}),e.jsxs("span",{className:"event-service",children:["Service",e.jsx(P,{idx:3,onMouseDown:m})]}),e.jsx("span",{className:"event-scope",children:"Scope"})]}),e.jsx("div",{className:"events-table-body",children:N.map(p=>e.jsx(fe,{event:p,schema:t,isExpanded:g||u.has(p.id),onToggle:()=>y(p.id),onContextMenu:S=>b(S,p)},p.id))})]})}function ye(){const{selectedSchemaId:t}=X(),n=X(l=>l.getSelectedSchema()),{fetchEvents:s}=R();return r.useEffect(()=>{t&&s(t)},[t]),e.jsxs("div",{className:"events-view",children:[e.jsxs("div",{className:"events-toolbar",children:[e.jsx(ve,{}),n&&e.jsx(ge,{schema:n})]}),n&&e.jsx(xe,{schema:n}),n?e.jsx(je,{schema:n}):e.jsx("div",{className:"events-empty-state",children:e.jsx("p",{children:"Select a schema to view events."})})]})}const G={gate:"var(--p-symbol-gate)",action:"var(--p-symbol-component)",signal:"var(--p-symbol-signal)"},be={gate:"^",action:"#",signal:"!"};function J(t,n){const s=Date.now();return n.some(l=>l.nodeSymbol===t&&s-new Date(l.timestamp).getTime()<5e3)}function we({flow:t,flowEvents:n,isSelected:s,onSelect:l}){return e.jsxs("div",{className:`flow-card ${s?"selected":""}`,onClick:l,children:[e.jsxs("div",{className:"flow-card-header",children:[e.jsx("span",{className:"flow-card-id",children:t.id}),t.trigger&&e.jsx("span",{className:"flow-card-trigger",children:t.trigger})]}),e.jsx("div",{className:"flow-card-name",children:t.name}),e.jsx("div",{className:"flow-card-steps",children:t.steps.map((a,c)=>{const d=J(a.symbol,n);return e.jsxs("div",{className:"flow-step-mini",children:[c>0&&e.jsx("span",{className:"flow-arrow",children:"→"}),e.jsx("span",{className:`flow-step-dot ${d?"active pulse":""}`,style:{backgroundColor:d?G[a.type]:"var(--p-text-muted)"},title:`${a.symbol} (${a.type})`})]},c)})})]})}function Se({flow:t,flowEvents:n}){return e.jsxs("div",{className:"flow-diagram",children:[e.jsx("h3",{children:t.name}),t.trigger&&e.jsxs("div",{className:"flow-trigger-label",children:["Trigger: ",e.jsx("code",{children:t.trigger})]}),e.jsx("div",{className:"flow-steps",children:t.steps.map((s,l)=>{const a=J(s.symbol,n),c=n.find(d=>d.nodeSymbol===s.symbol);return e.jsxs("div",{className:"flow-step-container",children:[l>0&&e.jsx("div",{className:"flow-connector",children:e.jsx("div",{className:`flow-line ${a?"active":""}`})}),e.jsxs("div",{className:`flow-step-node ${a?"active":""}`,style:{borderColor:G[s.type]},children:[e.jsx("span",{className:"flow-step-icon",children:be[s.type]}),e.jsx("span",{className:"flow-step-symbol",children:s.symbol}),e.jsx("span",{className:"flow-step-type",children:s.type}),a&&c&&e.jsxs("span",{className:"flow-step-live",children:[c.service," · ",new Date(c.timestamp).toLocaleTimeString()]})]})]},l)})})]})}function Ne({symbols:t,onSave:n,onCancel:s}){const[l,a]=r.useState(""),[c,d]=r.useState(""),[f,h]=r.useState([]),u=r.useCallback(x=>{h(m=>[...m,{type:x,symbol:""}])},[]),j=r.useCallback((x,m,y)=>{h(N=>N.map((T,w)=>w===x?{...T,[m]:y}:T))},[]),g=r.useCallback(x=>{h(m=>m.filter((y,N)=>N!==x))},[]),v=()=>{if(!l||f.length===0)return;const x=`$${l.toLowerCase().replace(/\s+/g,"-")}`;n({id:x,name:l,trigger:c||void 0,steps:f})},i=x=>x==="gate"?t.filter(m=>m.type==="gate"):x==="signal"?t.filter(m=>m.type==="signal"):t.filter(m=>m.type==="component");return e.jsxs("div",{className:"flow-composer",children:[e.jsx("h3",{children:"New Flow"}),e.jsxs("div",{className:"composer-field",children:[e.jsx("label",{children:"Flow Name"}),e.jsx("input",{type:"text",placeholder:"e.g. Checkout Flow",value:l,onChange:x=>a(x.target.value)})]}),e.jsxs("div",{className:"composer-field",children:[e.jsx("label",{children:"Trigger (optional)"}),e.jsx("input",{type:"text",placeholder:"e.g. POST /api/checkout",value:c,onChange:x=>d(x.target.value)})]}),e.jsxs("div",{className:"composer-steps",children:[e.jsx("label",{children:"Steps"}),f.map((x,m)=>e.jsxs("div",{className:"composer-step",children:[e.jsxs("select",{value:x.type,onChange:y=>j(m,"type",y.target.value),children:[e.jsx("option",{value:"gate",children:"Gate (^)"}),e.jsx("option",{value:"action",children:"Action (#)"}),e.jsx("option",{value:"signal",children:"Signal (!)"})]}),e.jsxs("select",{value:x.symbol,onChange:y=>j(m,"symbol",y.target.value),children:[e.jsx("option",{value:"",children:"Select symbol..."}),i(x.type).map(y=>e.jsx("option",{value:y.symbol,children:y.symbol},y.symbol))]}),e.jsx("button",{className:"composer-remove",onClick:()=>g(m),children:"×"})]},m)),e.jsxs("div",{className:"composer-add-buttons",children:[e.jsx("button",{onClick:()=>u("gate"),children:"+ Gate"}),e.jsx("button",{onClick:()=>u("action"),children:"+ Action"}),e.jsx("button",{onClick:()=>u("signal"),children:"+ Signal"})]})]}),e.jsxs("div",{className:"composer-actions",children:[e.jsx("button",{className:"action-btn",onClick:v,disabled:!l||f.length===0,children:"Save Flow"}),e.jsx("button",{className:"action-btn cancel",onClick:s,children:"Cancel"})]})]})}function Ce(){const{flowEvents:t,isLive:n,setIsLive:s}=Q(),[l,a]=r.useState([]),[c,d]=r.useState([]),[f,h]=r.useState(null),[u,j]=r.useState(!1),[g,v]=r.useState(!0),i=l.find(m=>m.id===f);r.useEffect(()=>{async function m(){try{const y=await fetch("/api/sentinel/symbols");if(!y.ok){v(!1);return}const N=await y.json(),T=(N.symbols||[]).map(b=>({symbol:b.symbol,type:b.type}));d(T);const k=(N.symbols||[]).filter(b=>b.type==="flow").map(b=>{var p,S,L;const F=[];if((p=b.data)!=null&&p.steps&&Array.isArray(b.data.steps))for(const C of b.data.steps)F.push({type:C.type||"action",symbol:C.symbol||"",label:C.label});if(F.length===0&&b.references)for(const C of b.references)C.startsWith("^")?F.push({type:"gate",symbol:C}):C.startsWith("!")?F.push({type:"signal",symbol:C}):C.startsWith("#")&&F.push({type:"action",symbol:C});return{id:b.symbol,name:((S=b.data)==null?void 0:S.name)||b.symbol.replace("$",""),trigger:(L=b.data)==null?void 0:L.trigger,steps:F}});a(k),v(!1)}catch{v(!1)}}m()},[]),r.useEffect(()=>(s(!0),()=>s(!1)),[]);const x=m=>{a(y=>[...y,m]),j(!1),h(m.id)};return g?e.jsx("div",{className:"flows-view s-loading-state",children:e.jsxs("div",{className:"s-loading-content",children:[e.jsx("div",{className:"s-loading-spinner"}),e.jsx("p",{children:"Loading flows..."})]})}):e.jsxs("div",{className:"flows-view",children:[e.jsxs("div",{className:"flows-toolbar",children:[e.jsxs("div",{className:"flows-toolbar-left",children:[e.jsxs("span",{className:"flows-count",children:[l.length," flow",l.length!==1?"s":""]}),e.jsxs("button",{className:`logs-live-btn ${n?"active":""}`,onClick:()=>s(!n),children:[e.jsx("span",{className:`live-dot ${n?"live":""}`}),n?"Live":"Paused"]})]}),e.jsx("div",{className:"flows-toolbar-right",children:e.jsx("button",{className:"action-btn",onClick:()=>{j(!0),h(null)},children:"+ New Flow"})})]}),e.jsxs("div",{className:"flows-content",children:[e.jsx("div",{className:"flows-list",children:l.length===0&&!u?e.jsxs("div",{className:"flows-empty",children:[e.jsx("p",{children:"No flows defined."}),e.jsxs("p",{className:"hint",children:["Define flows in ",e.jsx("code",{children:".purpose"})," files or use the composer to create one."]})]}):l.map(m=>e.jsx(we,{flow:m,flowEvents:t,isSelected:f===m.id,onSelect:()=>{h(m.id),j(!1)}},m.id))}),e.jsx("div",{className:"flows-detail",children:u?e.jsx(Ne,{symbols:c,onSave:x,onCancel:()=>j(!1)}):i?e.jsx(Se,{flow:i,flowEvents:t}):e.jsx("div",{className:"flows-empty-detail",children:e.jsx("p",{children:"Select a flow to visualize or create a new one."})})})]})]})}const Ee=[{id:"logs",label:"Logs"},{id:"incidents",label:"Incidents"},{id:"events",label:"Events"},{id:"flows",label:"Flows"}];function Le(){const[t,n]=r.useState("logs");return te(),e.jsxs("div",{className:"sentinel-section",children:[e.jsx("div",{className:"sentinel-tabs",children:Ee.map(s=>e.jsx("button",{className:`sentinel-tab ${t===s.id?"active":""}`,onClick:()=>n(s.id),children:s.label},s.id))}),e.jsxs("div",{className:"sentinel-tab-content",children:[t==="logs"&&e.jsx(oe,{}),t==="incidents"&&e.jsx(de,{}),t==="events"&&e.jsx(ye,{}),t==="flows"&&e.jsx(Ce,{})]})]})}export{Le as default};
@@ -1 +1 @@
1
- import{c as p,r as m,j as e}from"./index-F0KL9xrN.js";const l=p((a,r)=>({agents:[],myIdentity:null,threads:[],activeThreadId:null,activeThread:null,fileRequests:[],status:null,loading:!1,activeTab:"threads",threadFilter:"active",fileFilter:"pending",fetchAgents:async()=>{try{const s=await fetch("/api/symphony/agents");if(!s.ok)return;const i=await s.json();a({agents:i.agents||[]})}catch{}},fetchMyIdentity:async()=>{try{const s=await fetch("/api/symphony/agents/me");if(!s.ok)return;const i=await s.json();a({myIdentity:i.identity||null})}catch{}},fetchThreads:async()=>{try{const s=r().threadFilter,i=s!=="all"?`?status=${s}`:"",t=await fetch(`/api/symphony/threads${i}`);if(!t.ok)return;const d=await t.json();a({threads:d.threads||[]})}catch{}},fetchThread:async s=>{try{const i=await fetch(`/api/symphony/threads/${s}`);if(!i.ok)return;const t=await i.json();a({activeThreadId:s,activeThread:{thread:t.thread,messages:t.messages||[],symbolsDiscussed:t.symbolsDiscussed||[]}})}catch{}},fetchFileRequests:async()=>{try{const s=r().fileFilter,i=s!=="all"?`?status=${s}`:"",t=await fetch(`/api/symphony/file-requests${i}`);if(!t.ok)return;const d=await t.json();a({fileRequests:d.fileRequests||[]})}catch{}},fetchStatus:async()=>{try{const s=await fetch("/api/symphony/status");if(!s.ok)return;const i=await s.json();a({status:i})}catch{}},sendMessage:async s=>{try{const i=await fetch("/api/symphony/messages",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)});if(!i.ok)return;const{activeThreadId:t}=r(),n=(await i.json()).threadId||t;n&&await r().fetchThread(n),await r().fetchThreads()}catch{}},resolveThread:async(s,i)=>{try{(await fetch(`/api/symphony/threads/${s}/resolve`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({decision:i})})).ok&&(await r().fetchThread(s),await r().fetchThreads())}catch{}},handleFileAction:async(s,i,t)=>{try{(await fetch(`/api/symphony/file-requests/${s}/action`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:i,reason:t})})).ok&&await r().fetchFileRequests()}catch{}},setActiveTab:s=>a({activeTab:s}),setActiveThread:s=>{s?r().fetchThread(s):a({activeThreadId:null,activeThread:null})},setThreadFilter:s=>{a({threadFilter:s}),r().fetchThreads()},setFileFilter:s=>{a({fileFilter:s}),r().fetchFileRequests()},handleWsMessage:s=>{if(s.type==="symphony:message"){const{activeThreadId:i,activeThread:t}=r();s.threadId&&s.threadId===i&&t&&s.message&&(t.messages.some(n=>n.id===s.message.id)||a({activeThread:{...t,messages:[...t.messages,s.message]}})),r().fetchThreads()}if(s.type==="symphony:thread_resolved"){const{activeThreadId:i}=r();s.threadId===i&&r().fetchThread(s.threadId),r().fetchThreads()}},refresh:async()=>{a({loading:!0}),await Promise.all([r().fetchThreads(),r().fetchAgents(),r().fetchStatus()]),a({loading:!1})}}));function j(){m.useEffect(()=>{function a(r){const s=r.detail;s!=null&&s.type&&(s.type==="symphony:message"||s.type==="symphony:thread_resolved")&&l.getState().handleWsMessage(s)}return window.addEventListener("symphony-ws",a),()=>window.removeEventListener("symphony-ws",a)},[])}const x={question:"dialogue",context:"dialogue",clarification:"dialogue",verification:"dialogue",reference:"dialogue",proposal:"action",action:"action",decision:"outcome",approval:"outcome",rejection:"outcome",alert:"system",handoff:"lifecycle",fileRequest:"transfer",fileApproved:"transfer",fileDenied:"transfer",fileDelivery:"transfer"};function y(a){return x[a]||"dialogue"}function N(a){const r=Date.now()-new Date(a).getTime(),s=Math.floor(r/1e3);if(s<60)return`${s}s ago`;const i=Math.floor(s/60);if(i<60)return`${i}m ago`;const t=Math.floor(i/60);return t<24?`${t}h ago`:`${Math.floor(t/24)}d ago`}function g(a){return new Date(a).toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"})}function b(){const a=l(n=>n.threads),r=l(n=>n.activeThreadId),s=l(n=>n.threadFilter),i=l(n=>n.setActiveThread),t=l(n=>n.setThreadFilter),d=[{id:"active",label:"Active"},{id:"resolved",label:"Resolved"},{id:"all",label:"All"}];return e.jsxs("div",{className:"thread-list-sidebar",children:[e.jsx("div",{className:"thread-list-toolbar",children:d.map(n=>e.jsx("button",{className:`thread-filter-btn ${s===n.id?"active":""}`,onClick:()=>t(n.id),children:n.label},n.id))}),e.jsx("div",{className:"thread-list-items",children:a.length===0?e.jsxs("div",{className:"thread-list-empty",children:["No threads yet.",e.jsx("br",{}),e.jsx("br",{}),"Agents create threads via ",e.jsx("code",{children:"paradigm_symphony_send"})]}):a.map(n=>e.jsxs("div",{className:`thread-card ${r===n.id?"selected":""}`,onClick:()=>i(n.id),children:[e.jsx("div",{className:"thread-card-topic",children:n.topic}),e.jsxs("div",{className:"thread-card-meta",children:[e.jsxs("div",{className:"thread-card-participants",children:[n.participants.slice(0,4).map(h=>e.jsx("span",{className:`participant-avatar ${h.type==="human"?"human":""}`,title:h.name,children:h.name.charAt(0).toUpperCase()},h.id)),n.participants.length>4&&e.jsxs("span",{className:"participant-avatar",style:{background:"var(--p-text-muted)"},children:["+",n.participants.length-4]})]}),e.jsxs("div",{className:"thread-card-stats",children:[e.jsx("span",{className:"thread-card-count",children:n.messageCount}),e.jsx("span",{className:`thread-card-status ${n.status}`,children:n.status}),e.jsx("span",{children:N(n.lastActivity)})]})]})]},n.id))})]})}function T({msg:a}){const[r,s]=m.useState(!1),i=y(a.intent);return e.jsxs("div",{className:"message-bubble",children:[e.jsxs("div",{className:"message-bubble-header",children:[e.jsx("span",{className:"message-sender",children:a.sender.name}),e.jsx("span",{className:`message-sender-type ${a.sender.type}`,children:a.sender.type}),e.jsx("span",{className:`intent-pill ${i}`,children:a.intent})]}),e.jsx("div",{className:"message-text",children:a.text}),a.symbols.length>0&&e.jsx("div",{className:"message-symbols",children:a.symbols.map(t=>e.jsx("span",{className:"message-symbol-tag",children:t},t))}),a.diff&&e.jsxs("div",{className:"message-diff",children:[e.jsx("button",{className:"message-diff-toggle",onClick:()=>s(!r),children:r?"Hide diff":"Show diff"}),r&&e.jsx("pre",{className:"message-diff-content",children:a.diff})]}),a.decision&&e.jsxs("div",{className:"message-decision",children:[e.jsx("div",{className:"message-decision-label",children:"Decision"}),a.decision]}),e.jsx("div",{className:"message-time",children:g(a.timestamp)})]})}const w=["question","context","proposal","decision","action","alert","approval","rejection","reference","clarification","verification"];function k({threadId:a}){const[r,s]=m.useState("question"),[i,t]=m.useState(""),d=l(o=>o.sendMessage);async function n(){const o=i.trim();o&&(await d({intent:r,text:o,threadRoot:a||void 0}),t(""))}function h(o){o.key==="Enter"&&!o.shiftKey&&(o.preventDefault(),n())}return e.jsx("div",{className:"compose-box",children:e.jsxs("div",{className:"compose-row",children:[e.jsx("select",{className:"compose-intent-select",value:r,onChange:o=>s(o.target.value),children:w.map(o=>e.jsx("option",{value:o,children:o},o))}),e.jsx("textarea",{className:"compose-textarea",value:i,onChange:o=>t(o.target.value),onKeyDown:h,placeholder:"Type a message... (Enter to send, Shift+Enter for newline)",rows:1}),e.jsx("button",{className:"compose-send-btn",onClick:n,disabled:!i.trim(),children:"Send"})]})})}function F(){const a=l(n=>n.activeThread),r=l(n=>n.activeThreadId),s=l(n=>n.resolveThread),i=m.useRef(null);if(m.useEffect(()=>{var n;(n=i.current)==null||n.scrollIntoView({behavior:"smooth"})},[a==null?void 0:a.messages.length]),!a)return e.jsx("div",{className:"conversation",children:e.jsx("div",{className:"conversation-empty",children:"Select a thread to view"})});const{thread:t,messages:d}=a;return e.jsxs("div",{className:"conversation",children:[e.jsxs("div",{className:"conversation-header",children:[e.jsxs("div",{className:"conversation-header-left",children:[e.jsx("div",{className:"conversation-topic",children:t.topic}),e.jsx("div",{className:"conversation-participants",children:t.participants.map(n=>n.name).join(", ")})]}),e.jsxs("div",{className:"conversation-actions",children:[e.jsx("span",{className:`thread-card-status ${t.status}`,children:t.status}),t.status==="active"&&e.jsx("button",{className:"resolve-btn",onClick:()=>s(r),children:"Resolve"})]})]}),e.jsxs("div",{className:"conversation-messages",children:[d.map(n=>e.jsx(T,{msg:n},n.id)),e.jsx("div",{ref:i})]}),e.jsx(k,{threadId:r})]})}function I(){return e.jsxs("div",{className:"threads-layout",children:[e.jsx(b,{}),e.jsx(F,{})]})}function f(a){if(!a)return"never";const r=Date.now()-new Date(a).getTime(),s=Math.floor(r/1e3);if(s<60)return`${s}s ago`;const i=Math.floor(s/60);if(i<60)return`${i}m ago`;const t=Math.floor(i/60);return t<24?`${t}h ago`:`${Math.floor(t/24)}d ago`}function R(){const a=l(s=>s.agents),r=l(s=>s.status);return e.jsxs("div",{className:"network-view",children:[r&&e.jsxs("div",{className:"network-status-bar",children:[e.jsxs("div",{className:"network-stat",children:[e.jsx("div",{className:"network-stat-value",children:r.agentCount}),e.jsx("div",{className:"network-stat-label",children:"Agents"})]}),e.jsxs("div",{className:"network-stat",children:[e.jsx("div",{className:"network-stat-value",style:{color:"var(--p-accent-green)"},children:r.awakeCount}),e.jsx("div",{className:"network-stat-label",children:"Awake"})]}),e.jsxs("div",{className:"network-stat",children:[e.jsx("div",{className:"network-stat-value",children:r.activeThreadCount}),e.jsx("div",{className:"network-stat-label",children:"Active Threads"})]}),e.jsxs("div",{className:"network-stat",children:[e.jsx("div",{className:"network-stat-value",children:r.unreadCount}),e.jsx("div",{className:"network-stat-label",children:"Unread"})]}),e.jsxs("div",{className:"network-stat",children:[e.jsx("div",{className:"network-stat-value",children:r.pendingFileRequests}),e.jsx("div",{className:"network-stat-label",children:"Pending Files"})]})]}),a.length===0?e.jsxs("div",{className:"network-empty",children:[e.jsx("p",{children:"No agents registered."}),e.jsxs("p",{style:{marginTop:8},children:["Run ",e.jsx("code",{children:"paradigm symphony join"})," in a project to register an agent."]})]}):e.jsx("div",{className:"agent-grid",children:a.map(s=>e.jsxs("div",{className:"agent-card",children:[e.jsxs("div",{className:"agent-card-header",children:[e.jsx("span",{className:"agent-card-id",children:s.id}),e.jsx("span",{className:`agent-status-dot ${s.status}`,title:s.status})]}),e.jsx("div",{className:"agent-card-name",children:s.name}),s.statusBlurb&&e.jsx("div",{className:"agent-card-blurb",children:s.statusBlurb}),e.jsxs("div",{className:"agent-card-details",children:[e.jsxs("div",{className:"agent-card-detail",children:[e.jsx("span",{className:"agent-card-detail-label",children:"Project"}),e.jsx("span",{className:"agent-card-detail-value",children:s.project})]}),e.jsxs("div",{className:"agent-card-detail",children:[e.jsx("span",{className:"agent-card-detail-label",children:"Role"}),e.jsx("span",{className:"agent-card-detail-value",children:s.role})]}),e.jsxs("div",{className:"agent-card-detail",children:[e.jsx("span",{className:"agent-card-detail-label",children:"Last Poll"}),e.jsx("span",{className:"agent-card-detail-value",children:f(s.lastPoll)})]}),e.jsxs("div",{className:"agent-card-detail",children:[e.jsx("span",{className:"agent-card-detail-label",children:"Started"}),e.jsx("span",{className:"agent-card-detail-value",children:f(s.startedAt)})]})]})]},s.id))})]})}function v(a){const r=Date.now()-new Date(a).getTime(),s=Math.floor(r/1e3);if(s<60)return`${s}s ago`;const i=Math.floor(s/60);if(i<60)return`${i}m ago`;const t=Math.floor(i/60);return t<24?`${t}h ago`:`${Math.floor(t/24)}d ago`}function S({request:a}){const[r,s]=m.useState(!1),[i,t]=m.useState(""),d=l(h=>h.handleFileAction),n=a.status==="pending";return e.jsxs("div",{className:"file-request-card",children:[e.jsxs("div",{className:"file-request-header",children:[e.jsxs("span",{className:"file-request-path",children:[a.filePath,a.urgency==="urgent"&&e.jsx("span",{className:"urgency-badge urgent",children:"urgent"})]}),e.jsx("span",{className:`file-request-status ${a.status}`,children:a.status})]}),e.jsxs("div",{className:"file-request-requester",children:["From: ",a.requester.name]}),e.jsx("div",{className:"file-request-body",children:a.reason}),a.snippet&&e.jsxs("div",{className:"file-request-snippet",children:["Snippet: ",a.snippet]}),e.jsxs("div",{className:"file-request-meta",children:[e.jsx("span",{children:v(a.createdAt)}),a.resolvedAt&&e.jsxs("span",{children:["Resolved ",v(a.resolvedAt)]}),a.denyReason&&e.jsxs("span",{children:["Reason: ",a.denyReason]})]}),n&&e.jsxs("div",{className:"file-request-actions",children:[e.jsx("button",{className:"file-action-btn approve",onClick:()=>d(a.requestId,"approve"),children:"Approve"}),e.jsx("button",{className:"file-action-btn approve-redacted",onClick:()=>d(a.requestId,"approve-redacted"),children:"Approve (redacted)"}),r?e.jsxs(e.Fragment,{children:[e.jsx("input",{className:"deny-reason-input",value:i,onChange:h=>t(h.target.value),placeholder:"Reason for denial...",onKeyDown:h=>{h.key==="Enter"&&(d(a.requestId,"deny",i||void 0),s(!1),t("")),h.key==="Escape"&&(s(!1),t(""))},autoFocus:!0}),e.jsx("button",{className:"file-action-btn deny",onClick:()=>{d(a.requestId,"deny",i||void 0),s(!1),t("")},children:"Confirm Deny"})]}):e.jsx("button",{className:"file-action-btn deny",onClick:()=>s(!0),children:"Deny"})]})]})}function $(){const a=l(t=>t.fileRequests),r=l(t=>t.fileFilter),s=l(t=>t.setFileFilter),i=[{id:"pending",label:"Pending"},{id:"all",label:"All"}];return e.jsxs("div",{className:"files-view",children:[e.jsxs("div",{className:"files-toolbar",children:[e.jsx("div",{className:"files-filter-group",children:i.map(t=>e.jsx("button",{className:`thread-filter-btn ${r===t.id?"active":""}`,onClick:()=>s(t.id),children:t.label},t.id))}),e.jsxs("span",{className:"files-count",children:[a.length," request",a.length!==1?"s":""]})]}),e.jsx("div",{className:"files-list",children:a.length===0?e.jsxs("div",{className:"files-empty",children:[e.jsx("p",{children:"No file requests."}),e.jsxs("p",{style:{marginTop:8,fontSize:13},children:["Agents request files via ",e.jsx("code",{children:"paradigm_symphony_request_file"})]})]}):a.map(t=>e.jsx(S,{request:t},t.requestId))})]})}const C=[{id:"threads",label:"Threads"},{id:"network",label:"Network"},{id:"files",label:"Files"}];function q(){const a=l(c=>c.activeTab),r=l(c=>c.setActiveTab),s=l(c=>c.refresh),i=l(c=>c.fetchThread),t=l(c=>c.fetchFileRequests),d=l(c=>c.activeThreadId),n=l(c=>c.status);j(),m.useEffect(()=>{s(),l.getState().fetchMyIdentity(),l.getState().fetchFileRequests()},[]);const h=m.useRef(s);h.current=s,m.useEffect(()=>{const c=setInterval(()=>h.current(),1e4);return()=>clearInterval(c)},[]);const o=m.useRef(d);o.current=d;const u=m.useRef(i);return u.current=i,m.useEffect(()=>{const c=setInterval(()=>{o.current&&u.current(o.current)},3e3);return()=>clearInterval(c)},[]),m.useEffect(()=>{if(a!=="files")return;const c=setInterval(()=>t(),1e4);return()=>clearInterval(c)},[a,t]),e.jsxs("div",{className:"symphony-section",children:[e.jsx("div",{className:"symphony-tabs",children:C.map(c=>e.jsxs("button",{className:`symphony-tab ${a===c.id?"active":""}`,onClick:()=>r(c.id),children:[c.label,c.id==="threads"&&n&&n.activeThreadCount>0&&e.jsx("span",{className:"tab-badge",children:n.activeThreadCount}),c.id==="files"&&n&&n.pendingFileRequests>0&&e.jsx("span",{className:"tab-badge",children:n.pendingFileRequests})]},c.id))}),e.jsxs("div",{className:"symphony-tab-content",children:[a==="threads"&&e.jsx(I,{}),a==="network"&&e.jsx(R,{}),a==="files"&&e.jsx($,{})]})]})}export{q as default};
1
+ import{c as p,r as m,j as e}from"./index-DPpOdAtC.js";const l=p((a,r)=>({agents:[],myIdentity:null,threads:[],activeThreadId:null,activeThread:null,fileRequests:[],status:null,loading:!1,activeTab:"threads",threadFilter:"active",fileFilter:"pending",fetchAgents:async()=>{try{const s=await fetch("/api/symphony/agents");if(!s.ok)return;const i=await s.json();a({agents:i.agents||[]})}catch{}},fetchMyIdentity:async()=>{try{const s=await fetch("/api/symphony/agents/me");if(!s.ok)return;const i=await s.json();a({myIdentity:i.identity||null})}catch{}},fetchThreads:async()=>{try{const s=r().threadFilter,i=s!=="all"?`?status=${s}`:"",t=await fetch(`/api/symphony/threads${i}`);if(!t.ok)return;const d=await t.json();a({threads:d.threads||[]})}catch{}},fetchThread:async s=>{try{const i=await fetch(`/api/symphony/threads/${s}`);if(!i.ok)return;const t=await i.json();a({activeThreadId:s,activeThread:{thread:t.thread,messages:t.messages||[],symbolsDiscussed:t.symbolsDiscussed||[]}})}catch{}},fetchFileRequests:async()=>{try{const s=r().fileFilter,i=s!=="all"?`?status=${s}`:"",t=await fetch(`/api/symphony/file-requests${i}`);if(!t.ok)return;const d=await t.json();a({fileRequests:d.fileRequests||[]})}catch{}},fetchStatus:async()=>{try{const s=await fetch("/api/symphony/status");if(!s.ok)return;const i=await s.json();a({status:i})}catch{}},sendMessage:async s=>{try{const i=await fetch("/api/symphony/messages",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)});if(!i.ok)return;const{activeThreadId:t}=r(),n=(await i.json()).threadId||t;n&&await r().fetchThread(n),await r().fetchThreads()}catch{}},resolveThread:async(s,i)=>{try{(await fetch(`/api/symphony/threads/${s}/resolve`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({decision:i})})).ok&&(await r().fetchThread(s),await r().fetchThreads())}catch{}},handleFileAction:async(s,i,t)=>{try{(await fetch(`/api/symphony/file-requests/${s}/action`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:i,reason:t})})).ok&&await r().fetchFileRequests()}catch{}},setActiveTab:s=>a({activeTab:s}),setActiveThread:s=>{s?r().fetchThread(s):a({activeThreadId:null,activeThread:null})},setThreadFilter:s=>{a({threadFilter:s}),r().fetchThreads()},setFileFilter:s=>{a({fileFilter:s}),r().fetchFileRequests()},handleWsMessage:s=>{if(s.type==="symphony:message"){const{activeThreadId:i,activeThread:t}=r();s.threadId&&s.threadId===i&&t&&s.message&&(t.messages.some(n=>n.id===s.message.id)||a({activeThread:{...t,messages:[...t.messages,s.message]}})),r().fetchThreads()}if(s.type==="symphony:thread_resolved"){const{activeThreadId:i}=r();s.threadId===i&&r().fetchThread(s.threadId),r().fetchThreads()}},refresh:async()=>{a({loading:!0}),await Promise.all([r().fetchThreads(),r().fetchAgents(),r().fetchStatus()]),a({loading:!1})}}));function j(){m.useEffect(()=>{function a(r){const s=r.detail;s!=null&&s.type&&(s.type==="symphony:message"||s.type==="symphony:thread_resolved")&&l.getState().handleWsMessage(s)}return window.addEventListener("symphony-ws",a),()=>window.removeEventListener("symphony-ws",a)},[])}const x={question:"dialogue",context:"dialogue",clarification:"dialogue",verification:"dialogue",reference:"dialogue",proposal:"action",action:"action",decision:"outcome",approval:"outcome",rejection:"outcome",alert:"system",handoff:"lifecycle",fileRequest:"transfer",fileApproved:"transfer",fileDenied:"transfer",fileDelivery:"transfer"};function y(a){return x[a]||"dialogue"}function N(a){const r=Date.now()-new Date(a).getTime(),s=Math.floor(r/1e3);if(s<60)return`${s}s ago`;const i=Math.floor(s/60);if(i<60)return`${i}m ago`;const t=Math.floor(i/60);return t<24?`${t}h ago`:`${Math.floor(t/24)}d ago`}function g(a){return new Date(a).toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"})}function b(){const a=l(n=>n.threads),r=l(n=>n.activeThreadId),s=l(n=>n.threadFilter),i=l(n=>n.setActiveThread),t=l(n=>n.setThreadFilter),d=[{id:"active",label:"Active"},{id:"resolved",label:"Resolved"},{id:"all",label:"All"}];return e.jsxs("div",{className:"thread-list-sidebar",children:[e.jsx("div",{className:"thread-list-toolbar",children:d.map(n=>e.jsx("button",{className:`thread-filter-btn ${s===n.id?"active":""}`,onClick:()=>t(n.id),children:n.label},n.id))}),e.jsx("div",{className:"thread-list-items",children:a.length===0?e.jsxs("div",{className:"thread-list-empty",children:["No threads yet.",e.jsx("br",{}),e.jsx("br",{}),"Agents create threads via ",e.jsx("code",{children:"paradigm_symphony_send"})]}):a.map(n=>e.jsxs("div",{className:`thread-card ${r===n.id?"selected":""}`,onClick:()=>i(n.id),children:[e.jsx("div",{className:"thread-card-topic",children:n.topic}),e.jsxs("div",{className:"thread-card-meta",children:[e.jsxs("div",{className:"thread-card-participants",children:[n.participants.slice(0,4).map(h=>e.jsx("span",{className:`participant-avatar ${h.type==="human"?"human":""}`,title:h.name,children:h.name.charAt(0).toUpperCase()},h.id)),n.participants.length>4&&e.jsxs("span",{className:"participant-avatar",style:{background:"var(--p-text-muted)"},children:["+",n.participants.length-4]})]}),e.jsxs("div",{className:"thread-card-stats",children:[e.jsx("span",{className:"thread-card-count",children:n.messageCount}),e.jsx("span",{className:`thread-card-status ${n.status}`,children:n.status}),e.jsx("span",{children:N(n.lastActivity)})]})]})]},n.id))})]})}function T({msg:a}){const[r,s]=m.useState(!1),i=y(a.intent);return e.jsxs("div",{className:"message-bubble",children:[e.jsxs("div",{className:"message-bubble-header",children:[e.jsx("span",{className:"message-sender",children:a.sender.name}),e.jsx("span",{className:`message-sender-type ${a.sender.type}`,children:a.sender.type}),e.jsx("span",{className:`intent-pill ${i}`,children:a.intent})]}),e.jsx("div",{className:"message-text",children:a.text}),a.symbols.length>0&&e.jsx("div",{className:"message-symbols",children:a.symbols.map(t=>e.jsx("span",{className:"message-symbol-tag",children:t},t))}),a.diff&&e.jsxs("div",{className:"message-diff",children:[e.jsx("button",{className:"message-diff-toggle",onClick:()=>s(!r),children:r?"Hide diff":"Show diff"}),r&&e.jsx("pre",{className:"message-diff-content",children:a.diff})]}),a.decision&&e.jsxs("div",{className:"message-decision",children:[e.jsx("div",{className:"message-decision-label",children:"Decision"}),a.decision]}),e.jsx("div",{className:"message-time",children:g(a.timestamp)})]})}const w=["question","context","proposal","decision","action","alert","approval","rejection","reference","clarification","verification"];function k({threadId:a}){const[r,s]=m.useState("question"),[i,t]=m.useState(""),d=l(o=>o.sendMessage);async function n(){const o=i.trim();o&&(await d({intent:r,text:o,threadRoot:a||void 0}),t(""))}function h(o){o.key==="Enter"&&!o.shiftKey&&(o.preventDefault(),n())}return e.jsx("div",{className:"compose-box",children:e.jsxs("div",{className:"compose-row",children:[e.jsx("select",{className:"compose-intent-select",value:r,onChange:o=>s(o.target.value),children:w.map(o=>e.jsx("option",{value:o,children:o},o))}),e.jsx("textarea",{className:"compose-textarea",value:i,onChange:o=>t(o.target.value),onKeyDown:h,placeholder:"Type a message... (Enter to send, Shift+Enter for newline)",rows:1}),e.jsx("button",{className:"compose-send-btn",onClick:n,disabled:!i.trim(),children:"Send"})]})})}function F(){const a=l(n=>n.activeThread),r=l(n=>n.activeThreadId),s=l(n=>n.resolveThread),i=m.useRef(null);if(m.useEffect(()=>{var n;(n=i.current)==null||n.scrollIntoView({behavior:"smooth"})},[a==null?void 0:a.messages.length]),!a)return e.jsx("div",{className:"conversation",children:e.jsx("div",{className:"conversation-empty",children:"Select a thread to view"})});const{thread:t,messages:d}=a;return e.jsxs("div",{className:"conversation",children:[e.jsxs("div",{className:"conversation-header",children:[e.jsxs("div",{className:"conversation-header-left",children:[e.jsx("div",{className:"conversation-topic",children:t.topic}),e.jsx("div",{className:"conversation-participants",children:t.participants.map(n=>n.name).join(", ")})]}),e.jsxs("div",{className:"conversation-actions",children:[e.jsx("span",{className:`thread-card-status ${t.status}`,children:t.status}),t.status==="active"&&e.jsx("button",{className:"resolve-btn",onClick:()=>s(r),children:"Resolve"})]})]}),e.jsxs("div",{className:"conversation-messages",children:[d.map(n=>e.jsx(T,{msg:n},n.id)),e.jsx("div",{ref:i})]}),e.jsx(k,{threadId:r})]})}function I(){return e.jsxs("div",{className:"threads-layout",children:[e.jsx(b,{}),e.jsx(F,{})]})}function f(a){if(!a)return"never";const r=Date.now()-new Date(a).getTime(),s=Math.floor(r/1e3);if(s<60)return`${s}s ago`;const i=Math.floor(s/60);if(i<60)return`${i}m ago`;const t=Math.floor(i/60);return t<24?`${t}h ago`:`${Math.floor(t/24)}d ago`}function R(){const a=l(s=>s.agents),r=l(s=>s.status);return e.jsxs("div",{className:"network-view",children:[r&&e.jsxs("div",{className:"network-status-bar",children:[e.jsxs("div",{className:"network-stat",children:[e.jsx("div",{className:"network-stat-value",children:r.agentCount}),e.jsx("div",{className:"network-stat-label",children:"Agents"})]}),e.jsxs("div",{className:"network-stat",children:[e.jsx("div",{className:"network-stat-value",style:{color:"var(--p-accent-green)"},children:r.awakeCount}),e.jsx("div",{className:"network-stat-label",children:"Awake"})]}),e.jsxs("div",{className:"network-stat",children:[e.jsx("div",{className:"network-stat-value",children:r.activeThreadCount}),e.jsx("div",{className:"network-stat-label",children:"Active Threads"})]}),e.jsxs("div",{className:"network-stat",children:[e.jsx("div",{className:"network-stat-value",children:r.unreadCount}),e.jsx("div",{className:"network-stat-label",children:"Unread"})]}),e.jsxs("div",{className:"network-stat",children:[e.jsx("div",{className:"network-stat-value",children:r.pendingFileRequests}),e.jsx("div",{className:"network-stat-label",children:"Pending Files"})]})]}),a.length===0?e.jsxs("div",{className:"network-empty",children:[e.jsx("p",{children:"No agents registered."}),e.jsxs("p",{style:{marginTop:8},children:["Run ",e.jsx("code",{children:"paradigm symphony join"})," in a project to register an agent."]})]}):e.jsx("div",{className:"agent-grid",children:a.map(s=>e.jsxs("div",{className:"agent-card",children:[e.jsxs("div",{className:"agent-card-header",children:[e.jsx("span",{className:"agent-card-id",children:s.id}),e.jsx("span",{className:`agent-status-dot ${s.status}`,title:s.status})]}),e.jsx("div",{className:"agent-card-name",children:s.name}),s.statusBlurb&&e.jsx("div",{className:"agent-card-blurb",children:s.statusBlurb}),e.jsxs("div",{className:"agent-card-details",children:[e.jsxs("div",{className:"agent-card-detail",children:[e.jsx("span",{className:"agent-card-detail-label",children:"Project"}),e.jsx("span",{className:"agent-card-detail-value",children:s.project})]}),e.jsxs("div",{className:"agent-card-detail",children:[e.jsx("span",{className:"agent-card-detail-label",children:"Role"}),e.jsx("span",{className:"agent-card-detail-value",children:s.role})]}),e.jsxs("div",{className:"agent-card-detail",children:[e.jsx("span",{className:"agent-card-detail-label",children:"Last Poll"}),e.jsx("span",{className:"agent-card-detail-value",children:f(s.lastPoll)})]}),e.jsxs("div",{className:"agent-card-detail",children:[e.jsx("span",{className:"agent-card-detail-label",children:"Started"}),e.jsx("span",{className:"agent-card-detail-value",children:f(s.startedAt)})]})]})]},s.id))})]})}function v(a){const r=Date.now()-new Date(a).getTime(),s=Math.floor(r/1e3);if(s<60)return`${s}s ago`;const i=Math.floor(s/60);if(i<60)return`${i}m ago`;const t=Math.floor(i/60);return t<24?`${t}h ago`:`${Math.floor(t/24)}d ago`}function S({request:a}){const[r,s]=m.useState(!1),[i,t]=m.useState(""),d=l(h=>h.handleFileAction),n=a.status==="pending";return e.jsxs("div",{className:"file-request-card",children:[e.jsxs("div",{className:"file-request-header",children:[e.jsxs("span",{className:"file-request-path",children:[a.filePath,a.urgency==="urgent"&&e.jsx("span",{className:"urgency-badge urgent",children:"urgent"})]}),e.jsx("span",{className:`file-request-status ${a.status}`,children:a.status})]}),e.jsxs("div",{className:"file-request-requester",children:["From: ",a.requester.name]}),e.jsx("div",{className:"file-request-body",children:a.reason}),a.snippet&&e.jsxs("div",{className:"file-request-snippet",children:["Snippet: ",a.snippet]}),e.jsxs("div",{className:"file-request-meta",children:[e.jsx("span",{children:v(a.createdAt)}),a.resolvedAt&&e.jsxs("span",{children:["Resolved ",v(a.resolvedAt)]}),a.denyReason&&e.jsxs("span",{children:["Reason: ",a.denyReason]})]}),n&&e.jsxs("div",{className:"file-request-actions",children:[e.jsx("button",{className:"file-action-btn approve",onClick:()=>d(a.requestId,"approve"),children:"Approve"}),e.jsx("button",{className:"file-action-btn approve-redacted",onClick:()=>d(a.requestId,"approve-redacted"),children:"Approve (redacted)"}),r?e.jsxs(e.Fragment,{children:[e.jsx("input",{className:"deny-reason-input",value:i,onChange:h=>t(h.target.value),placeholder:"Reason for denial...",onKeyDown:h=>{h.key==="Enter"&&(d(a.requestId,"deny",i||void 0),s(!1),t("")),h.key==="Escape"&&(s(!1),t(""))},autoFocus:!0}),e.jsx("button",{className:"file-action-btn deny",onClick:()=>{d(a.requestId,"deny",i||void 0),s(!1),t("")},children:"Confirm Deny"})]}):e.jsx("button",{className:"file-action-btn deny",onClick:()=>s(!0),children:"Deny"})]})]})}function $(){const a=l(t=>t.fileRequests),r=l(t=>t.fileFilter),s=l(t=>t.setFileFilter),i=[{id:"pending",label:"Pending"},{id:"all",label:"All"}];return e.jsxs("div",{className:"files-view",children:[e.jsxs("div",{className:"files-toolbar",children:[e.jsx("div",{className:"files-filter-group",children:i.map(t=>e.jsx("button",{className:`thread-filter-btn ${r===t.id?"active":""}`,onClick:()=>s(t.id),children:t.label},t.id))}),e.jsxs("span",{className:"files-count",children:[a.length," request",a.length!==1?"s":""]})]}),e.jsx("div",{className:"files-list",children:a.length===0?e.jsxs("div",{className:"files-empty",children:[e.jsx("p",{children:"No file requests."}),e.jsxs("p",{style:{marginTop:8,fontSize:13},children:["Agents request files via ",e.jsx("code",{children:"paradigm_symphony_request_file"})]})]}):a.map(t=>e.jsx(S,{request:t},t.requestId))})]})}const C=[{id:"threads",label:"Threads"},{id:"network",label:"Network"},{id:"files",label:"Files"}];function q(){const a=l(c=>c.activeTab),r=l(c=>c.setActiveTab),s=l(c=>c.refresh),i=l(c=>c.fetchThread),t=l(c=>c.fetchFileRequests),d=l(c=>c.activeThreadId),n=l(c=>c.status);j(),m.useEffect(()=>{s(),l.getState().fetchMyIdentity(),l.getState().fetchFileRequests()},[]);const h=m.useRef(s);h.current=s,m.useEffect(()=>{const c=setInterval(()=>h.current(),1e4);return()=>clearInterval(c)},[]);const o=m.useRef(d);o.current=d;const u=m.useRef(i);return u.current=i,m.useEffect(()=>{const c=setInterval(()=>{o.current&&u.current(o.current)},3e3);return()=>clearInterval(c)},[]),m.useEffect(()=>{if(a!=="files")return;const c=setInterval(()=>t(),1e4);return()=>clearInterval(c)},[a,t]),e.jsxs("div",{className:"symphony-section",children:[e.jsx("div",{className:"symphony-tabs",children:C.map(c=>e.jsxs("button",{className:`symphony-tab ${a===c.id?"active":""}`,onClick:()=>r(c.id),children:[c.label,c.id==="threads"&&n&&n.activeThreadCount>0&&e.jsx("span",{className:"tab-badge",children:n.activeThreadCount}),c.id==="files"&&n&&n.pendingFileRequests>0&&e.jsx("span",{className:"tab-badge",children:n.pendingFileRequests})]},c.id))}),e.jsxs("div",{className:"symphony-tab-content",children:[a==="threads"&&e.jsx(I,{}),a==="network"&&e.jsx(R,{}),a==="files"&&e.jsx($,{})]})]})}export{q as default};
@@ -0,0 +1 @@
1
+ import{c as j,r as f,j as a}from"./index-DPpOdAtC.js";let l=null,d=null;const u=j((e,t)=>({activeAgents:[],benchedAgents:[],rosterLoading:!1,threads:[],threadsLoading:!1,selectedThread:null,fetchRoster:async()=>{l==null||l.abort(),l=new AbortController;const{signal:r}=l;e({rosterLoading:!0});try{const s=await fetch("/api/team/roster",{signal:r});if(!s.ok)throw new Error(`HTTP ${s.status}`);const c=await s.json();e({activeAgents:c.active||[],benchedAgents:c.benched||[],rosterLoading:!1})}catch(s){if(s instanceof Error&&s.name==="AbortError")return;e({rosterLoading:!1})}},fetchThreads:async()=>{d==null||d.abort(),d=new AbortController;const{signal:r}=d;e({threadsLoading:!0});try{const s=await fetch("/api/team/threads",{signal:r});if(!s.ok)throw new Error(`HTTP ${s.status}`);const c=await s.json();e({threads:c.threads||[],threadsLoading:!1})}catch(s){if(s instanceof Error&&s.name==="AbortError")return;e({threadsLoading:!1})}},toggleBench:async(r,s)=>{try{const c=await fetch(`/api/team/agents/${r}/bench`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({benched:s})});if(!c.ok)throw new Error(`HTTP ${c.status}`);t().fetchRoster()}catch{}},selectThread:r=>e({selectedThread:r})})),v={architect:"var(--p-accent-purple)",builder:"var(--p-accent-blue)",tester:"var(--p-accent-green)",reviewer:"var(--p-accent-orange)",security:"var(--p-accent-red)"};function x(e){return v[e]||`hsl(${Math.abs(N(e))%360}, 60%, 50%)`}function N(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r),t|=0;return t}const b={question:"var(--p-accent-blue)",context:"var(--p-accent-cyan)",clarification:"var(--p-accent-cyan)",proposal:"var(--p-accent-orange)",verification:"var(--p-accent-purple)",action:"var(--p-accent-green)",decision:"var(--p-accent-yellow)",alert:"var(--p-accent-red)",approval:"var(--p-accent-green)",rejection:"var(--p-accent-red)",reference:"var(--p-text-muted)",progress:"var(--p-accent-emerald)"};function y(e){const t=Date.now()-new Date(e).getTime();return t<6e4?"just now":t<36e5?`${Math.floor(t/6e4)}m ago`:t<864e5?`${Math.floor(t/36e5)}h ago`:`${Math.floor(t/864e5)}d ago`}function T(e){if(e.startsWith("[")){const t=e.indexOf("]");if(t>0){const r=e.slice(t+1);return r.startsWith(" ")?r.slice(1):r}}return e}function E(){const{activeAgents:e,benchedAgents:t,rosterLoading:r,threads:s,threadsLoading:c,selectedThread:o,fetchRoster:h,fetchThreads:m,toggleBench:_,selectThread:g}=u();f.useEffect(()=>{h(),m();const n=setInterval(()=>{h(),m()},1e4);return()=>clearInterval(n)},[]);const i=o?s.find(n=>n.id===o):s[0];return a.jsxs("div",{className:"team",children:[a.jsx("h1",{className:"team__title",children:"Team"}),a.jsxs("div",{className:"team__roster",children:[a.jsxs("div",{className:"team__roster-header",children:[a.jsx("span",{className:"team__roster-label",children:"Agent Roster"}),a.jsxs("span",{className:"team__roster-count",children:[e.length," active",t.length>0&&` · ${t.length} benched`]})]}),r&&e.length===0?a.jsx("p",{className:"team__empty",children:"Loading roster..."}):e.length===0&&t.length===0?a.jsx("p",{className:"team__empty",children:"No agents registered"}):a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"team__agent-grid",children:e.map(n=>a.jsx(p,{agent:n,onBench:()=>_(n.id,!0)},n.id))}),t.length>0&&a.jsxs("div",{className:"team__benched",children:[a.jsx("div",{className:"team__benched-label",children:"Benched"}),a.jsx("div",{className:"team__agent-grid",children:t.map(n=>a.jsx(p,{agent:n,benched:!0,onActivate:()=>_(n.id,!1)},n.id))})]})]})]}),a.jsxs("div",{className:"team__threads",children:[a.jsxs("div",{className:"team__threads-header",children:[a.jsx("span",{className:"team__roster-label",children:"Team Threads"}),a.jsxs("span",{className:"team__roster-count",children:[s.length," threads"]})]}),c&&s.length===0?a.jsx("p",{className:"team__empty",children:"Loading threads..."}):s.length===0?a.jsx("p",{className:"team__empty",children:"No orchestration threads yet"}):a.jsxs(a.Fragment,{children:[s.length>1&&a.jsx("div",{className:"team__thread-tabs",children:s.map(n=>a.jsxs("button",{className:`team__thread-tab ${(i==null?void 0:i.id)===n.id?"team__thread-tab--active":""}`,onClick:()=>g(n.id),children:[n.displayName," (",n.messages.length,")"]},n.id))}),i&&a.jsx("div",{className:"team__messages",children:i.messages.map(n=>a.jsx(w,{message:n},n.id))})]})]})]})}function p({agent:e,benched:t,onBench:r,onActivate:s}){const c=x(e.id);return a.jsxs("div",{className:`team__agent-card ${t?"team__agent-card--benched":""}`,children:[a.jsxs("div",{className:"team__agent-header",children:[a.jsxs("div",{children:[a.jsx("span",{className:"team__agent-name",style:{color:c},children:e.nickname||e.id}),e.nickname&&a.jsxs("span",{className:"team__agent-nickname",children:["(",e.id,")"]}),a.jsx("div",{className:"team__agent-role",children:e.role})]}),t?a.jsx("button",{className:"team__bench-btn",onClick:s,children:"Activate"}):a.jsx("button",{className:"team__bench-btn",onClick:r,children:"Bench"})]}),a.jsxs("div",{className:"team__agent-stats",children:[a.jsxs("span",{children:[e.expertiseCount," symbols"]}),e.threshold!=null&&a.jsxs("span",{children:["thr: ",e.threshold.toFixed(2)]}),e.topExpertise.length>0&&a.jsxs("span",{className:"team__agent-stat--good",children:["top: ",e.topExpertise[0].symbol," (",Math.round(e.topExpertise[0].confidence*100),"%)"]})]})]})}function w({message:e}){const t=e.sender.role||e.sender.name,r=x(t),s=b[e.intent]||"var(--p-text-muted)";return a.jsxs("div",{className:"team__message",children:[a.jsxs("div",{className:"team__message-header",children:[a.jsxs("span",{className:"team__message-sender",style:{color:r},children:["[",t,"]"]}),a.jsx("span",{className:"team__message-time",children:y(e.timestamp)})]}),a.jsxs("div",{children:[a.jsx("span",{className:"team__message-intent",style:{color:s,backgroundColor:`color-mix(in srgb, ${s} 12%, transparent)`},children:e.intent}),e.symbols.length>0&&a.jsx("span",{className:"team__message-symbols",children:e.symbols.join(" ")})]}),a.jsx("div",{className:"team__message-text",children:T(e.text)}),e.diff&&a.jsx("div",{className:"team__message-diff",children:e.diff}),e.decision&&a.jsxs("div",{className:"team__message-decision",children:["✓ ",e.decision]})]})}export{E as default};
@@ -0,0 +1 @@
1
+ .overview{padding:24px;max-width:1060px}.overview__title{font-size:20px;font-weight:600;margin-bottom:20px}.overview__cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:24px}@media (max-width: 768px){.overview__cards{grid-template-columns:repeat(2,1fr)}}.stat-card{background:var(--p-bg-secondary);border:1px solid var(--p-border);border-radius:var(--p-radius);padding:16px;transition:border-color var(--p-transition)}.stat-card--clickable{cursor:pointer}.stat-card--clickable:hover{border-color:var(--p-border-active)}.stat-card__value{font-size:24px;font-weight:700;color:var(--p-text-primary)}.stat-card__label{font-size:12px;color:var(--p-text-secondary);margin-top:4px}.stat-card__detail{font-size:11px;color:var(--p-text-muted);margin-top:2px}.overview__section-title{font-size:13px;font-weight:600;color:var(--p-text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--p-border)}.overview__health{display:flex;flex-direction:column;gap:12px;margin-bottom:24px}.health-bar{display:flex;flex-direction:column;gap:4px}.health-bar__header{display:flex;justify-content:space-between;align-items:center}.health-bar__label{font-size:12px;color:var(--p-text-secondary)}.health-bar__value{font-size:12px;color:var(--p-text-muted);font-variant-numeric:tabular-nums}.health-bar__track{height:6px;background:var(--p-bg-tertiary);border-radius:3px;overflow:hidden}.health-bar__fill{height:100%;border-radius:3px;transition:width .4s ease}.overview__activity{margin-top:24px}.activity-feed{display:flex;flex-direction:column;gap:1px;max-height:400px;overflow-y:auto}.activity-feed__empty{color:var(--p-text-muted);font-size:13px;padding:16px 0}.activity-feed__item{display:flex;align-items:flex-start;gap:8px;padding:8px 4px;border-bottom:1px solid var(--p-bg-tertiary)}.activity-feed__item:last-child{border-bottom:none}.activity-feed__icon{flex-shrink:0;width:18px;text-align:center;font-size:12px;line-height:20px}.activity-feed__icon--commit{color:var(--p-accent-blue)}.activity-feed__icon--lore{color:var(--p-accent-purple)}.activity-feed__content{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:6px;align-items:baseline}.activity-feed__summary{font-size:13px;color:var(--p-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.activity-feed__symbol{font-size:11px;color:var(--p-accent-blue);background:var(--p-bg-tertiary);padding:1px 6px;border-radius:10px;white-space:nowrap}.activity-feed__time{flex-shrink:0;font-size:11px;color:var(--p-text-muted);font-variant-numeric:tabular-nums;line-height:20px}.agent-toast-container{position:fixed;bottom:16px;right:16px;z-index:1000;display:flex;flex-direction:column;gap:8px;max-width:360px}.agent-toast{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--p-bg-secondary);border:1px solid var(--p-border);border-left:3px solid var(--p-symbol-component);border-radius:6px;color:var(--p-text-primary);font-size:13px;animation:agent-toast-in .3s ease;box-shadow:0 4px 12px #0000004d}.agent-toast__icon{font-size:16px;flex-shrink:0}.agent-toast__message{flex:1;line-height:1.4}.agent-toast__dismiss{background:none;border:none;color:var(--p-text-muted);cursor:pointer;font-size:16px;padding:0 2px;flex-shrink:0}.agent-toast__dismiss:hover{color:var(--p-text-primary)}@keyframes agent-toast-in{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.agent-callout-overlay{position:fixed;top:60px;right:16px;z-index:999;display:flex;flex-direction:column;gap:8px;max-width:280px}.agent-callout{padding:10px 14px;background:var(--p-bg-secondary);border:1px solid var(--p-border);border-left:3px solid var(--p-symbol-component);border-radius:6px;font-size:12px;color:var(--p-text-primary);animation:agent-callout-in .3s ease}.agent-callout__symbol{font-size:11px;color:var(--p-symbol-component);font-family:monospace;margin-bottom:4px}.agent-callout__message{line-height:1.4}@keyframes agent-callout-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.agent-nav-prompt{position:fixed;top:12px;left:50%;transform:translate(-50%);z-index:1001;display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--p-bg-secondary);border:1px solid var(--p-border);border-radius:8px;box-shadow:0 4px 16px #0006;animation:agent-nav-prompt-in .3s ease}.agent-nav-prompt__icon{font-size:18px}.agent-nav-prompt__text{font-size:13px;color:var(--p-text-primary)}.agent-nav-prompt__accept,.agent-nav-prompt__dismiss{padding:4px 12px;border-radius:4px;border:1px solid var(--p-border);font-size:12px;cursor:pointer}.agent-nav-prompt__accept{background:var(--p-symbol-component);color:#fff;border-color:var(--p-symbol-component)}.agent-nav-prompt__accept:hover{opacity:.9}.agent-nav-prompt__dismiss{background:transparent;color:var(--p-text-muted)}.agent-nav-prompt__dismiss:hover{color:var(--p-text-primary)}@keyframes agent-nav-prompt-in{0%{opacity:0;transform:translate(-50%) translateY(-10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.agent-presence{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--p-text-muted)}.agent-presence__dot{width:8px;height:8px;border-radius:50%;display:inline-block;animation:agent-presence-pulse 2s infinite}@keyframes agent-presence-pulse{0%,to{opacity:1}50%{opacity:.5}}.agent-mute-btn{background:none;border:1px solid var(--p-border);border-radius:4px;padding:2px 8px;font-size:12px;cursor:pointer;color:var(--p-text-muted);display:flex;align-items:center;gap:4px}.agent-mute-btn:hover{color:var(--p-text-primary);border-color:var(--p-text-muted)}.agent-mute-btn--muted{color:var(--p-symbol-gate);border-color:var(--p-symbol-gate)}.agent-highlight-pulse{animation:agent-highlight-glow 1.5s ease-in-out infinite}@keyframes agent-highlight-glow{0%,to{box-shadow:0 0 4px var(--agent-highlight-color, #58a6ff)}50%{box-shadow:0 0 16px var(--agent-highlight-color, #58a6ff),0 0 24px var(--agent-highlight-color, #58a6ff)}}.agent-selected{outline:2px dashed var(--agent-color, #58a6ff);outline-offset:2px}.command-palette-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9000;background:#00000080;display:flex;align-items:flex-start;justify-content:center;padding-top:20vh}.command-palette{width:100%;max-width:500px;background:var(--p-bg-secondary);border:1px solid var(--p-border);border-radius:var(--p-radius);box-shadow:0 16px 48px #0006;overflow:hidden}.command-palette__input-wrapper{padding:12px 16px;border-bottom:1px solid var(--p-border)}.command-palette__input{width:100%;background:transparent;border:none;outline:none;color:var(--p-text-primary);font-size:16px;font-family:inherit;line-height:1.5}.command-palette__input::placeholder{color:var(--p-text-muted)}.command-palette__list{list-style:none;margin:0;padding:8px 0;max-height:320px;overflow-y:auto}.command-palette__item{display:flex;align-items:center;gap:10px;padding:8px 16px;cursor:pointer;color:var(--p-text-secondary);font-size:14px;transition:background var(--p-transition),color var(--p-transition)}.command-palette__item:hover{background:var(--p-bg-hover);color:var(--p-text-primary)}.command-palette__item--active{background:var(--p-bg-card);color:var(--p-accent-blue)}.command-palette__item-icon{font-size:16px;width:24px;text-align:center;flex-shrink:0}.command-palette__item-label{flex:1;text-transform:capitalize}.command-palette__item-shortcut{font-size:11px;color:var(--p-text-muted);font-family:monospace}.command-palette__empty{padding:16px;text-align:center;color:var(--p-text-muted);font-size:13px}:root,[data-theme=dark]{--p-bg-primary: #0d1117;--p-bg-secondary: #161b22;--p-bg-tertiary: #21262d;--p-bg-hover: #30363d;--p-text-primary: #e6edf3;--p-text-secondary: #8b949e;--p-text-muted: #484f58;--p-border: #30363d;--p-border-active: #58a6ff;--p-accent-blue: #58a6ff;--p-accent-green: #3fb950;--p-accent-red: #f85149;--p-accent-orange: #d29922;--p-accent-purple: #bc8cff;--p-accent-cyan: #06b6d4;--p-accent-amber: #f59e0b;--p-accent-yellow: #eab308;--p-accent-emerald: #34d399;--p-accent-pink: #ec4899;--p-accent-lime: #84cc16;--p-accent-slate: #94a3b8;--p-symbol-component: #58a6ff;--p-symbol-flow: #3fb950;--p-symbol-gate: #f85149;--p-symbol-signal: #d29922;--p-symbol-aspect: #bc8cff;--p-symbol-node-component: #86efac;--p-symbol-node-flow: #fbbf24;--p-symbol-node-gate: #f87171;--p-symbol-node-signal: #fde047;--p-symbol-node-aspect: #a78bfa;--p-bg-card: #21262d;--p-bg-panel: #161b22;--p-lore-agent-session: #818cf8;--p-lore-human-note: #34d399;--p-lore-decision: #fbbf24;--p-lore-review: #c084fc;--p-lore-incident: #f87171;--p-lore-milestone: #60a5fa;--p-spine-color: #30363d;--p-spine-width: 2px;--p-sidebar-width: 56px;--p-header-height: 44px;--p-radius: 6px;--p-transition: .15s ease}[data-theme=light]{--p-bg-primary: #ffffff;--p-bg-secondary: #f6f8fa;--p-bg-tertiary: #eaeef2;--p-bg-hover: #d0d7de;--p-text-primary: #1f2328;--p-text-secondary: #656d76;--p-text-muted: #8b949e;--p-border: #d0d7de;--p-border-active: #0969da;--p-accent-blue: #0969da;--p-accent-green: #1a7f37;--p-accent-red: #cf222e;--p-accent-orange: #9a6700;--p-accent-purple: #8250df;--p-accent-cyan: #0891b2;--p-accent-amber: #d97706;--p-accent-yellow: #ca8a04;--p-accent-emerald: #059669;--p-accent-pink: #db2777;--p-accent-lime: #65a30d;--p-accent-slate: #64748b;--p-symbol-node-component: #16a34a;--p-symbol-node-flow: #d97706;--p-symbol-node-gate: #dc2626;--p-symbol-node-signal: #ca8a04;--p-symbol-node-aspect: #7c3aed;--p-bg-card: #eaeef2;--p-bg-panel: #f6f8fa;--p-lore-agent-session: #5c7cfa;--p-lore-human-note: #20c997;--p-lore-decision: #e67700;--p-lore-review: #9775fa;--p-lore-incident: #fa5252;--p-lore-milestone: #339af0;--p-spine-color: #d0d7de;--p-spine-width: 2px}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;width:100%;overflow:hidden}body{background:var(--p-bg-primary);color:var(--p-text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.5}.shell{display:flex;height:100%;width:100%}.sidebar{width:var(--p-sidebar-width);min-width:var(--p-sidebar-width);background:var(--p-bg-secondary);border-right:1px solid var(--p-border);display:flex;flex-direction:column;padding:8px 0;gap:2px;z-index:10}.sidebar__nav{flex:1;display:flex;flex-direction:column;gap:2px;padding:0 6px}.sidebar__bottom{padding:8px 6px 0;border-top:1px solid var(--p-border)}.sidebar__item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:8px 4px;border-radius:var(--p-radius);cursor:pointer;color:var(--p-text-muted);text-decoration:none;transition:background var(--p-transition),color var(--p-transition);border:none;background:none;font-size:10px;font-family:inherit;width:100%}.sidebar__item:hover{background:var(--p-bg-hover);color:var(--p-text-secondary)}.sidebar__item--active{background:var(--p-bg-tertiary);color:var(--p-accent-blue)}.sidebar__item-icon{font-size:18px;line-height:1}.sidebar__item-label{font-size:9px;text-transform:uppercase;letter-spacing:.5px}.main{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.header{height:var(--p-header-height);min-height:var(--p-header-height);background:var(--p-bg-secondary);border-bottom:1px solid var(--p-border);display:flex;align-items:center;justify-content:space-between;padding:0 16px;gap:12px}.header__left{display:flex;align-items:center;gap:10px}.header__title{font-size:13px;font-weight:600;color:var(--p-text-primary)}.header__project{font-size:12px;color:var(--p-text-secondary);background:var(--p-bg-tertiary);padding:2px 8px;border-radius:12px}.header__right{display:flex;align-items:center;gap:8px}.header__btn{background:none;border:none;color:var(--p-text-muted);cursor:pointer;padding:4px 8px;border-radius:var(--p-radius);font-size:14px;transition:background var(--p-transition),color var(--p-transition)}.header__btn:hover{background:var(--p-bg-hover);color:var(--p-text-primary)}.content{flex:1;overflow:auto}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--p-bg-hover);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--p-text-muted)}