@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
@@ -45,6 +45,8 @@ class _Run:
45
45
  self.finished = threading.Event()
46
46
  self.clarify_entries: dict[str, "_ClarifyEntry"] = {}
47
47
  self.lock = threading.Lock()
48
+ # The Agent's transcript list from before this turn: a Stop while the Agent still holds it has no checkpoint.
49
+ self.prior_messages = None
48
50
 
49
51
 
50
52
  class _ClarifyEntry:
@@ -81,6 +83,34 @@ def _snippet(raw: Any, limit: int = _TOOL_RESULT_SNIPPET_MAX) -> str:
81
83
  return text[:limit]
82
84
 
83
85
 
86
+ _RAW_RESULT_MAX_KEYS = 64
87
+ _RAW_RESULT_OUTCOME_KEYS = ("error", "exit_code", "exitCode", "success")
88
+
89
+
90
+ def _raw_result(raw: Any, limit: int = _TOOL_RESULT_SNIPPET_MAX) -> Any:
91
+ """The tool result as the server's outcome rule reads it, bounded: a dict (or JSON-object text) keeps its first
92
+ ``_RAW_RESULT_MAX_KEYS`` top-level fields plus its outcome fields, scalars as they are, text and non-empty nested
93
+ values as capped (JSON) text; anything else is the capped text. The sidecar decides nothing; the server does."""
94
+ try:
95
+ data = raw if isinstance(raw, dict) else json.loads(str(raw or ""))
96
+ except Exception: # noqa: BLE001
97
+ data = None
98
+ if not isinstance(data, dict):
99
+ return str(raw if raw is not None else "")[:limit]
100
+ out: dict = {}
101
+ # The server's outcome rule reads these, wherever they sit in the result.
102
+ kept = list(data.items())[:_RAW_RESULT_MAX_KEYS] + [(k, data[k]) for k in _RAW_RESULT_OUTCOME_KEYS if k in data]
103
+ for key, value in kept:
104
+ if value is None or isinstance(value, (bool, int)) or (isinstance(value, float) and value == value and abs(value) != float("inf")):
105
+ out[str(key)] = value
106
+ elif isinstance(value, (dict, list)) and not value:
107
+ out[str(key)] = {} if isinstance(value, dict) else []
108
+ else:
109
+ text = value if isinstance(value, str) else json.dumps(value, default=str)
110
+ out[str(key)] = text[:limit]
111
+ return out
112
+
113
+
84
114
  def _delegation_cost_usd(name: Any, raw: Any):
85
115
  """Predecessor ``_delegation_cost_usd``: total spend a ``delegate_task`` result reports, or None."""
86
116
  if str(name or "") != "delegate_task":
@@ -109,11 +139,66 @@ def _delegation_cost_usd(name: Any, raw: Any):
109
139
  return round(total, 6) if total > 0 else None
110
140
 
111
141
 
142
+ def _js_number(value: int | float) -> str:
143
+ """A number as JavaScript's `String()` shows it once the persisted JSON is parsed (`1.0` -> `1`, `1e21` -> `1e+21`)."""
144
+ try:
145
+ number = float(value)
146
+ except OverflowError:
147
+ return "Infinity" if value > 0 else "-Infinity"
148
+ if number != number:
149
+ return "NaN"
150
+ if number in (float("inf"), float("-inf")):
151
+ return "Infinity" if number > 0 else "-Infinity"
152
+ if number == 0:
153
+ return "0"
154
+ sign = "-" if number < 0 else ""
155
+ # repr() gives the shortest round-trip digits, as JavaScript does; only the notation differs.
156
+ mantissa, _, exp = repr(abs(number)).partition("e")
157
+ whole, _, frac = mantissa.partition(".")
158
+ digits = (whole + frac).lstrip("0")
159
+ point = len(whole) + int(exp or 0) - (len(whole + frac) - len((whole + frac).lstrip("0")))
160
+ digits = digits.rstrip("0") or "0"
161
+ k, n = len(digits), point
162
+ if k <= n <= 21:
163
+ return sign + digits + "0" * (n - k)
164
+ if 0 < n <= 21:
165
+ return sign + digits[:n] + "." + digits[n:]
166
+ if -6 < n <= 0:
167
+ return sign + "0." + "0" * -n + digits
168
+ e = n - 1
169
+ return sign + digits[0] + ("." + digits[1:] if k > 1 else "") + "e" + ("+" if e >= 0 else "-") + str(abs(e))
170
+
171
+
172
+ def _display_repr(text: str) -> str:
173
+ quote = '"' if "'" in text and '"' not in text else "'"
174
+ escaped = text.replace("\\", "\\\\").replace("\n", "\\n").replace("\r", "\\r").replace("\t", "\\t")
175
+ return quote + escaped.replace(quote, "\\" + quote) + quote
176
+
177
+
178
+ def _display_str(value: Any, nested: bool = False) -> str:
179
+ """A non-string argument as the server renders the parsed JSON of a persisted call (`pythonStr` in
180
+ `sessions/tool-display.ts`): Python `str()` shapes with JavaScript number text, so a live and a persisted call
181
+ show one target."""
182
+ if isinstance(value, str):
183
+ return _display_repr(value) if nested else value
184
+ if value is None:
185
+ return "None"
186
+ if isinstance(value, bool):
187
+ return "True" if value else "False"
188
+ if isinstance(value, (int, float)):
189
+ return _js_number(value)
190
+ if isinstance(value, (list, tuple)):
191
+ return "[" + ", ".join(_display_str(item, True) for item in value) + "]"
192
+ if isinstance(value, dict):
193
+ return "{" + ", ".join(f"{_display_repr(str(k))}: {_display_str(item, True)}" for k, item in value.items()) + "}"
194
+ return str(value)
195
+
196
+
112
197
  def _args_snapshot(args: Any) -> dict:
