@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.
- package/_release.json +8 -8
- package/dist/api/automation-router.d.ts +313 -8
- package/dist/api/automation-router.js +21 -1
- package/dist/api/automation-router.js.map +1 -1
- package/dist/api/chat-router.d.ts +412 -15
- package/dist/api/chat-router.js +22 -170
- package/dist/api/chat-router.js.map +1 -1
- package/dist/api/git-router.d.ts +50 -0
- package/dist/api/git-router.js +17 -4
- package/dist/api/git-router.js.map +1 -1
- package/dist/api/router.d.ts +1 -1
- package/dist/api/sessions-router.d.ts +1138 -29
- package/dist/api/sessions-router.js +58 -41
- package/dist/api/sessions-router.js.map +1 -1
- package/dist/api/sse-routes.js +4 -2
- package/dist/api/sse-routes.js.map +1 -1
- package/dist/api/tools-router.d.ts +481 -29
- package/dist/api/tools-router.js +34 -9
- package/dist/api/tools-router.js.map +1 -1
- package/dist/http/context.d.ts +2 -0
- package/dist/http/context.js.map +1 -1
- package/dist/redact.d.ts +2 -0
- package/dist/redact.js +17 -2
- package/dist/redact.js.map +1 -1
- package/dist/runtime.js +36 -8
- package/dist/runtime.js.map +1 -1
- package/dist/server.js +1 -0
- package/dist/server.js.map +1 -1
- package/dist/sessions/admission.d.ts +21 -0
- package/dist/sessions/admission.js +176 -0
- package/dist/sessions/admission.js.map +1 -0
- package/dist/sessions/anchor.d.ts +2 -0
- package/dist/sessions/anchor.js +4 -4
- package/dist/sessions/anchor.js.map +1 -1
- package/dist/sessions/background-tasks.d.ts +19 -1
- package/dist/sessions/background-tasks.js +36 -6
- package/dist/sessions/background-tasks.js.map +1 -1
- package/dist/sessions/events.d.ts +3 -0
- package/dist/sessions/events.js +4 -0
- package/dist/sessions/events.js.map +1 -1
- package/dist/sessions/gateway-sessions.d.ts +50 -2
- package/dist/sessions/gateway-sessions.js +144 -11
- package/dist/sessions/gateway-sessions.js.map +1 -1
- package/dist/sessions/merge.d.ts +1 -0
- package/dist/sessions/merge.js +7 -2
- package/dist/sessions/merge.js.map +1 -1
- package/dist/sessions/prefix-index.d.ts +8 -0
- package/dist/sessions/prefix-index.js +14 -3
- package/dist/sessions/prefix-index.js.map +1 -1
- package/dist/sessions/prompt-queues.d.ts +36 -0
- package/dist/sessions/prompt-queues.js +318 -0
- package/dist/sessions/prompt-queues.js.map +1 -0
- package/dist/sessions/relay.d.ts +12 -1
- package/dist/sessions/relay.js +75 -17
- package/dist/sessions/relay.js.map +1 -1
- package/dist/sessions/service.d.ts +26 -1
- package/dist/sessions/service.js +200 -6
- package/dist/sessions/service.js.map +1 -1
- package/dist/sessions/session.js +1 -0
- package/dist/sessions/session.js.map +1 -1
- package/dist/sessions/storage/json-documents.js +1 -0
- package/dist/sessions/storage/json-documents.js.map +1 -1
- package/dist/sessions/store.d.ts +1 -0
- package/dist/sessions/store.js +1 -0
- package/dist/sessions/store.js.map +1 -1
- package/dist/sessions/streams.d.ts +2 -0
- package/dist/sessions/streams.js.map +1 -1
- package/dist/sessions/tool-display.d.ts +8 -1
- package/dist/sessions/tool-display.js +39 -4
- package/dist/sessions/tool-display.js.map +1 -1
- package/dist/sessions/turn.d.ts +4 -1
- package/dist/sessions/turn.js +20 -13
- package/dist/sessions/turn.js.map +1 -1
- package/dist/tools/gateway-restart.d.ts +1 -1
- package/dist/tools/kanban.d.ts +10 -1
- package/dist/tools/kanban.js +73 -1
- package/dist/tools/kanban.js.map +1 -1
- package/dist/tools/mcp.d.ts +3 -1
- package/dist/tools/mcp.js +73 -0
- package/dist/tools/mcp.js.map +1 -1
- package/dist/tools/memory.d.ts +28 -0
- package/dist/tools/memory.js +120 -14
- package/dist/tools/memory.js.map +1 -1
- package/dist/tools/update-notifications.d.ts +12 -10
- package/dist/tools/update-notifications.js +124 -14
- package/dist/tools/update-notifications.js.map +1 -1
- package/dist/tools/updates.d.ts +22 -3
- package/dist/tools/updates.js +118 -20
- package/dist/tools/updates.js.map +1 -1
- package/dist/workspace/managed-buffers.d.ts +58 -0
- package/dist/workspace/managed-buffers.js +76 -0
- package/dist/workspace/managed-buffers.js.map +1 -0
- package/dist/workspace/rollback.js +1 -1
- package/dist/workspace/rollback.js.map +1 -1
- package/package.json +2 -2
- package/sidecar/agent_dependency.json +4 -4
- package/sidecar/agent_support.json +20 -8
- package/sidecar/talaria_sidecar/__init__.py +1 -1
- package/sidecar/talaria_sidecar/agent_mutation.py +87 -9
- package/sidecar/talaria_sidecar/agent_services.py +83 -23
- package/sidecar/talaria_sidecar/methods/__init__.py +2 -2
- package/sidecar/talaria_sidecar/methods/dashboard_plugins.py +4 -4
- package/sidecar/talaria_sidecar/methods/gateway_sessions.py +109 -19
- package/sidecar/talaria_sidecar/methods/kanban.py +48 -0
- package/sidecar/talaria_sidecar/methods/managed_buffers.py +110 -0
- package/sidecar/talaria_sidecar/methods/mcp.py +55 -0
- package/sidecar/talaria_sidecar/methods/outbound_drafts.py +165 -0
- package/static/dist/FILES.txt +127 -128
- package/static/dist/assets/AppShell-c5989995.js +8 -0
- package/static/dist/assets/Button-nuaikybd.js +1 -0
- package/static/dist/assets/ChatPage-bfg4khph.js +6 -0
- package/static/dist/assets/ConnectTargets-k5wo9yo8.js +1 -0
- package/static/dist/assets/{Dialog-hta5utr3.js → Dialog-o8vo2aws.js} +1 -1
- package/static/dist/assets/{ExtensionRoute-zrhjn0wm.js → ExtensionRoute-l1yjrso4.js} +1 -1
- package/static/dist/assets/Field-j7o8cfps.js +1 -0
- package/static/dist/assets/HubRoute-efnwe4xz.js +2 -0
- package/static/dist/assets/Markdown-clqf5m22.js +2 -0
- package/static/dist/assets/{MarkdownRenderer-fbswsgld.js → MarkdownRenderer-ccgqrza3.js} +18 -18
- package/static/dist/assets/OAuthSignIn-h7bjaqp6.js +1 -0
- package/static/dist/assets/{ResourceSwitch-odi6dy2o.js → ResourceSwitch-oai2zqaj.js} +1 -1
- package/static/dist/assets/RightPanel-ho161a45.js +1 -0
- package/static/dist/assets/{Select-kr07928w.js → Select-d1g5a8bm.js} +1 -1
- package/static/dist/assets/SessionListPanel-i7kaokhi.js +1 -0
- package/static/dist/assets/SettingsLayout-lnecm87w.js +1 -0
- package/static/dist/assets/{States-icab19yg.js → States-easntmry.js} +1 -1
- package/static/dist/assets/TerminalPanel-lxhwd4jl.js +16 -0
- package/static/dist/assets/Toaster-l4sciy8t.js +1 -0
- package/static/dist/assets/_app-mqexqbg8.js +1 -0
- package/static/dist/assets/{_app.ext._extensionId-na62087t.js → _app.ext._extensionId-n797jp72.js} +1 -1
- package/static/dist/assets/{_app.index-jypgdqoi.js → _app.index-ne43mdw2.js} +1 -1
- package/static/dist/assets/{_app.insights-kabejdtm.js → _app.insights-fqonovb4.js} +1 -1
- package/static/dist/assets/{_app.kanban-m19kfcmx.js → _app.kanban-kysliv19.js} +1 -1
- package/static/dist/assets/{_app.logs-iw4m96sz.js → _app.logs-febut82r.js} +1 -1
- package/static/dist/assets/{_app.memory-jq5frwcg.js → _app.memory-ha86oj1c.js} +1 -1
- package/static/dist/assets/{_app.profiles-kwa3m7rp.js → _app.profiles-cnu3gxxq.js} +1 -1
- package/static/dist/assets/{_app.session._sessionId-o5lyeipj.js → _app.session._sessionId-ifzjpcgn.js} +1 -1
- package/static/dist/assets/{_app.settings-ckl8hdll.js → _app.settings-nmakdiaf.js} +1 -1
- package/static/dist/assets/_app.settings._section-djglnjmi.js +3 -0
- package/static/dist/assets/{_app.skills-n016rihd.js → _app.skills-f3wad8yo.js} +1 -1
- package/static/dist/assets/_app.tasks-l10py1c0.js +1 -0
- package/static/dist/assets/{_app.todos-btew5v2s.js → _app.todos-bml1m3r1.js} +1 -1
- package/static/dist/assets/{_app.workspaces-lnfk95ch.js → _app.workspaces-f3d066lx.js} +1 -1
- package/static/dist/assets/{abnfDiagram-VCTEODGH-dttheegb.js → abnfDiagram-VCTEODGH-i53jc4yp.js} +1 -1
- package/static/dist/assets/{architecture-7GRP2DOG-ic435919.js → architecture-7GRP2DOG-e3bv5m6f.js} +1 -1
- package/static/dist/assets/{architectureDiagram-5GKGNRK7-8r3glgiq.js → architectureDiagram-5GKGNRK7-pakekxu2.js} +1 -1
- package/static/dist/assets/{archive-il7c6053.js → archive-ihqi7z2x.js} +1 -1
- package/static/dist/assets/{blockDiagram-I7D4REHJ-jenyos6c.js → blockDiagram-I7D4REHJ-bc6bo1n6.js} +1 -1
- package/static/dist/assets/{c4Diagram-7LVT6UL2-nzlx7yc4.js → c4Diagram-7LVT6UL2-btvwk2qx.js} +1 -1
- package/static/dist/assets/channel-jn4f8443.js +1 -0
- package/static/dist/assets/{chunk-4HAMMTFA-g0cru63b.js → chunk-4HAMMTFA-dlwab11c.js} +1 -1
- package/static/dist/assets/{chunk-75Z2AOVW-7rkswkjw.js → chunk-75Z2AOVW-dp5gh7i8.js} +1 -1
- package/static/dist/assets/{chunk-DU6HZSFF-fn73jzdo.js → chunk-DU6HZSFF-bi06zl1c.js} +1 -1
- package/static/dist/assets/{chunk-F27PBJKO-oey8e72m.js → chunk-F27PBJKO-kvv1rnlh.js} +1 -1
- package/static/dist/assets/{chunk-GMAD6QVW-l2a32wiy.js → chunk-GMAD6QVW-ji0rx9by.js} +1 -1
- package/static/dist/assets/{chunk-GVQU2GXP-o9dwzh8h.js → chunk-GVQU2GXP-nmz0j82p.js} +1 -1
- package/static/dist/assets/{chunk-IMKFNOWR-eblwj20b.js → chunk-IMKFNOWR-kmi1qx88.js} +1 -1
- package/static/dist/assets/{chunk-L3NEJ4N5-o2mufspb.js → chunk-L3NEJ4N5-xhb7mebj.js} +1 -1
- package/static/dist/assets/{chunk-OSK3NFVY-ijp9pw29.js → chunk-OSK3NFVY-5a9sgscq.js} +1 -1
- package/static/dist/assets/{chunk-P2QGCYS3-hs9hqwl4.js → chunk-P2QGCYS3-dfezp4vu.js} +1 -1
- package/static/dist/assets/{chunk-POPQ4Y6H-bp9rsqez.js → chunk-POPQ4Y6H-gd2vq3c0.js} +1 -1
- package/static/dist/assets/{chunk-PWAF6VOD-brkprov6.js → chunk-PWAF6VOD-wvw2nksf.js} +1 -1
- package/static/dist/assets/{chunk-SHT3W25Y-gmpv0pxz.js → chunk-SHT3W25Y-f58q97px.js} +1 -1
- package/static/dist/assets/{chunk-SVP7TREG-oldm08fu.js → chunk-SVP7TREG-abgwpyz9.js} +1 -1
- package/static/dist/assets/{chunk-TICWLB2K-ooqilfv7.js → chunk-TICWLB2K-h4sbs8ds.js} +1 -1
- package/static/dist/assets/classDiagram-ZZMXUADV-dzrw66se.js +1 -0
- package/static/dist/assets/classDiagram-v2-VYDZK3BY-dzrw66se.js +1 -0
- package/static/dist/assets/completionAudio-ce86msbu.js +1 -0
- package/static/dist/assets/{copy-jo006coq.js → copy-m9h56qa8.js} +1 -1
- package/static/dist/assets/{cynefin-OW5HDTMX-d47op7qs.js → cynefin-OW5HDTMX-g081vffs.js} +1 -1
- package/static/dist/assets/{cynefinDiagram-5FMLGOSQ-doa7594y.js → cynefinDiagram-5FMLGOSQ-odxvjesk.js} +1 -1
- package/static/dist/assets/{dagre-GXQ25YYZ-os768dp4.js → dagre-GXQ25YYZ-cpdwzjs4.js} +1 -1
- package/static/dist/assets/{diagram-S7CK7UJ4-fyi81nxd.js → diagram-S7CK7UJ4-clv5mxvu.js} +1 -1
- package/static/dist/assets/{diagram-UQ7AKVKN-j3exggaq.js → diagram-UQ7AKVKN-m2ia1mbf.js} +1 -1
- package/static/dist/assets/{diagram-VSXAHHWV-omo1en2l.js → diagram-VSXAHHWV-ea6zv636.js} +1 -1
- package/static/dist/assets/{diagram-VX7I27RA-oro2cyu0.js → diagram-VX7I27RA-oqlef685.js} +1 -1
- package/static/dist/assets/{diagram-Z3DM3KII-byt9vdb7.js → diagram-Z3DM3KII-kjubcbwu.js} +1 -1
- package/static/dist/assets/{dist-etpoyscq.js → dist-carq1azj.js} +4 -4
- package/static/dist/assets/{ebnfDiagram-PWID7BFC-ee3haugh.js → ebnfDiagram-PWID7BFC-fg0zri3e.js} +1 -1
- package/static/dist/assets/{erDiagram-RLTQ6QDP-d1e93yff.js → erDiagram-RLTQ6QDP-eb7pmk3x.js} +1 -1
- package/static/dist/assets/{eventmodeling-NTZA5JFV-i1ihb40c.js → eventmodeling-NTZA5JFV-gvi1fxhn.js} +1 -1
- package/static/dist/assets/flowDiagram-HODETNUW-abekab15.js +1 -0
- package/static/dist/assets/folder-plus-ksaons88.js +1 -0
- package/static/dist/assets/{ganttDiagram-EL5Y4UJY-m7g0jud4.js → ganttDiagram-EL5Y4UJY-jmisowrc.js} +1 -1
- package/static/dist/assets/{gitGraph-4MIJSDKK-hzdj07yy.js → gitGraph-4MIJSDKK-m7kt3u6e.js} +1 -1
- package/static/dist/assets/{gitGraphDiagram-WWUBYQGX-dm9agbna.js → gitGraphDiagram-WWUBYQGX-nq7vfzh2.js} +1 -1
- package/static/dist/assets/{highlighted-body-KPVGNVTW-mmgz2czu.js → highlighted-body-KPVGNVTW-gcu017ay.js} +1 -1
- package/static/dist/assets/{host-fr6lni1p.js → host-ipp4e84c.js} +1 -1
- package/static/dist/assets/{index-73649w7o.js → index-d6vbxlra.js} +7 -4
- package/static/dist/assets/index-ey6qo0zx.css +2 -0
- package/static/dist/assets/{info-A6RAGUB7-lll1dqmm.js → info-A6RAGUB7-idazwfqe.js} +1 -1
- package/static/dist/assets/{infoDiagram-27XIBGKW-k7esc639.js → infoDiagram-27XIBGKW-bb9jh8gl.js} +1 -1
- package/static/dist/assets/{ishikawaDiagram-5VMMS53U-lgr6k9wo.js → ishikawaDiagram-5VMMS53U-nqc132rv.js} +1 -1
- package/static/dist/assets/{journeyDiagram-3NMN7TZE-ndmbxuqk.js → journeyDiagram-3NMN7TZE-fpvnhy44.js} +1 -1
- package/static/dist/assets/{kanban-definition-UXKFOSKX-mjxym0jp.js → kanban-definition-UXKFOSKX-ndzqm6fu.js} +1 -1
- package/static/dist/assets/{lazyRouteComponent-cwb6l7xh.js → lazyRouteComponent-javud235.js} +1 -1
- package/static/dist/assets/{line-mtr5k6il.js → line-g625e7cj.js} +1 -1
- package/static/dist/assets/{link-iadw4ghw.js → link-gfdaho08.js} +1 -1
- package/static/dist/assets/{login-lkhtzfcl.js → login-iv6yq4xf.js} +1 -1
- package/static/dist/assets/mermaid-HWGCJPDP-cwj5cl6k.js +1 -0
- package/static/dist/assets/{mermaid-parser.core-k91vdnvi.js → mermaid-parser.core-plzkuzov.js} +3 -3
- package/static/dist/assets/{mindmap-definition-YA3MSWOX-ehztfea4.js → mindmap-definition-YA3MSWOX-ojrgs569.js} +1 -1
- package/static/dist/assets/onboarding-ff4emacu.js +1 -0
- package/static/dist/assets/{packet-AYTQ26CC-ok2xrblz.js → packet-AYTQ26CC-gyaf9s8h.js} +1 -1
- package/static/dist/assets/{pegDiagram-XKGWAZYB-ec3rpj0m.js → pegDiagram-XKGWAZYB-bf6xj8mq.js} +1 -1
- package/static/dist/assets/{pie-WAS4IAKB-iwkir23u.js → pie-WAS4IAKB-f5ymzelo.js} +1 -1
- package/static/dist/assets/{pieDiagram-E7YTZNPT-fcpqpekh.js → pieDiagram-E7YTZNPT-d0qjl3zi.js} +1 -1
- package/static/dist/assets/{quadrantDiagram-AXDQQJYC-lqsync43.js → quadrantDiagram-AXDQQJYC-oqy1mras.js} +1 -1
- package/static/dist/assets/queryKeys-x8fjxhut.js +9 -0
- package/static/dist/assets/{radar-RG4KPBEZ-hje4jbk6.js → radar-RG4KPBEZ-b6jcjvda.js} +1 -1
- package/static/dist/assets/{railroad-74A4TZTK-gll9n6qi.js → railroad-74A4TZTK-e3a6lk5k.js} +1 -1
- package/static/dist/assets/{railroad-abnf-HS5TGJTU-o6h6lpn4.js → railroad-abnf-HS5TGJTU-ff5hocrx.js} +1 -1
- package/static/dist/assets/{railroad-ebnf-LZEXJU2U-juaefj6o.js → railroad-ebnf-LZEXJU2U-exkhyw4n.js} +1 -1
- package/static/dist/assets/{railroad-peg-WCYAUIDC-cgfhvpah.js → railroad-peg-WCYAUIDC-jefk9b7c.js} +1 -1
- package/static/dist/assets/{railroadDiagram-O6MQD6OU-lp3w7awf.js → railroadDiagram-O6MQD6OU-e4amks1i.js} +1 -1
- package/static/dist/assets/{refresh-cw-iccm7a4e.js → refresh-cw-lfp4u1oh.js} +1 -1
- package/static/dist/assets/{requirementDiagram-BXWQKSXE-ha8eibcf.js → requirementDiagram-BXWQKSXE-c77k1e2y.js} +1 -1
- package/static/dist/assets/{sankeyDiagram-P5KCCOFB-oxf31pr9.js → sankeyDiagram-P5KCCOFB-oa1cc52s.js} +1 -1
- package/static/dist/assets/{sequenceDiagram-WJ2MYXX4-jiq8lhyo.js → sequenceDiagram-WJ2MYXX4-j20gqt22.js} +1 -1
- package/static/dist/assets/{share._token-o76ki0ly.js → share._token-kmfoflw6.js} +2 -2
- package/static/dist/assets/{sliders-horizontal-ddcs88av.js → sliders-horizontal-g5jkzd9k.js} +1 -1
- package/static/dist/assets/{stateDiagram-D77RDMKH-f3fslnon.js → stateDiagram-D77RDMKH-co2ghkdp.js} +1 -1
- package/static/dist/assets/stateDiagram-v2-MP3YSRHH-faw1opgh.js +1 -0
- package/static/dist/assets/{swimlanes-42K2YHIH-k1hmk7jf.js → swimlanes-42K2YHIH-m30cktqe.js} +1 -1
- package/static/dist/assets/swimlanesDiagram-VR7AAH4N-hfil433g.js +8 -0
- package/static/dist/assets/{timeline-definition-24CTP7MA-n3ncfy9r.js → timeline-definition-24CTP7MA-liuep6fl.js} +1 -1
- package/static/dist/assets/toast-zmb35u3r.js +56 -0
- package/static/dist/assets/{treeView-Q6P3EWNA-l3y2pejt.js → treeView-Q6P3EWNA-np5d2jv2.js} +1 -1
- package/static/dist/assets/{treemap-WGGIJYW6-jown9axh.js → treemap-WGGIJYW6-cmpltxh1.js} +1 -1
- package/static/dist/assets/{useForm-o4uu74mx.js → useForm-f1udzsjf.js} +1 -1
- package/static/dist/assets/{useParams-ftsveu84.js → useParams-ierevvts.js} +1 -1
- package/static/dist/assets/{useSearch-crqueqga.js → useSearch-i7nr9ypl.js} +1 -1
- package/static/dist/assets/{vennDiagram-4TSXK5OY-dh59uq1c.js → vennDiagram-4TSXK5OY-b2g42qrg.js} +1 -1
- package/static/dist/assets/{wardley-WFR3VGLG-e6d74b0j.js → wardley-WFR3VGLG-lb0eqbff.js} +1 -1
- package/static/dist/assets/{wardleyDiagram-VM6X3IG4-hnofh78f.js → wardleyDiagram-VM6X3IG4-ermwaqha.js} +1 -1
- package/static/dist/assets/{xychartDiagram-S5SC5T6Z-bpymjelb.js → xychartDiagram-S5SC5T6Z-dll0jldk.js} +1 -1
- package/static/dist/index.html +1 -1
- package/static/dist/sw.js +1 -1
- package/static/dist/assets/AppShell-3isgvoro.js +0 -8
- package/static/dist/assets/Button-f4n6dapf.js +0 -1
- package/static/dist/assets/ChatPage-k7b6xfax.js +0 -4
- package/static/dist/assets/ConnectTargets-juqvt5lm.js +0 -1
- package/static/dist/assets/Field-b6ez48oz.js +0 -1
- package/static/dist/assets/HubRoute-iwvso2tz.js +0 -2
- package/static/dist/assets/Markdown-jdeth7zq.js +0 -2
- package/static/dist/assets/OAuthSignIn-bpd8hom3.js +0 -1
- package/static/dist/assets/RightPanel-eu6enlo6.js +0 -1
- package/static/dist/assets/SessionListPanel-etb2i54l.js +0 -1
- package/static/dist/assets/SettingsLayout-eu3xxp23.js +0 -1
- package/static/dist/assets/TerminalPanel-hngmsr8b.js +0 -16
- package/static/dist/assets/Toaster-nb2uzjw1.js +0 -1
- package/static/dist/assets/_app-ga1moszl.js +0 -1
- package/static/dist/assets/_app.settings._section-dtdjk98a.js +0 -3
- package/static/dist/assets/_app.tasks-n8zuqsqe.js +0 -1
- package/static/dist/assets/cancel-bsnfo36u.js +0 -1
- package/static/dist/assets/channel-dsbtk01y.js +0 -1
- package/static/dist/assets/classDiagram-ZZMXUADV-fvgcv24g.js +0 -1
- package/static/dist/assets/classDiagram-v2-VYDZK3BY-fvgcv24g.js +0 -1
- package/static/dist/assets/flowDiagram-HODETNUW-jahfpiod.js +0 -1
- package/static/dist/assets/folder-plus-ivoglq98.js +0 -1
- package/static/dist/assets/index-lhf1fsdf.css +0 -2
- package/static/dist/assets/mermaid-HWGCJPDP-jx0q5dm2.js +0 -1
- package/static/dist/assets/onboarding-f67z0a2r.js +0 -1
- package/static/dist/assets/queryKeys-ed4n2egc.js +0 -9
- package/static/dist/assets/refresh-i9ya9dvl.js +0 -1
- package/static/dist/assets/stateDiagram-v2-MP3YSRHH-hlt6yphw.js +0 -1
- package/static/dist/assets/swimlanesDiagram-VR7AAH4N-hd5t9tnt.js +0 -8
- 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.
|
|
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.
|
|
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
|
-
"version": "0.22.
|
|
5
|
-
"sourceRevision": "
|
|
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:
|
|
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": [
|
|
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
|
}
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
|