@maudecode/talaria-web 1.20.0 → 1.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 (267) hide show
  1. package/_release.json +8 -8
  2. package/dist/api/automation-router.d.ts +313 -8
  3. package/dist/api/automation-router.js +21 -1
  4. package/dist/api/automation-router.js.map +1 -1
  5. package/dist/api/chat-router.d.ts +412 -15
  6. package/dist/api/chat-router.js +22 -170
  7. package/dist/api/chat-router.js.map +1 -1
  8. package/dist/api/git-router.d.ts +50 -0
  9. package/dist/api/git-router.js +17 -4
  10. package/dist/api/git-router.js.map +1 -1
  11. package/dist/api/router.d.ts +1 -1
  12. package/dist/api/sessions-router.d.ts +1138 -29
  13. package/dist/api/sessions-router.js +58 -41
  14. package/dist/api/sessions-router.js.map +1 -1
  15. package/dist/api/sse-routes.js +4 -2
  16. package/dist/api/sse-routes.js.map +1 -1
  17. package/dist/api/tools-router.d.ts +481 -29
  18. package/dist/api/tools-router.js +34 -9
  19. package/dist/api/tools-router.js.map +1 -1
  20. package/dist/http/context.d.ts +2 -0
  21. package/dist/http/context.js.map +1 -1
  22. package/dist/redact.d.ts +2 -0
  23. package/dist/redact.js +17 -2
  24. package/dist/redact.js.map +1 -1
  25. package/dist/runtime.js +36 -8
  26. package/dist/runtime.js.map +1 -1
  27. package/dist/server.js +1 -0
  28. package/dist/server.js.map +1 -1
  29. package/dist/sessions/admission.d.ts +21 -0
  30. package/dist/sessions/admission.js +176 -0
  31. package/dist/sessions/admission.js.map +1 -0
  32. package/dist/sessions/anchor.d.ts +2 -0
  33. package/dist/sessions/anchor.js +4 -4
  34. package/dist/sessions/anchor.js.map +1 -1
  35. package/dist/sessions/background-tasks.d.ts +19 -1
  36. package/dist/sessions/background-tasks.js +36 -6
  37. package/dist/sessions/background-tasks.js.map +1 -1
  38. package/dist/sessions/events.d.ts +3 -0
  39. package/dist/sessions/events.js +4 -0
  40. package/dist/sessions/events.js.map +1 -1
  41. package/dist/sessions/gateway-sessions.d.ts +50 -2
  42. package/dist/sessions/gateway-sessions.js +144 -11
  43. package/dist/sessions/gateway-sessions.js.map +1 -1
  44. package/dist/sessions/merge.d.ts +1 -0
  45. package/dist/sessions/merge.js +7 -2
  46. package/dist/sessions/merge.js.map +1 -1
  47. package/dist/sessions/prefix-index.d.ts +8 -0
  48. package/dist/sessions/prefix-index.js +14 -3
  49. package/dist/sessions/prefix-index.js.map +1 -1
  50. package/dist/sessions/prompt-queues.d.ts +36 -0
  51. package/dist/sessions/prompt-queues.js +318 -0
  52. package/dist/sessions/prompt-queues.js.map +1 -0
  53. package/dist/sessions/relay.d.ts +12 -1
  54. package/dist/sessions/relay.js +75 -17
  55. package/dist/sessions/relay.js.map +1 -1
  56. package/dist/sessions/service.d.ts +26 -1
  57. package/dist/sessions/service.js +200 -6
  58. package/dist/sessions/service.js.map +1 -1
  59. package/dist/sessions/session.js +1 -0
  60. package/dist/sessions/session.js.map +1 -1
  61. package/dist/sessions/storage/json-documents.js +1 -0
  62. package/dist/sessions/storage/json-documents.js.map +1 -1
  63. package/dist/sessions/store.d.ts +1 -0
  64. package/dist/sessions/store.js +1 -0
  65. package/dist/sessions/store.js.map +1 -1
  66. package/dist/sessions/streams.d.ts +2 -0
  67. package/dist/sessions/streams.js.map +1 -1
  68. package/dist/sessions/tool-display.d.ts +8 -1
  69. package/dist/sessions/tool-display.js +39 -4
  70. package/dist/sessions/tool-display.js.map +1 -1
  71. package/dist/sessions/turn.d.ts +4 -1
  72. package/dist/sessions/turn.js +20 -13
  73. package/dist/sessions/turn.js.map +1 -1
  74. package/dist/tools/gateway-restart.d.ts +1 -1
  75. package/dist/tools/kanban.d.ts +10 -1
  76. package/dist/tools/kanban.js +73 -1
  77. package/dist/tools/kanban.js.map +1 -1
  78. package/dist/tools/mcp.d.ts +3 -1
  79. package/dist/tools/mcp.js +73 -0
  80. package/dist/tools/mcp.js.map +1 -1
  81. package/dist/tools/memory.d.ts +28 -0
  82. package/dist/tools/memory.js +120 -14
  83. package/dist/tools/memory.js.map +1 -1
  84. package/dist/tools/update-notifications.d.ts +12 -10
  85. package/dist/tools/update-notifications.js +124 -14
  86. package/dist/tools/update-notifications.js.map +1 -1
  87. package/dist/tools/updates.d.ts +22 -3
  88. package/dist/tools/updates.js +118 -20
  89. package/dist/tools/updates.js.map +1 -1
  90. package/dist/workspace/managed-buffers.d.ts +58 -0
  91. package/dist/workspace/managed-buffers.js +76 -0
  92. package/dist/workspace/managed-buffers.js.map +1 -0
  93. package/dist/workspace/rollback.js +1 -1
  94. package/dist/workspace/rollback.js.map +1 -1
  95. package/package.json +2 -2
  96. package/sidecar/agent_dependency.json +4 -4
  97. package/sidecar/agent_support.json +20 -8
  98. package/sidecar/talaria_sidecar/__init__.py +1 -1
  99. package/sidecar/talaria_sidecar/agent_mutation.py +87 -9
  100. package/sidecar/talaria_sidecar/agent_services.py +83 -23
  101. package/sidecar/talaria_sidecar/methods/__init__.py +2 -2
  102. package/sidecar/talaria_sidecar/methods/dashboard_plugins.py +4 -4
  103. package/sidecar/talaria_sidecar/methods/gateway_sessions.py +109 -19
  104. package/sidecar/talaria_sidecar/methods/kanban.py +48 -0
  105. package/sidecar/talaria_sidecar/methods/managed_buffers.py +110 -0
  106. package/sidecar/talaria_sidecar/methods/mcp.py +55 -0
  107. package/sidecar/talaria_sidecar/methods/outbound_drafts.py +165 -0
  108. package/static/dist/FILES.txt +127 -128
  109. package/static/dist/assets/AppShell-c5989995.js +8 -0
  110. package/static/dist/assets/Button-nuaikybd.js +1 -0
  111. package/static/dist/assets/ChatPage-bfg4khph.js +6 -0
  112. package/static/dist/assets/ConnectTargets-k5wo9yo8.js +1 -0
  113. package/static/dist/assets/{Dialog-hta5utr3.js → Dialog-o8vo2aws.js} +1 -1
  114. package/static/dist/assets/{ExtensionRoute-zrhjn0wm.js → ExtensionRoute-l1yjrso4.js} +1 -1
  115. package/static/dist/assets/Field-j7o8cfps.js +1 -0
  116. package/static/dist/assets/HubRoute-efnwe4xz.js +2 -0
  117. package/static/dist/assets/Markdown-clqf5m22.js +2 -0
  118. package/static/dist/assets/{MarkdownRenderer-fbswsgld.js → MarkdownRenderer-ccgqrza3.js} +18 -18
  119. package/static/dist/assets/OAuthSignIn-h7bjaqp6.js +1 -0
  120. package/static/dist/assets/{ResourceSwitch-odi6dy2o.js → ResourceSwitch-oai2zqaj.js} +1 -1
  121. package/static/dist/assets/RightPanel-ho161a45.js +1 -0
  122. package/static/dist/assets/{Select-kr07928w.js → Select-d1g5a8bm.js} +1 -1
  123. package/static/dist/assets/SessionListPanel-i7kaokhi.js +1 -0
  124. package/static/dist/assets/SettingsLayout-lnecm87w.js +1 -0
  125. package/static/dist/assets/{States-icab19yg.js → States-easntmry.js} +1 -1
  126. package/static/dist/assets/TerminalPanel-lxhwd4jl.js +16 -0
  127. package/static/dist/assets/Toaster-l4sciy8t.js +1 -0
  128. package/static/dist/assets/_app-mqexqbg8.js +1 -0
  129. package/static/dist/assets/{_app.ext._extensionId-na62087t.js → _app.ext._extensionId-n797jp72.js} +1 -1
  130. package/static/dist/assets/{_app.index-jypgdqoi.js → _app.index-ne43mdw2.js} +1 -1
  131. package/static/dist/assets/{_app.insights-kabejdtm.js → _app.insights-fqonovb4.js} +1 -1
  132. package/static/dist/assets/{_app.kanban-m19kfcmx.js → _app.kanban-kysliv19.js} +1 -1
  133. package/static/dist/assets/{_app.logs-iw4m96sz.js → _app.logs-febut82r.js} +1 -1
  134. package/static/dist/assets/{_app.memory-jq5frwcg.js → _app.memory-ha86oj1c.js} +1 -1
  135. package/static/dist/assets/{_app.profiles-kwa3m7rp.js → _app.profiles-cnu3gxxq.js} +1 -1
  136. package/static/dist/assets/{_app.session._sessionId-o5lyeipj.js → _app.session._sessionId-ifzjpcgn.js} +1 -1
  137. package/static/dist/assets/{_app.settings-ckl8hdll.js → _app.settings-nmakdiaf.js} +1 -1
  138. package/static/dist/assets/_app.settings._section-djglnjmi.js +3 -0
  139. package/static/dist/assets/{_app.skills-n016rihd.js → _app.skills-f3wad8yo.js} +1 -1
  140. package/static/dist/assets/_app.tasks-l10py1c0.js +1 -0
  141. package/static/dist/assets/{_app.todos-btew5v2s.js → _app.todos-bml1m3r1.js} +1 -1
  142. package/static/dist/assets/{_app.workspaces-lnfk95ch.js → _app.workspaces-f3d066lx.js} +1 -1
  143. package/static/dist/assets/{abnfDiagram-VCTEODGH-dttheegb.js → abnfDiagram-VCTEODGH-i53jc4yp.js} +1 -1
  144. package/static/dist/assets/{architecture-7GRP2DOG-ic435919.js → architecture-7GRP2DOG-e3bv5m6f.js} +1 -1
  145. package/static/dist/assets/{architectureDiagram-5GKGNRK7-8r3glgiq.js → architectureDiagram-5GKGNRK7-pakekxu2.js} +1 -1
  146. package/static/dist/assets/{archive-il7c6053.js → archive-ihqi7z2x.js} +1 -1
  147. package/static/dist/assets/{blockDiagram-I7D4REHJ-jenyos6c.js → blockDiagram-I7D4REHJ-bc6bo1n6.js} +1 -1
  148. package/static/dist/assets/{c4Diagram-7LVT6UL2-nzlx7yc4.js → c4Diagram-7LVT6UL2-btvwk2qx.js} +1 -1
  149. package/static/dist/assets/channel-jn4f8443.js +1 -0
  150. package/static/dist/assets/{chunk-4HAMMTFA-g0cru63b.js → chunk-4HAMMTFA-dlwab11c.js} +1 -1
  151. package/static/dist/assets/{chunk-75Z2AOVW-7rkswkjw.js → chunk-75Z2AOVW-dp5gh7i8.js} +1 -1
  152. package/static/dist/assets/{chunk-DU6HZSFF-fn73jzdo.js → chunk-DU6HZSFF-bi06zl1c.js} +1 -1
  153. package/static/dist/assets/{chunk-F27PBJKO-oey8e72m.js → chunk-F27PBJKO-kvv1rnlh.js} +1 -1
  154. package/static/dist/assets/{chunk-GMAD6QVW-l2a32wiy.js → chunk-GMAD6QVW-ji0rx9by.js} +1 -1
  155. package/static/dist/assets/{chunk-GVQU2GXP-o9dwzh8h.js → chunk-GVQU2GXP-nmz0j82p.js} +1 -1
  156. package/static/dist/assets/{chunk-IMKFNOWR-eblwj20b.js → chunk-IMKFNOWR-kmi1qx88.js} +1 -1
  157. package/static/dist/assets/{chunk-L3NEJ4N5-o2mufspb.js → chunk-L3NEJ4N5-xhb7mebj.js} +1 -1
  158. package/static/dist/assets/{chunk-OSK3NFVY-ijp9pw29.js → chunk-OSK3NFVY-5a9sgscq.js} +1 -1
  159. package/static/dist/assets/{chunk-P2QGCYS3-hs9hqwl4.js → chunk-P2QGCYS3-dfezp4vu.js} +1 -1
  160. package/static/dist/assets/{chunk-POPQ4Y6H-bp9rsqez.js → chunk-POPQ4Y6H-gd2vq3c0.js} +1 -1
  161. package/static/dist/assets/{chunk-PWAF6VOD-brkprov6.js → chunk-PWAF6VOD-wvw2nksf.js} +1 -1
  162. package/static/dist/assets/{chunk-SHT3W25Y-gmpv0pxz.js → chunk-SHT3W25Y-f58q97px.js} +1 -1
  163. package/static/dist/assets/{chunk-SVP7TREG-oldm08fu.js → chunk-SVP7TREG-abgwpyz9.js} +1 -1
  164. package/static/dist/assets/{chunk-TICWLB2K-ooqilfv7.js → chunk-TICWLB2K-h4sbs8ds.js} +1 -1
  165. package/static/dist/assets/classDiagram-ZZMXUADV-dzrw66se.js +1 -0
  166. package/static/dist/assets/classDiagram-v2-VYDZK3BY-dzrw66se.js +1 -0
  167. package/static/dist/assets/completionAudio-ce86msbu.js +1 -0
  168. package/static/dist/assets/{copy-jo006coq.js → copy-m9h56qa8.js} +1 -1
  169. package/static/dist/assets/{cynefin-OW5HDTMX-d47op7qs.js → cynefin-OW5HDTMX-g081vffs.js} +1 -1
  170. package/static/dist/assets/{cynefinDiagram-5FMLGOSQ-doa7594y.js → cynefinDiagram-5FMLGOSQ-odxvjesk.js} +1 -1
  171. package/static/dist/assets/{dagre-GXQ25YYZ-os768dp4.js → dagre-GXQ25YYZ-cpdwzjs4.js} +1 -1
  172. package/static/dist/assets/{diagram-S7CK7UJ4-fyi81nxd.js → diagram-S7CK7UJ4-clv5mxvu.js} +1 -1
  173. package/static/dist/assets/{diagram-UQ7AKVKN-j3exggaq.js → diagram-UQ7AKVKN-m2ia1mbf.js} +1 -1
  174. package/static/dist/assets/{diagram-VSXAHHWV-omo1en2l.js → diagram-VSXAHHWV-ea6zv636.js} +1 -1
  175. package/static/dist/assets/{diagram-VX7I27RA-oro2cyu0.js → diagram-VX7I27RA-oqlef685.js} +1 -1
  176. package/static/dist/assets/{diagram-Z3DM3KII-byt9vdb7.js → diagram-Z3DM3KII-kjubcbwu.js} +1 -1
  177. package/static/dist/assets/{dist-etpoyscq.js → dist-carq1azj.js} +4 -4
  178. package/static/dist/assets/{ebnfDiagram-PWID7BFC-ee3haugh.js → ebnfDiagram-PWID7BFC-fg0zri3e.js} +1 -1
  179. package/static/dist/assets/{erDiagram-RLTQ6QDP-d1e93yff.js → erDiagram-RLTQ6QDP-eb7pmk3x.js} +1 -1
  180. package/static/dist/assets/{eventmodeling-NTZA5JFV-i1ihb40c.js → eventmodeling-NTZA5JFV-gvi1fxhn.js} +1 -1
  181. package/static/dist/assets/flowDiagram-HODETNUW-abekab15.js +1 -0
  182. package/static/dist/assets/folder-plus-ksaons88.js +1 -0
  183. package/static/dist/assets/{ganttDiagram-EL5Y4UJY-m7g0jud4.js → ganttDiagram-EL5Y4UJY-jmisowrc.js} +1 -1
  184. package/static/dist/assets/{gitGraph-4MIJSDKK-hzdj07yy.js → gitGraph-4MIJSDKK-m7kt3u6e.js} +1 -1
  185. package/static/dist/assets/{gitGraphDiagram-WWUBYQGX-dm9agbna.js → gitGraphDiagram-WWUBYQGX-nq7vfzh2.js} +1 -1
  186. package/static/dist/assets/{highlighted-body-KPVGNVTW-mmgz2czu.js → highlighted-body-KPVGNVTW-gcu017ay.js} +1 -1
  187. package/static/dist/assets/{host-fr6lni1p.js → host-ipp4e84c.js} +1 -1
  188. package/static/dist/assets/{index-73649w7o.js → index-d6vbxlra.js} +7 -4
  189. package/static/dist/assets/index-ey6qo0zx.css +2 -0
  190. package/static/dist/assets/{info-A6RAGUB7-lll1dqmm.js → info-A6RAGUB7-idazwfqe.js} +1 -1
  191. package/static/dist/assets/{infoDiagram-27XIBGKW-k7esc639.js → infoDiagram-27XIBGKW-bb9jh8gl.js} +1 -1
  192. package/static/dist/assets/{ishikawaDiagram-5VMMS53U-lgr6k9wo.js → ishikawaDiagram-5VMMS53U-nqc132rv.js} +1 -1
  193. package/static/dist/assets/{journeyDiagram-3NMN7TZE-ndmbxuqk.js → journeyDiagram-3NMN7TZE-fpvnhy44.js} +1 -1
  194. package/static/dist/assets/{kanban-definition-UXKFOSKX-mjxym0jp.js → kanban-definition-UXKFOSKX-ndzqm6fu.js} +1 -1
  195. package/static/dist/assets/{lazyRouteComponent-cwb6l7xh.js → lazyRouteComponent-javud235.js} +1 -1
  196. package/static/dist/assets/{line-mtr5k6il.js → line-g625e7cj.js} +1 -1
  197. package/static/dist/assets/{link-iadw4ghw.js → link-gfdaho08.js} +1 -1
  198. package/static/dist/assets/{login-lkhtzfcl.js → login-iv6yq4xf.js} +1 -1
  199. package/static/dist/assets/mermaid-HWGCJPDP-cwj5cl6k.js +1 -0
  200. package/static/dist/assets/{mermaid-parser.core-k91vdnvi.js → mermaid-parser.core-plzkuzov.js} +3 -3
  201. package/static/dist/assets/{mindmap-definition-YA3MSWOX-ehztfea4.js → mindmap-definition-YA3MSWOX-ojrgs569.js} +1 -1
  202. package/static/dist/assets/onboarding-ff4emacu.js +1 -0
  203. package/static/dist/assets/{packet-AYTQ26CC-ok2xrblz.js → packet-AYTQ26CC-gyaf9s8h.js} +1 -1
  204. package/static/dist/assets/{pegDiagram-XKGWAZYB-ec3rpj0m.js → pegDiagram-XKGWAZYB-bf6xj8mq.js} +1 -1
  205. package/static/dist/assets/{pie-WAS4IAKB-iwkir23u.js → pie-WAS4IAKB-f5ymzelo.js} +1 -1
  206. package/static/dist/assets/{pieDiagram-E7YTZNPT-fcpqpekh.js → pieDiagram-E7YTZNPT-d0qjl3zi.js} +1 -1
  207. package/static/dist/assets/{quadrantDiagram-AXDQQJYC-lqsync43.js → quadrantDiagram-AXDQQJYC-oqy1mras.js} +1 -1
  208. package/static/dist/assets/queryKeys-x8fjxhut.js +9 -0
  209. package/static/dist/assets/{radar-RG4KPBEZ-hje4jbk6.js → radar-RG4KPBEZ-b6jcjvda.js} +1 -1
  210. package/static/dist/assets/{railroad-74A4TZTK-gll9n6qi.js → railroad-74A4TZTK-e3a6lk5k.js} +1 -1
  211. package/static/dist/assets/{railroad-abnf-HS5TGJTU-o6h6lpn4.js → railroad-abnf-HS5TGJTU-ff5hocrx.js} +1 -1
  212. package/static/dist/assets/{railroad-ebnf-LZEXJU2U-juaefj6o.js → railroad-ebnf-LZEXJU2U-exkhyw4n.js} +1 -1
  213. package/static/dist/assets/{railroad-peg-WCYAUIDC-cgfhvpah.js → railroad-peg-WCYAUIDC-jefk9b7c.js} +1 -1
  214. package/static/dist/assets/{railroadDiagram-O6MQD6OU-lp3w7awf.js → railroadDiagram-O6MQD6OU-e4amks1i.js} +1 -1
  215. package/static/dist/assets/{refresh-cw-iccm7a4e.js → refresh-cw-lfp4u1oh.js} +1 -1
  216. package/static/dist/assets/{requirementDiagram-BXWQKSXE-ha8eibcf.js → requirementDiagram-BXWQKSXE-c77k1e2y.js} +1 -1
  217. package/static/dist/assets/{sankeyDiagram-P5KCCOFB-oxf31pr9.js → sankeyDiagram-P5KCCOFB-oa1cc52s.js} +1 -1
  218. package/static/dist/assets/{sequenceDiagram-WJ2MYXX4-jiq8lhyo.js → sequenceDiagram-WJ2MYXX4-j20gqt22.js} +1 -1
  219. package/static/dist/assets/{share._token-o76ki0ly.js → share._token-kmfoflw6.js} +2 -2
  220. package/static/dist/assets/{sliders-horizontal-ddcs88av.js → sliders-horizontal-g5jkzd9k.js} +1 -1
  221. package/static/dist/assets/{stateDiagram-D77RDMKH-f3fslnon.js → stateDiagram-D77RDMKH-co2ghkdp.js} +1 -1
  222. package/static/dist/assets/stateDiagram-v2-MP3YSRHH-faw1opgh.js +1 -0
  223. package/static/dist/assets/{swimlanes-42K2YHIH-k1hmk7jf.js → swimlanes-42K2YHIH-m30cktqe.js} +1 -1
  224. package/static/dist/assets/swimlanesDiagram-VR7AAH4N-hfil433g.js +8 -0
  225. package/static/dist/assets/{timeline-definition-24CTP7MA-n3ncfy9r.js → timeline-definition-24CTP7MA-liuep6fl.js} +1 -1
  226. package/static/dist/assets/toast-zmb35u3r.js +56 -0
  227. package/static/dist/assets/{treeView-Q6P3EWNA-l3y2pejt.js → treeView-Q6P3EWNA-np5d2jv2.js} +1 -1
  228. package/static/dist/assets/{treemap-WGGIJYW6-jown9axh.js → treemap-WGGIJYW6-cmpltxh1.js} +1 -1
  229. package/static/dist/assets/{useForm-o4uu74mx.js → useForm-f1udzsjf.js} +1 -1
  230. package/static/dist/assets/{useParams-ftsveu84.js → useParams-ierevvts.js} +1 -1
  231. package/static/dist/assets/{useSearch-crqueqga.js → useSearch-i7nr9ypl.js} +1 -1
  232. package/static/dist/assets/{vennDiagram-4TSXK5OY-dh59uq1c.js → vennDiagram-4TSXK5OY-b2g42qrg.js} +1 -1
  233. package/static/dist/assets/{wardley-WFR3VGLG-e6d74b0j.js → wardley-WFR3VGLG-lb0eqbff.js} +1 -1
  234. package/static/dist/assets/{wardleyDiagram-VM6X3IG4-hnofh78f.js → wardleyDiagram-VM6X3IG4-ermwaqha.js} +1 -1
  235. package/static/dist/assets/{xychartDiagram-S5SC5T6Z-bpymjelb.js → xychartDiagram-S5SC5T6Z-dll0jldk.js} +1 -1
  236. package/static/dist/index.html +1 -1
  237. package/static/dist/sw.js +1 -1
  238. package/static/dist/assets/AppShell-3isgvoro.js +0 -8
  239. package/static/dist/assets/Button-f4n6dapf.js +0 -1
  240. package/static/dist/assets/ChatPage-k7b6xfax.js +0 -4
  241. package/static/dist/assets/ConnectTargets-juqvt5lm.js +0 -1
  242. package/static/dist/assets/Field-b6ez48oz.js +0 -1
  243. package/static/dist/assets/HubRoute-iwvso2tz.js +0 -2
  244. package/static/dist/assets/Markdown-jdeth7zq.js +0 -2
  245. package/static/dist/assets/OAuthSignIn-bpd8hom3.js +0 -1
  246. package/static/dist/assets/RightPanel-eu6enlo6.js +0 -1
  247. package/static/dist/assets/SessionListPanel-etb2i54l.js +0 -1
  248. package/static/dist/assets/SettingsLayout-eu3xxp23.js +0 -1
  249. package/static/dist/assets/TerminalPanel-hngmsr8b.js +0 -16
  250. package/static/dist/assets/Toaster-nb2uzjw1.js +0 -1
  251. package/static/dist/assets/_app-ga1moszl.js +0 -1
  252. package/static/dist/assets/_app.settings._section-dtdjk98a.js +0 -3
  253. package/static/dist/assets/_app.tasks-n8zuqsqe.js +0 -1
  254. package/static/dist/assets/cancel-bsnfo36u.js +0 -1
  255. package/static/dist/assets/channel-dsbtk01y.js +0 -1
  256. package/static/dist/assets/classDiagram-ZZMXUADV-fvgcv24g.js +0 -1
  257. package/static/dist/assets/classDiagram-v2-VYDZK3BY-fvgcv24g.js +0 -1
  258. package/static/dist/assets/flowDiagram-HODETNUW-jahfpiod.js +0 -1
  259. package/static/dist/assets/folder-plus-ivoglq98.js +0 -1
  260. package/static/dist/assets/index-lhf1fsdf.css +0 -2
  261. package/static/dist/assets/mermaid-HWGCJPDP-jx0q5dm2.js +0 -1
  262. package/static/dist/assets/onboarding-f67z0a2r.js +0 -1
  263. package/static/dist/assets/queryKeys-ed4n2egc.js +0 -9
  264. package/static/dist/assets/refresh-i9ya9dvl.js +0 -1
  265. package/static/dist/assets/stateDiagram-v2-MP3YSRHH-hlt6yphw.js +0 -1
  266. package/static/dist/assets/swimlanesDiagram-VR7AAH4N-hd5t9tnt.js +0 -8
  267. package/static/dist/assets/toast-liparz2j.js +0 -56
