@maudecode/talaria-web 0.0.0 → 1.12.1

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 (275) hide show
  1. package/_release.json +20 -0
  2. package/dist/api/chat-router.d.ts +120 -3
  3. package/dist/api/chat-router.js +11 -8
  4. package/dist/api/chat-router.js.map +1 -1
  5. package/dist/api/router.d.ts +10 -0
  6. package/dist/api/router.js +2 -1
  7. package/dist/api/router.js.map +1 -1
  8. package/dist/api/sessions-router.d.ts +691 -40
  9. package/dist/api/sessions-router.js +2 -2
  10. package/dist/api/sessions-router.js.map +1 -1
  11. package/dist/api/settings-router.d.ts +8 -0
  12. package/dist/api/settings-router.js +13 -5
  13. package/dist/api/settings-router.js.map +1 -1
  14. package/dist/api/sse-routes.js +53 -9
  15. package/dist/api/sse-routes.js.map +1 -1
  16. package/dist/api/tools-router.d.ts +420 -0
  17. package/dist/api/tools-router.js +98 -5
  18. package/dist/api/tools-router.js.map +1 -1
  19. package/dist/app.d.ts +1247 -43
  20. package/dist/auth/oidc.js +2 -0
  21. package/dist/auth/oidc.js.map +1 -1
  22. package/dist/auth/store.d.ts +17 -0
  23. package/dist/auth/store.js +77 -19
  24. package/dist/auth/store.js.map +1 -1
  25. package/dist/bin/talaria-web.js +4 -1
  26. package/dist/bin/talaria-web.js.map +1 -1
  27. package/dist/cli/supervise.js +2 -1
  28. package/dist/cli/supervise.js.map +1 -1
  29. package/dist/fs/atomic.d.ts +8 -1
  30. package/dist/fs/atomic.js +52 -3
  31. package/dist/fs/atomic.js.map +1 -1
  32. package/dist/http/context.d.ts +2 -0
  33. package/dist/http/context.js.map +1 -1
  34. package/dist/redact.d.ts +15 -0
  35. package/dist/redact.js +1393 -9
  36. package/dist/redact.js.map +1 -1
  37. package/dist/release.js +3 -1
  38. package/dist/release.js.map +1 -1
  39. package/dist/runtime.js +28 -11
  40. package/dist/runtime.js.map +1 -1
  41. package/dist/server.d.ts +1 -1
  42. package/dist/server.js +11 -5
  43. package/dist/server.js.map +1 -1
  44. package/dist/sessions/anchor.d.ts +59 -5
  45. package/dist/sessions/anchor.js +373 -32
  46. package/dist/sessions/anchor.js.map +1 -1
  47. package/dist/sessions/file-changes.d.ts +15 -0
  48. package/dist/sessions/file-changes.js +58 -0
  49. package/dist/sessions/file-changes.js.map +1 -0
  50. package/dist/sessions/journal.d.ts +6 -1
  51. package/dist/sessions/journal.js +9 -15
  52. package/dist/sessions/journal.js.map +1 -1
  53. package/dist/sessions/list.d.ts +21 -1
  54. package/dist/sessions/list.js +81 -17
  55. package/dist/sessions/list.js.map +1 -1
  56. package/dist/sessions/merge.d.ts +72 -2
  57. package/dist/sessions/merge.js +326 -13
  58. package/dist/sessions/merge.js.map +1 -1
  59. package/dist/sessions/pending.d.ts +11 -2
  60. package/dist/sessions/pending.js +52 -3
  61. package/dist/sessions/pending.js.map +1 -1
  62. package/dist/sessions/service.d.ts +18 -3
  63. package/dist/sessions/service.js +115 -62
  64. package/dist/sessions/service.js.map +1 -1
  65. package/dist/sessions/session.js +1 -1
  66. package/dist/sessions/session.js.map +1 -1
  67. package/dist/sessions/state-db.d.ts +5 -0
  68. package/dist/sessions/state-db.js +34 -0
  69. package/dist/sessions/state-db.js.map +1 -1
  70. package/dist/sessions/streams.d.ts +4 -1
  71. package/dist/sessions/streams.js +3 -0
  72. package/dist/sessions/streams.js.map +1 -1
  73. package/dist/sessions/tool-display.d.ts +21 -0
  74. package/dist/sessions/tool-display.js +113 -0
  75. package/dist/sessions/tool-display.js.map +1 -0
  76. package/dist/sessions/turn.d.ts +39 -7
  77. package/dist/sessions/turn.js +288 -98
  78. package/dist/sessions/turn.js.map +1 -1
  79. package/dist/sessions/window.d.ts +1 -0
  80. package/dist/sessions/window.js +1 -1
  81. package/dist/sessions/window.js.map +1 -1
  82. package/dist/settings.js +5 -0
  83. package/dist/settings.js.map +1 -1
  84. package/dist/sidecar/client.d.ts +1 -1
  85. package/dist/sidecar/client.js +15 -4
  86. package/dist/sidecar/client.js.map +1 -1
  87. package/dist/sidecar/fake.js +3 -2
  88. package/dist/sidecar/fake.js.map +1 -1
  89. package/dist/spa.d.ts +2 -0
  90. package/dist/spa.js +9 -0
  91. package/dist/spa.js.map +1 -1
  92. package/dist/test/harness.d.ts +2 -0
  93. package/dist/test/harness.js +1 -1
  94. package/dist/test/harness.js.map +1 -1
  95. package/dist/tools/crons.js +55 -43
  96. package/dist/tools/crons.js.map +1 -1
  97. package/dist/tools/terminal.d.ts +6 -0
  98. package/dist/tools/terminal.js +24 -3
  99. package/dist/tools/terminal.js.map +1 -1
  100. package/dist/tools/update-notifications.d.ts +120 -0
  101. package/dist/tools/update-notifications.js +387 -0
  102. package/dist/tools/update-notifications.js.map +1 -0
  103. package/dist/tools/updates.d.ts +97 -13
  104. package/dist/tools/updates.js +638 -124
  105. package/dist/tools/updates.js.map +1 -1
  106. package/package.json +2 -2
  107. package/sidecar/agent_dependency.json +4 -3
  108. package/sidecar/scripts/replay_sidecar.py +17 -0
  109. package/sidecar/talaria_sidecar/__init__.py +1 -1
  110. package/sidecar/talaria_sidecar/home.py +51 -19
  111. package/sidecar/talaria_sidecar/methods/chat.py +113 -4
  112. package/sidecar/talaria_sidecar/methods/config.py +5 -3
  113. package/sidecar/talaria_sidecar/runtime.py +3 -9
  114. package/static/dist/FILES.txt +115 -116
  115. package/static/dist/assets/AppShell-m4w420jl.js +1 -0
  116. package/static/dist/assets/ChatPage-cuqcnisv.js +20 -0
  117. package/static/dist/assets/HubRoute-hqgqtm35.js +2 -0
  118. package/static/dist/assets/{Markdown-bt9bqd6a.js → Markdown-j2hlu30v.js} +7 -7
  119. package/static/dist/assets/RightPanel-oid5q557.js +1 -0
  120. package/static/dist/assets/Select-ot2zr0il.js +1 -0
  121. package/static/dist/assets/SessionListPanel-o3sgjnrq.js +1 -0
  122. package/static/dist/assets/SettingsLayout-b0idn649.js +1 -0
  123. package/static/dist/assets/States-htz1oee5.js +1 -0
  124. package/static/dist/assets/Toaster-h49pk1hy.js +1 -0
  125. package/static/dist/assets/_app-h7eaezs7.js +1 -0
  126. package/static/dist/assets/_app.ext._extensionId-h8oaqzsj.js +1 -0
  127. package/static/dist/assets/_app.index-xinao3xh.js +1 -0
  128. package/static/dist/assets/_app.insights-cxplvhkm.js +1 -0
  129. package/static/dist/assets/_app.kanban-hhli8h0h.js +1 -0
  130. package/static/dist/assets/_app.logs-f6srwjfl.js +1 -0
  131. package/static/dist/assets/_app.memory-lntcea85.js +1 -0
  132. package/static/dist/assets/_app.profiles-lftyp6of.js +1 -0
  133. package/static/dist/assets/{_app.session._sessionId-kevi4qd2.js → _app.session._sessionId-hhpcqih4.js} +1 -1
  134. package/static/dist/assets/_app.settings-rs93zpvw.js +1 -0
  135. package/static/dist/assets/_app.settings._section-nafqsbwm.js +1 -0
  136. package/static/dist/assets/_app.skills-jzoi1ivd.js +1 -0
  137. package/static/dist/assets/_app.tasks-ijphsw56.js +2 -0
  138. package/static/dist/assets/_app.todos-emyh8inv.js +1 -0
  139. package/static/dist/assets/_app.workspaces-fwr1cum8.js +1 -0
  140. package/static/dist/assets/{abnfDiagram-VCTEODGH-hvrr25lb.js → abnfDiagram-VCTEODGH-egykbz8h.js} +1 -1
  141. package/static/dist/assets/architecture-7GRP2DOG-l6y92mbn.js +1 -0
  142. package/static/dist/assets/{architectureDiagram-5GKGNRK7-b3r0z8sq.js → architectureDiagram-5GKGNRK7-b2e0wk3y.js} +1 -1
  143. package/static/dist/assets/{blockDiagram-I7D4REHJ-hd3gw0cj.js → blockDiagram-I7D4REHJ-i3cq67dn.js} +1 -1
  144. package/static/dist/assets/{c4Diagram-7LVT6UL2-jlmbjiji.js → c4Diagram-7LVT6UL2-lg1p1s7a.js} +1 -1
  145. package/static/dist/assets/channel-gq8cwu71.js +1 -0
  146. package/static/dist/assets/{chunk-4HAMMTFA-oydbpsin.js → chunk-4HAMMTFA-i0s1s7zi.js} +1 -1
  147. package/static/dist/assets/{chunk-75Z2AOVW-j633otj1.js → chunk-75Z2AOVW-kwinpapo.js} +1 -1
  148. package/static/dist/assets/{chunk-DU6HZSFF-ods2l027.js → chunk-DU6HZSFF-hb8qrbc3.js} +3 -3
  149. package/static/dist/assets/{chunk-F27PBJKO-ln4n2cwt.js → chunk-F27PBJKO-dy2tqtcs.js} +1 -1
  150. package/static/dist/assets/{chunk-GMAD6QVW-fpz133eh.js → chunk-GMAD6QVW-fqox5yvt.js} +1 -1
  151. package/static/dist/assets/{chunk-GVQU2GXP-abs9ixiy.js → chunk-GVQU2GXP-bo3x6ze4.js} +1 -1
  152. package/static/dist/assets/{chunk-IMKFNOWR-j9vukdy1.js → chunk-IMKFNOWR-nxs6rrcq.js} +1 -1
  153. package/static/dist/assets/{chunk-L3NEJ4N5-cfyw87r3.js → chunk-L3NEJ4N5-f9yeq1fi.js} +1 -1
  154. package/static/dist/assets/{chunk-OSK3NFVY-baja78wr.js → chunk-OSK3NFVY-c7df44qv.js} +1 -1
  155. package/static/dist/assets/{chunk-P2QGCYS3-g66xby8h.js → chunk-P2QGCYS3-eyjzf5o5.js} +1 -1
  156. package/static/dist/assets/{chunk-POPQ4Y6H-osqu864t.js → chunk-POPQ4Y6H-iy3hp9rc.js} +1 -1
  157. package/static/dist/assets/{chunk-PWAF6VOD-egejasv1.js → chunk-PWAF6VOD-co2yoefz.js} +1 -1
  158. package/static/dist/assets/{chunk-SHT3W25Y-l014h8zz.js → chunk-SHT3W25Y-obzqmn9k.js} +1 -1
  159. package/static/dist/assets/{chunk-SVP7TREG-n3z10bp3.js → chunk-SVP7TREG-hqwdo6vt.js} +1 -1
  160. package/static/dist/assets/{chunk-TICWLB2K-bzozkjc0.js → chunk-TICWLB2K-l8t1mdfd.js} +1 -1
  161. package/static/dist/assets/classDiagram-ZZMXUADV-fg9sc5r8.js +1 -0
  162. package/static/dist/assets/classDiagram-v2-VYDZK3BY-fg9sc5r8.js +1 -0
  163. package/static/dist/assets/{copied-cjsttec1.js → copied-hurn8vn4.js} +1 -1
  164. package/static/dist/assets/{cynefin-OW5HDTMX-elpt7h1j.js → cynefin-OW5HDTMX-ngx2ihay.js} +1 -1
  165. package/static/dist/assets/{cynefinDiagram-5FMLGOSQ-5mzl5pi2.js → cynefinDiagram-5FMLGOSQ-fiyooys3.js} +1 -1
  166. package/static/dist/assets/{dagre-GXQ25YYZ-ihwlhmfl.js → dagre-GXQ25YYZ-fctryel6.js} +1 -1
  167. package/static/dist/assets/{diagram-S7CK7UJ4-4z90agaz.js → diagram-S7CK7UJ4-m27jopok.js} +1 -1
  168. package/static/dist/assets/{diagram-UQ7AKVKN-eifw0lg7.js → diagram-UQ7AKVKN-ojgkbmp4.js} +1 -1
  169. package/static/dist/assets/{diagram-VSXAHHWV-ksh3sjqv.js → diagram-VSXAHHWV-gfafpgyj.js} +1 -1
  170. package/static/dist/assets/{diagram-VX7I27RA-ett72f71.js → diagram-VX7I27RA-daobicg4.js} +1 -1
  171. package/static/dist/assets/{diagram-Z3DM3KII-l8scp8nu.js → diagram-Z3DM3KII-mi475zvk.js} +1 -1
  172. package/static/dist/assets/{ebnfDiagram-PWID7BFC-f0pxcmit.js → ebnfDiagram-PWID7BFC-daf4zvsy.js} +1 -1
  173. package/static/dist/assets/endpoints-cyjhnrbn.js +64 -0
  174. package/static/dist/assets/{erDiagram-RLTQ6QDP-f47m5xh0.js → erDiagram-RLTQ6QDP-gxfhxvfp.js} +1 -1
  175. package/static/dist/assets/eventmodeling-NTZA5JFV-manga0bq.js +1 -0
  176. package/static/dist/assets/flowDiagram-HODETNUW-bpt13uny.js +1 -0
  177. package/static/dist/assets/{ganttDiagram-EL5Y4UJY-bmktjdi0.js → ganttDiagram-EL5Y4UJY-k3208e0p.js} +1 -1
  178. package/static/dist/assets/{gitGraph-4MIJSDKK-j2ueg258.js → gitGraph-4MIJSDKK-gjuhj4zk.js} +1 -1
  179. package/static/dist/assets/{gitGraphDiagram-WWUBYQGX-ms6586v9.js → gitGraphDiagram-WWUBYQGX-jglxvux1.js} +1 -1
  180. package/static/dist/assets/{highlighted-body-KPVGNVTW-ev52d2si.js → highlighted-body-KPVGNVTW-gh24xc9c.js} +1 -1
  181. package/static/dist/assets/index-gsg78cb4.css +2 -0
  182. package/static/dist/assets/{index-hywfjw88.js → index-jb47los5.js} +4 -4
  183. package/static/dist/assets/{info-A6RAGUB7-j717vyt7.js → info-A6RAGUB7-huf0xaoq.js} +1 -1
  184. package/static/dist/assets/{infoDiagram-27XIBGKW-dsbpib36.js → infoDiagram-27XIBGKW-jk3n96ix.js} +1 -1
  185. package/static/dist/assets/{ishikawaDiagram-5VMMS53U-n0sz3i2d.js → ishikawaDiagram-5VMMS53U-o95uo5dx.js} +1 -1
  186. package/static/dist/assets/{journeyDiagram-3NMN7TZE-mcxz1mme.js → journeyDiagram-3NMN7TZE-h5ye2l70.js} +1 -1
  187. package/static/dist/assets/{kanban-definition-UXKFOSKX-n6hq2lyc.js → kanban-definition-UXKFOSKX-lgrpk5yi.js} +1 -1
  188. package/static/dist/assets/{lazyRouteComponent-faquioun.js → lazyRouteComponent-owywngyt.js} +1 -1
  189. package/static/dist/assets/{line-h5xq20s4.js → line-cihmc0pn.js} +1 -1
  190. package/static/dist/assets/login-g063apx6.js +1 -0
  191. package/static/dist/assets/mermaid-HWGCJPDP-okd1mnvj.js +1 -0
  192. package/static/dist/assets/{mermaid-parser.core-n9cuu5ue.js → mermaid-parser.core-d1609aga.js} +3 -3
  193. package/static/dist/assets/{mindmap-definition-YA3MSWOX-gta3u7z4.js → mindmap-definition-YA3MSWOX-lbvtir31.js} +1 -1
  194. package/static/dist/assets/onboarding-ngw0x0pr.js +1 -0
  195. package/static/dist/assets/{packet-AYTQ26CC-bpzuq5n6.js → packet-AYTQ26CC-o4cp5z3k.js} +1 -1
  196. package/static/dist/assets/{pegDiagram-XKGWAZYB-juye13e5.js → pegDiagram-XKGWAZYB-e8xqu1qj.js} +1 -1
  197. package/static/dist/assets/{pie-WAS4IAKB-odhb8buq.js → pie-WAS4IAKB-hm9icuov.js} +1 -1
  198. package/static/dist/assets/{pieDiagram-E7YTZNPT-mgb14ksh.js → pieDiagram-E7YTZNPT-hj96x7hn.js} +1 -1
  199. package/static/dist/assets/{quadrantDiagram-AXDQQJYC-cg36naog.js → quadrantDiagram-AXDQQJYC-80utbxhm.js} +1 -1
  200. package/static/dist/assets/{radar-RG4KPBEZ-lgzfpnef.js → radar-RG4KPBEZ-k39b6100.js} +1 -1
  201. package/static/dist/assets/{railroad-74A4TZTK-gmglc3ua.js → railroad-74A4TZTK-ewyqz67j.js} +1 -1
  202. package/static/dist/assets/railroad-abnf-HS5TGJTU-dx2q0evz.js +1 -0
  203. package/static/dist/assets/railroad-ebnf-LZEXJU2U-l8xt49t5.js +1 -0
  204. package/static/dist/assets/railroad-peg-WCYAUIDC-kuxha9yz.js +1 -0
  205. package/static/dist/assets/{railroadDiagram-O6MQD6OU-cmxwjt73.js → railroadDiagram-O6MQD6OU-iwv9dby8.js} +1 -1
  206. package/static/dist/assets/{refresh-cw-mf192q3f.js → refresh-cw-hjzomwlo.js} +1 -1
  207. package/static/dist/assets/{requirementDiagram-BXWQKSXE-ir0s2mek.js → requirementDiagram-BXWQKSXE-cdgh5jha.js} +1 -1
  208. package/static/dist/assets/{sankeyDiagram-P5KCCOFB-jo7jcdq0.js → sankeyDiagram-P5KCCOFB-dbu6p97m.js} +1 -1
  209. package/static/dist/assets/{saved-g777hp1t.js → saved-feqhycco.js} +1 -1
  210. package/static/dist/assets/{search-i2kfogyx.js → search-n3jdc20p.js} +1 -1
  211. package/static/dist/assets/{sequenceDiagram-WJ2MYXX4-n0pf6xk5.js → sequenceDiagram-WJ2MYXX4-b0wchifg.js} +1 -1
  212. package/static/dist/assets/{settings_section_extensions_title-hgvh507l.js → settings_section_extensions_title-mtyviexd.js} +1 -1
  213. package/static/dist/assets/share._token-cwov8uqh.js +2 -0
  214. package/static/dist/assets/sliders-horizontal-i1lseyg0.js +1 -0
  215. package/static/dist/assets/{stateDiagram-D77RDMKH-olbrwyv9.js → stateDiagram-D77RDMKH-mb4b38xh.js} +1 -1
  216. package/static/dist/assets/stateDiagram-v2-MP3YSRHH-cn1fnqrg.js +1 -0
  217. package/static/dist/assets/{swimlanes-42K2YHIH-od14zrw6.js → swimlanes-42K2YHIH-ofrpfwj0.js} +1 -1
  218. package/static/dist/assets/swimlanesDiagram-VR7AAH4N-d652ummv.js +8 -0
  219. package/static/dist/assets/{timeline-definition-24CTP7MA-l0qokmnb.js → timeline-definition-24CTP7MA-hlw0jg6o.js} +1 -1
  220. package/static/dist/assets/todoStore-mfy9lpio.js +1 -0
  221. package/static/dist/assets/{treeView-Q6P3EWNA-hma3ip8m.js → treeView-Q6P3EWNA-d93wr19c.js} +1 -1
  222. package/static/dist/assets/{treemap-WGGIJYW6-bghjng5m.js → treemap-WGGIJYW6-g7ezdedz.js} +1 -1
  223. package/static/dist/assets/{untitled-nfaw0q7m.js → untitled-mqxhd1eh.js} +1 -1
  224. package/static/dist/assets/{useForm-k7fj2zsr.js → useForm-hh33yrwa.js} +1 -1
  225. package/static/dist/assets/useLocale-cr30vl7r.js +1 -0
  226. package/static/dist/assets/{vennDiagram-4TSXK5OY-bo97zf3z.js → vennDiagram-4TSXK5OY-m5vgeba5.js} +1 -1
  227. package/static/dist/assets/{wardley-WFR3VGLG-pbjl6jav.js → wardley-WFR3VGLG-gpao9bxv.js} +1 -1
  228. package/static/dist/assets/{wardleyDiagram-VM6X3IG4-bmy9i09l.js → wardleyDiagram-VM6X3IG4-g2yzwshm.js} +1 -1
  229. package/static/dist/assets/{xychartDiagram-S5SC5T6Z-eercu0mc.js → xychartDiagram-S5SC5T6Z-itakhpic.js} +1 -1
  230. package/static/dist/index.html +1 -1
  231. package/static/dist/sw.js +114 -152
  232. package/static/dist/assets/AppShell-gs0grlbs.js +0 -1
  233. package/static/dist/assets/ChatPage-gi1xlz52.js +0 -18
  234. package/static/dist/assets/HubRoute-qs9vzuh0.js +0 -2
  235. package/static/dist/assets/RightPanel-dn19xu42.js +0 -1
  236. package/static/dist/assets/Select-y7wtf85g.js +0 -1
  237. package/static/dist/assets/SessionListPanel-igwdj9xr.js +0 -1
  238. package/static/dist/assets/SettingsLayout-n6mu0ghg.js +0 -1
  239. package/static/dist/assets/States-oil2issf.js +0 -1
  240. package/static/dist/assets/Toaster-jtn59pjm.js +0 -1
  241. package/static/dist/assets/_app-k4jrkgfa.js +0 -1
  242. package/static/dist/assets/_app.ext._extensionId-mmf1mepm.js +0 -1
  243. package/static/dist/assets/_app.index-mb41nf00.js +0 -1
  244. package/static/dist/assets/_app.insights-mz5cep8m.js +0 -1
  245. package/static/dist/assets/_app.kanban-ocgw506i.js +0 -1
  246. package/static/dist/assets/_app.logs-lstmoju6.js +0 -1
  247. package/static/dist/assets/_app.memory-dishj9ra.js +0 -1
  248. package/static/dist/assets/_app.profiles-dynpvsio.js +0 -1
  249. package/static/dist/assets/_app.settings-c2czm9v4.js +0 -1
  250. package/static/dist/assets/_app.settings._section-exwflld7.js +0 -1
  251. package/static/dist/assets/_app.skills-j5jh2nug.js +0 -1
  252. package/static/dist/assets/_app.tasks-b99d98fo.js +0 -2
  253. package/static/dist/assets/_app.todos-ma8urvn3.js +0 -1
  254. package/static/dist/assets/_app.workspaces-l86cxeod.js +0 -1
  255. package/static/dist/assets/architecture-7GRP2DOG-mqft9w2p.js +0 -1
  256. package/static/dist/assets/channel-ix8cxdld.js +0 -1
  257. package/static/dist/assets/classDiagram-ZZMXUADV-c210y3il.js +0 -1
  258. package/static/dist/assets/classDiagram-v2-VYDZK3BY-c210y3il.js +0 -1
  259. package/static/dist/assets/endpoints-ipnv1hd4.js +0 -64
  260. package/static/dist/assets/eventmodeling-NTZA5JFV-d9b5a0ia.js +0 -1
  261. package/static/dist/assets/flowDiagram-HODETNUW-kfxxsyrk.js +0 -1
  262. package/static/dist/assets/index-bz7g7rhx.css +0 -2
  263. package/static/dist/assets/login-mvjys1ol.js +0 -1
  264. package/static/dist/assets/mermaid-HWGCJPDP-gmnkgf1n.js +0 -1
  265. package/static/dist/assets/onboarding-l6quy6gz.js +0 -1
  266. package/static/dist/assets/railroad-abnf-HS5TGJTU-5mjl5wpv.js +0 -1
  267. package/static/dist/assets/railroad-ebnf-LZEXJU2U-bfram8v8.js +0 -1
  268. package/static/dist/assets/railroad-peg-WCYAUIDC-nwfczn88.js +0 -1
  269. package/static/dist/assets/share._token-il3y6js2.js +0 -2
  270. package/static/dist/assets/sliders-horizontal-kd99ffvl.js +0 -1
  271. package/static/dist/assets/stateDiagram-v2-MP3YSRHH-dnzlmdpu.js +0 -1
  272. package/static/dist/assets/swimlanesDiagram-VR7AAH4N-ck0eqqdp.js +0 -8
  273. package/static/dist/assets/todoStore-la6uyqzj.js +0 -1
  274. package/static/dist/assets/trash-bxz1k9cw.js +0 -1
  275. package/static/dist/assets/useLocale-evhacmv2.js +0 -1