113
198
  snap: dict = {}
114
199
  if isinstance(args, dict):
115
200
  for k, v in list(args.items())[:4]:
116
- s2 = str(v)
201
+ s2 = _display_str(v)
117
202
  cap = _TOOL_RESULT_SNIPPET_MAX if str(k).lower() in _TOOL_ARG_CONTENT_KEYS else 120
118
203
  snap[k] = s2[:cap] + ("..." if len(s2) > cap else "")
119
204
  return snap
@@ -181,6 +266,21 @@ def _agent_pending_steer_text(agent) -> str:
181
266
  return str(agent.__dict__.get("_pending_steer") or "")
182
267
 
183
268
 
269
+ def _cancel_checkpoint(run: _Run) -> list | None:
270
+ """The Agent's canonical transcript at the stop boundary (the turn's prompt, completed tool calls and results),
271
+ which the live frames only project. The Agent republishes ``_session_messages`` after every tool round; until it
272
+ does, it still holds the previous turn's list and there is no checkpoint."""
273
+ agent = run.agent
274
+ messages = getattr(agent, "_session_messages", None) if agent is not None else None
275
+ if not isinstance(messages, list) or messages is run.prior_messages:
276
+ return None
277
+ try:
278
+ return json.loads(json.dumps([m for m in list(messages) if isinstance(m, dict)], default=str))
279
+ except Exception: # noqa: BLE001 - a row the Agent is still mutating; Stop must not fail on it
280
+ log.debug("cancel checkpoint snapshot failed", exc_info=True)
281
+ return None
282
+
283
+
184
284
  def _resolve_runtime(provider: str | None, model: str) -> dict:
185
285
  try:
186
286
  from hermes_cli.runtime_provider import resolve_runtime_provider
@@ -386,7 +486,7 @@ def start(ctx: CallContext, params: dict) -> dict: # noqa: PLR0915 - one turn,
386
486
  call["done"] = True
387
487
  call["snippet"] = snippet
388
488
  break
389
- payload = {"event_type": "tool.completed", "name": name, "preview": snippet, "args": _args_snapshot(args), "tid": tid, "is_error": False}
489
+ payload = {"event_type": "tool.completed", "name": name, "preview": snippet, "args": _args_snapshot(args), "tid": tid, "raw_result": _raw_result(function_result)}
390
490
  cost = _delegation_cost_usd(name, function_result)
391
491
  if cost is not None:
392
492
  payload["cost_usd"] = cost
@@ -415,13 +515,16 @@ def start(ctx: CallContext, params: dict) -> dict: # noqa: PLR0915 - one turn,
415
515
  elif "non-retryable error" in lower:
416
516
  emit("status", {"kind": "terminal_error", "message": text})
417
517
 
418
- def clarify_callback(question, choices, questions=None):
518
+ def clarify_callback(question, choices, multi_select=False, questions=None):
419
519
  choices_list = [str(c) for c in (choices or [])]
420
520
  # Predecessor `_clarify_timeout_seconds`: the Agent's own resolver over this profile's config
421
521
  # (``clarify.timeout`` else ``agent.clarify_timeout`` else 3600); ``<= 0`` waits until answered or cancelled.
422
522
  # The advertised ``timeout_seconds`` is what the clients count down, so it is the same number.
423
523
  timeout = _clarify_timeout(params)
424
524
  data = {"question": str(question or ""), "choices_offered": choices_list, "session_id": session_id, "kind": "clarify", "requested_at": time.time(), "timeout_seconds": timeout}