@@ -0,0 +1,58 @@
1
+ import type { RequestContext } from '../http/context.js';
2
+ import { type Session } from '../sessions/session.js';
3
+ /** Shared identity check for both file sources, before either chooses its own storage. */
4
+ export declare function fileSourceSession(ctx: RequestContext, sid: string): Promise<{
5
+ session: null;
6
+ profile: string;
7
+ } | {
8
+ session: Session;
9
+ profile: string | null;
10
+ }>;
11
+ export declare function managedBuffers(ctx: RequestContext, input: {
12
+ session_id: string;
13
+ path?: string | undefined;
14
+ content?: string | undefined;
15
+ }, action: 'list' | 'read' | 'save'): Promise<{
16
+ source: "managed";
17
+ entries: {
18
+ name: string;
19
+ path: string;
20
+ size: number;
21
+ is_dir: boolean;
22
+ type: string;
23
+ read_only: boolean;
24
+ }[];
25
+ unavailable: boolean;
26
+ read_only: boolean;
27
+ write_semantics: "unconditional";
28
+ ok?: never;
29
+ path?: never;
30
+ size?: never;
31
+ name?: never;
32
+ content?: never;
33
+ preview?: never;
34
+ } | {
35
+ source: "managed";
36
+ ok: true;
37
+ path: string;
38
+ size: number;
39
+ entries?: never;
40
+ unavailable?: never;
41
+ read_only?: never;
42
+ write_semantics?: never;
43
+ name?: never;
44
+ content?: never;
45
+ preview?: never;
46
+ } | {
47
+ source: "managed";
48
+ path: string | undefined;
49
+ name: string;
50
+ content: string;
51
+ size: number | undefined;
52
+ preview: "text";
53
+ read_only: boolean;
54
+ write_semantics: "unconditional";
55
+ entries?: never;
56
+ unavailable?: never;
57
+ ok?: never;
58
+ }>;
@@ -0,0 +1,76 @@
1
+ /** Native managed files share the Files procedures, but never resolve a workspace or client-supplied native path. */
2
+ import { MAX_MANAGED_BUFFER_BYTES } from '@maudecode/talaria-web-contracts';
3
+ import { createHmac } from 'node:crypto';
4
+ import { HttpError } from '../api/router.js';
5
+ import { isSafeSessionId } from '../sessions/session.js';
6
+ import { stateDbSessionReadAsync } from '../sessions/state-db.js';
7
+ import { SidecarError } from '../sidecar/client.js';
8
+ /** Shared identity check for both file sources, before either chooses its own storage. */
9
+ export async function fileSourceSession(ctx, sid) {
10
+ let session;
11
+ try {
12
+ session = await ctx.deps.sessionStore.get(sid, { metadataOnly: true });
13
+ }
14
+ catch {
15
+ const profile = ctx.deps.activeProfile();
16
+ if (!isSafeSessionId(sid) || !await stateDbSessionReadAsync(false, 'stateDbHasSession', ctx.deps.cliSessions.dbPath(profile), sid))
17
+ throw new HttpError(404, 'Session not found');
18
+ return { session: null, profile };
19
+ }
20
+ if (!ctx.deps.profilesMatch(session.profile, ctx.deps.activeProfile()))
21
+ throw new HttpError(404, 'Session not found');
22
+ return { session, profile: session.profile };
23
+ }
24
+ export async function managedBuffers(ctx, input, action) {
25
+ const profile = ctx.deps.activeProfile();
26
+ const { session } = await fileSourceSession(ctx, input.session_id);
27
+ const home = ctx.deps.profileHome(profile);
28
+ const readOnly = (session ? await ctx.deps.sessions.isReadOnly(session) : await ctx.deps.sessions.readOnlyReason(input.session_id) !== null) || await ctx.deps.sessions.isSubagentViewOnly(input.session_id);
29
+ const sc = ctx.deps.sidecar();
30
+ if (sc?.status !== 'ready') {
31
+ if (action === 'list')
32
+ return { source: 'managed', entries: [], unavailable: true, read_only: true, write_semantics: 'unconditional' };
33
+ throw new HttpError(503, 'Managed buffer backend unavailable');
34
+ }
35
+ const id = (name) => 'buffer-' + createHmac('sha256', ctx.deps.auth.signingKey()).update(JSON.stringify([home, input.session_id, name])).digest('hex');
36
+ const call = async (operation, name) => {
37
+ try {
38
+ return await sc.call('plugins.buffers', { profile_home: home, session_id: input.session_id, action: operation, ...(name ? { name } : {}), ...(operation === 'save' ? { content: input.content ?? '' } : {}) });
39
+ }
40
+ catch (error) {
41
+ if (error instanceof SidecarError && operation !== 'save' && error.code === -32601)
42
+ return { supported: false, buffers: [], write_semantics: 'unconditional' };
43
+ if (operation === 'save')
44
+ throw new HttpError(503, 'Save outcome is unknown. Reload before retrying.', { condition: 'buffer_save_unconfirmed' });
45
+ throw new HttpError(503, 'Managed buffer backend unavailable');
46
+ }
47
+ };
48
+ const list = await call('list');
49
+ const entries = list.buffers.map((b) => ({ name: b.name, path: id(b.name), size: b.size, is_dir: false, type: 'file', read_only: readOnly || b.read_only }));
50
+ if (action === 'list')
51
+ return { source: 'managed', entries, unavailable: !list.supported, read_only: readOnly, write_semantics: list.write_semantics };
52
+ const selected = entries.find((b) => b.path === input.path);
53
+ if (!list.supported || !selected)
54
+ throw new HttpError(404, 'Managed buffer no longer exists');
55
+ if (action === 'save' && selected.read_only)
56
+ throw new HttpError(403, 'Managed buffer is read-only');
57
+ if (action === 'save' && Buffer.byteLength(input.content ?? '', 'utf8') > MAX_MANAGED_BUFFER_BYTES)
58
+ throw new HttpError(413, 'Managed buffer is too large');
59
+ if (action === 'save') {
60
+ // Inventory is asynchronous; ownership may have changed since the displayed permission was computed.
61
+ if (await ctx.deps.sessions.isSubagentViewOnly(input.session_id))
62
+ throw new HttpError(403, 'Managed buffer is read-only');
63
+ await ctx.deps.sessions.assertWritable(input.session_id);
64
+ }
65
+ const value = await call(action, selected.name);
66
+ if (action === 'save') {
67
+ if (!value.supported || value.size === undefined)
68
+ throw new HttpError(503, 'Save outcome is unknown. Reload before retrying.', { condition: 'buffer_save_unconfirmed' });
69
+ return { source: 'managed', ok: true, path: selected.path, size: value.size };
70
+ }
71
+ if (!value.supported || value.content === undefined)
72
+ throw new HttpError(404, 'Managed buffer no longer exists');
73
+ // Plain text avoids active HTML/Markdown interpretation of backend-owned buffers.
74
+ return { source: 'managed', path: input.path, name: selected.name, content: value.content, size: value.size, preview: 'text', read_only: readOnly || value.read_only !== false, write_semantics: value.write_semantics };
75
+ }
76
+ //# sourceMappingURL=managed-buffers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-buffers.js","sourceRoot":"","sources":["../../src/workspace/managed-buffers.ts"],"names":[],"mappings":"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"}
@@ -110,7 +110,7 @@ export class RollbackStore {
110
110
  const sidecar = this.sidecar();
111
111
  const { diff } = await this.exclusive((home) => sidecar.call('checkpoints.diff', { profile_home: home, workspace: resolved, checkpoint: cid }));
112
112
  const filesChanged = checkpointDiffFiles(diff);
113
- return { checkpoint: cid, workspace: resolved, diff: diff.trimEnd(), files_changed: filesChanged, total_changes: filesChanged.length };
113
+ return { checkpoint: cid, workspace: resolved, diff: diff.trimEnd(), files_changed: filesChanged, total_changes: filesChanged.length, comparison: { provenance: 'direct_workspace', baseline: 'selected_checkpoint', available: true, reason: null, truncated: false } };
114
114
  }