@@ -0,0 +1,120 @@
1
+ export type UpdateNotificationTarget = 'webui' | 'agent';
2
+ export type UpdateNotificationPhase = 'applying' | 'awaiting_confirmation' | 'restarting' | 'succeeded' | 'blocked' | 'failed' | 'unknown';
3
+ /** `tab` names one open Talaria Web tab; rows stamped with a tab are visible only to that tab. */
4
+ export interface UpdateNotificationScope {
5
+ owner: string;
6
+ profile: string;
7
+ serverOwner?: boolean;
8
+ tab?: string | null;
9
+ }
10
+ interface StoredUpdateNotification {
11
+ id: string;
12
+ owner: string;
13
+ profile: string;
14
+ visibility: 'server' | 'profile';
15
+ kind: string;
16
+ target: UpdateNotificationTarget | null;
17
+ phase: string;
18
+ severity: 'info' | 'warning' | 'critical';
19
+ persistent: boolean;
20
+ requires_acknowledgement: boolean;
21
+ actions: UpdateNotificationAction[];
22
+ destination: UpdateNotificationDestination | null;
23
+ title: string;
24
+ message: string;
25
+ created_at: string;
26
+ updated_at: string;
27
+ read_at: string | null;
28
+ acknowledged_at: string | null;
29
+ acknowledged_action_id: string | null;
30
+ verified_revision: string | null;
31
+ verified_version: string | null;
32
+ performed_action_ids: string[];
33
+ dismissed_at: string | null;
34
+ expected_identity: string | null;
35
+ tab_id: string | null;
36
+ }
37
+ export interface UpdateNotificationAction {
38
+ id: string;
39
+ label: string;
40
+ style: 'default' | 'primary' | 'destructive';
41
+ acknowledges: boolean;
42
+ }
43
+ export interface UpdateNotificationDestination {
44
+ key: string;
45
+ label: string;
46
+ }
47
+ export interface VerifiedUpdateIdentity {
48
+ revision: string | null;
49
+ version: string | null;
50
+ }
51
+ export type PublicUpdateNotification = Omit<StoredUpdateNotification, 'owner' | 'profile' | 'visibility' | 'dismissed_at' | 'expected_identity' | 'performed_action_ids' | 'tab_id'> & {
52
+ unread: boolean;
53
+ active: boolean;
54
+ requires_interaction: boolean;
55
+ can_dismiss: boolean;
56
+ };
57
+ export interface FrontendBuildState {
58
+ current_build: string | null;
59
+ loaded_build: string | null;
60
+ refresh_required: boolean;
61
+ notification_id: string | null;
62
+ }
63
+ export interface UpdateNotificationList {
64
+ scope_id: string;
65
+ notifications: PublicUpdateNotification[];
66
+ unread_count: number;
67
+ clearable_count: number;
68
+ can_clear: boolean;
69
+ }
70
+ export interface CreateUpdateNotificationInput {
71
+ kind: string;
72
+ target?: UpdateNotificationTarget | null;
73
+ phase: string;
74
+ severity?: 'info' | 'warning' | 'critical';
75
+ persistent?: boolean;
76
+ requiresAcknowledgement?: boolean;
77
+ actions?: UpdateNotificationAction[];
78
+ destination?: UpdateNotificationDestination | null;
79
+ title: string;
80
+ message: string;
81
+ visibility?: 'server' | 'profile';
82
+ }
83
+ export declare const FRONTEND_BUILD: RegExp;
84
+ export declare const TAB_ID: RegExp;
85
+ export declare const WEB_REFRESH_KIND = "web_refresh";
86
+ export declare const WEB_REFRESH_ACTION = "reload";
87
+ export declare class UpdateNotificationStore {
88
+ private readonly now;
89
+ private rows;
90
+ private readonly file;
91
+ /** Last check-in per tab refresh notice; kept in memory so polling never rewrites the store. */
92
+ private readonly tabSeen;
93
+ private readonly loadedAt;
94
+ constructor(stateDir: string, now?: () => Date);
95
+ /**
96
+ * Compare the frontend build a tab loaded with the build this server now serves. A mismatch keeps one
97
+ * persistent, tab-scoped refresh notice per tab; a match resolves and removes it. Unknown builds change nothing.
98
+ */
99
+ syncTabBuild(scope: UpdateNotificationScope, loadedBuild: string | null, currentBuild: string | null): FrontendBuildState;
100
+ begin(scope: UpdateNotificationScope, target: UpdateNotificationTarget): PublicUpdateNotification;
101
+ create(scope: UpdateNotificationScope, input: CreateUpdateNotificationInput): PublicUpdateNotification;
102
+ activeUpdate(scope: UpdateNotificationScope, target: UpdateNotificationTarget): PublicUpdateNotification | null;
103
+ transition(id: string, phase: UpdateNotificationPhase, expectedIdentity?: string | null, verifiedIdentity?: VerifiedUpdateIdentity): PublicUpdateNotification | null;
104
+ list(scope: UpdateNotificationScope): UpdateNotificationList;
105
+ clear(scope: UpdateNotificationScope): UpdateNotificationList;
106
+ read(scope: UpdateNotificationScope, id: string): PublicUpdateNotification | null;
107
+ dismiss(scope: UpdateNotificationScope, id: string): 'dismissed' | 'not_found' | 'acknowledgement_required';
108
+ action(scope: UpdateNotificationScope, id: string, actionId: string): PublicUpdateNotification | null;
109
+ cancelUpdate(scope: UpdateNotificationScope, id: string): PublicUpdateNotification | null;
110
+ reconcileInterruptedUpdates(currentWebIdentity: string | null, currentWebVersion?: string | null): void;
111
+ private visible;
112
+ private isVisible;
113
+ private hasProtectedCapacity;
114
+ private pruneClosedTabs;
115
+ private load;
116
+ /** Tab refresh notices are bounded by `hasProtectedCapacity` and kept apart, so they never evict or block other notifications. */
117
+ private save;
118
+ }
119
+ export declare const updateNotificationScopeId: (scope: UpdateNotificationScope) => string;
120
+ export {};
@@ -0,0 +1,387 @@
1
+ import { existsSync, mkdirSync, readFileSync } from 'node:fs';
2
+ import { dirname, resolve } from 'node:path';
3
+ import { createHash, randomUUID } from 'node:crypto';
4
+ import { atomicWriteSecretJson } from '../fs/atomic.js';
5
+ const PHASES = new Set(['applying', 'awaiting_confirmation', 'restarting', 'succeeded', 'blocked', 'failed', 'unknown']);
6
+ const REVISION = /^[a-f0-9]{40}$/;
7
+ const PER_SCOPE_LIMIT = 50;
8
+ const GLOBAL_LIMIT = 500;
9
+ export const FRONTEND_BUILD = /^[a-f0-9]{64}$/;
10
+ export const TAB_ID = /^[A-Za-z0-9_-]{8,64}$/;
11
+ export const WEB_REFRESH_KIND = 'web_refresh';
12
+ export const WEB_REFRESH_ACTION = 'reload';
13
+ /** A closed tab stops checking in; its refresh notice is dropped once unseen this long. An open tab recreates it on its next check. */
14
+ const TAB_TTL_MS = 60 * 60 * 1000;
15
+ const copy = (row) => ({
16
+ id: row.id, kind: row.kind, target: row.target, phase: row.phase, severity: row.severity,
17
+ persistent: row.persistent, requires_acknowledgement: row.requires_acknowledgement, actions: row.actions,
18
+ destination: row.destination,
19
+ title: row.title, message: row.message, created_at: row.created_at, updated_at: row.updated_at, read_at: row.read_at,
20
+ acknowledged_at: row.acknowledged_at, acknowledged_action_id: row.acknowledged_action_id,
21
+ verified_revision: row.verified_revision, verified_version: row.verified_version,
22
+ unread: row.read_at === null,
23
+ active: row.kind === 'update' && ['applying', 'restarting'].includes(row.phase),
24
+ requires_interaction: row.requires_acknowledgement && row.acknowledged_at === null,
25
+ can_dismiss: isDismissible(row),
26
+ });
27
+ const wording = (target, phase) => {
28
+ const name = target === 'webui' ? 'Talaria Web' : 'Hermes Agent';
29
+ const messages = {
30
+ applying: `Installing the selected ${name} update.`,
31
+ awaiting_confirmation: 'This Hermes Agent revision needs confirmation before it can be installed.',
32
+ restarting: target === 'webui' ? 'The update is installed. Talaria Web is restarting.' : 'The update is installed. Hermes Agent is restarting.',
33
+ succeeded: `${name} was updated successfully.`,
34
+ blocked: 'The update is waiting for active work to finish.',
35
+ failed: 'The update could not be completed. Open System settings for details.',
36
+ unknown: 'The connection closed before completion could be verified. Check the installed version before trying again.',
37
+ };
38
+ return { title: `${name} update`, message: messages[phase] };
39
+ };
40
+ export class UpdateNotificationStore {
41
+ now;
42
+ rows;
43
+ file;
44
+ /** Last check-in per tab refresh notice; kept in memory so polling never rewrites the store. */
45
+ tabSeen = new Map();
46
+ loadedAt;
47
+ constructor(stateDir, now = () => new Date()) {
48
+ this.now = now;
49
+ this.file = resolve(stateDir, 'update-notifications.json');
50
+ this.rows = this.load();
51
+ this.loadedAt = this.now().valueOf();
52
+ }
53
+ /**
54
+ * Compare the frontend build a tab loaded with the build this server now serves. A mismatch keeps one
55
+ * persistent, tab-scoped refresh notice per tab; a match resolves and removes it. Unknown builds change nothing.
56
+ */
57
+ syncTabBuild(scope, loadedBuild, currentBuild) {
58
+ this.pruneClosedTabs();
59
+ const tab = scope.tab && TAB_ID.test(scope.tab) ? scope.tab : null;
60
+ const loaded = loadedBuild && FRONTEND_BUILD.test(loadedBuild) ? loadedBuild : null;
61
+ const current = currentBuild && FRONTEND_BUILD.test(currentBuild) ? currentBuild : null;
62
+ const state = { current_build: current, loaded_build: loaded, refresh_required: false, notification_id: null };
63
+ if (!tab || !loaded || !current)
64
+ return state;
65
+ const existing = this.rows.find((row) => row.kind === WEB_REFRESH_KIND && row.tab_id === tab && row.owner === scope.owner && row.profile === scope.profile);
66
+ if (loaded === current) {
67
+ if (existing) {
68
+ this.rows = this.rows.filter((row) => row !== existing);
69
+ this.tabSeen.delete(existing.id);
70
+ this.save();
71
+ }
72
+ return state;
73
+ }
74
+ state.refresh_required = true;
75
+ const stamp = this.now().toISOString();
76
+ if (existing) {
77
+ this.tabSeen.set(existing.id, this.now().valueOf());
78
+ if (existing.expected_identity !== current) {
79
+ existing.expected_identity = current;
80
+ existing.updated_at = stamp;
81
+ existing.read_at = null;
82
+ this.save();
83
+ }
84
+ state.notification_id = existing.id;
85
+ return state;
86
+ }
87
+ const row = {
88
+ id: randomUUID(), owner: scope.owner.slice(0, 256), profile: scope.profile.slice(0, 64), visibility: 'profile',
89
+ kind: WEB_REFRESH_KIND, target: 'webui', phase: 'refresh_required', severity: 'warning',
90
+ persistent: true, requires_acknowledgement: true,
91
+ actions: [{ id: WEB_REFRESH_ACTION, label: 'Refresh now', style: 'primary', acknowledges: false }],
92
+ destination: null, title: 'Talaria Web was updated', message: 'Refresh this tab to load the new version.',
93
+ created_at: stamp, updated_at: stamp, read_at: null, acknowledged_at: null,
94
+ acknowledged_action_id: null, verified_revision: null, verified_version: null,
95
+ performed_action_ids: [], dismissed_at: null, expected_identity: current, tab_id: tab,
96
+ };
97
+ if (!this.hasProtectedCapacity(row))
98
+ return state;
99
+ this.rows.push(row);
100
+ this.tabSeen.set(row.id, this.now().valueOf());
101
+ this.save();
102
+ state.notification_id = row.id;
103
+ return state;
104
+ }
105
+ begin(scope, target) {
106
+ const text = wording(target, 'applying');
107
+ return this.create(scope, {
108
+ kind: 'update', target, phase: 'applying', ...text,
109
+ destination: { key: 'settings.system', label: 'Open System settings' },
110
+ visibility: 'server',
111
+ });
112
+ }
113
+ create(scope, input) {
114
+ const kind = safeToken(input.kind, '');
115
+ const phase = safeToken(input.phase, '');
116
+ const title = safeText(input.title, '', 160);
117
+ const message = safeText(input.message, '', 500);
118
+ const actions = safeActions(input.actions);
119
+ if (!kind || !phase || !title || !message)
120
+ throw new Error('Invalid update notification');
121
+ if (input.requiresAcknowledgement && !actions.some((action) => action.acknowledges))
122
+ throw new Error('Required acknowledgement needs an acknowledging action');
123
+ const stamp = this.now().toISOString();
124
+ const row = {
125
+ id: randomUUID(), owner: scope.owner.slice(0, 256), profile: scope.profile.slice(0, 64), visibility: input.visibility ?? 'profile',
126
+ kind, target: input.target ?? null, phase, severity: input.severity ?? 'info',
127
+ persistent: input.requiresAcknowledgement === true || input.persistent === true,
128
+ requires_acknowledgement: input.requiresAcknowledgement === true, actions,
129
+ destination: safeDestination(input.destination), title, message,
130
+ created_at: stamp, updated_at: stamp, read_at: null, acknowledged_at: null,
131
+ acknowledged_action_id: null, verified_revision: null, verified_version: null,
132
+ performed_action_ids: [], dismissed_at: null, expected_identity: null, tab_id: null,
133
+ };
134
+ if (!this.hasProtectedCapacity(row))
135
+ throw new Error('Update notification protected capacity reached');
136
+ this.rows.push(row);
137
+ this.save();
138
+ return copy(row);
139
+ }
140
+ activeUpdate(scope, target) {
141
+ const row = [...this.rows].reverse().find((entry) => this.isVisible(entry, scope) && entry.kind === 'update' && entry.target === target && ['applying', 'awaiting_confirmation', 'restarting'].includes(entry.phase));
142
+ return row ? copy(row) : null;
143
+ }
144
+ transition(id, phase, expectedIdentity, verifiedIdentity) {
145
+ const row = this.rows.find((entry) => entry.id === id);
146
+ if (!row)
147
+ return null;
148
+ const phaseChanged = row.phase !== phase;
149
+ row.phase = phase;
150
+ if (row.target)
151
+ Object.assign(row, wording(row.target, phase));
152
+ row.updated_at = this.now().toISOString();
153
+ if (phaseChanged)
154
+ row.read_at = null;
155
+ row.expected_identity = expectedIdentity?.trim().slice(0, 160) || null;
156
+ if (verifiedIdentity) {
157
+ row.verified_revision = typeof verifiedIdentity.revision === 'string' && REVISION.test(verifiedIdentity.revision) ? verifiedIdentity.revision : null;
158
+ row.verified_version = safeText(verifiedIdentity.version, '', 80) || null;
159
+ }
160
+ this.save();
161
+ return copy(row);
162
+ }
163
+ list(scope) {
164
+ this.pruneClosedTabs();
165
+ const scoped = this.rows.filter((row) => this.isVisible(row, scope) && row.dismissed_at === null);
166
+ const ordered = scoped.sort((a, b) => b.updated_at.localeCompare(a.updated_at));
167
+ const protectedRows = ordered.filter(isProtected);
168
+ const visible = [...protectedRows, ...ordered.filter((row) => !isProtected(row)).slice(0, Math.max(0, PER_SCOPE_LIMIT - protectedRows.length))]
169
+ .sort((a, b) => b.updated_at.localeCompare(a.updated_at));
170
+ const notifications = visible.map(copy);
171
+ const clearableCount = scoped.filter(isDismissible).length;
172
+ return { scope_id: updateNotificationScopeId(scope), notifications, unread_count: visible.filter((row) => row.read_at === null).length, clearable_count: clearableCount, can_clear: clearableCount > 0 };
173
+ }
174
+ clear(scope) {
175
+ const stamp = this.now().toISOString();
176
+ let changed = false;
177
+ for (const row of this.rows) {
178
+ if (!this.isVisible(row, scope) || row.dismissed_at !== null || !isDismissible(row))
179
+ continue;
180
+ row.dismissed_at = stamp;
181
+ changed = true;
182
+ }
183
+ if (changed)
184
+ this.save();
185
+ return this.list(scope);
186
+ }
187
+ read(scope, id) {
188
+ const row = this.visible(scope, id);
189
+ if (!row)
190
+ return null;
191
+ if (row.read_at === null) {
192
+ row.read_at = this.now().toISOString();
193
+ this.save();
194
+ }
195
+ return copy(row);
196
+ }
197
+ dismiss(scope, id) {
198
+ const row = this.rows.find((entry) => entry.id === id && this.isVisible(entry, scope));
199
+ if (!row)
200
+ return 'not_found';
201
+ if (row.requires_acknowledgement && row.acknowledged_at === null)
202
+ return 'acknowledgement_required';
203
+ if (row.dismissed_at === null) {
204
+ const stamp = this.now().toISOString();
205
+ row.dismissed_at = stamp;
206
+ row.read_at ??= stamp;
207
+ this.save();
208
+ }
209
+ return 'dismissed';
210
+ }
211
+ action(scope, id, actionId) {
212
+ const row = this.visible(scope, id);
213
+ const action = row?.actions.find((candidate) => candidate.id === actionId);
214
+ if (!row || !action)
215
+ return null;
216
+ if (row.performed_action_ids.includes(action.id))
217
+ return copy(row);
218
+ const stamp = this.now().toISOString();
219
+ row.updated_at = stamp;
220
+ row.read_at ??= stamp;
221
+ row.performed_action_ids.push(action.id);
222
+ if (action.acknowledges) {
223
+ row.acknowledged_at = stamp;
224
+ row.acknowledged_action_id = action.id;
225
+ }
226
+ this.save();
227
+ return copy(row);
228
+ }
229
+ cancelUpdate(scope, id) {
230
+ const row = this.rows.find((entry) => entry.id === id && this.isVisible(entry, scope) && entry.kind === 'update');
231
+ if (!row)
232
+ return null;
233
+ if (row.phase === 'blocked' && row.message === 'The update was cancelled before installation.')
234
+ return copy(row);
235
+ if (row.phase !== 'awaiting_confirmation')
236
+ return null;
237
+ const stamp = this.now().toISOString();
238
+ row.phase = 'blocked';
239
+ row.message = 'The update was cancelled before installation.';
240
+ row.updated_at = stamp;
241
+ row.read_at ??= stamp;
242
+ this.save();
243
+ return copy(row);
244
+ }
245
+ reconcileInterruptedUpdates(currentWebIdentity, currentWebVersion = null) {
246
+ let changed = false;
247
+ for (const row of this.rows) {
248
+ if (row.kind !== 'update' || (row.target !== 'webui' && row.target !== 'agent') || !['applying', 'restarting'].includes(row.phase))
249
+ continue;
250
+ const phase = row.target === 'webui' && row.phase === 'restarting' && currentWebIdentity && REVISION.test(currentWebIdentity) && row.expected_identity === currentWebIdentity ? 'succeeded' : 'unknown';
251
+ row.phase = phase;
252
+ Object.assign(row, wording(row.target, phase));
253
+ row.updated_at = this.now().toISOString();
254
+ row.read_at = null;
255
+ if (phase === 'succeeded') {
256
+ row.verified_revision = currentWebIdentity;
257
+ row.verified_version = safeText(currentWebVersion, '', 80) || null;
258
+ }
259
+ changed = true;
260
+ }
261
+ if (changed)
262
+ this.save();
263
+ }
264
+ visible(scope, id) {
265
+ return this.rows.find((row) => row.id === id && this.isVisible(row, scope) && row.dismissed_at === null) ?? null;
266
+ }
267
+ isVisible(row, scope) {
268
+ if (row.tab_id !== null)
269
+ return row.tab_id === scope.tab && row.owner === scope.owner && row.profile === scope.profile;
270
+ if (row.visibility === 'server')
271
+ return scope.serverOwner === true && (row.owner === scope.owner || row.owner === '*');
272
+ return row.owner === scope.owner && row.profile === scope.profile;
273
+ }
274
+ hasProtectedCapacity(row) {
275
+ const peers = this.rows.filter((entry) => isProtected(entry) && isTabNotice(entry) === isTabNotice(row));
276
+ return peers.filter((entry) => retentionBucket(entry) === retentionBucket(row)).length < PER_SCOPE_LIMIT && peers.length < GLOBAL_LIMIT;
277
+ }
278
+ pruneClosedTabs() {
279
+ const cutoff = this.now().valueOf() - TAB_TTL_MS;
280
+ const closed = this.rows.filter((row) => row.tab_id !== null && (this.tabSeen.get(row.id) ?? this.loadedAt) < cutoff);
281
+ if (closed.length === 0)
282
+ return;
283
+ for (const row of closed)
284
+ this.tabSeen.delete(row.id);
285
+ this.rows = this.rows.filter((row) => !closed.includes(row));
286
+ this.save();
287
+ }
288
+ load() {
289
+ if (!existsSync(this.file))
290
+ return [];
291
+ try {
292
+ const parsed = JSON.parse(readFileSync(this.file, 'utf8'));
293
+ if (!Array.isArray(parsed))
294
+ return [];
295
+ return parsed.flatMap((value) => {
296
+ if (!isRecord(value))
297
+ return [];
298
+ const row = value;
299
+ if (typeof row.id !== 'string' || typeof row.owner !== 'string' || typeof row.profile !== 'string'
300
+ || (row.target != null && row.target !== 'webui' && row.target !== 'agent') || typeof row.phase !== 'string'
301
+ || typeof row.created_at !== 'string' || typeof row.updated_at !== 'string'
302
+ || (row.tab_id != null && !(typeof row.tab_id === 'string' && TAB_ID.test(row.tab_id))))
303
+ return [];
304
+ const kind = safeToken(row.kind, 'update');
305
+ const target = row.target === 'webui' || row.target === 'agent' ? row.target : null;
306
+ const phase = safeToken(row.phase, 'unknown');
307
+ const fallback = target && PHASES.has(phase) ? wording(target, phase) : { title: 'Server notification', message: 'This server needs your attention.' };
308
+ return [{
309
+ id: row.id, owner: row.owner.slice(0, 256), profile: row.profile.slice(0, 64), visibility: row.visibility === 'profile' ? 'profile' : 'server', kind, target, phase,
310
+ severity: row.severity === 'critical' || row.severity === 'warning' ? row.severity : 'info',
311
+ persistent: row.persistent === true,
312
+ requires_acknowledgement: row.requires_acknowledgement === true,
313
+ actions: safeActions(row.actions),
314
+ destination: safeDestination(row.destination),
315
+ title: safeText(row.title, fallback.title, 160), message: safeText(row.message, fallback.message, 500),
316
+ created_at: row.created_at, updated_at: row.updated_at,
317
+ read_at: typeof row.read_at === 'string' ? row.read_at : null,
318
+ acknowledged_at: typeof row.acknowledged_at === 'string' ? row.acknowledged_at : null,
319
+ acknowledged_action_id: typeof row.acknowledged_action_id === 'string' ? row.acknowledged_action_id.slice(0, 64) : null,
320
+ verified_revision: typeof row.verified_revision === 'string' && REVISION.test(row.verified_revision) ? row.verified_revision : null,
321
+ verified_version: safeText(row.verified_version, '', 80) || null,
322
+ performed_action_ids: Array.isArray(row.performed_action_ids) ? row.performed_action_ids.map((id) => safeToken(id, '')).filter(Boolean).slice(0, 16) : [],
323
+ dismissed_at: typeof row.dismissed_at === 'string' ? row.dismissed_at : null,
324
+ expected_identity: typeof row.expected_identity === 'string' ? row.expected_identity.slice(0, 160) : null,
325
+ tab_id: typeof row.tab_id === 'string' ? row.tab_id : null,
326
+ }];
327
+ });
328
+ }
329
+ catch {
330
+ return [];
331
+ }
332
+ }
333
+ /** Tab refresh notices are bounded by `hasProtectedCapacity` and kept apart, so they never evict or block other notifications. */
334
+ save() {
335
+ const tabNotices = this.rows.filter(isTabNotice);
336
+ const sorted = this.rows.filter((row) => !isTabNotice(row)).sort((a, b) => b.updated_at.localeCompare(a.updated_at));
337
+ const protectedRows = sorted.filter(isProtected);
338
+ if (protectedRows.length > GLOBAL_LIMIT)
339
+ throw new Error('Update notification protected capacity exceeded');
340
+ const kept = [...protectedRows];
341
+ const counts = new Map();
342
+ for (const row of protectedRows) {
343
+ const key = retentionBucket(row);
344
+ counts.set(key, (counts.get(key) ?? 0) + 1);
345
+ }
346
+ for (const row of sorted) {
347
+ if (isProtected(row))
348
+ continue;
349
+ const key = retentionBucket(row);
350
+ const count = counts.get(key) ?? 0;
351
+ if (count >= PER_SCOPE_LIMIT || kept.length >= GLOBAL_LIMIT)
352
+ continue;
353
+ counts.set(key, count + 1);
354
+ kept.push(row);
355
+ }
356
+ this.rows = [...kept.reverse(), ...tabNotices];
357
+ mkdirSync(dirname(this.file), { recursive: true });
358
+ atomicWriteSecretJson(this.file, this.rows);
359
+ }
360
+ }
361
+ const safeToken = (value, fallback) => typeof value === 'string' && /^[a-z0-9][a-z0-9_-]{0,63}$/.test(value) ? value : fallback;
362
+ const isRecord = (value) => value !== null && typeof value === 'object' && !Array.isArray(value);
363
+ const safeText = (value, fallback, limit) => typeof value === 'string' && value.trim() ? value.trim().replace(/[\x00-\x1f\x7f]+/g, ' ').slice(0, limit) : fallback;
364
+ const safeActions = (value) => !Array.isArray(value) ? [] : value.slice(0, 4).flatMap((raw) => {
365
+ if (!raw || typeof raw !== 'object')
366
+ return [];
367
+ const action = raw;
368
+ const id = safeToken(action.id, '');
369
+ const label = safeText(action.label, '', 80);
370
+ if (!id || !label)
371
+ return [];
372
+ return [{ id, label, style: action.style === 'primary' || action.style === 'destructive' ? action.style : 'default', acknowledges: action.acknowledges === true }];
373
+ });
374
+ const safeDestination = (value) => {
375
+ if (!value || typeof value !== 'object')
376
+ return null;
377
+ const destination = value;
378
+ const key = typeof destination.key === 'string' && /^[a-z0-9][a-z0-9_.-]{0,63}$/.test(destination.key) ? destination.key : '';
379
+ const label = safeText(destination.label, '', 80);
380
+ return key && label ? { key, label } : null;
381
+ };
382
+ const isTabNotice = (row) => row.tab_id !== null;
383
+ const isDismissible = (row) => !row.requires_acknowledgement || row.acknowledged_at !== null;
384
+ const isProtected = (row) => (row.requires_acknowledgement && row.acknowledged_at === null) || (row.kind === 'update' && ['applying', 'awaiting_confirmation', 'restarting'].includes(row.phase));
385
+ const retentionBucket = (row) => `${row.owner}\u0000${row.visibility === 'server' ? '*' : row.profile}`;
386
+ export const updateNotificationScopeId = (scope) => createHash('sha256').update(`${scope.owner}\u0000${scope.profile}\u0000${scope.serverOwner === true ? 'owner' : 'member'}`).digest('hex').slice(0, 24);
387
+ //# sourceMappingURL=update-notifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-notifications.js","sourceRoot":"","sources":["../../src/tools/update-notifications.ts"],"names":[],"mappings":"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"}