chainlesschain 0.166.10 → 0.166.14
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/README.md +33 -0
- package/bin/chainlesschain.js +5 -0
- package/package.json +4 -2
- package/src/assets/web-panel/assets/{AIOps-CLYBDAGv.js → AIOps-C8SyFhOo.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-CpeSttcu.js → ActionButton-Dup5gFK0.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-Ba1TNLG0.js → Analytics-8FyOWA7V.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-xBy8EOeg.js → AppLayout-DBzdU9dg.js} +3 -3
- package/src/assets/web-panel/assets/{Artifacts-CJ_3TFb8.js → Artifacts-C_0Z8gNy.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-DUATFCG3.js → Audit-Cf2a-58m.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-BRXYPIGp.js → BackgroundAgents-M7w-2zgB.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-D8auLx7y.js → Backup-CCTHQXoL.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-CBgdslQ3.js → BaseInput-DjXpeFwJ.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-B32LvAiE.js → Chat-cAvchsJU.js} +5 -5
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-CVfvAy-n.js → ChatBubbleRenderer-DvEvxlZv.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-BwzBxOpC.js → Checkbox-DKs6qvOn.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-0U5vrg1H.js → Codegen-DlkA7b9X.js} +1 -1
- package/src/assets/web-panel/assets/{Col-dZ2i4aAj.js → Col-CkfdKhyJ.js} +1 -1
- package/src/assets/web-panel/assets/{Community-UVvpLr8c.js → Community-iNXMHzj6.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-BDNEb1Bd.js → Compact-DQxPEd09.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-BrzQPxyS.js → Compliance-CSKvMCjs.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-BbgGsu-9.js → Cowork-CkWqazpD.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-G321XPhp.js → Cron-k6W8IzhB.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-CgLNUyMn.js → Crosschain-C8MS1OuY.js} +1 -1
- package/src/assets/web-panel/assets/{DID-BAfRj18q.js → DID-DJuCcgiQ.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-BNIxA4TK.js → Dashboard-LeThKzp3.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-BLAUmCAN.js → Dropdown-BvxwgpE4.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-CsnhTW22.js → EmailListRenderer-n3e_a1M3.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-zcQ7Ip1n.js → FamilyGuardDashboard-509W6W6v.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-KFwxodNU.js → Federation-xgZReQm0.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-3CYRLEHG.js → FormItemContext-jZOhKcQx.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-D3d9D8L9.js → GenericCardRenderer-Jo0ULzHv.js} +1 -1
- package/src/assets/web-panel/assets/{Git-BJ202nJY.js → Git-BsRcyWQP.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-ClnnXVQ-.js → Governance-JlpMYTAk.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-DNU-PTkc.js → Inference-CUEz872-.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-DJuinbuY.js → KnowledgeGraph-DgrvvEDU.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-D4No-46s.js → Logs-Df-KY4U3.js} +2 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-BEPDcSwz.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-Ba-KqRN3.js → Marketplace-kPZDTOeI.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-DVoxnPgE.js → McpTools-CRRzPqNX.js} +2 -2
- package/src/assets/web-panel/assets/{Memory-D_C8gzAZ.js → Memory-D6pNSkg9.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-DnzTPcDH.js → MobileBridge-g-pvtwRC.js} +1 -1
- package/src/assets/web-panel/assets/MobileProjects-Bzayfrfe.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-CvEHmHId.js → Mtc-B7S3W-XL.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-VNJmWqmv.js → MtcAudit-B8OMEWVb.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-BO0x_Vsa.js → Multisig-CowRp7GH.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-CM2gI1UY.js → NLProgramming-BkQNyi4c.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-CMc1HsML.js → Notes-Cm7gtkKz.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-DGNmSKGM.js → NotificationSettings-CbPTVh9m.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-Du-Kct3p.js → OrderTableRenderer-Dswi26mJ.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-DRtRZjas.js → Organization-BkjQ9yy7.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-Dp4OeWsn.js → Overflow-DmRFXP7Y.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-DXMJVls8.js → P2P-DQE1toAu.js} +2 -2
- package/src/assets/web-panel/assets/PdhVaultBrowser-BujyoDRG.js +7 -0
- package/src/assets/web-panel/assets/{Permissions-D1Hbb51o.js → Permissions-xSjfOaiU.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-BridiDhr.js → PersonalDataHub-B9ICLqVP.js} +3 -3
- package/src/assets/web-panel/assets/{Pipeline-B4bUNCm1.js → Pipeline-CUNwyN9E.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-BTu_HEqK.js → Privacy-SOoCricX.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-SVtL2hnt.js → ProjectInit-CSaFul0F.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-B2Sh7JZ2.js → ProjectSettings-CueiB_oe.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-BwU1xalW.js → Projects-BOeXvU7y.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-BWdWQSDw.js → Providers-CTqf_31h.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-Brzc-Sxb.js → QrScannerModal-C8ZP31E9.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-DIBz7FCe.js → QuickAsk-CPgn4713.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-CZ8RriIJ.js → Recommend-8_e0zw0i.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-CM0KJQ3t.js → RemoteSession-iT7lbGqw.js} +3 -3
- package/src/assets/web-panel/assets/{Reputation-D_wo8H0O.js → Reputation-B4q9SUOz.js} +1 -1
- package/src/assets/web-panel/assets/{Row-D1G1fD7N.js → Row-CA_nASyL.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-dKCVtA0K.js → RssFeed-Cwb0E3yv.js} +2 -2
- package/src/assets/web-panel/assets/{Search-Be1D61xo.js → Search-D9iVsOxJ.js} +1 -1
- package/src/assets/web-panel/assets/{Security-IbNiR6OC.js → Security-DPLbYchG.js} +3 -3
- package/src/assets/web-panel/assets/{Services-nuHK8y8p.js → Services-DGMVL_LF.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-DnM5jdnC.js → Skeleton-B_6kym0D.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-DCTdoq_q.js → Skills-Ds6r0dXB.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-DlWun-Ui.js → Sla-BLHAbBhb.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-C19kv2sd.js → SpeechSettings-CZuddd14.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-CkQIR_Hu.js → SyncSettings-CdBq7oSl.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-DdbqOEbs.js → Tasks-DfT60Nyl.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-B7GpIXeo.js → Templates-RLfsKy2V.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-ByEstFhY.js → Tenant-Cw8xCNLE.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-BKRVID1a.js → Terminal-BOUkNu4f.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-CNS3dHNv.js → TimelineRenderer-CgGZWaRm.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-BykqylCL.js → Tokens-CpwjVyir.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-ByNxq51W.js → Trigger-DL21H-eb.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-BlrFsdaS.js → Trust-B3ffFclW.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-Dg26A-sd.js → UkeySign-CkBeb5aI.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-C1wUxNn0.js → VideoEditing-U2iVaE3r.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-OphEUzI4.js → Wallet-CQk2wzYd.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-_8lL08hF.js → WebAuthn-DYIuIYzT.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-BnTuIvnP.js → WorkflowEditor-tg1c2mZQ.js} +1 -1
- package/src/assets/web-panel/assets/{chat-3N3VLQYr.js → chat-CtL61spq.js} +1 -1
- package/src/assets/web-panel/assets/{colors-Bo_G96gg.js → colors-DKpbeo8s.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-DjubfjI_.js → compact-item-gPZsrswt.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-Cx_HSLCk.js → createContext-CfHlwzVr.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-DdqnMhzi.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-D5OjAOlA.js → hasIn-MV47g_6X.js} +1 -1
- package/src/assets/web-panel/assets/{index-x7o-2T3S.js → index-6G0ETFTW.js} +1 -1
- package/src/assets/web-panel/assets/{index-CqZq3zWr.js → index-BBw52sEl.js} +1 -1
- package/src/assets/web-panel/assets/{index-C-4sfa0l.js → index-BN-wxSQ8.js} +1 -1
- package/src/assets/web-panel/assets/{index-uAcJUJkx.js → index-BOyGUuBE.js} +1 -1
- package/src/assets/web-panel/assets/{index-CC7RnaPP.js → index-BQp5M0s1.js} +1 -1
- package/src/assets/web-panel/assets/index-BcK8o4ke.js +1 -0
- package/src/assets/web-panel/assets/{index-CNmsP0Xf.js → index-BjlPD7GO.js} +1 -1
- package/src/assets/web-panel/assets/{index-CVPDhmVH.js → index-C4lF-f_z.js} +1 -1
- package/src/assets/web-panel/assets/{index-CRKk1JPX.js → index-C6nC_DyY.js} +1 -1
- package/src/assets/web-panel/assets/{index-B905-Mcs.js → index-C9RF4ieu.js} +1 -1
- package/src/assets/web-panel/assets/{index-3_CEBEEf.js → index-C9gtY4nG.js} +3 -3
- package/src/assets/web-panel/assets/{index-Y-H7j25u.js → index-CB1HnbNK.js} +1 -1
- package/src/assets/web-panel/assets/{index-C5IwN9q3.js → index-CRv_uMLV.js} +1 -1
- package/src/assets/web-panel/assets/{index-Q_vn0t8d.js → index-C_B9LiKs.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cz5tQ5PY.js → index-Cjv0kKCU.js} +1 -1
- package/src/assets/web-panel/assets/{index-BgPb37tI.js → index-CmM9jqwe.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dbdr8tVi.js → index-CmPJpLoD.js} +1 -1
- package/src/assets/web-panel/assets/{index-DrVjatPe.js → index-CzfxTSPW.js} +1 -1
- package/src/assets/web-panel/assets/{index-C-_Cy0k_.js → index-D1XB5-t5.js} +1 -1
- package/src/assets/web-panel/assets/{index-C8dPFFhy.js → index-DGtEBodr.js} +1 -1
- package/src/assets/web-panel/assets/{index-UnpsQ6A0.js → index-DIeJmlAA.js} +1 -1
- package/src/assets/web-panel/assets/{index-BxgIE4PD.js → index-DMMvlLp9.js} +1 -1
- package/src/assets/web-panel/assets/{index-DlcbE0sX.js → index-DU4rZpiK.js} +1 -1
- package/src/assets/web-panel/assets/{index-EZr3bvz2.js → index-D_Pl1GnW.js} +1 -1
- package/src/assets/web-panel/assets/{index-BScGr1BY.js → index-Dd19vRwy.js} +1 -1
- package/src/assets/web-panel/assets/{index-Ce8EWU6r.js → index-Ddcpj1El.js} +1 -1
- package/src/assets/web-panel/assets/{index-CCjq3g32.js → index-Df9sWKpl.js} +1 -1
- package/src/assets/web-panel/assets/{index-ydnEPOzZ.js → index-DfLyHCWi.js} +1 -1
- package/src/assets/web-panel/assets/{index-C4MAnkl5.js → index-DnZ_zS1M.js} +1 -1
- package/src/assets/web-panel/assets/{index-DXJqa1-I.js → index-DsH-i_3d.js} +1 -1
- package/src/assets/web-panel/assets/index-DvbAjyYI.js +1 -0
- package/src/assets/web-panel/assets/{index-DBvZhdCb.js → index-ExAGPAnX.js} +1 -1
- package/src/assets/web-panel/assets/{index-DD1zSPZH.js → index-Rb7CRMw9.js} +1 -1
- package/src/assets/web-panel/assets/{index-DE4XtzMl.js → index-Zvkt9xqi.js} +1 -1
- package/src/assets/web-panel/assets/{index-CmLwI-Y8.js → index-bSFrAszw.js} +1 -1
- package/src/assets/web-panel/assets/{index-HioDjvUF.js → index-fYcS7NS0.js} +1 -1
- package/src/assets/web-panel/assets/{index-BvYo09C0.js → index-srBc9U_s.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bj7S5IJw.js → index-xUlgG0Xe.js} +1 -1
- package/src/assets/web-panel/assets/{index-DaU60K3A.js → index-yxxXlqBA.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-DurpENJY.js → initDefaultProps-BeOZoSZ4.js} +1 -1
- package/src/assets/web-panel/assets/{motion-CIh-z-gR.js → motion-BXE8VMKx.js} +1 -1
- package/src/assets/web-panel/assets/{move-Uc_yI2NA.js → move-I9sdvPGX.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-DUevj5wz.js → mtc-parser-d25zrJd0.js} +1 -1
- package/src/assets/web-panel/assets/{omit-85eMYyur.js → omit-D71V_T4e.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-AuxDD20F.js → pickAttrs-BNZKpIAR.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-DOWn8dd1.js → placementArrow-jOcgxTTz.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-CPxTWodH.js → responsiveObserve-pta_O8AU.js} +1 -1
- package/src/assets/web-panel/assets/{slide-BqvbGPjx.js → slide-Dlq6om7z.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-BzXKkV8d.js → statusUtils-BnkO_yRv.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-B2O7yRk3.js → styleChecker-p8NfWmcG.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-DRWp7px1.js → useFlexGapSupport-KcjZZ5U7.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-Dp0V7sjM.js → useFs-gqonDMWB.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-CyCrG3ql.js → usePersonalDataHub-jIIfE4go.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-CXhoFpFo.js → vnode-Dyo7fBrM.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-0z3mtwEg.js → zoom-6l8BMg9W.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/command-help-index.json +5 -5
- package/src/commands/agent.js +76 -23
- package/src/commands/compact.js +349 -3
- package/src/commands/context.js +72 -1
- package/src/commands/graph.js +26 -15
- package/src/commands/hmemory.js +21 -0
- package/src/commands/hook.js +256 -28
- package/src/commands/memory.js +209 -42
- package/src/commands/promcomp.js +17 -0
- package/src/commands/record-replay.js +772 -0
- package/src/commands/serve.js +94 -10
- package/src/commands/session.js +2 -3
- package/src/commands/skill.js +3 -0
- package/src/commands/team.js +7 -1
- package/src/data/changelog.json +41 -2
- package/src/gateways/ws/session-core-protocol.js +62 -3
- package/src/gateways/ws/session-protocol.js +123 -15
- package/src/gateways/ws/ws-agent-handler.js +157 -9
- package/src/gateways/ws/ws-session-gateway.js +204 -30
- package/src/generated/cc-agent-protocol.schema.json +2094 -4
- package/src/harness/prompt-compressor.js +5 -55
- package/src/lib/agent-sandbox.js +8 -2
- package/src/lib/agent-team/team-distributed-graph-bridge.js +3 -3
- package/src/lib/agent-team/team-message-tools.js +23 -5
- package/src/lib/app-server/context-memory-notifications.js +54 -0
- package/src/lib/app-server/rollout-store-factory.js +115 -0
- package/src/lib/app-server/rollout-store.js +310 -23
- package/src/lib/app-server/server.js +184 -7
- package/src/lib/app-server/sqlite-rollout-store.js +59 -16
- package/src/lib/auto-mode-config.js +26 -0
- package/src/lib/causal-observability.js +13 -1
- package/src/lib/context-memory-kernel/authority.js +95 -0
- package/src/lib/context-memory-kernel/durable-memory-port.js +296 -0
- package/src/lib/context-memory-kernel/index.js +8 -0
- package/src/lib/context-memory-kernel/jsonl-session-context-port.js +232 -0
- package/src/lib/context-memory-kernel/live-compaction.js +375 -0
- package/src/lib/context-memory-kernel/memory-service.js +667 -0
- package/src/lib/context-memory-kernel/message-adapter.js +451 -0
- package/src/lib/context-memory-kernel/privacy-purge-port.js +244 -0
- package/src/lib/context-memory-kernel/provider-context.js +192 -0
- package/src/lib/context-memory-kernel/runtime.js +61 -0
- package/src/lib/direct-model-usage.js +22 -18
- package/src/lib/graph-kernel/cutover-authority-resolver.js +4 -5
- package/src/lib/graph-kernel/cutover-ledger.js +2 -2
- package/src/lib/graph-kernel/event-store.js +3 -5
- package/src/lib/graph-kernel/migration-saga.js +2 -2
- package/src/lib/graph-kernel/production-cutover-evidence.js +8 -1
- package/src/lib/hierarchical-memory.js +22 -0
- package/src/lib/hook-audit-store.js +170 -0
- package/src/lib/hook-event-bus.cjs +0 -0
- package/src/lib/hook-manager.js +25 -83
- package/src/lib/hook-runtime-adapters.js +233 -0
- package/src/lib/hook-runtime-contract.cjs +291 -0
- package/src/lib/hook-runtime-contract.js +21 -0
- package/src/lib/hook-trust.js +210 -0
- package/src/lib/hooks-v2-producers.js +52 -6
- package/src/lib/hooks-v2-runtime.js +443 -178
- package/src/lib/llm-pricing.js +10 -0
- package/src/lib/memory-manager.js +29 -4
- package/src/lib/model-context-window.js +52 -0
- package/src/lib/permanent-memory.js +17 -0
- package/src/lib/plan-mode.js +8 -4
- package/src/lib/process-execution-broker/credential-transport.js +31 -0
- package/src/lib/process-execution-broker/index.js +282 -16
- package/src/lib/process-execution-broker/windows-sandbox-helper.dll +0 -0
- package/src/lib/process-execution-broker/windows-sandbox-helper.exe +0 -0
- package/src/lib/process-execution-broker/windows-sandbox.cs +7 -3
- package/src/lib/record-replay/browser-target-policy.js +406 -0
- package/src/lib/record-replay/index.js +4 -0
- package/src/lib/record-replay/playwright-ui-driver.js +83 -20
- package/src/lib/record-replay/playwright-ui-recorder.js +611 -0
- package/src/lib/record-replay/recorded-skill-package.js +486 -0
- package/src/lib/record-replay/recorded-skill-store.js +1166 -0
- package/src/lib/record-replay/skill-recorder.js +634 -64
- package/src/lib/runtime-usage-ledger.js +20 -0
- package/src/lib/session-consolidator.js +59 -0
- package/src/lib/session-core-singletons.js +17 -4
- package/src/lib/session-hooks.js +29 -2
- package/src/lib/session-transcript-migration.js +188 -0
- package/src/lib/settings-hook-events.cjs +37 -401
- package/src/lib/settings-hook-events.js +210 -8
- package/src/lib/settings-hooks.cjs +42 -83
- package/src/lib/ws-session-manager.js +4 -1
- package/src/repl/agent-repl.js +186 -53
- package/src/runtime/agent-core.js +376 -350
- package/src/runtime/headless-runner.js +112 -84
- package/src/runtime/headless-stream.js +131 -30
- package/src/assets/web-panel/assets/MarkdownRenderer-Dt8hH_qA.js +0 -1
- package/src/assets/web-panel/assets/MobileProjects-Jg2dVUc-.js +0 -1
- package/src/assets/web-panel/assets/PdhVaultBrowser-0jYeVmyY.js +0 -7
- package/src/assets/web-panel/assets/devWarning-BX944k9E.js +0 -1
- package/src/assets/web-panel/assets/index-C_9Jt_SR.js +0 -1
- package/src/assets/web-panel/assets/index-DL2EFx7m.js +0 -1
|
@@ -464,65 +464,86 @@ async function withHeadlessSessionHostLease(options, deps, task) {
|
|
|
464
464
|
`Invalid --output-format "${outputFormat}". Expected one of: ${VALID_OUTPUT_FORMATS.join(", ")}`,
|
|
465
465
|
);
|
|
466
466
|
}
|
|
467
|
-
|
|
468
|
-
typeof deps.sessionHasPersistedEvidence === "function" ||
|
|
469
|
-
typeof deps.sessionExists === "function" ||
|
|
470
|
-
typeof deps.rebuildMessages === "function" ||
|
|
471
|
-
typeof deps.appendEvent === "function" ||
|
|
472
|
-
typeof deps.appendAuthorityEvent === "function" ||
|
|
473
|
-
typeof deps.readVerifiedEvents === "function";
|
|
474
|
-
const resolution = resolveHeadlessSession(
|
|
475
|
-
options,
|
|
476
|
-
{
|
|
477
|
-
getLastSessionId: deps.getLastSessionId || jsonlGetLastSessionId,
|
|
478
|
-
resolveSessionAuthority:
|
|
479
|
-
deps.resolveSessionAuthority ||
|
|
480
|
-
(!hasInjectedSessionStore ? jsonlResolveSessionAuthority : undefined),
|
|
481
|
-
},
|
|
482
|
-
`headless-${Date.now()}-${process.pid}`,
|
|
483
|
-
);
|
|
484
|
-
const authoritySessionId =
|
|
485
|
-
resolution.resumeId || (resolution.persist ? resolution.sessionId : null);
|
|
486
|
-
const acquireHostLease =
|
|
487
|
-
deps.acquireSessionHostLease ||
|
|
488
|
-
(!hasInjectedSessionStore ? acquireSessionHostLease : null);
|
|
467
|
+
let resolution = null;
|
|
489
468
|
let lease = null;
|
|
490
469
|
let budgetRoot = null;
|
|
470
|
+
let scopedOptions = options;
|
|
491
471
|
try {
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
472
|
+
// Session authority/lease/budget setup can lazily initialize AppConfig and
|
|
473
|
+
// DatabaseManager. Those legacy diagnostics use console.info (stdout), and
|
|
474
|
+
// therefore used to precede the first NDJSON event for a persisted
|
|
475
|
+
// `--output-format stream-json` run. Keep the task itself outside this
|
|
476
|
+
// scope so only bootstrap chatter is redirected, never protocol payloads.
|
|
477
|
+
await withQuietStdout(() => {
|
|
478
|
+
const hasInjectedSessionStore =
|
|
479
|
+
typeof deps.sessionHasPersistedEvidence === "function" ||
|
|
480
|
+
typeof deps.sessionExists === "function" ||
|
|
481
|
+
typeof deps.rebuildMessages === "function" ||
|
|
482
|
+
typeof deps.appendEvent === "function" ||
|
|
483
|
+
typeof deps.appendAuthorityEvent === "function" ||
|
|
484
|
+
typeof deps.readVerifiedEvents === "function";
|
|
485
|
+
resolution = resolveHeadlessSession(
|
|
486
|
+
options,
|
|
487
|
+
{
|
|
488
|
+
getLastSessionId: deps.getLastSessionId || jsonlGetLastSessionId,
|
|
489
|
+
resolveSessionAuthority:
|
|
490
|
+
deps.resolveSessionAuthority ||
|
|
491
|
+
(!hasInjectedSessionStore
|
|
492
|
+
? jsonlResolveSessionAuthority
|
|
493
|
+
: undefined),
|
|
494
|
+
},
|
|
495
|
+
`headless-${Date.now()}-${process.pid}`,
|
|
496
|
+
);
|
|
497
|
+
const authoritySessionId =
|
|
498
|
+
resolution.resumeId ||
|
|
499
|
+
(resolution.persist ? resolution.sessionId : null);
|
|
500
|
+
const acquireHostLease =
|
|
501
|
+
deps.acquireSessionHostLease ||
|
|
502
|
+
(!hasInjectedSessionStore ? acquireSessionHostLease : null);
|
|
503
|
+
if (authoritySessionId && typeof acquireHostLease === "function") {
|
|
504
|
+
lease = acquireHostLease(authoritySessionId, {
|
|
505
|
+
hostKind: "headless",
|
|
506
|
+
});
|
|
507
|
+
}
|
|
508
|
+
scopedOptions = lease?.signal
|
|
509
|
+
? {
|
|
510
|
+
...options,
|
|
511
|
+
signal: options.signal
|
|
512
|
+
? AbortSignal.any([options.signal, lease.signal])
|
|
513
|
+
: lease.signal,
|
|
514
|
+
}
|
|
515
|
+
: options;
|
|
516
|
+
budgetRoot = openProductionSessionBudgetRoot(
|
|
517
|
+
authoritySessionId,
|
|
518
|
+
options.sessionBudgetRoot,
|
|
519
|
+
{
|
|
520
|
+
persist: resolution.persist,
|
|
521
|
+
signal: scopedOptions.signal || null,
|
|
522
|
+
table: options.sessionBudgetRoot?.table,
|
|
523
|
+
open: deps.openSessionBudget,
|
|
524
|
+
store: deps.sessionBudgetStore,
|
|
525
|
+
registry: deps.sessionBudgetRegistry,
|
|
526
|
+
},
|
|
527
|
+
);
|
|
528
|
+
if (budgetRoot.enabled) {
|
|
529
|
+
scopedOptions = { ...scopedOptions, ...budgetRoot.options };
|
|
530
|
+
}
|
|
531
|
+
});
|
|
518
532
|
return await task(scopedOptions, {
|
|
519
533
|
...deps,
|
|
520
534
|
[HEADLESS_SESSION_RESOLUTION]: resolution,
|
|
521
535
|
[HEADLESS_SESSION_HOST_LEASE]: lease,
|
|
522
536
|
});
|
|
523
537
|
} finally {
|
|
524
|
-
|
|
525
|
-
|
|
538
|
+
// Cleanup can touch the same lazy stores. Keep late diagnostics out of a
|
|
539
|
+
// completed JSON/NDJSON payload while preserving release-on-close failure.
|
|
540
|
+
await withQuietStdout(() => {
|
|
541
|
+
try {
|
|
542
|
+
budgetRoot?.close?.();
|
|
543
|
+
} finally {
|
|
544
|
+
lease?.release?.();
|
|
545
|
+
}
|
|
546
|
+
});
|
|
526
547
|
}
|
|
527
548
|
}
|
|
528
549
|
|
|
@@ -901,8 +922,8 @@ async function runAgentHeadlessInWorkspace(
|
|
|
901
922
|
effectiveHooks._authorityErrors.length > 0
|
|
902
923
|
? effectiveHooks
|
|
903
924
|
: null;
|
|
904
|
-
//
|
|
905
|
-
//
|
|
925
|
+
// Explain the explicit content-bound trust gate. Displaying this notice
|
|
926
|
+
// never authorizes execution.
|
|
906
927
|
try {
|
|
907
928
|
const notice = projectHookTrustNotice({
|
|
908
929
|
cwd,
|
|
@@ -910,7 +931,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
910
931
|
});
|
|
911
932
|
if (notice) writeErr(notice + "\n");
|
|
912
933
|
} catch {
|
|
913
|
-
/*
|
|
934
|
+
/* notice output is best-effort; the runtime gate is fail-closed */
|
|
914
935
|
}
|
|
915
936
|
} catch (error) {
|
|
916
937
|
settingsHooks = {};
|
|
@@ -1605,7 +1626,8 @@ async function runAgentHeadlessInWorkspace(
|
|
|
1605
1626
|
if (approvalGate) {
|
|
1606
1627
|
approvalGate.setAuthorizationConsumer?.(null);
|
|
1607
1628
|
if (typeof approvalGate.setSessionPolicy === "function") {
|
|
1608
|
-
approvalGate.setSessionPolicy(sessionId, perm.sessionPolicy);
|
|
1629
|
+
await approvalGate.setSessionPolicy(sessionId, perm.sessionPolicy);
|
|
1630
|
+
await approvalGate.awaitPersistence?.();
|
|
1609
1631
|
}
|
|
1610
1632
|
if (typeof approvalGate.setConfirmer === "function") {
|
|
1611
1633
|
approvalGate.setConfirmer(perm.confirmer);
|
|
@@ -1708,7 +1730,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
1708
1730
|
try {
|
|
1709
1731
|
const { runUserPromptSubmitHooks } =
|
|
1710
1732
|
await import("../lib/settings-hook-events.js");
|
|
1711
|
-
const ups = runUserPromptSubmitHooks(settingsHooks, {
|
|
1733
|
+
const ups = await runUserPromptSubmitHooks(settingsHooks, {
|
|
1712
1734
|
prompt: userContent,
|
|
1713
1735
|
cwd,
|
|
1714
1736
|
sessionId,
|
|
@@ -1739,11 +1761,13 @@ async function runAgentHeadlessInWorkspace(
|
|
|
1739
1761
|
try {
|
|
1740
1762
|
const { runInstructionsLoadedHooks } =
|
|
1741
1763
|
await import("../lib/settings-hook-events.js");
|
|
1742
|
-
instructionsLoadedContext =
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1764
|
+
instructionsLoadedContext = (
|
|
1765
|
+
await runInstructionsLoadedHooks(settingsHooks, {
|
|
1766
|
+
files: _loadedInstructions.files,
|
|
1767
|
+
cwd,
|
|
1768
|
+
sessionId,
|
|
1769
|
+
})
|
|
1770
|
+
).additionalContext;
|
|
1747
1771
|
} catch (_err) {
|
|
1748
1772
|
instructionsLoadedContext = null;
|
|
1749
1773
|
}
|
|
@@ -1755,11 +1779,13 @@ async function runAgentHeadlessInWorkspace(
|
|
|
1755
1779
|
try {
|
|
1756
1780
|
const { runSessionStartHooks } =
|
|
1757
1781
|
await import("../lib/settings-hook-events.js");
|
|
1758
|
-
sessionStartContext =
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1782
|
+
sessionStartContext = (
|
|
1783
|
+
await runSessionStartHooks(settingsHooks, {
|
|
1784
|
+
source: resumeId ? "resume" : "startup",
|
|
1785
|
+
cwd,
|
|
1786
|
+
sessionId,
|
|
1787
|
+
})
|
|
1788
|
+
).additionalContext;
|
|
1763
1789
|
} catch (_err) {
|
|
1764
1790
|
sessionStartContext = null;
|
|
1765
1791
|
}
|
|
@@ -1774,7 +1800,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
1774
1800
|
try {
|
|
1775
1801
|
const { runObserveHooks } =
|
|
1776
1802
|
await import("../lib/settings-hook-events.js");
|
|
1777
|
-
runObserveHooks(
|
|
1803
|
+
await runObserveHooks(
|
|
1778
1804
|
settingsHooks,
|
|
1779
1805
|
"SessionResume",
|
|
1780
1806
|
{
|
|
@@ -2001,7 +2027,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
2001
2027
|
: null;
|
|
2002
2028
|
let teamMessageTools = null;
|
|
2003
2029
|
try {
|
|
2004
|
-
teamMessageTools = (
|
|
2030
|
+
teamMessageTools = await (
|
|
2005
2031
|
deps.resolveTeamMessageToolBundle || resolveTeamMessageToolBundle
|
|
2006
2032
|
)({ env: options.teamMessageEnv || process.env });
|
|
2007
2033
|
} catch (error) {
|
|
@@ -2631,12 +2657,14 @@ async function runAgentHeadlessInWorkspace(
|
|
|
2631
2657
|
// --max-budget-usd: a hard USD spend cap (Claude-Code parity). Accumulates
|
|
2632
2658
|
// per-call cost from token-usage events and stops the loop before the next
|
|
2633
2659
|
// paid call once the cap is reached. null → no cap (unchanged behavior).
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
:
|
|
2660
|
+
// Track priced usage even when no hard cap is configured so every machine
|
|
2661
|
+
// readable terminal result can carry authoritative cost evidence. A null
|
|
2662
|
+
// limit never warns or stops the run; it only accumulates the same estimates
|
|
2663
|
+
// that an enabled --max-budget-usd guard would use.
|
|
2664
|
+
const costBudget = new CostBudget({
|
|
2665
|
+
limitUsd: options.maxCostUsd,
|
|
2666
|
+
table: options.priceTable,
|
|
2667
|
+
});
|
|
2640
2668
|
|
|
2641
2669
|
const startedAt = deps.now ? deps.now() : Date.now();
|
|
2642
2670
|
const toolCalls = [];
|
|
@@ -2770,9 +2798,8 @@ async function runAgentHeadlessInWorkspace(
|
|
|
2770
2798
|
let _asyncStopHandled = false;
|
|
2771
2799
|
const _settleAsyncStop = async () => {
|
|
2772
2800
|
if (!settingsHooks || !_hookSupervisor) return { rewakes: [], results: [] };
|
|
2773
|
-
const {
|
|
2774
|
-
|
|
2775
|
-
dispatchAsyncHooks(
|
|
2801
|
+
const { runObserveHooks } = await import("../lib/settings-hook-events.js");
|
|
2802
|
+
await runObserveHooks(
|
|
2776
2803
|
settingsHooks,
|
|
2777
2804
|
"Stop",
|
|
2778
2805
|
{ reason: endReason, cwd, session_id: sessionId },
|
|
@@ -3613,21 +3640,22 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3613
3640
|
await cleanupDeadline.run("settings-hooks", async () => {
|
|
3614
3641
|
if (settingsHooks) {
|
|
3615
3642
|
try {
|
|
3616
|
-
const { runObserveHooks
|
|
3643
|
+
const { runObserveHooks } =
|
|
3617
3644
|
await import("../lib/settings-hook-events.js");
|
|
3618
3645
|
const stopPayload = {
|
|
3619
3646
|
reason: pipeState.closed ? "pipe_closed" : endReason,
|
|
3620
3647
|
cwd,
|
|
3621
3648
|
session_id: sessionId,
|
|
3622
3649
|
};
|
|
3623
|
-
const stopOutcome = runObserveHooks(
|
|
3650
|
+
const stopOutcome = await runObserveHooks(
|
|
3624
3651
|
settingsHooks,
|
|
3625
3652
|
"Stop",
|
|
3626
3653
|
stopPayload,
|
|
3627
|
-
{ cwd },
|
|
3654
|
+
{ cwd, supervisor: _hookSupervisor },
|
|
3628
3655
|
);
|
|
3629
3656
|
const stopFailures = (stopOutcome?.results || []).filter(
|
|
3630
3657
|
(result) =>
|
|
3658
|
+
result?.status === "error" ||
|
|
3631
3659
|
result?.nonBlockingError === true ||
|
|
3632
3660
|
result?.malformedDecision === true ||
|
|
3633
3661
|
result?.breakerOpen === true,
|
|
@@ -3647,10 +3675,6 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3647
3675
|
// Skip the async Stop dispatch/settle here if the auto-rewake re-drive
|
|
3648
3676
|
// loop already fired + drained it this run (avoids double-execution).
|
|
3649
3677
|
if (_hookSupervisor && !_asyncStopHandled) {
|
|
3650
|
-
dispatchAsyncHooks(settingsHooks, "Stop", stopPayload, {
|
|
3651
|
-
cwd,
|
|
3652
|
-
supervisor: _hookSupervisor,
|
|
3653
|
-
});
|
|
3654
3678
|
// Bounded settle: wait for in-flight async hooks (Stop + any
|
|
3655
3679
|
// PostToolUse dispatched during the loop) to finish, capped so a
|
|
3656
3680
|
// slow/hung check can never stall the run. Default 5s; tunable.
|
|
@@ -3694,7 +3718,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3694
3718
|
// Always reap the supervisor (kills any straggler child + detaches the
|
|
3695
3719
|
// exit reaper), whether the async Stop was handled here or in re-drive.
|
|
3696
3720
|
if (_hookSupervisor) _hookSupervisor.stopAll();
|
|
3697
|
-
runObserveHooks(
|
|
3721
|
+
await runObserveHooks(
|
|
3698
3722
|
settingsHooks,
|
|
3699
3723
|
"SessionEnd",
|
|
3700
3724
|
{
|
|
@@ -3901,6 +3925,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3901
3925
|
num_turns: budget.consumed,
|
|
3902
3926
|
duration_ms: durationMs,
|
|
3903
3927
|
usage,
|
|
3928
|
+
total_cost_usd: costBudget.spentUsd,
|
|
3904
3929
|
...(compactionDegradations.length
|
|
3905
3930
|
? { compaction_degradations: compactionDegradations }
|
|
3906
3931
|
: {}),
|
|
@@ -3916,6 +3941,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3916
3941
|
sessionId,
|
|
3917
3942
|
toolCalls,
|
|
3918
3943
|
usage,
|
|
3944
|
+
totalCostUsd: costBudget.spentUsd,
|
|
3919
3945
|
numTurns: budget.consumed,
|
|
3920
3946
|
durationMs,
|
|
3921
3947
|
denials,
|
|
@@ -3976,6 +4002,7 @@ function buildResultEnvelope({
|
|
|
3976
4002
|
sessionId,
|
|
3977
4003
|
toolCalls,
|
|
3978
4004
|
usage,
|
|
4005
|
+
totalCostUsd,
|
|
3979
4006
|
numTurns,
|
|
3980
4007
|
durationMs,
|
|
3981
4008
|
denials,
|
|
@@ -3992,6 +4019,7 @@ function buildResultEnvelope({
|
|
|
3992
4019
|
duration_ms: durationMs,
|
|
3993
4020
|
tool_calls: toolCalls,
|
|
3994
4021
|
usage,
|
|
4022
|
+
total_cost_usd: totalCostUsd,
|
|
3995
4023
|
};
|
|
3996
4024
|
// Only present when something was blocked — keeps the no-denial envelope
|
|
3997
4025
|
// byte-identical to before (Claude-Code 2.1.193 denial reasons, json mode).
|
|
@@ -51,7 +51,10 @@ import {
|
|
|
51
51
|
} from "./agent-core.js";
|
|
52
52
|
import { composeSystemPrompt } from "./system-prompt.js";
|
|
53
53
|
import { collapseConsecutiveMessagesInPlace } from "./message-roles.js";
|
|
54
|
-
import {
|
|
54
|
+
import {
|
|
55
|
+
estimateMessagesTokens,
|
|
56
|
+
sanitizeToolPairs,
|
|
57
|
+
} from "../harness/prompt-compressor.js";
|
|
55
58
|
import { compactConversationWithProvider } from "../harness/provider-backed-compaction.js";
|
|
56
59
|
import { HostResourceBudget } from "../lib/host-resource-budget.js";
|
|
57
60
|
import { projectCanonicalResumeMessages } from "../lib/session-message-provenance.js";
|
|
@@ -1549,7 +1552,10 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
1549
1552
|
seq: true,
|
|
1550
1553
|
trace_id: true,
|
|
1551
1554
|
tool_use_id: true,
|
|
1552
|
-
|
|
1555
|
+
// Hook lifecycle events can occur before the optional first-line hello.
|
|
1556
|
+
// Buffer their additive policy projection until negotiation either accepts
|
|
1557
|
+
// or disables this feature.
|
|
1558
|
+
permission_decision: null,
|
|
1553
1559
|
};
|
|
1554
1560
|
const streamCoalescer =
|
|
1555
1561
|
deps.streamCoalescer ||
|
|
@@ -1560,13 +1566,24 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
1560
1566
|
fieldGate,
|
|
1561
1567
|
});
|
|
1562
1568
|
const emit = streamCoalescer.emit;
|
|
1569
|
+
const pendingHookPolicyEvents = [];
|
|
1570
|
+
const settlePermissionDecisionGate = (enabled) => {
|
|
1571
|
+
fieldGate.permission_decision = enabled === true;
|
|
1572
|
+
if (fieldGate.permission_decision) {
|
|
1573
|
+
for (const event of pendingHookPolicyEvents.splice(0)) emit(event);
|
|
1574
|
+
} else {
|
|
1575
|
+
pendingHookPolicyEvents.length = 0;
|
|
1576
|
+
}
|
|
1577
|
+
};
|
|
1563
1578
|
const removeHookObserver =
|
|
1564
1579
|
options.includeHookEvents === true
|
|
1565
1580
|
? addHooksV2EventObserver(sessionId, (event) => {
|
|
1566
1581
|
emit(event);
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1582
|
+
const policyEvent = projectHookPolicyDecision(event);
|
|
1583
|
+
if (!policyEvent) return;
|
|
1584
|
+
if (fieldGate.permission_decision === true) emit(policyEvent);
|
|
1585
|
+
else if (fieldGate.permission_decision == null) {
|
|
1586
|
+
pendingHookPolicyEvents.push(policyEvent);
|
|
1570
1587
|
}
|
|
1571
1588
|
})
|
|
1572
1589
|
: null;
|
|
@@ -1792,8 +1809,8 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
1792
1809
|
effectiveHooks._authorityErrors.length > 0
|
|
1793
1810
|
? effectiveHooks
|
|
1794
1811
|
: null;
|
|
1795
|
-
//
|
|
1796
|
-
//
|
|
1812
|
+
// Explain the explicit content-bound trust gate. stderr keeps NDJSON
|
|
1813
|
+
// stdout clean; the notice itself never grants Hook authority.
|
|
1797
1814
|
try {
|
|
1798
1815
|
const notice = projectHookTrustNotice({
|
|
1799
1816
|
cwd,
|
|
@@ -1801,7 +1818,7 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
1801
1818
|
});
|
|
1802
1819
|
if (notice) writeErr(notice + "\n");
|
|
1803
1820
|
} catch {
|
|
1804
|
-
/*
|
|
1821
|
+
/* notice output is best-effort; the runtime gate is fail-closed */
|
|
1805
1822
|
}
|
|
1806
1823
|
} catch (error) {
|
|
1807
1824
|
settingsHooks = {};
|
|
@@ -1847,7 +1864,7 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
1847
1864
|
const runObserveHooks =
|
|
1848
1865
|
deps.runObserveHooks ||
|
|
1849
1866
|
(await import("../lib/settings-hook-events.js")).runObserveHooks;
|
|
1850
|
-
runObserveHooks(
|
|
1867
|
+
await runObserveHooks(
|
|
1851
1868
|
settingsHooks,
|
|
1852
1869
|
"SessionEnd",
|
|
1853
1870
|
{ reason, cwd, session_id: sessionId },
|
|
@@ -2358,7 +2375,8 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
2358
2375
|
}
|
|
2359
2376
|
if (approvalGate) {
|
|
2360
2377
|
approvalGate.setAuthorizationConsumer?.(null);
|
|
2361
|
-
approvalGate.setSessionPolicy?.(sessionId, perm.sessionPolicy);
|
|
2378
|
+
await approvalGate.setSessionPolicy?.(sessionId, perm.sessionPolicy);
|
|
2379
|
+
await approvalGate.awaitPersistence?.();
|
|
2362
2380
|
approvalGate.setConfirmer?.(
|
|
2363
2381
|
interactive && perm.allowInteractiveApprovals
|
|
2364
2382
|
? interactiveConfirm
|
|
@@ -2562,11 +2580,13 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
2562
2580
|
try {
|
|
2563
2581
|
const { runInstructionsLoadedHooks } =
|
|
2564
2582
|
await import("../lib/settings-hook-events.js");
|
|
2565
|
-
const ctx =
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2583
|
+
const ctx = (
|
|
2584
|
+
await runInstructionsLoadedHooks(settingsHooks, {
|
|
2585
|
+
files: _loadedInstructions.files,
|
|
2586
|
+
cwd,
|
|
2587
|
+
sessionId,
|
|
2588
|
+
})
|
|
2589
|
+
).additionalContext;
|
|
2570
2590
|
if (ctx) messages.push({ role: "system", content: ctx });
|
|
2571
2591
|
} catch (_err) {
|
|
2572
2592
|
// best-effort
|
|
@@ -2603,11 +2623,13 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
2603
2623
|
try {
|
|
2604
2624
|
const { runSessionStartHooks } =
|
|
2605
2625
|
await import("../lib/settings-hook-events.js");
|
|
2606
|
-
const ctx =
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
2626
|
+
const ctx = (
|
|
2627
|
+
await runSessionStartHooks(settingsHooks, {
|
|
2628
|
+
source: "startup",
|
|
2629
|
+
cwd,
|
|
2630
|
+
sessionId,
|
|
2631
|
+
})
|
|
2632
|
+
).additionalContext;
|
|
2611
2633
|
if (ctx) messages.push({ role: "system", content: ctx });
|
|
2612
2634
|
} catch (_err) {
|
|
2613
2635
|
// best-effort
|
|
@@ -3453,6 +3475,7 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
3453
3475
|
parsed.hello,
|
|
3454
3476
|
);
|
|
3455
3477
|
applyNegotiationToGate(negotiated, fieldGate);
|
|
3478
|
+
settlePermissionDecisionGate(fieldGate.permission_decision !== false);
|
|
3456
3479
|
emit({
|
|
3457
3480
|
type: "system",
|
|
3458
3481
|
subtype: "negotiated",
|
|
@@ -3466,6 +3489,9 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
3466
3489
|
});
|
|
3467
3490
|
continue;
|
|
3468
3491
|
}
|
|
3492
|
+
if (fieldGate.permission_decision == null) {
|
|
3493
|
+
settlePermissionDecisionGate(true);
|
|
3494
|
+
}
|
|
3469
3495
|
if (parsed.interrupt) {
|
|
3470
3496
|
currentAbort?.abort();
|
|
3471
3497
|
continue;
|
|
@@ -3706,13 +3732,7 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
3706
3732
|
const compactionCallId = `compact-${++slashRequestSeq}`;
|
|
3707
3733
|
let compactionProviderStarted = false;
|
|
3708
3734
|
try {
|
|
3709
|
-
|
|
3710
|
-
messages: compacted,
|
|
3711
|
-
stats,
|
|
3712
|
-
degradedEvent,
|
|
3713
|
-
usageEvent,
|
|
3714
|
-
usageUnknownEvent,
|
|
3715
|
-
} = await compactConversationWithProvider(messages, {
|
|
3735
|
+
const providerCompactionOptions = {
|
|
3716
3736
|
provider,
|
|
3717
3737
|
model,
|
|
3718
3738
|
baseUrl,
|
|
@@ -3746,7 +3766,84 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
3746
3766
|
compactionProviderStarted = true;
|
|
3747
3767
|
return compactionCallId;
|
|
3748
3768
|
},
|
|
3749
|
-
}
|
|
3769
|
+
};
|
|
3770
|
+
const { resolveCliContextMemoryCutover } =
|
|
3771
|
+
await import("../lib/context-memory-kernel/authority.js");
|
|
3772
|
+
const cutover = resolveCliContextMemoryCutover({
|
|
3773
|
+
env: options.contextMemoryEnv || process.env,
|
|
3774
|
+
scopeKey: `cli:session:${sessionId}`,
|
|
3775
|
+
});
|
|
3776
|
+
if (cutover.canonical) {
|
|
3777
|
+
const { compactLiveMessagesCanonical } =
|
|
3778
|
+
await import("../lib/context-memory-kernel/live-compaction.js");
|
|
3779
|
+
let compatibilityResult = null;
|
|
3780
|
+
const canonical = await compactLiveMessagesCanonical(messages, {
|
|
3781
|
+
compressor: {
|
|
3782
|
+
maxTokens: Math.max(
|
|
3783
|
+
256,
|
|
3784
|
+
Math.floor(estimateMessagesTokens(messages) * 0.6),
|
|
3785
|
+
),
|
|
3786
|
+
compress: async (dropped) => {
|
|
3787
|
+
compatibilityResult = await compactConversationWithProvider(
|
|
3788
|
+
dropped,
|
|
3789
|
+
providerCompactionOptions,
|
|
3790
|
+
);
|
|
3791
|
+
return compatibilityResult;
|
|
3792
|
+
},
|
|
3793
|
+
},
|
|
3794
|
+
sessionId,
|
|
3795
|
+
operationId: `manual-${randomUUID()}`,
|
|
3796
|
+
provider,
|
|
3797
|
+
model,
|
|
3798
|
+
env: options.contextMemoryEnv || process.env,
|
|
3799
|
+
persist,
|
|
3800
|
+
trigger: "manual",
|
|
3801
|
+
...(persist
|
|
3802
|
+
? {
|
|
3803
|
+
commit: (canonicalStats, output, settlement = {}) => {
|
|
3804
|
+
sessionHostLease?.assert?.();
|
|
3805
|
+
return requireSynchronousRecoveryResult(
|
|
3806
|
+
store.appendCompactEventIfMessagesMatch(
|
|
3807
|
+
sessionId,
|
|
3808
|
+
{
|
|
3809
|
+
...canonicalStats,
|
|
3810
|
+
trigger: "manual",
|
|
3811
|
+
messages: projectCanonicalResumeMessages(output, {
|
|
3812
|
+
strict: true,
|
|
3813
|
+
}),
|
|
3814
|
+
},
|
|
3815
|
+
settlement.expectedMessages,
|
|
3816
|
+
),
|
|
3817
|
+
"appendCompactEventIfMessagesMatch",
|
|
3818
|
+
);
|
|
3819
|
+
},
|
|
3820
|
+
}
|
|
3821
|
+
: {}),
|
|
3822
|
+
});
|
|
3823
|
+
compacted = canonical.messages;
|
|
3824
|
+
stats = canonical.stats;
|
|
3825
|
+
degradedEvent = compatibilityResult?.degradedEvent || null;
|
|
3826
|
+
usageEvent = compatibilityResult?.usageEvent || null;
|
|
3827
|
+
usageUnknownEvent = compatibilityResult?.usageUnknownEvent || null;
|
|
3828
|
+
if (canonical.receipt.status === "stale") {
|
|
3829
|
+
const error = new Error(
|
|
3830
|
+
"session messages changed during canonical compaction",
|
|
3831
|
+
);
|
|
3832
|
+
error.code = "SESSION_REVISION_STALE";
|
|
3833
|
+
throw error;
|
|
3834
|
+
}
|
|
3835
|
+
} else {
|
|
3836
|
+
({
|
|
3837
|
+
messages: compacted,
|
|
3838
|
+
stats,
|
|
3839
|
+
degradedEvent,
|
|
3840
|
+
usageEvent,
|
|
3841
|
+
usageUnknownEvent,
|
|
3842
|
+
} = await compactConversationWithProvider(
|
|
3843
|
+
messages,
|
|
3844
|
+
providerCompactionOptions,
|
|
3845
|
+
));
|
|
3846
|
+
}
|
|
3750
3847
|
} catch (error) {
|
|
3751
3848
|
if (isAbortError(error) || options.signal?.aborted) throw error;
|
|
3752
3849
|
if (error?.runtimeLedgerPersistence === true) throw error;
|
|
@@ -3840,7 +3937,11 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
3840
3937
|
const shouldPersistCompact = stats?.strategy !== "none";
|
|
3841
3938
|
let settlementError = null;
|
|
3842
3939
|
let persistenceFailure = null;
|
|
3843
|
-
if (
|
|
3940
|
+
if (
|
|
3941
|
+
persist &&
|
|
3942
|
+
shouldPersistCompact &&
|
|
3943
|
+
stats?.canonicalAlreadySettled !== true
|
|
3944
|
+
) {
|
|
3844
3945
|
try {
|
|
3845
3946
|
sessionHostLease?.assert?.();
|
|
3846
3947
|
requireSynchronousRecoveryResult(
|
|
@@ -4218,7 +4319,7 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
4218
4319
|
try {
|
|
4219
4320
|
const { runUserPromptSubmitHooks } =
|
|
4220
4321
|
await import("../lib/settings-hook-events.js");
|
|
4221
|
-
const ups = runUserPromptSubmitHooks(settingsHooks, {
|
|
4322
|
+
const ups = await runUserPromptSubmitHooks(settingsHooks, {
|
|
4222
4323
|
prompt: userContent,
|
|
4223
4324
|
cwd,
|
|
4224
4325
|
sessionId,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{P as a,J as p,b as c}from"./vendor-Bn1JzzAn.js";import{r as s}from"./markdown-Yo_c6Krv.js";import{_ as d}from"./index-3_CEBEEf.js";const _={__name:"MarkdownRenderer",props:{content:{type:String,default:""}},setup(t,{expose:o}){o();const e=t,r=c(()=>s(e.content||"")),n={props:e,rendered:r,computed:c,get renderMarkdown(){return s}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}},i=["innerHTML"];function m(t,o,e,r,n,u){return a(),p("div",{class:"markdown-content",innerHTML:r.rendered},null,8,i)}const w=d(_,[["render",m],["__scopeId","data-v-0b0b9f63"],["__file","/tmp/cc-web-panel-Ix5cmp/repo/packages/web-panel/src/components/MarkdownRenderer.vue"]]);export{w as M};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as c,J as g,c as l,K as r,N as u,P as h,U as o,R as t,Q as m}from"./vendor-Bn1JzzAn.js";import{_ as v,b}from"./index-3_CEBEEf.js";import{a8 as y,M}from"./icons-DG5UD-6K.js";const x={__name:"MobileProjects",setup(p,{expose:i}){i();const n=u(),{t:e}=b();function a(){n.push("/projects")}function _(){n.push("/mobile-bridge")}const s={router:n,t:e,goToProjects:a,goToMobileBridge:_,get useRouter(){return u},get useI18n(){return b},get MobileOutlined(){return M},get FolderOutlined(){return y}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},B={class:"mobile-projects-placeholder"},O={class:"title"},k={class:"subtitle"},w={class:"explainer"};function T(p,i,n,e,a,_){const s=c("a-alert"),d=c("a-button"),f=c("a-space"),P=c("a-empty"),j=c("a-card");return h(),g("div",B,[l(j,null,{default:r(()=>[l(P,{description:!1},{image:r(()=>[l(e.MobileOutlined,{style:{fontSize:"64px",color:"#bfbfbf"}})]),default:r(()=>[o("h2",O,t(e.t("mobileProjects.title")),1),o("p",k,t(e.t("mobileProjects.subtitle")),1),l(s,{message:e.t("mobileProjects.v02Banner"),type:"info","show-icon":"",class:"banner"},null,8,["message"]),o("div",w,[o("h3",null,t(e.t("mobileProjects.currentDirection")),1),o("p",null,t(e.t("mobileProjects.currentDirectionBody")),1),o("ul",null,[o("li",null,t(e.t("mobileProjects.stepPhone")),1),o("li",null,t(e.t("mobileProjects.stepTap")),1),o("li",null,t(e.t("mobileProjects.stepPull")),1)]),o("h3",null,t(e.t("mobileProjects.reverseDirection")),1),o("p",null,t(e.t("mobileProjects.reverseDirectionBody")),1)]),l(f,{class:"actions"},{default:r(()=>[l(d,{type:"primary",onClick:e.goToProjects},{default:r(()=>[l(e.FolderOutlined),m(" "+t(e.t("mobileProjects.viewLocalProjects")),1)]),_:1}),l(d,{onClick:e.goToMobileBridge},{default:r(()=>[l(e.MobileOutlined),m(" "+t(e.t("mobileProjects.checkBridge")),1)]),_:1})]),_:1})]),_:1})]),_:1})])}const N=v(x,[["render",T],["__scopeId","data-v-9262cc45"],["__file","/tmp/cc-web-panel-Ix5cmp/repo/packages/web-panel/src/views/MobileProjects.vue"]]);export{N as default};
|