115
115
  /**
116
116
  * The Agent snapshots the workspace first, then reverts it. By default only files still as the Agent last wrote them
@@ -1 +1 @@
1
- {"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../src/workspace/rollback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../src/workspace/rollback.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maudecode/talaria-web",
3
- "version": "1.20.0",
3
+ "version": "1.21.0",
4
4
  "type": "module",
5
5
  "description": "Talaria Web server: Node 24 HTTP server for the Hermes Agent browser workbench, with the talaria-web launcher, daemon control, self-update, and MCP bins.",
6
6
  "bin": {
@@ -25,7 +25,7 @@
25
25
  "postpack": "node scripts/prepack.mjs --clean"
26
26
  },
27
27
  "dependencies": {
28
- "@maudecode/talaria-web-contracts": "1.20.0",
28
+ "@maudecode/talaria-web-contracts": "1.21.0",
29
29
  "@modelcontextprotocol/sdk": "1.32.0",
30
30
  "@orpc/contract": "1.15.2",
31
31
  "@orpc/openapi": "1.15.2",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "x-talaria": {
3
- "releaseTag": "v0.22.4",
4
- "version": "0.22.4",
5
- "sourceRevision": "4d04303818b61bf3aa09278af48356315515965b"
3
+ "releaseTag": "v0.22.5",
4
+ "version": "0.22.5",
5
+ "sourceRevision": "bf0203a794a07aac3ff764972ab9087baa4e4f4e"
6
6
  },
7
7
  "services": {
8
8
  "hermes-agent": {
9
- "image": "docker.io/nousresearch/hermes-agent@sha256:7a69201726bc64db2072a1371557137c23312d29705cda2b8ea2a0214a50a4cf"
9
+ "image": "docker.io/nousresearch/hermes-agent@sha256:9c5561579f3ffdf333401797094ac3a743738d6c25d40f4331c7bf77b694238d"
10
10
  }
11
11
  }
12
12
  }
@@ -1,16 +1,21 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "nativeContracts": {
4
- "served-local-policy-v1": ["4d04303818b61bf3aa09278af48356315515965b"]
4
+ "served-local-policy-v1": [
5
+ "4d04303818b61bf3aa09278af48356315515965b",
6
+ "bf0203a794a07aac3ff764972ab9087baa4e4f4e"
7
+ ],
8
+ "captured-command-v1": [
9
+ "5b147ab036d6d19131bff8d20701b5001eab844a",
10
+ "4d04303818b61bf3aa09278af48356315515965b",
11
+ "bf0203a794a07aac3ff764972ab9087baa4e4f4e"
12
+ ],
13
+ "message-reactions-v1": [
14
+ "4d04303818b61bf3aa09278af48356315515965b",
15
+ "bf0203a794a07aac3ff764972ab9087baa4e4f4e"
16
+ ]
5
17
  },
6
18
  "releases": [
7
- {
8
- "releaseTag": "v0.22.2",
9
- "version": "0.22.2",
10
- "sourceRevision": "d923a5eb487a17c0a68801bba9ef0f56c81040a8",
11
- "image": "docker.io/nousresearch/hermes-agent@sha256:36099926da316742423544e055d4734777105ffe6341873af5459b957d0c2919",
12
- "validatedBy": "TAL-1061"
13
- },
14
19
  {
15
20
  "releaseTag": "v0.22.3",
16
21
  "version": "0.22.3",
@@ -24,6 +29,13 @@
24
29
  "sourceRevision": "4d04303818b61bf3aa09278af48356315515965b",
25
30
  "image": "docker.io/nousresearch/hermes-agent@sha256:7a69201726bc64db2072a1371557137c23312d29705cda2b8ea2a0214a50a4cf",
26
31
  "validatedBy": "TAL-1307"
32
+ },
33
+ {
34
+ "releaseTag": "v0.22.5",
35
+ "version": "0.22.5",
36
+ "sourceRevision": "bf0203a794a07aac3ff764972ab9087baa4e4f4e",
37
+ "image": "docker.io/nousresearch/hermes-agent@sha256:9c5561579f3ffdf333401797094ac3a743738d6c25d40f4331c7bf77b694238d",
38
+ "validatedBy": "TAL-1511"
27
39
  }
28
40
  ]
29
41
  }
@@ -12,4 +12,4 @@ import os
12
12
  # Also protect direct Python entry points before any method imports the Agent.
13
13
  os.environ["HERMES_DISABLE_LAZY_INSTALLS"] = "1"
14
14
 
15
- SIDECAR_RPC_VERSION = 53
15
+ SIDECAR_RPC_VERSION = 58
@@ -201,6 +201,15 @@ def recovery_receipts(runtime, *, watch=False, discovery_cache=None):
201
201
  for path in sorted(set(candidates)):
202
202
  try:
203
203
  stat = path.lstat()
204
+ if path == services.recovery_path(root, home):
205
+ # Completed correlation is history, not admission debt. Malformed evidence fails closed.
206
+ try:
207
+ state = services.ServiceRecovery(root, home, None, None, None).state
208
+ except RuntimeError:
209
+ state = {}
210
+ if (state.get('update_operation', {}).get('recovered_revision') and not state.get('transaction')
211
+ and not state['entries'] and not state.get('sync_failed')):
212
+ continue
204
213
  result.append((str(path), stat.st_ino, stat.st_mtime_ns, stat.st_size))
205
214
  except FileNotFoundError:
206
215
  pass
@@ -244,6 +253,19 @@ def recover_retained(runtime, ctx, *, probe=False, complete_revision=None):
244
253
  receipts, _ = recovery_receipts(runtime, watch=True)
245
254
  fingerprint = hashlib.sha256(json.dumps(receipts).encode()).hexdigest() if receipts else ''
246
255
  result = {'ok': not receipts, 'owed': bool(receipts), 'fingerprint': fingerprint, 'detail': ''}
256
+ def correlated():
257
+ if runtime.agent_dir is None:
258
+ return {}
259
+ try:
260
+ state = services.ServiceRecovery(runtime.agent_dir.resolve(), runtime.hermes_home, None, None, None).state
261
+ except RuntimeError:
262
+ return {} # Discovery retains malformed debt; the leased worker reports its refusal.
263
+ operation = state.get('update_operation')
264
+ if operation and ((state.get('transaction') or {}).get('operation_id') == operation['operation_id'] or (not recovery_receipts(runtime)[0] and operation.get('recovered_revision'))):
265
+ return {'operation': operation, **({'revision': operation['recovered_revision']} if operation.get('recovered_revision') else {})}
266
+ return {}
267
+ association = correlated()
268
+ result.update(association)
247
269
  if complete_revision is not None:
248
270
  if not isinstance(complete_revision, str) or not re.fullmatch(r'[a-f0-9]{40}', complete_revision):
249
271
  raise InvalidParams('A verified loaded revision is required to complete recovery.')
@@ -291,7 +313,7 @@ def recover_retained(runtime, ctx, *, probe=False, complete_revision=None):
291
313
  child.kill()
292
314
  child.wait()
293
315
  remaining, _ = recovery_receipts(runtime, watch=True)
294
- return {**result, **reply, 'owed': bool(remaining),
316
+ return {**result, **reply, **(correlated() if association else {}), 'owed': bool(remaining),
295
317
  'fingerprint': hashlib.sha256(json.dumps(remaining).encode()).hexdigest() if remaining else ''}
296
318
  finally:
297
319
  _ACTION_LOCK.release()
@@ -356,6 +378,11 @@ def call(runtime, ctx, params):
356
378
  raise InvalidParams("resolved profile homes are required")
357
379
  if any(Path(home).resolve().is_relative_to(root.resolve()) for home in homes):
358
380
  raise InvalidParams("Agent profile homes must stay outside the source checkout to survive update cleanup")
381
+ operation_id = params.get('operation_id')
382
+ baseline = params.get('baseline_revision')
383
+ if operation_id is not None and (not isinstance(operation_id, str) or not re.fullmatch(r'[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}', operation_id)
384
+ or not isinstance(baseline, str) or not re.fullmatch(r'[a-f0-9]{40}', baseline)):
385
+ raise InvalidParams('An operation requires its immutable baseline revision.')
359
386
  intent = params.get('intent', '')
360
387
  refresh_token = params.get('refresh_token')
361
388
  if not isinstance(intent, str) or len(intent) > 1024:
@@ -384,7 +411,7 @@ def call(runtime, ctx, params):
384
411
  stderr.close()
385
412
  return {"ok": False, "skipped": False, "detail": "A gateway lifecycle action is still running."}
386
413
  try:
387
- proc = subprocess.Popen([sys.executable, "-m", "talaria_sidecar.agent_mutation", str(root), revision, json.dumps(homes), binding or ""],
414
+ proc = subprocess.Popen([sys.executable, "-m", "talaria_sidecar.agent_mutation", str(root), revision, json.dumps(homes), binding or "", json.dumps({"operation_id": operation_id, "baseline_revision": baseline}) if operation_id else ""],
388
415
  cwd=root, env=env, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=stderr, text=True)
389
416
  except BaseException:
390
417
  stderr.close()
@@ -435,6 +462,10 @@ def call(runtime, ctx, params):
435
462
  _CONSENTS[nonce] = {key: session[key] for key in ('root', 'revision', 'homes', 'intent')}
436
463
  _CONSENTS[nonce].update(binding=confirmation['binding'], expires=time.monotonic() + CONSENT_SECONDS)
437
464
  result['refresh_confirmation'] = {'token': nonce, 'services': confirmation['services']}
465
+ if action == 'begin' and not result['ok'] and 'refresh_confirmation' not in result:
466
+ probe = recover_retained(runtime, ctx, probe=True)
467
+ correlation = probe.get('operation')
468
+ result['recovery_required'] = bool(correlation and correlation['operation_id'] == params.get('operation_id')) if params.get('operation_id') else probe['owed']
438
469
  if action == "begin" and result["ok"]:
439
470
  runtime.retire()
440
471
  return {**result, "token": token}
@@ -528,7 +559,7 @@ def _writer_ledger(root, identity):
528
559
  return found
529
560
 
530
561
 
531
- def _worker(root, revision, homes, requests, stopped, send, refresh_binding=None):
562
+ def _worker(root, revision, homes, requests, stopped, send, refresh_binding=None, operation=None):
532
563
  if os.name not in {"posix", "nt"}:
533
564
  raise RuntimeError("A cooperative Agent writer lease is unavailable on this platform; source was not changed.")
534
565
  sys.path.insert(0, str(root))
@@ -557,6 +588,13 @@ def _worker(root, revision, homes, requests, stopped, send, refresh_binding=None
557
588
  if not found["ok"]:
558
589
  raise RuntimeError("The installed Agent revision could not be verified before quiescence.")
559
590
  initial = found["detail"]
591
+ if operation and operation['baseline_revision'] != initial:
592
+ raise RuntimeError('The Agent baseline changed before the operation acquired its native lease.')
593
+ previous = recovery.state.get('update_operation')
594
+ if operation and previous and recovery.state.get('transaction') and previous['operation_id'] != operation['operation_id']:
595
+ raise RuntimeError('The previous update operation still owns native recovery.')
596
+ if operation and previous and previous['operation_id'] == operation['operation_id'] and (previous['target_revision'] != revision or previous['baseline_revision'] != operation['baseline_revision']):
597
+ raise RuntimeError('The immutable target or baseline changed within the same update operation.')
560
598
  initial_tree = records.tree_state(root)
561
599
  if initial_tree is None or initial_tree.get("pre_sha") != initial or initial_tree.get("dirty_at_pause") is None:
562
600
  raise RuntimeError("The Agent source baseline could not be proved before quiescence.")
@@ -641,7 +679,10 @@ def _worker(root, revision, homes, requests, stopped, send, refresh_binding=None
641
679
  unmapped_pids=[e["pid"] for e in gateway_entries if not e.get("kind")],
642
680
  identities=owner_identities, resume_needed=bool(gateway_entries))
643
681
  records.record_pause(token, adopted, claims)
644
- recovery.state.setdefault('transaction', {'revision': revision, 'homes': sorted(map(str, homes))})
682
+ transaction = recovery.state.setdefault('transaction', {'revision': revision, 'homes': sorted(map(str, homes))})
683
+ if operation:
684
+ recovery.state['update_operation'] = {**operation, 'target_revision': revision, 'stage': 'install', 'source_moved': False}
685
+ transaction['operation_id'] = operation['operation_id']
645
686
  recovery.save(token)
646
687
  if legacy:
647
688
  whole, why = records.tree_is_whole(token, root)
@@ -671,7 +712,7 @@ def _worker(root, revision, homes, requests, stopped, send, refresh_binding=None
671
712
  if stopped.is_set() or time.monotonic() >= gateway_deadline:
672
713
  raise RuntimeError('Gateway drain has not completed; its durable resume obligation is retained.')
673
714
  if entry.get('processes'):
674
- services.verify_processes(entry, records)
715
+ recovery.verify_processes(entry)
675
716
  recovery.gateway_requested(entry)
676
717
  for pid in {entry['pid'], entry.get('service_pid', entry['pid'])}:
677
718
  records.mark_stop_sent(token, pid)
@@ -753,6 +794,8 @@ def _worker(root, revision, homes, requests, stopped, send, refresh_binding=None
753
794
  gate = modules["update_cmd_pause_gate"]._checkout_move(token, revision, paths=paths, revert=True) if mutating else contextlib.nullcontext({})
754
795
  if mutating:
755
796
  recovery.state['transaction']['dependencies_verified'] = False
797
+ if args[0] in {'merge', 'reset', 'checkout'} and recovery.state.get('update_operation'):
798
+ recovery.state['update_operation'].pop('source_moved', None)
756
799
  move_marker = None
757
800
  if args[0] == 'merge' and '--ff-only' in args or args[0] == 'reset' and '--hard' in args:
758
801
  commit = modules['update_cmd_commit']
@@ -776,6 +819,8 @@ def _worker(root, revision, homes, requests, stopped, send, refresh_binding=None
776
819
  recovery.state['transaction']['dependencies_verified'] = True
777
820
  else:
778
821
  result = {'ok': False, 'detail': 'The source move did not leave a verified whole target; native rollback remains owed.'}
822
+ if result['ok'] and move_marker is not None and recovery.state.get('update_operation'):
823
+ recovery.state['update_operation']['source_moved'] = revision != recovery.state['update_operation']['baseline_revision']
779
824
  if result["ok"] and applying and whole_before:
780
825
  after = records.tree_state(root)
781
826
  if before is None or after is None or before["pre_sha"] != after["pre_sha"]:
@@ -786,6 +831,10 @@ def _worker(root, revision, homes, requests, stopped, send, refresh_binding=None
786
831
  baseline.update(after)
787
832
  records.write(token)
788
833
  recovery.save(token)
834
+ if not result['ok'] and recovery.state.get('update_operation'):
835
+ recovery.state['update_operation'].setdefault('attempt_error', result.get('detail', '')[:2000])
836
+ recovery.state['update_operation'].setdefault('failed_stage', recovery.state['update_operation']['stage'])
837
+ recovery.save(token)
789
838
  send(result)
790
839
  except BaseException as exc:
791
840
  error = str(exc)
@@ -814,6 +863,9 @@ def _worker(root, revision, homes, requests, stopped, send, refresh_binding=None
814
863
  pending = _command(modules['update_custody'].git_argv(['git'], ['for-each-ref', '--format=%(objectname)', 'refs/talaria/autostash/pending/']), root, 10, threading.Event(), modules['update_custody'])
815
864
  if not pending['ok'] or pending['detail']:
816
865
  raise RuntimeError('Gateway resume remains owed until retained local Agent edits are restored.')
866
+ if recovery.state.get('update_operation'):
867
+ recovery.state['update_operation']['stage'] = 'gateway_restart'
868
+ recovery.save(token)
817
869
  if token.get("resume_needed"):
818
870
  if bootstrap_repair:
819
871
  records.write({**token, "resume_needed": True}, owner=records.UNOWNED)
@@ -836,6 +888,8 @@ def _worker(root, revision, homes, requests, stopped, send, refresh_binding=None
836
888
  recovery.state['transaction']['runtime_revision'] = found['detail']
837
889
  recovery.save(token)
838
890
  else:
891
+ if recovery.state.get('update_operation'):
892
+ recovery.state['update_operation'].update(stage='agent_ready', recovered_revision=found['detail'])
839
893
  recovery.state.pop('transaction', None)
840
894
  recovery.save()
841
895
  except BaseException as exc:
@@ -843,7 +897,14 @@ def _worker(root, revision, homes, requests, stopped, send, refresh_binding=None
843
897
  if token and not handed_off:
844
898
  records.write({**token, "resume_needed": True}, owner=records.UNOWNED)
845
899
  finally:
846
- lock.release()
900
+ try:
901
+ if error and token and recovery and recovery.state.get('update_operation') and (recovery.state.get('transaction') or {}).get('operation_id') == recovery.state['update_operation']['operation_id']:
902
+ operation = recovery.state['update_operation']
903
+ operation.setdefault('attempt_error', error[:2000])
904
+ operation.setdefault('failed_stage', operation['stage'])
905
+ recovery.save(token)
906
+ finally:
907
+ lock.release()
847
908
  send({"ok": error is None, "detail": error or ""})
848
909
 
849
910
 
@@ -948,7 +1009,13 @@ def _resume_worker(root, stopped=None, complete_revision=None):
948
1009
  if revision not in {r for b in tree.get('baselines', []) for r in [b.get('pre_sha'), *b.get('move_targets', []), *b.get('landed', {})]}:
949
1010
  return {'ok': False, 'detail': 'Installed revision is outside the retained transaction; recovery was refused.'}
950
1011
  moved = any(b.get('pre_sha') != revision for b in tree.get('baselines', []))
1012
+ operation = recovery.state.get('update_operation')
1013
+ if operation and any(sha != operation['baseline_revision'] for b in tree.get('baselines', []) for sha in b.get('landed', {})):
1014
+ operation['source_moved'] = True
951
1015
  transaction = recovery.state.get('transaction') or {}
1016
+ operation = recovery.state.get('update_operation')
1017
+ if operation and transaction.get('operation_id') != operation['operation_id']:
1018
+ recovery.state.pop('update_operation', None)
952
1019
  if recovery.state.get('sync_failed') or (moved and not transaction.get('dependencies_verified')) or (marker and marker.exists() and not transaction):
953
1020
  if _writer_ledger(root, process_identity):
954
1021
  return {'ok': False, 'detail': 'Recorded dependency repair is waiting for the existing writer drain; no additional stop was sent.'}
@@ -979,10 +1046,16 @@ def _resume_worker(root, stopped=None, complete_revision=None):
979
1046
  if not Path(main_module.__file__).resolve().is_relative_to(root):
980
1047
  raise RuntimeError("Gateway recovery loaded another Agent runtime.")
981
1048
  records.recover(argv=[])
1049
+ if recovery.state.get('update_operation'):
1050
+ recovery.state['update_operation']['stage'] = 'gateway_restart'
1051
+ recovery.save(tree)
982
1052
  try:
983
1053
  recovery.resume(_writer_ledger)
984
1054
  except services.GatewayDraining as exc:
985
1055
  return {'ok': False, 'draining': True, 'detail': str(exc)}
1056
+ final_head = _command(custody.git_argv(['git'], ['rev-parse', 'HEAD']), root, 10, stopped, custody)
1057
+ if not final_head['ok'] or final_head['detail'] != revision or not records.tree_is_whole(tree, root)[0]:
1058
+ return {'ok': False, 'detail': 'Recovered source identity changed before readiness was verified; its evidence is retained.'}
986
1059
  owed = records.record_path().exists() or bool(records._claims(records.record_path())) or bool(recovery.state['entries'])
987
1060
  runtime_pending = bool((marker and marker.exists()) or (recovery.state.get('transaction') or {}).get('runtime_revision'))
988
1061
  if not owed and runtime_pending:
@@ -993,11 +1066,16 @@ def _resume_worker(root, stopped=None, complete_revision=None):
993
1066
  transaction['runtime_revision'] = revision
994
1067
  recovery.save(tree)
995
1068
  if not owed and not runtime_pending:
1069
+ # Retain the transaction through durable marker removal, including a failed unlink or crash.
1070
+ if marker:
1071
+ marker.unlink(missing_ok=True)
1072
+ if marker.parent.is_dir():
1073
+ recovery._sync_directory(marker.parent)
1074
+ if recovery.state.get('update_operation'):
1075
+ recovery.state['update_operation'].update(stage='agent_ready', recovered_revision=revision)
996
1076
  recovery.state.pop('transaction', None)
997
1077
  recovery.state['sync_failed'] = False
998
1078
  recovery.save()
999
- if marker:
1000
- marker.unlink(missing_ok=True)
1001
1079
  return {"ok": not owed, "revision": revision, "runtime_pending": runtime_pending, "detail": "Gateway recovery remains durably recorded." if owed else ""}
1002
1080
  finally:
1003
1081
  lock.release()
@@ -1102,7 +1180,7 @@ def main():
1102
1180
  send(reply)
1103
1181
  return
1104
1182
  with contextlib.redirect_stdout(sys.stderr):
1105
- _worker(Path(sys.argv[1]).resolve(), sys.argv[2], {Path(h).resolve() for h in json.loads(sys.argv[3])}, requests, stopped, send, sys.argv[4] if len(sys.argv) > 4 else None)
1183
+ _worker(Path(sys.argv[1]).resolve(), sys.argv[2], {Path(h).resolve() for h in json.loads(sys.argv[3])}, requests, stopped, send, sys.argv[4] if len(sys.argv) > 4 else None, json.loads(sys.argv[5]) if len(sys.argv) > 5 and sys.argv[5] else None)
1106
1184
  except BaseException as exc:
1107
1185
  send({"ok": False, "detail": str(exc)})
1108
1186