chainlesschain 0.166.10 → 0.166.13
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-BN25cNOD.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-CpeSttcu.js → ActionButton-Da9IP-m5.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-Ba1TNLG0.js → Analytics-D7hkEvQm.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-xBy8EOeg.js → AppLayout-CCV4Xnbc.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-CJ_3TFb8.js → Artifacts-CVSnVJeA.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-DUATFCG3.js → Audit-CuYdw5Ag.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-BRXYPIGp.js → BackgroundAgents-DZCnK-Tf.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-D8auLx7y.js → Backup-cV9FdpTy.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-CBgdslQ3.js → BaseInput-BRnv6YSp.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-B32LvAiE.js → Chat-Bw5w87P4.js} +5 -5
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-CVfvAy-n.js → ChatBubbleRenderer-C0GjtUAw.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-BwzBxOpC.js → Checkbox-DaoTqcdt.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-0U5vrg1H.js → Codegen-B4dYcEIi.js} +1 -1
- package/src/assets/web-panel/assets/{Col-dZ2i4aAj.js → Col-mAhuOeuD.js} +1 -1
- package/src/assets/web-panel/assets/{Community-UVvpLr8c.js → Community-BK6KEdBk.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-BDNEb1Bd.js → Compact-CCglmNu5.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-BrzQPxyS.js → Compliance-Cm8S4of7.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-BbgGsu-9.js → Cowork-Dhs1QLMe.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-G321XPhp.js → Cron-CLlhmXWk.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-CgLNUyMn.js → Crosschain-BnHVbaNs.js} +1 -1
- package/src/assets/web-panel/assets/{DID-BAfRj18q.js → DID-UzQP9-0O.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-BNIxA4TK.js → Dashboard-CBdlPClz.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-BLAUmCAN.js → Dropdown-axIRPdq1.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-CsnhTW22.js → EmailListRenderer-DUalW5rx.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-zcQ7Ip1n.js → FamilyGuardDashboard-Bl4W9luY.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-KFwxodNU.js → Federation-C1yP-uEu.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-3CYRLEHG.js → FormItemContext-Xh6Ig5q8.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-D3d9D8L9.js → GenericCardRenderer-C2cz3bt2.js} +1 -1
- package/src/assets/web-panel/assets/{Git-BJ202nJY.js → Git-C_z63ixg.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-ClnnXVQ-.js → Governance-BYqB33_3.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-DNU-PTkc.js → Inference-CEULuArm.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-DJuinbuY.js → KnowledgeGraph-fgMsu-0H.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-D4No-46s.js → Logs-DO9Hdcec.js} +2 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-BkrK04xW.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-Ba-KqRN3.js → Marketplace-B8zyLiFe.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-DVoxnPgE.js → McpTools-BLAN2mWW.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-D_C8gzAZ.js → Memory-CrQcFM7u.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-DnzTPcDH.js → MobileBridge-DVnyiiU-.js} +1 -1
- package/src/assets/web-panel/assets/MobileProjects-qjCME5OD.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-CvEHmHId.js → Mtc-4JE3C3It.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-VNJmWqmv.js → MtcAudit-CjBuak9I.js} +5 -5
- package/src/assets/web-panel/assets/{Multisig-BO0x_Vsa.js → Multisig-BtPcYQcC.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-CM2gI1UY.js → NLProgramming-Cx653_Ba.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-CMc1HsML.js → Notes-CkuD3YzS.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-DGNmSKGM.js → NotificationSettings-BgNgU7HH.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-Du-Kct3p.js → OrderTableRenderer-BTC8W0a-.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-DRtRZjas.js → Organization-Dmd4Hjxz.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-Dp4OeWsn.js → Overflow-C_5DA-G0.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-DXMJVls8.js → P2P-uwslV4XC.js} +2 -2
- package/src/assets/web-panel/assets/PdhVaultBrowser-CuNgwVnX.js +7 -0
- package/src/assets/web-panel/assets/{Permissions-D1Hbb51o.js → Permissions-CJayVX9H.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-BridiDhr.js → PersonalDataHub-Cb05H5go.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-B4bUNCm1.js → Pipeline-BZlGKapZ.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-BTu_HEqK.js → Privacy-BIzZWYzd.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-SVtL2hnt.js → ProjectInit-vEYYyQXQ.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-B2Sh7JZ2.js → ProjectSettings-MZqTy5CC.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-BwU1xalW.js → Projects-CRARUOl8.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-BWdWQSDw.js → Providers-80VAK8PX.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-Brzc-Sxb.js → QrScannerModal-CzRSoIwK.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-DIBz7FCe.js → QuickAsk-BpwQ2n4C.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-CZ8RriIJ.js → Recommend-BC03TZ79.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-CM0KJQ3t.js → RemoteSession-DE59-jaa.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-D_wo8H0O.js → Reputation-DOHmeWyA.js} +1 -1
- package/src/assets/web-panel/assets/{Row-D1G1fD7N.js → Row-hc5RZl1D.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-dKCVtA0K.js → RssFeed-Cv5uMP7E.js} +3 -3
- package/src/assets/web-panel/assets/{Search-Be1D61xo.js → Search-qohu7Ug0.js} +1 -1
- package/src/assets/web-panel/assets/{Security-IbNiR6OC.js → Security-drCPFWV5.js} +4 -4
- package/src/assets/web-panel/assets/{Services-nuHK8y8p.js → Services-BAEgUeRy.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-DnM5jdnC.js → Skeleton-CkJkKBlo.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-DCTdoq_q.js → Skills-bMuKEpez.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-DlWun-Ui.js → Sla-DxWQVHRC.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-C19kv2sd.js → SpeechSettings-BpS8idmV.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-CkQIR_Hu.js → SyncSettings-BPBLlW5v.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-DdbqOEbs.js → Tasks-C4SLEeUh.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-B7GpIXeo.js → Templates-r-wfU39U.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-ByEstFhY.js → Tenant-C7vjRmLN.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-BKRVID1a.js → Terminal-DdzeFCV2.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-CNS3dHNv.js → TimelineRenderer-CYyWN2KD.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-BykqylCL.js → Tokens-D8A9osUg.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-ByNxq51W.js → Trigger-DBvrNlyS.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-BlrFsdaS.js → Trust-DBVAGc7o.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-Dg26A-sd.js → UkeySign-C1vQUCRJ.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-C1wUxNn0.js → VideoEditing-BKs4dah4.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-OphEUzI4.js → Wallet-ByIuj3lD.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-_8lL08hF.js → WebAuthn-DYlAFCm9.js} +3 -3
- package/src/assets/web-panel/assets/{WorkflowEditor-BnTuIvnP.js → WorkflowEditor-Dwyadd0c.js} +1 -1
- package/src/assets/web-panel/assets/{chat-3N3VLQYr.js → chat-Bm2f3s08.js} +1 -1
- package/src/assets/web-panel/assets/{colors-Bo_G96gg.js → colors-C8ORSh7V.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-DjubfjI_.js → compact-item-1iVlnsM-.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-Cx_HSLCk.js → createContext-CmqNyUSL.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-B69RCDDH.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-D5OjAOlA.js → hasIn-rUMaX3Ul.js} +1 -1
- package/src/assets/web-panel/assets/index-9biMQ-tw.js +1 -0
- package/src/assets/web-panel/assets/{index-Bj7S5IJw.js → index-B53c3diB.js} +1 -1
- package/src/assets/web-panel/assets/{index-C-_Cy0k_.js → index-B59OWAs7.js} +1 -1
- package/src/assets/web-panel/assets/{index-DaU60K3A.js → index-B8BrB0Ls.js} +1 -1
- package/src/assets/web-panel/assets/{index-UnpsQ6A0.js → index-BC32_0xT.js} +1 -1
- package/src/assets/web-panel/assets/{index-BScGr1BY.js → index-BC8Wb6cy.js} +1 -1
- package/src/assets/web-panel/assets/{index-CC7RnaPP.js → index-BCOhTILd.js} +1 -1
- package/src/assets/web-panel/assets/{index-DXJqa1-I.js → index-BFniLMn9.js} +1 -1
- package/src/assets/web-panel/assets/{index-C-4sfa0l.js → index-BIvM-uAX.js} +1 -1
- package/src/assets/web-panel/assets/{index-C8dPFFhy.js → index-BK-RY0-7.js} +1 -1
- package/src/assets/web-panel/assets/{index-CVPDhmVH.js → index-BQL9r73Y.js} +1 -1
- package/src/assets/web-panel/assets/{index-CqZq3zWr.js → index-BVtnizyC.js} +1 -1
- package/src/assets/web-panel/assets/{index-C5IwN9q3.js → index-Bf1PlIHp.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cz5tQ5PY.js → index-Bgw4Y2rU.js} +1 -1
- package/src/assets/web-panel/assets/{index-CmLwI-Y8.js → index-BgwLNxmr.js} +1 -1
- package/src/assets/web-panel/assets/{index-Y-H7j25u.js → index-C-J5-pGH.js} +1 -1
- package/src/assets/web-panel/assets/{index-ydnEPOzZ.js → index-C-ZIHi42.js} +1 -1
- package/src/assets/web-panel/assets/{index-HioDjvUF.js → index-C3B1S-mW.js} +1 -1
- package/src/assets/web-panel/assets/{index-CRKk1JPX.js → index-C5RfRciU.js} +1 -1
- package/src/assets/web-panel/assets/{index-x7o-2T3S.js → index-CCEyz58d.js} +1 -1
- package/src/assets/web-panel/assets/index-COie87kl.js +1 -0
- package/src/assets/web-panel/assets/{index-BvYo09C0.js → index-CTfEmKK0.js} +1 -1
- package/src/assets/web-panel/assets/{index-CCjq3g32.js → index-CfiHyVyl.js} +1 -1
- package/src/assets/web-panel/assets/{index-3_CEBEEf.js → index-CkFvuAex.js} +3 -3
- package/src/assets/web-panel/assets/{index-EZr3bvz2.js → index-D98FXb0w.js} +1 -1
- package/src/assets/web-panel/assets/{index-C4MAnkl5.js → index-DDHk911Q.js} +1 -1
- package/src/assets/web-panel/assets/{index-BgPb37tI.js → index-DJxtPFOh.js} +1 -1
- package/src/assets/web-panel/assets/{index-CNmsP0Xf.js → index-DVJ1uKf4.js} +1 -1
- package/src/assets/web-panel/assets/{index-DBvZhdCb.js → index-Dcck8QfW.js} +1 -1
- package/src/assets/web-panel/assets/{index-B905-Mcs.js → index-DgUE51Pz.js} +1 -1
- package/src/assets/web-panel/assets/{index-DrVjatPe.js → index-Dsve5Gkv.js} +1 -1
- package/src/assets/web-panel/assets/{index-uAcJUJkx.js → index-DvedhJeM.js} +1 -1
- package/src/assets/web-panel/assets/{index-DD1zSPZH.js → index-DwMdWKiF.js} +1 -1
- package/src/assets/web-panel/assets/{index-BxgIE4PD.js → index-OcbzdRpT.js} +1 -1
- package/src/assets/web-panel/assets/{index-Ce8EWU6r.js → index-fPK6GFEg.js} +1 -1
- package/src/assets/web-panel/assets/{index-DlcbE0sX.js → index-geQinnns.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dbdr8tVi.js → index-pHWA7bmM.js} +1 -1
- package/src/assets/web-panel/assets/{index-DE4XtzMl.js → index-reUHhuz8.js} +1 -1
- package/src/assets/web-panel/assets/{index-Q_vn0t8d.js → index-tqTx5wXo.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-DurpENJY.js → initDefaultProps-CuA-cpkL.js} +1 -1
- package/src/assets/web-panel/assets/{motion-CIh-z-gR.js → motion-CimmE_9b.js} +1 -1
- package/src/assets/web-panel/assets/{move-Uc_yI2NA.js → move-DlGlrltz.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-DUevj5wz.js → mtc-parser-CK6BJQ07.js} +1 -1
- package/src/assets/web-panel/assets/{omit-85eMYyur.js → omit-BKjBfZfB.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-AuxDD20F.js → pickAttrs-B2chVYw9.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-DOWn8dd1.js → placementArrow-BW8aLJJ3.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-CPxTWodH.js → responsiveObserve-dXlPl66S.js} +1 -1
- package/src/assets/web-panel/assets/{slide-BqvbGPjx.js → slide-hSa89S4G.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-BzXKkV8d.js → statusUtils-DM6KLt-s.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-B2O7yRk3.js → styleChecker-C9MQAK15.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-DRWp7px1.js → useFlexGapSupport-BpQDpP0z.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-Dp0V7sjM.js → useFs-C7rtRViA.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-CyCrG3ql.js → usePersonalDataHub-Dm15xafq.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-CXhoFpFo.js → vnode-mEiEytw4.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-0z3mtwEg.js → zoom-DzPxflhY.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 +51 -20
- 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/serve.js +94 -10
- package/src/commands/session.js +2 -3
- package/src/commands/team.js +7 -1
- package/src/data/changelog.json +28 -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 +14 -4
- package/src/lib/agent-team/team-distributed-graph-bridge.js +3 -3
- 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/index.js +208 -16
- 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 +40 -33
- 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
package/src/repl/agent-repl.js
CHANGED
|
@@ -22,7 +22,7 @@ import chalk from "chalk";
|
|
|
22
22
|
import fs from "fs";
|
|
23
23
|
import os from "os";
|
|
24
24
|
import path from "path";
|
|
25
|
-
import { randomUUID } from "node:crypto";
|
|
25
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
26
26
|
import { isPromise, isProxy } from "node:util/types";
|
|
27
27
|
import { logger } from "../lib/logger.js";
|
|
28
28
|
import { captureAmbientExecutionLocation } from "../lib/execution-location-runtime.js";
|
|
@@ -513,7 +513,7 @@ async function _fireNotification(message, type = "info", session = null) {
|
|
|
513
513
|
try {
|
|
514
514
|
const { runObserveHooks } =
|
|
515
515
|
await import("../lib/settings-hook-events.js");
|
|
516
|
-
runObserveHooks(
|
|
516
|
+
await runObserveHooks(
|
|
517
517
|
_settingsHooks,
|
|
518
518
|
"Notification",
|
|
519
519
|
{
|
|
@@ -1861,7 +1861,28 @@ export function settleReplCompactionCandidate({
|
|
|
1861
1861
|
return { applied: false, error };
|
|
1862
1862
|
}
|
|
1863
1863
|
|
|
1864
|
-
if (
|
|
1864
|
+
if (
|
|
1865
|
+
stats?.canonicalReceipt &&
|
|
1866
|
+
!["committed", "degraded"].includes(stats.canonicalReceipt.status)
|
|
1867
|
+
) {
|
|
1868
|
+
const error = new Error(
|
|
1869
|
+
stats.canonicalReceipt.status === "stale"
|
|
1870
|
+
? "REPL session changed during canonical compaction"
|
|
1871
|
+
: "canonical compaction requires reconciliation",
|
|
1872
|
+
);
|
|
1873
|
+
error.code =
|
|
1874
|
+
stats.canonicalReceipt.status === "stale"
|
|
1875
|
+
? "SESSION_REVISION_STALE"
|
|
1876
|
+
: "CC_COMPACTION_RECONCILIATION_REQUIRED";
|
|
1877
|
+
return { applied: false, error };
|
|
1878
|
+
}
|
|
1879
|
+
|
|
1880
|
+
if (
|
|
1881
|
+
useJsonl &&
|
|
1882
|
+
sessionId &&
|
|
1883
|
+
stats?.strategy !== "none" &&
|
|
1884
|
+
stats?.canonicalAlreadySettled !== true
|
|
1885
|
+
) {
|
|
1865
1886
|
try {
|
|
1866
1887
|
persistence.persist(sessionId, {
|
|
1867
1888
|
...stats,
|
|
@@ -3332,8 +3353,16 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
3332
3353
|
// Continue without DB — static prompt fallback
|
|
3333
3354
|
}
|
|
3334
3355
|
|
|
3335
|
-
// Initialize prompt compressor (adaptive to model's context window)
|
|
3336
|
-
|
|
3356
|
+
// Initialize prompt compressor (adaptive to model's context window). A
|
|
3357
|
+
// canonical cutover cannot disable the Kernel writer by toggling the legacy
|
|
3358
|
+
// compressor feature flag; the compressor remains only its summarizer.
|
|
3359
|
+
const { resolveCliContextMemoryCutover } =
|
|
3360
|
+
await import("../lib/context-memory-kernel/authority.js");
|
|
3361
|
+
const contextMemoryCutover = resolveCliContextMemoryCutover({
|
|
3362
|
+
env: options.contextMemoryEnv || process.env,
|
|
3363
|
+
scopeKey: sessionId ? `cli:session:${sessionId}` : "cli:repl",
|
|
3364
|
+
});
|
|
3365
|
+
if (feature("PROMPT_COMPRESSOR") || contextMemoryCutover.canonical) {
|
|
3337
3366
|
_compressor = new PromptCompressor({
|
|
3338
3367
|
model,
|
|
3339
3368
|
provider,
|
|
@@ -3358,6 +3387,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
3358
3387
|
extraToolDefinitions: [],
|
|
3359
3388
|
hostManagedToolPolicy: null,
|
|
3360
3389
|
contextEngine: null,
|
|
3390
|
+
contextMemorySkipPlanning: true,
|
|
3361
3391
|
maxOutputTokens: 2048,
|
|
3362
3392
|
}),
|
|
3363
3393
|
});
|
|
@@ -3371,6 +3401,40 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
3371
3401
|
};
|
|
3372
3402
|
},
|
|
3373
3403
|
});
|
|
3404
|
+
if (contextMemoryCutover.canonical) {
|
|
3405
|
+
const compatibilitySummarizer = _compressor;
|
|
3406
|
+
const { compactLiveMessagesCanonical } =
|
|
3407
|
+
await import("../lib/context-memory-kernel/live-compaction.js");
|
|
3408
|
+
_compressor = {
|
|
3409
|
+
canonicalKernel: true,
|
|
3410
|
+
maxTokens: compatibilitySummarizer.maxTokens,
|
|
3411
|
+
shouldAutoCompact: (currentMessages) =>
|
|
3412
|
+
compatibilitySummarizer.shouldAutoCompact(currentMessages),
|
|
3413
|
+
compress: (currentMessages, compressOptions = {}) =>
|
|
3414
|
+
compactLiveMessagesCanonical(currentMessages, {
|
|
3415
|
+
compressor: compatibilitySummarizer,
|
|
3416
|
+
compressOptions,
|
|
3417
|
+
sessionId: sessionId || undefined,
|
|
3418
|
+
operationId: `repl-${randomUUID()}`,
|
|
3419
|
+
provider,
|
|
3420
|
+
model,
|
|
3421
|
+
env: options.contextMemoryEnv || process.env,
|
|
3422
|
+
persist: useJsonl && Boolean(sessionId),
|
|
3423
|
+
trigger: "repl",
|
|
3424
|
+
...(useJsonl && sessionId
|
|
3425
|
+
? {
|
|
3426
|
+
commit: (canonicalStats, output) => {
|
|
3427
|
+
_sessionHostLeaseScope?.lease?.assert?.();
|
|
3428
|
+
return _replCompactPersistence.persist(sessionId, {
|
|
3429
|
+
...canonicalStats,
|
|
3430
|
+
messages: output,
|
|
3431
|
+
});
|
|
3432
|
+
},
|
|
3433
|
+
}
|
|
3434
|
+
: {}),
|
|
3435
|
+
}),
|
|
3436
|
+
};
|
|
3437
|
+
}
|
|
3374
3438
|
}
|
|
3375
3439
|
const _autoPinOpt = resolveAutoPinOption({ config: _autoPinCfgValue });
|
|
3376
3440
|
// Compaction options shared by /compact + auto-compact. Adds the
|
|
@@ -3390,7 +3454,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
3390
3454
|
db,
|
|
3391
3455
|
process.cwd(),
|
|
3392
3456
|
);
|
|
3393
|
-
if (permanentMemoryStorage) {
|
|
3457
|
+
if (permanentMemoryStorage && !contextMemoryCutover.canonical) {
|
|
3394
3458
|
permanentMemory = new CLIPermanentMemory(permanentMemoryStorage);
|
|
3395
3459
|
permanentMemory.initialize();
|
|
3396
3460
|
}
|
|
@@ -3695,13 +3759,13 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
3695
3759
|
effectiveHooks._authorityErrors.length > 0
|
|
3696
3760
|
? effectiveHooks
|
|
3697
3761
|
: null;
|
|
3698
|
-
//
|
|
3699
|
-
//
|
|
3762
|
+
// Explain the explicit content-bound trust gate. Displaying the notice
|
|
3763
|
+
// never authorizes project Hooks; only `cc hook trust` does.
|
|
3700
3764
|
try {
|
|
3701
3765
|
const notice = projectHookTrustNotice({ cwd: process.cwd() });
|
|
3702
3766
|
if (notice) process.stderr.write(notice + "\n");
|
|
3703
3767
|
} catch {
|
|
3704
|
-
/*
|
|
3768
|
+
/* notice output is best-effort; the runtime gate is fail-closed */
|
|
3705
3769
|
}
|
|
3706
3770
|
} catch (_err) {
|
|
3707
3771
|
_settingsHooks = {};
|
|
@@ -4137,11 +4201,13 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
4137
4201
|
try {
|
|
4138
4202
|
const { runInstructionsLoadedHooks } =
|
|
4139
4203
|
await import("../lib/settings-hook-events.js");
|
|
4140
|
-
const ctx =
|
|
4141
|
-
|
|
4142
|
-
|
|
4143
|
-
|
|
4144
|
-
|
|
4204
|
+
const ctx = (
|
|
4205
|
+
await runInstructionsLoadedHooks(_settingsHooks, {
|
|
4206
|
+
files: _loadedReplInstructions.files,
|
|
4207
|
+
cwd: process.cwd(),
|
|
4208
|
+
sessionId,
|
|
4209
|
+
})
|
|
4210
|
+
).additionalContext;
|
|
4145
4211
|
if (ctx) messages.push({ role: "system", content: ctx });
|
|
4146
4212
|
} catch (_err) {
|
|
4147
4213
|
// best-effort
|
|
@@ -4153,10 +4219,12 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
4153
4219
|
try {
|
|
4154
4220
|
const { runSessionStartHooks } =
|
|
4155
4221
|
await import("../lib/settings-hook-events.js");
|
|
4156
|
-
const ctx =
|
|
4157
|
-
|
|
4158
|
-
|
|
4159
|
-
|
|
4222
|
+
const ctx = (
|
|
4223
|
+
await runSessionStartHooks(_settingsHooks, {
|
|
4224
|
+
source: "startup",
|
|
4225
|
+
cwd: process.cwd(),
|
|
4226
|
+
})
|
|
4227
|
+
).additionalContext;
|
|
4160
4228
|
if (ctx) messages.push({ role: "system", content: ctx });
|
|
4161
4229
|
} catch (_err) {
|
|
4162
4230
|
// best-effort
|
|
@@ -4216,19 +4284,63 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
4216
4284
|
try {
|
|
4217
4285
|
const { loadBundle } =
|
|
4218
4286
|
await import("@chainlesschain/session-core/agent-bundle-loader");
|
|
4219
|
-
const { resolveBundle } =
|
|
4287
|
+
const { parseUserMdSeed, resolveBundle } =
|
|
4220
4288
|
await import("@chainlesschain/session-core/agent-bundle-resolver");
|
|
4221
|
-
const { getMemoryStore } =
|
|
4222
|
-
await import("../lib/session-core-singletons.js");
|
|
4223
4289
|
const bundle = loadBundle(options.bundlePath);
|
|
4224
|
-
|
|
4225
|
-
|
|
4226
|
-
|
|
4227
|
-
|
|
4228
|
-
|
|
4229
|
-
|
|
4230
|
-
}
|
|
4231
|
-
|
|
4290
|
+
if (contextMemoryCutover.canonical) {
|
|
4291
|
+
_bundleResolved = resolveBundle(bundle);
|
|
4292
|
+
const { createCliCanonicalMemoryService } =
|
|
4293
|
+
await import("../lib/context-memory-kernel/memory-service.js");
|
|
4294
|
+
const memoryService = createCliCanonicalMemoryService({
|
|
4295
|
+
env: options.contextMemoryEnv || process.env,
|
|
4296
|
+
});
|
|
4297
|
+
const bundleId = String(bundle.manifest?.id || "unknown");
|
|
4298
|
+
const userId = options.agentId || "local-user";
|
|
4299
|
+
const entries = parseUserMdSeed(bundle.userMd);
|
|
4300
|
+
let seeded = 0;
|
|
4301
|
+
let skipped = 0;
|
|
4302
|
+
for (const [index, entry] of entries.entries()) {
|
|
4303
|
+
const seedDigest = createHash("sha256")
|
|
4304
|
+
.update(
|
|
4305
|
+
JSON.stringify([
|
|
4306
|
+
"chainlesschain.agent-bundle-user-seed/v1",
|
|
4307
|
+
bundleId,
|
|
4308
|
+
index,
|
|
4309
|
+
entry.category,
|
|
4310
|
+
entry.content,
|
|
4311
|
+
]),
|
|
4312
|
+
)
|
|
4313
|
+
.digest("hex");
|
|
4314
|
+
const ensured = await memoryService.ensureScoped(entry.content, {
|
|
4315
|
+
memoryId: `bundle-${seedDigest.slice(0, 32)}`,
|
|
4316
|
+
scope: "user",
|
|
4317
|
+
scopeId: userId,
|
|
4318
|
+
category: entry.category,
|
|
4319
|
+
source: "agent-bundle",
|
|
4320
|
+
actor: `bundle:${bundleId}`,
|
|
4321
|
+
evidenceStore: "agent-bundle",
|
|
4322
|
+
evidenceId: `${bundleId}-${index}`,
|
|
4323
|
+
tags: [
|
|
4324
|
+
"bundle-seed",
|
|
4325
|
+
`bundle:${bundleId}`,
|
|
4326
|
+
"user-seed",
|
|
4327
|
+
entry.category,
|
|
4328
|
+
],
|
|
4329
|
+
});
|
|
4330
|
+
if (ensured.created) seeded += 1;
|
|
4331
|
+
else skipped += 1;
|
|
4332
|
+
}
|
|
4333
|
+
_bundleResolved.seedResult = { seeded, skipped };
|
|
4334
|
+
} else {
|
|
4335
|
+
const { getMemoryStore } =
|
|
4336
|
+
await import("../lib/session-core-singletons.js");
|
|
4337
|
+
_bundleResolved = resolveBundle(bundle, {
|
|
4338
|
+
memoryStore: getMemoryStore(),
|
|
4339
|
+
seedOptions: {
|
|
4340
|
+
userId: options.agentId || null,
|
|
4341
|
+
},
|
|
4342
|
+
});
|
|
4343
|
+
}
|
|
4232
4344
|
|
|
4233
4345
|
if (_bundleResolved.systemPrompt) {
|
|
4234
4346
|
messages.push({
|
|
@@ -4492,17 +4604,18 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
4492
4604
|
// Apply bundle approval policy to this session (after both gate and sessionId are ready)
|
|
4493
4605
|
if (_bundleResolved?.approvalPolicy?.default && _approvalGate && sessionId) {
|
|
4494
4606
|
try {
|
|
4495
|
-
_approvalGate.setSessionPolicy(
|
|
4607
|
+
await _approvalGate.setSessionPolicy(
|
|
4496
4608
|
sessionId,
|
|
4497
4609
|
_bundleResolved.approvalPolicy.default,
|
|
4498
4610
|
);
|
|
4611
|
+
await _approvalGate.awaitPersistence?.();
|
|
4499
4612
|
// Mirror it so Shift+Tab cycling starts from the real tier.
|
|
4500
4613
|
const applied = parsePermissionTier(
|
|
4501
4614
|
_bundleResolved.approvalPolicy.default,
|
|
4502
4615
|
);
|
|
4503
4616
|
if (applied) _sessionTier = applied;
|
|
4504
|
-
} catch (
|
|
4505
|
-
|
|
4617
|
+
} catch (error) {
|
|
4618
|
+
logger.warn(`Bundle approval policy was not persisted: ${error.message}`);
|
|
4506
4619
|
}
|
|
4507
4620
|
}
|
|
4508
4621
|
|
|
@@ -4515,14 +4628,15 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
4515
4628
|
const parsed = parsePermissionModeArg(options.permissionMode);
|
|
4516
4629
|
if (parsed && typeof _approvalGate.setSessionPolicy === "function") {
|
|
4517
4630
|
try {
|
|
4518
|
-
_approvalGate.setSessionPolicy(sessionId, parsed.tier);
|
|
4631
|
+
await _approvalGate.setSessionPolicy(sessionId, parsed.tier);
|
|
4632
|
+
await _approvalGate.awaitPersistence?.();
|
|
4519
4633
|
_sessionTier = parsed.auto
|
|
4520
4634
|
? "auto"
|
|
4521
4635
|
: parsed.dontAsk
|
|
4522
4636
|
? "dontAsk"
|
|
4523
4637
|
: parsed.tier;
|
|
4524
|
-
} catch (
|
|
4525
|
-
|
|
4638
|
+
} catch (error) {
|
|
4639
|
+
logger.warn(`Approval policy was not persisted: ${error.message}`);
|
|
4526
4640
|
}
|
|
4527
4641
|
}
|
|
4528
4642
|
}
|
|
@@ -4625,7 +4739,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
4625
4739
|
try {
|
|
4626
4740
|
const { runObserveHooks } =
|
|
4627
4741
|
await import("../lib/settings-hook-events.js");
|
|
4628
|
-
runObserveHooks(
|
|
4742
|
+
await runObserveHooks(
|
|
4629
4743
|
_settingsHooks,
|
|
4630
4744
|
"SessionResume",
|
|
4631
4745
|
{
|
|
@@ -5190,7 +5304,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
5190
5304
|
let _lastIdleEscAt = 0;
|
|
5191
5305
|
let _replKeypressHandler = null;
|
|
5192
5306
|
if (process.stdin.isTTY) {
|
|
5193
|
-
_replKeypressHandler = (_str, key) => {
|
|
5307
|
+
_replKeypressHandler = async (_str, key) => {
|
|
5194
5308
|
const k = key || {};
|
|
5195
5309
|
// 1) Turn abort always wins, regardless of vim mode.
|
|
5196
5310
|
if (k.name === "escape" && !k.meta && _turnAbort) {
|
|
@@ -5240,7 +5354,8 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
5240
5354
|
// (cycling is also how you exit auto mode without /permissions).
|
|
5241
5355
|
const next = nextTier(gateTierFor(_sessionTier));
|
|
5242
5356
|
try {
|
|
5243
|
-
_approvalGate.setSessionPolicy(sessionId, next);
|
|
5357
|
+
await _approvalGate.setSessionPolicy(sessionId, next);
|
|
5358
|
+
await _approvalGate.awaitPersistence?.();
|
|
5244
5359
|
_sessionTier = next;
|
|
5245
5360
|
process.stdout.write(
|
|
5246
5361
|
"\n" +
|
|
@@ -6697,7 +6812,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
6697
6812
|
const { runCwdChangedHooks, dispatchAsyncHooks } =
|
|
6698
6813
|
await import("../lib/settings-hook-events.js");
|
|
6699
6814
|
const payload = { oldCwd, newCwd, sessionId };
|
|
6700
|
-
runCwdChangedHooks(_settingsHooks, payload);
|
|
6815
|
+
await runCwdChangedHooks(_settingsHooks, payload);
|
|
6701
6816
|
if (!_asyncHookSupervisor) {
|
|
6702
6817
|
const { AsyncHookSupervisor } =
|
|
6703
6818
|
await import("../lib/async-hook-supervisor.js");
|
|
@@ -7251,6 +7366,13 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
7251
7366
|
// recent messages + the conversation flow). Safe (never orphans a tool
|
|
7252
7367
|
// pair); cheaper + less lossy than a full /compact.
|
|
7253
7368
|
if (trimmed === "/microcompact") {
|
|
7369
|
+
if (contextMemoryCutover.canonical) {
|
|
7370
|
+
logger.warn(
|
|
7371
|
+
"/microcompact is read-only after Context/Memory cutover; use /compact for canonical CAS/receipt semantics.",
|
|
7372
|
+
);
|
|
7373
|
+
prompt();
|
|
7374
|
+
return;
|
|
7375
|
+
}
|
|
7254
7376
|
const { microCompact } = await import("../lib/micro-compact.js");
|
|
7255
7377
|
const { messages: mc, stats } = microCompact(messages);
|
|
7256
7378
|
if (stats.trimmed > 0) {
|
|
@@ -7548,7 +7670,9 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
7548
7670
|
session_id: sessionId || null,
|
|
7549
7671
|
source: "reload-plugins",
|
|
7550
7672
|
};
|
|
7551
|
-
runObserveHooks(_settingsHooks, "ConfigChange", payload, {
|
|
7673
|
+
await runObserveHooks(_settingsHooks, "ConfigChange", payload, {
|
|
7674
|
+
cwd,
|
|
7675
|
+
});
|
|
7552
7676
|
if (!_asyncHookSupervisor) {
|
|
7553
7677
|
const { AsyncHookSupervisor } =
|
|
7554
7678
|
await import("../lib/async-hook-supervisor.js");
|
|
@@ -8634,7 +8758,8 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
8634
8758
|
);
|
|
8635
8759
|
} else {
|
|
8636
8760
|
try {
|
|
8637
|
-
_approvalGate.setSessionPolicy(sessionId, parsed.tier);
|
|
8761
|
+
await _approvalGate.setSessionPolicy(sessionId, parsed.tier);
|
|
8762
|
+
await _approvalGate.awaitPersistence?.();
|
|
8638
8763
|
_sessionTier = parsed.auto
|
|
8639
8764
|
? "auto"
|
|
8640
8765
|
: parsed.dontAsk
|
|
@@ -8964,7 +9089,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
8964
9089
|
try {
|
|
8965
9090
|
const { runUserPromptSubmitHooks } =
|
|
8966
9091
|
await import("../lib/settings-hook-events.js");
|
|
8967
|
-
const ups = runUserPromptSubmitHooks(_settingsHooks, {
|
|
9092
|
+
const ups = await runUserPromptSubmitHooks(_settingsHooks, {
|
|
8968
9093
|
prompt: userContent,
|
|
8969
9094
|
cwd: process.cwd(),
|
|
8970
9095
|
sessionId,
|
|
@@ -9726,7 +9851,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
9726
9851
|
_turnBindingProducer?.persistIfDirty();
|
|
9727
9852
|
// Auto-compact when context grows too large
|
|
9728
9853
|
if (
|
|
9729
|
-
feature("PROMPT_COMPRESSOR") &&
|
|
9854
|
+
(feature("PROMPT_COMPRESSOR") || contextMemoryCutover.canonical) &&
|
|
9730
9855
|
_compressor &&
|
|
9731
9856
|
!_compactionUsageBlock &&
|
|
9732
9857
|
!_runtimeLedgerTerminalLatch.isTripped() &&
|
|
@@ -9802,7 +9927,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
9802
9927
|
}
|
|
9803
9928
|
|
|
9804
9929
|
// Store as episodic memory
|
|
9805
|
-
if (db) {
|
|
9930
|
+
if (db && !contextMemoryCutover.canonical) {
|
|
9806
9931
|
try {
|
|
9807
9932
|
storeMemory(db, promptText, { importance: 0.3, type: "episodic" });
|
|
9808
9933
|
} catch (_e) {
|
|
@@ -9819,7 +9944,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
9819
9944
|
try {
|
|
9820
9945
|
const { runObserveHooks, dispatchAsyncHooks } =
|
|
9821
9946
|
await import("../lib/settings-hook-events.js");
|
|
9822
|
-
runObserveHooks(
|
|
9947
|
+
await runObserveHooks(
|
|
9823
9948
|
_settingsHooks,
|
|
9824
9949
|
"Stop",
|
|
9825
9950
|
{ session_id: sessionId || null },
|
|
@@ -9966,7 +10091,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
9966
10091
|
try {
|
|
9967
10092
|
const { runObserveHooks } =
|
|
9968
10093
|
await import("../lib/settings-hook-events.js");
|
|
9969
|
-
runObserveHooks(
|
|
10094
|
+
await runObserveHooks(
|
|
9970
10095
|
_settingsHooks,
|
|
9971
10096
|
"SessionEnd",
|
|
9972
10097
|
{ reason: "exit", cwd: process.cwd(), session_id: sessionId },
|
|
@@ -9981,11 +10106,15 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
9981
10106
|
try {
|
|
9982
10107
|
if (useJsonl) {
|
|
9983
10108
|
_persistReplContextSources();
|
|
9984
|
-
//
|
|
9985
|
-
|
|
9986
|
-
|
|
9987
|
-
|
|
9988
|
-
|
|
10109
|
+
// The legacy session-end checkpoint reused the compact event as a
|
|
10110
|
+
// second writer. Canonical sessions already persist every message;
|
|
10111
|
+
// only Kernel-authorized compaction may replace the physical head.
|
|
10112
|
+
if (!contextMemoryCutover.canonical) {
|
|
10113
|
+
_replCompactPersistence.persist(sessionId, {
|
|
10114
|
+
strategy: "session-end",
|
|
10115
|
+
messages,
|
|
10116
|
+
});
|
|
10117
|
+
}
|
|
9989
10118
|
} else if (db) {
|
|
9990
10119
|
saveMessages(db, sessionId, messages);
|
|
9991
10120
|
}
|
|
@@ -9994,7 +10123,11 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
9994
10123
|
}
|
|
9995
10124
|
}
|
|
9996
10125
|
// Auto-summarize session into permanent memory
|
|
9997
|
-
if (
|
|
10126
|
+
if (
|
|
10127
|
+
!contextMemoryCutover.canonical &&
|
|
10128
|
+
permanentMemory &&
|
|
10129
|
+
messages.length > 4
|
|
10130
|
+
) {
|
|
9998
10131
|
try {
|
|
9999
10132
|
permanentMemory.autoSummarize(messages);
|
|
10000
10133
|
} catch (_e) {
|
|
@@ -10002,7 +10135,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
10002
10135
|
}
|
|
10003
10136
|
}
|
|
10004
10137
|
// Consolidate memory
|
|
10005
|
-
if (db) {
|
|
10138
|
+
if (db && !contextMemoryCutover.canonical) {
|
|
10006
10139
|
try {
|
|
10007
10140
|
consolidateMemory(db);
|
|
10008
10141
|
} catch (_e) {
|