525
+ if multi_select:
526
+ data["multi_select"] = True
527
+ # Batch prompts (the Agent's ``_run_batch``) carry no top-level question and expect the ``{"answers": {...}}`` reply.
425
528
  if isinstance(questions, list) and questions:
426
529
  data["questions"] = questions
427
530
  entry = _ClarifyEntry(data)
@@ -525,6 +628,7 @@ def start(ctx: CallContext, params: dict) -> dict: # noqa: PLR0915 - one turn,
525
628
  with _APPROVAL_CB_LOCK:
526
629
  register_gateway_notify(session_id, approval_cb)
527
630
  _APPROVAL_CB_OWNER[session_id] = stream_id
631
+ run.prior_messages = getattr(agent, "_session_messages", None)
528
632
  run.agent = agent
529
633
  compressions_before = int(getattr(getattr(agent, "context_compressor", None), "compression_count", 0) or 0)
530
634
 
@@ -649,6 +753,8 @@ def register(registry) -> None:
649
753
  run = _run_for(params)
650
754
  if run is None:
651
755
  return {"ok": False, "reason": "not_running"}
756
+ # Before the interrupt, so the unwinding Agent cannot reshape the transcript first.
757
+ checkpoint = _cancel_checkpoint(run)
652
758
  run.cancel.set()
653
759
  # Predecessor ``_finalize_webui_steers``: drain the Agent's not-yet-applied steer text so the server can
654
760
  # settle queued steers (consumed vs leftover) before it writes the terminal cancel row.
@@ -660,7 +766,10 @@ def register(registry) -> None:
660
766
  pending = str(drain() or "") if callable(drain) else _agent_pending_steer_text(agent)
661
767
  except Exception: # noqa: BLE001
662
768
  pending = _agent_pending_steer_text(agent)
663
- return {"ok": True, "pending_steer": pending}
769
+ result = {"ok": True, "pending_steer": pending}
770
+ if checkpoint is not None:
771
+ result["checkpoint"] = checkpoint
772
+ return result
664
773
 
665
774
  @registry.method("chat.steer", requires_agent=False)
666
775
  def steer_(ctx: CallContext, params: dict) -> dict:
@@ -50,7 +50,9 @@ def read_config(path: Path) -> dict:
50
50
  raise
51
51
  except Exception as exc: # noqa: BLE001
52
52
  raise RpcError(f"config.yaml is not valid YAML: {exc}", condition="config_invalid") from exc
53
- return {"path": str(path), "exists": True, "config": data if isinstance(data, dict) else {}}
53
+ if data is not None and not isinstance(data, dict):
54
+ raise RpcError("config.yaml must contain a mapping", condition="config_invalid")
55
+ return {"path": str(path), "exists": True, "config": data if data is not None else {}}
54
56
 
55
57
 
56
58
  def _write_target(path: Path) -> Path:
@@ -117,11 +119,11 @@ def reasoning_efforts(model: str, provider: str) -> dict:
117
119
 
118
120
 
119
121
  def register(registry) -> None:
120
- @registry.method("config.get", requires_agent=True)
122
+ @registry.method("config.get", requires_agent=False)
121
123
  def get(ctx: CallContext, params: dict) -> dict:
122
124
  return read_config(config_path_param(params))
123
125
 
124
- @registry.method("config.set", requires_agent=True)
126
+ @registry.method("config.set", requires_agent=False)
125
127
  def set_(ctx: CallContext, params: dict) -> dict:
126
128
  return write_config(config_path_param(params), params.get("config"))
127
129
 
@@ -305,14 +305,8 @@ class AgentRuntime:
305
305
 
306
306
  # ── handshake ─────────────────────────────────────────────────────────
307
307
  def describe(self) -> dict:
308
- # A checkout answers by revision; an untracked install (pip, image, no .git) must match the pinned version
309
- # instead of passing unchecked, and an unknown version fails closed.
310
- if not self.loaded:
311
- compatible = False
312
- elif self.revision is not None:
313
- compatible = self.revision == self.pin["source_revision"]
314
- else:
315
- compatible = self.agent_version is not None and self.agent_version == self.pin["version"]
308
+ # The pin records official test coverage, not runtime capability. Each operation still checks its imports,
309
+ # profile isolation and loaded-revision guard at the point of use.
316
310
  return {
317
311
  "rpc_version": SIDECAR_RPC_VERSION,
318
312
  "python": sys.executable,
@@ -323,7 +317,7 @@ class AgentRuntime:
323
317
  "pinned_revision": self.pin["source_revision"],
324
318
  "pinned_version": self.pin["version"],
325
319
  "pinned_image": self.pin["image"],
326
- "compatible": compatible,
320
+ "compatible": self.loaded,
327
321
  "stale": self.is_stale(),
328
322
  "update_state": self.update_transaction_state(),
329
323
  "import_error": self.import_error,