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
|
@@ -901,8 +901,8 @@ async function runAgentHeadlessInWorkspace(
|
|
|
901
901
|
effectiveHooks._authorityErrors.length > 0
|
|
902
902
|
? effectiveHooks
|
|
903
903
|
: null;
|
|
904
|
-
//
|
|
905
|
-
//
|
|
904
|
+
// Explain the explicit content-bound trust gate. Displaying this notice
|
|
905
|
+
// never authorizes execution.
|
|
906
906
|
try {
|
|
907
907
|
const notice = projectHookTrustNotice({
|
|
908
908
|
cwd,
|
|
@@ -910,7 +910,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
910
910
|
});
|
|
911
911
|
if (notice) writeErr(notice + "\n");
|
|
912
912
|
} catch {
|
|
913
|
-
/*
|
|
913
|
+
/* notice output is best-effort; the runtime gate is fail-closed */
|
|
914
914
|
}
|
|
915
915
|
} catch (error) {
|
|
916
916
|
settingsHooks = {};
|
|
@@ -1605,7 +1605,8 @@ async function runAgentHeadlessInWorkspace(
|
|
|
1605
1605
|
if (approvalGate) {
|
|
1606
1606
|
approvalGate.setAuthorizationConsumer?.(null);
|
|
1607
1607
|
if (typeof approvalGate.setSessionPolicy === "function") {
|
|
1608
|
-
approvalGate.setSessionPolicy(sessionId, perm.sessionPolicy);
|
|
1608
|
+
await approvalGate.setSessionPolicy(sessionId, perm.sessionPolicy);
|
|
1609
|
+
await approvalGate.awaitPersistence?.();
|
|
1609
1610
|
}
|
|
1610
1611
|
if (typeof approvalGate.setConfirmer === "function") {
|
|
1611
1612
|
approvalGate.setConfirmer(perm.confirmer);
|
|
@@ -1708,7 +1709,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
1708
1709
|
try {
|
|
1709
1710
|
const { runUserPromptSubmitHooks } =
|
|
1710
1711
|
await import("../lib/settings-hook-events.js");
|
|
1711
|
-
const ups = runUserPromptSubmitHooks(settingsHooks, {
|
|
1712
|
+
const ups = await runUserPromptSubmitHooks(settingsHooks, {
|
|
1712
1713
|
prompt: userContent,
|
|
1713
1714
|
cwd,
|
|
1714
1715
|
sessionId,
|
|
@@ -1739,11 +1740,13 @@ async function runAgentHeadlessInWorkspace(
|
|
|
1739
1740
|
try {
|
|
1740
1741
|
const { runInstructionsLoadedHooks } =
|
|
1741
1742
|
await import("../lib/settings-hook-events.js");
|
|
1742
|
-
instructionsLoadedContext =
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1743
|
+
instructionsLoadedContext = (
|
|
1744
|
+
await runInstructionsLoadedHooks(settingsHooks, {
|
|
1745
|
+
files: _loadedInstructions.files,
|
|
1746
|
+
cwd,
|
|
1747
|
+
sessionId,
|
|
1748
|
+
})
|
|
1749
|
+
).additionalContext;
|
|
1747
1750
|
} catch (_err) {
|
|
1748
1751
|
instructionsLoadedContext = null;
|
|
1749
1752
|
}
|
|
@@ -1755,11 +1758,13 @@ async function runAgentHeadlessInWorkspace(
|
|
|
1755
1758
|
try {
|
|
1756
1759
|
const { runSessionStartHooks } =
|
|
1757
1760
|
await import("../lib/settings-hook-events.js");
|
|
1758
|
-
sessionStartContext =
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1761
|
+
sessionStartContext = (
|
|
1762
|
+
await runSessionStartHooks(settingsHooks, {
|
|
1763
|
+
source: resumeId ? "resume" : "startup",
|
|
1764
|
+
cwd,
|
|
1765
|
+
sessionId,
|
|
1766
|
+
})
|
|
1767
|
+
).additionalContext;
|
|
1763
1768
|
} catch (_err) {
|
|
1764
1769
|
sessionStartContext = null;
|
|
1765
1770
|
}
|
|
@@ -1774,7 +1779,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
1774
1779
|
try {
|
|
1775
1780
|
const { runObserveHooks } =
|
|
1776
1781
|
await import("../lib/settings-hook-events.js");
|
|
1777
|
-
runObserveHooks(
|
|
1782
|
+
await runObserveHooks(
|
|
1778
1783
|
settingsHooks,
|
|
1779
1784
|
"SessionResume",
|
|
1780
1785
|
{
|
|
@@ -2631,12 +2636,14 @@ async function runAgentHeadlessInWorkspace(
|
|
|
2631
2636
|
// --max-budget-usd: a hard USD spend cap (Claude-Code parity). Accumulates
|
|
2632
2637
|
// per-call cost from token-usage events and stops the loop before the next
|
|
2633
2638
|
// paid call once the cap is reached. null → no cap (unchanged behavior).
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
:
|
|
2639
|
+
// Track priced usage even when no hard cap is configured so every machine
|
|
2640
|
+
// readable terminal result can carry authoritative cost evidence. A null
|
|
2641
|
+
// limit never warns or stops the run; it only accumulates the same estimates
|
|
2642
|
+
// that an enabled --max-budget-usd guard would use.
|
|
2643
|
+
const costBudget = new CostBudget({
|
|
2644
|
+
limitUsd: options.maxCostUsd,
|
|
2645
|
+
table: options.priceTable,
|
|
2646
|
+
});
|
|
2640
2647
|
|
|
2641
2648
|
const startedAt = deps.now ? deps.now() : Date.now();
|
|
2642
2649
|
const toolCalls = [];
|
|
@@ -2770,9 +2777,8 @@ async function runAgentHeadlessInWorkspace(
|
|
|
2770
2777
|
let _asyncStopHandled = false;
|
|
2771
2778
|
const _settleAsyncStop = async () => {
|
|
2772
2779
|
if (!settingsHooks || !_hookSupervisor) return { rewakes: [], results: [] };
|
|
2773
|
-
const {
|
|
2774
|
-
|
|
2775
|
-
dispatchAsyncHooks(
|
|
2780
|
+
const { runObserveHooks } = await import("../lib/settings-hook-events.js");
|
|
2781
|
+
await runObserveHooks(
|
|
2776
2782
|
settingsHooks,
|
|
2777
2783
|
"Stop",
|
|
2778
2784
|
{ reason: endReason, cwd, session_id: sessionId },
|
|
@@ -3613,21 +3619,22 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3613
3619
|
await cleanupDeadline.run("settings-hooks", async () => {
|
|
3614
3620
|
if (settingsHooks) {
|
|
3615
3621
|
try {
|
|
3616
|
-
const { runObserveHooks
|
|
3622
|
+
const { runObserveHooks } =
|
|
3617
3623
|
await import("../lib/settings-hook-events.js");
|
|
3618
3624
|
const stopPayload = {
|
|
3619
3625
|
reason: pipeState.closed ? "pipe_closed" : endReason,
|
|
3620
3626
|
cwd,
|
|
3621
3627
|
session_id: sessionId,
|
|
3622
3628
|
};
|
|
3623
|
-
const stopOutcome = runObserveHooks(
|
|
3629
|
+
const stopOutcome = await runObserveHooks(
|
|
3624
3630
|
settingsHooks,
|
|
3625
3631
|
"Stop",
|
|
3626
3632
|
stopPayload,
|
|
3627
|
-
{ cwd },
|
|
3633
|
+
{ cwd, supervisor: _hookSupervisor },
|
|
3628
3634
|
);
|
|
3629
3635
|
const stopFailures = (stopOutcome?.results || []).filter(
|
|
3630
3636
|
(result) =>
|
|
3637
|
+
result?.status === "error" ||
|
|
3631
3638
|
result?.nonBlockingError === true ||
|
|
3632
3639
|
result?.malformedDecision === true ||
|
|
3633
3640
|
result?.breakerOpen === true,
|
|
@@ -3647,10 +3654,6 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3647
3654
|
// Skip the async Stop dispatch/settle here if the auto-rewake re-drive
|
|
3648
3655
|
// loop already fired + drained it this run (avoids double-execution).
|
|
3649
3656
|
if (_hookSupervisor && !_asyncStopHandled) {
|
|
3650
|
-
dispatchAsyncHooks(settingsHooks, "Stop", stopPayload, {
|
|
3651
|
-
cwd,
|
|
3652
|
-
supervisor: _hookSupervisor,
|
|
3653
|
-
});
|
|
3654
3657
|
// Bounded settle: wait for in-flight async hooks (Stop + any
|
|
3655
3658
|
// PostToolUse dispatched during the loop) to finish, capped so a
|
|
3656
3659
|
// slow/hung check can never stall the run. Default 5s; tunable.
|
|
@@ -3694,7 +3697,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3694
3697
|
// Always reap the supervisor (kills any straggler child + detaches the
|
|
3695
3698
|
// exit reaper), whether the async Stop was handled here or in re-drive.
|
|
3696
3699
|
if (_hookSupervisor) _hookSupervisor.stopAll();
|
|
3697
|
-
runObserveHooks(
|
|
3700
|
+
await runObserveHooks(
|
|
3698
3701
|
settingsHooks,
|
|
3699
3702
|
"SessionEnd",
|
|
3700
3703
|
{
|
|
@@ -3901,6 +3904,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3901
3904
|
num_turns: budget.consumed,
|
|
3902
3905
|
duration_ms: durationMs,
|
|
3903
3906
|
usage,
|
|
3907
|
+
total_cost_usd: costBudget.spentUsd,
|
|
3904
3908
|
...(compactionDegradations.length
|
|
3905
3909
|
? { compaction_degradations: compactionDegradations }
|
|
3906
3910
|
: {}),
|
|
@@ -3916,6 +3920,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3916
3920
|
sessionId,
|
|
3917
3921
|
toolCalls,
|
|
3918
3922
|
usage,
|
|
3923
|
+
totalCostUsd: costBudget.spentUsd,
|
|
3919
3924
|
numTurns: budget.consumed,
|
|
3920
3925
|
durationMs,
|
|
3921
3926
|
denials,
|
|
@@ -3976,6 +3981,7 @@ function buildResultEnvelope({
|
|
|
3976
3981
|
sessionId,
|
|
3977
3982
|
toolCalls,
|
|
3978
3983
|
usage,
|
|
3984
|
+
totalCostUsd,
|
|
3979
3985
|
numTurns,
|
|
3980
3986
|
durationMs,
|
|
3981
3987
|
denials,
|
|
@@ -3992,6 +3998,7 @@ function buildResultEnvelope({
|
|
|
3992
3998
|
duration_ms: durationMs,
|
|
3993
3999
|
tool_calls: toolCalls,
|
|
3994
4000
|
usage,
|
|
4001
|
+
total_cost_usd: totalCostUsd,
|
|
3995
4002
|
};
|
|
3996
4003
|
// Only present when something was blocked — keeps the no-denial envelope
|
|
3997
4004
|
// 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};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ChatBubbleRenderer-CVfvAy-n.js","./vendor-Bn1JzzAn.js","./index-3_CEBEEf.js","./icons-DG5UD-6K.js","./index-Cq93VfoF.css","./ChatBubbleRenderer-gy5SDGw2.css","./OrderTableRenderer-Du-Kct3p.js","./OrderTableRenderer-CfrDjSHT.css","./TimelineRenderer-CNS3dHNv.js","./TimelineRenderer-BlTAtkOc.css","./EmailListRenderer-CsnhTW22.js","./EmailListRenderer-DTPZPx_S.css","./GenericCardRenderer-D3d9D8L9.js","./GenericCardRenderer-o85VDYQS.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{E as ue,r as E,b as w,I as g,P as u,J as O,U as v,c,S as C,V as x,_ as M,F as V,Z as se,a0 as ae,R,K as m,Q as b,W as L,o as J}from"./vendor-Bn1JzzAn.js";import{u as U}from"./usePersonalDataHub-CyCrG3ql.js";import{_ as F,e as I,d as P}from"./index-3_CEBEEf.js";import{aa as q,ag as Q,M as z,aI as G,v as H,aH as K,aq as W,ac as Y,e as de,d as fe,k as pe,ai as me,aA as _e,R as ye}from"./icons-DG5UD-6K.js";import"./useShellMode-CgR0wCYM.js";const T=Object.freeze({q:"",category:null,adapter:null,subtype:null,since:null,until:null}),B=50,Z=300,X=ue("pdhBrowser",()=>{const r=E({...T}),t=E([]),n=E(null),e=E(!1),o=E(!1),a=E(null),l=E(null),s=E(!1),i=E({byCategory:{},byAdapter:{},bySubtype:{},total:0});let d=0,_=null;const j=w(()=>t.value.length>0),A=w(()=>n.value!=null);function h(S={}){const p={},f=r.value;return f.q&&f.q.trim()&&(p.q=f.q.trim()),f.category&&(p.category=f.category),f.adapter&&(p.adapter=f.adapter),f.subtype&&(p.subtype=f.subtype),Number.isFinite(f.since)&&(p.since=f.since),Number.isFinite(f.until)&&(p.until=f.until),{...p,...S}}async function y(){const S=++d;e.value=!0,a.value=null;const p=U();try{const[f,D]=await Promise.all([p.searchEvents(h({limit:B})),p.facetCounts({...r.value.q&&r.value.q.trim()?{q:r.value.q.trim()}:{},...Number.isFinite(r.value.since)?{since:r.value.since}:{},...Number.isFinite(r.value.until)?{until:r.value.until}:{}})]);if(S!==d)return;t.value=f.rows||[],n.value=f.nextCursor||null,l.value=f.mode||"like",s.value=!!f.shortQuery,i.value={byCategory:D.byCategory||{},byAdapter:D.byAdapter||{},bySubtype:D.bySubtype||{},total:D.total||0}}catch(f){if(S!==d)return;a.value=f&&f.message?f.message:String(f),t.value=[],n.value=null}finally{S===d&&(e.value=!1)}}async function k(){if(!n.value||o.value)return;o.value=!0,a.value=null;const S=U();try{const p=await S.searchEvents(h({cursor:n.value,limit:B}));t.value=t.value.concat(p.rows||[]),n.value=p.nextCursor||null,l.value=p.mode||l.value}catch(p){a.value=p&&p.message?p.message:String(p)}finally{o.value=!1}}function le(S,p){if(!(S in T))throw new Error(`pdhBrowser.setFilter: unknown key "${S}"`);r.value={...r.value,[S]:p},_&&clearTimeout(_),_=setTimeout(()=>{_=null,y()},Z)}function ie(S){return r.value={...T,...S},_&&(clearTimeout(_),_=null),y()}function ce(){r.value={...T},t.value=[],n.value=null,a.value=null,i.value={byCategory:{},byAdapter:{},bySubtype:{},total:0}}return{filters:r,results:t,cursor:n,isLoading:e,isAppending:o,error:a,mode:l,shortQuery:s,facets:i,hasResults:j,canLoadMore:A,search:y,loadMore:k,setFilter:le,setFilters:ie,reset:ce,PAGE_SIZE:B,SEARCH_DEBOUNCE_MS:Z}}),ge=Object.freeze(["chat","social","email","shopping","travel","system","ai-chat","other"]),ve=Object.freeze({chat:"社交聊天",social:"内容平台",email:"邮件",shopping:"支付订单",travel:"出行",system:"系统数据","ai-chat":"AI 对话",other:"其他"});function N(r){return ve[r]||r||"未知"}const be=Object.freeze([["wechat","chat"],["messaging-","chat"],["social-","social"],["email-","email"],["shopping-","shopping"],["alipay-","shopping"],["travel-","travel"],["system-data","system"],["browser-","system"],["meeting-","system"],["vscode","system"],["vscodium","system"],["jetbrains-ide","system"],["win-recent","system"],["git-activity","system"],["shell-history","system"],["hbuilderx","system"],["local-files","system"],["cursor","ai-chat"],["claude-code","ai-chat"],["ai-chat-","ai-chat"]]);function $(r){if(typeof r!="string"||r.length===0)return"other";for(const[t,n]of be)if(t.endsWith("-")||t==="system-data"){if(r.startsWith(t))return n}else if(r===t)return n;return"other"}const he={__name:"CategorySidebar",props:{selected:{type:String,default:null},facets:{type:Object,default:()=>({byCategory:{},total:0})}},emits:["select"],setup(r,{expose:t}){t();const n=r,e=w(()=>n.facets.total||0),o={chat:Y,social:W,email:K,shopping:H,travel:G,system:z,"ai-chat":Q,other:q};function a(i){return o[i]||q}function l(i){return i?{backgroundColor:"#fff",color:"#1677ff"}:{backgroundColor:"#f0f0f0",color:"#666"}}const s={props:n,total:e,ICONS:o,iconFor:a,badgeStyle:l,computed:w,get AppstoreOutlined(){return q},get MessageOutlined(){return Y},get PlayCircleOutlined(){return W},get MailOutlined(){return K},get ShoppingOutlined(){return H},get CarOutlined(){return G},get MobileOutlined(){return z},get RobotOutlined(){return Q},get CATEGORIES(){return ge},get categoryLabel(){return N}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},Se={class:"pdh-sidebar"},Oe=["onClick"],we={class:"label"};function Ce(r,t,n,e,o,a){const l=g("a-badge");return u(),O("div",Se,[t[2]||(t[2]=v("div",{class:"sidebar-title"},"数据类型",-1)),v("div",{class:M(["cat-item",{active:n.selected===null}]),onClick:t[0]||(t[0]=s=>r.$emit("select",null))},[c(e.AppstoreOutlined,{class:"icon"}),t[1]||(t[1]=v("span",{class:"label"},"全部",-1)),e.total>0?(u(),C(l,{key:0,count:e.total,"number-style":e.badgeStyle(n.selected===null),"overflow-count":9999},null,8,["count","number-style"])):x("v-if",!0)],2),(u(!0),O(V,null,se(e.CATEGORIES,s=>(u(),O("div",{key:s,class:M(["cat-item",{active:n.selected===s,dim:!n.facets.byCategory[s]}]),onClick:i=>r.$emit("select",s)},[(u(),C(ae(e.iconFor(s)),{class:"icon"})),v("span",we,R(e.categoryLabel(s)),1),n.facets.byCategory[s]?(u(),C(l,{key:0,count:n.facets.byCategory[s],"number-style":e.badgeStyle(n.selected===s),"overflow-count":9999},null,8,["count","number-style"])):x("v-if",!0)],10,Oe))),128))])}const ke=F(he,[["render",Ce],["__scopeId","data-v-6b62a22e"],["__file","/tmp/cc-web-panel-Ix5cmp/repo/packages/web-panel/src/components/pdh/CategorySidebar.vue"]]),xe={__name:"SearchFilterBar",props:{filters:{type:Object,required:!0},facets:{type:Object,default:()=>({byAdapter:{}})},isLoading:{type:Boolean,default:!1},mode:{type:String,default:null},shortQuery:{type:Boolean,default:!1}},emits:["set-filter","reset"],setup(r,{expose:t,emit:n}){t();const e=r,o=n,a=w(()=>e.filters.category?`在「${e.filters.category}」类目内搜索…`:"搜索关键词(如:支付宝、罗技、Kotlin)…"),l=w(()=>Object.entries(e.facets.byAdapter||{}).sort((y,k)=>k[1]-y[1]).map(([y,k])=>({value:y,label:`${y} (${k})`}))),s=w(()=>!e.filters.since&&!e.filters.until?null:[e.filters.since?new Date(e.filters.since):null,e.filters.until?new Date(e.filters.until):null]),i=w(()=>!!(e.filters.q||e.filters.adapter||e.filters.subtype||e.filters.since||e.filters.until));function d(h){o("set-filter","q",h||"")}function _(h){o("set-filter","q",h||"")}function j(h){if(!h||h.length===0){o("set-filter","since",null),o("set-filter","until",null);return}const[y,k]=h;o("set-filter","since",y?+y:null),o("set-filter","until",k?+k:null)}const A={props:e,emit:o,placeholderText:a,adapterOptions:l,dateRangeValue:s,hasActiveFilters:i,onQInput:d,onSearch:_,onDateChange:j,computed:w,get SearchOutlined(){return pe},get CloseCircleOutlined(){return fe},get InfoCircleOutlined(){return de}};return Object.defineProperty(A,"__isScriptSetup",{enumerable:!1,value:!0}),A}},Ee={class:"pdh-filter-bar"},Re={key:1,class:"hint"},je={key:2,class:"hint"};function Ae(r,t,n,e,o,a){const l=g("a-input-search"),s=g("a-select"),i=g("a-range-picker"),d=g("a-button");return u(),O("div",Ee,[c(l,{value:n.filters.q,placeholder:e.placeholderText,"enter-button":"搜索","allow-clear":"",loading:n.isLoading,style:{flex:"1","max-width":"480px"},"onUpdate:value":e.onQInput,onSearch:e.onSearch},{prefix:m(()=>[c(e.SearchOutlined)]),_:1},8,["value","placeholder","loading"]),c(s,{value:n.filters.adapter,placeholder:"所有 adapter","allow-clear":"",options:e.adapterOptions,style:{width:"200px"},"onUpdate:value":t[0]||(t[0]=_=>r.$emit("set-filter","adapter",_||null))},null,8,["value","options"]),c(i,{value:e.dateRangeValue,placeholder:["开始日期","结束日期"],style:{width:"280px"},"onUpdate:value":e.onDateChange},null,8,["value"]),e.hasActiveFilters?(u(),C(d,{key:0,type:"link",danger:"",onClick:t[1]||(t[1]=_=>r.$emit("reset"))},{icon:m(()=>[c(e.CloseCircleOutlined)]),default:m(()=>[t[2]||(t[2]=b(" 清空筛选 ",-1))]),_:1})):x("v-if",!0),n.shortQuery?(u(),O("span",Re,[c(e.InfoCircleOutlined),t[3]||(t[3]=b(" 关键词需至少 3 字 (FTS5 trigram 限制) ",-1))])):n.mode==="like"?(u(),O("span",je,[c(e.InfoCircleOutlined),t[4]||(t[4]=b(" 当前为 LIKE 兜底模式 ",-1))])):x("v-if",!0)])}const Le=F(xe,[["render",Ae],["__scopeId","data-v-d7cce6e9"],["__file","/tmp/cc-web-panel-Ix5cmp/repo/packages/web-panel/src/components/pdh/SearchFilterBar.vue"]]),Ie={__name:"RendererDispatcher",props:{event:{type:Object,required:!0}},setup(r,{expose:t}){t();const n=L(()=>I(()=>import("./ChatBubbleRenderer-CVfvAy-n.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)),e=L(()=>I(()=>import("./OrderTableRenderer-Du-Kct3p.js"),__vite__mapDeps([6,1,2,3,4,7]),import.meta.url)),o=L(()=>I(()=>import("./TimelineRenderer-CNS3dHNv.js"),__vite__mapDeps([8,1,2,3,4,9]),import.meta.url)),a=L(()=>I(()=>import("./EmailListRenderer-CsnhTW22.js"),__vite__mapDeps([10,1,2,3,4,11]),import.meta.url)),l=L(()=>I(()=>import("./GenericCardRenderer-D3d9D8L9.js"),__vite__mapDeps([12,1,2,3,4,13]),import.meta.url));function s(d){const _=d&&d.source&&d.source.adapter;switch($(_)){case"chat":case"ai-chat":return n;case"shopping":return e;case"travel":return o;case"email":return a;default:return l}}const i={ChatBubbleRenderer:n,OrderTableRenderer:e,TimelineRenderer:o,EmailListRenderer:a,GenericCardRenderer:l,rendererFor:s,defineAsyncComponent:L,get getCategory(){return $}};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}};function Fe(r,t,n,e,o,a){return u(),C(ae(e.rendererFor(n.event)),{event:n.event},null,8,["event"])}const De=F(Ie,[["render",Fe],["__file","/tmp/cc-web-panel-Ix5cmp/repo/packages/web-panel/src/components/pdh/renderers/RendererDispatcher.vue"]]);function ee(r){return JSON.stringify(r,null,2)}function te(r){return r.map(t=>JSON.stringify(t)).join(`
|
|
3
|
-
`)+`
|
|
4
|
-
`}function ne(r){const n=["id","subtype","occurredAt","occurredAtIso","actor","place","adapter","summary","contentJson","extraJson"].join(","),e=r.map(o=>{const a=Number.isFinite(o.occurredAt)?o.occurredAt:null,l=a?new Date(a).toISOString():"",s=o.source&&o.source.adapter||"",i=o.content&&(o.content.text||o.content.title||o.content.subject)||"";return[o.id||"",o.subtype||"",a!=null?String(a):"",l,o.actor||"",o.place||"",s,i,o.content?JSON.stringify(o.content):"",o.extra?JSON.stringify(o.extra):""].map(Te).join(",")});return[n,...e].join(`
|
|
5
|
-
`)+`
|
|
6
|
-
`}function Te(r){const t=String(r??"");return t.includes(",")||t.includes('"')||t.includes(`
|
|
7
|
-
`)||t.includes("\r")?'"'+t.replace(/"/g,'""')+'"':t}function re(r,t,n="application/octet-stream"){if(typeof window>"u"||typeof document>"u")return t;const e=new Blob([r],{type:n}),o=URL.createObjectURL(e),a=document.createElement("a");return a.href=o,a.download=t,document.body.appendChild(a),a.click(),document.body.removeChild(a),setTimeout(()=>URL.revokeObjectURL(o),1e3),t}function oe(r,t=null){const n=new Date,e=n.getFullYear(),o=String(n.getMonth()+1).padStart(2,"0"),a=String(n.getDate()).padStart(2,"0"),l=r==="ndjson"?"ndjson":r,s=t?`-${t}`:"";return`pdh-events-${e}-${o}-${a}${s}.${l}`}const Pe={__name:"ExportDropdown",props:{events:{type:Array,required:!0},category:{type:String,default:null}},setup(r,{expose:t}){t();const n=r,e=w(()=>n.events.length>0),o={json:"application/json;charset=utf-8",ndjson:"application/x-ndjson;charset=utf-8",csv:"text/csv;charset=utf-8"};function a(i){switch(i){case"json":return ee(n.events);case"ndjson":return te(n.events);case"csv":return ne(n.events);default:throw new Error(`unknown format: ${i}`)}}function l({key:i}){try{const d=a(i),_=oe(i,n.category);re(d,_,o[i]),P.success(`已导出 ${n.events.length} 条到 ${_}`)}catch(d){P.error(`导出失败: ${d.message||d}`)}}const s={props:n,hasResults:e,MIME:o,serialize:a,onClick:l,computed:w,get DownloadOutlined(){return _e},get DownOutlined(){return me},get message(){return P},get eventsToJson(){return ee},get eventsToNdjson(){return te},get eventsToCsv(){return ne},get downloadAs(){return re},get suggestFilename(){return oe}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}};function qe(r,t,n,e,o,a){const l=g("a-button"),s=g("a-menu-item"),i=g("a-menu"),d=g("a-dropdown");return u(),C(d,{disabled:!e.hasResults},{overlay:m(()=>[c(i,{onClick:e.onClick},{default:m(()=>[c(s,{key:"json"},{default:m(()=>[...t[0]||(t[0]=[b("JSON (.json)",-1)])]),_:1}),c(s,{key:"ndjson"},{default:m(()=>[...t[1]||(t[1]=[b("NDJSON (.ndjson)",-1)])]),_:1}),c(s,{key:"csv"},{default:m(()=>[...t[2]||(t[2]=[b("CSV (.csv)",-1)])]),_:1})]),_:1})]),default:m(()=>[c(l,{disabled:!e.hasResults},{icon:m(()=>[c(e.DownloadOutlined)]),default:m(()=>[b(" 导出 ("+R(n.events.length)+") ",1),c(e.DownOutlined)]),_:1},8,["disabled"])]),_:1},8,["disabled"])}const Be=F(Pe,[["render",qe],["__file","/tmp/cc-web-panel-Ix5cmp/repo/packages/web-panel/src/components/pdh/ExportDropdown.vue"]]),Ve={__name:"PdhVaultBrowser",setup(r,{expose:t}){t();const n=X(),e=w(()=>n.filters.q?`没有匹配 "${n.filters.q}" 的事件 — 试试更短的关键词或换个类目`:n.filters.category?`「${N(n.filters.category)}」类目下还没有数据 — 去采集页同步对应 adapter`:"Vault 里还没有数据 — 去「个人数据中台」页面同步任意 adapter");function o(s){n.filters.category=s,n.search()}function a(s,i){n.setFilter(s,i)}J(()=>{!n.hasResults&&!n.isLoading&&n.search()});const l={store:n,emptyHint:e,onCategorySelect:o,onSetFilter:a,onMounted:J,computed:w,get ReloadOutlined(){return ye},get usePdhBrowserStore(){return X},get categoryLabel(){return N},CategorySidebar:ke,SearchFilterBar:Le,RendererDispatcher:De,ExportDropdown:Be};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}},Ne={class:"pdh-browser-page"},Me={class:"page-header"},Je={class:"main-pane"},Ue={class:"results-summary"},Qe={key:0},ze={key:0},Ge={key:1},He={class:"loaded-of"},Ke={class:"results-list"},We={key:2,class:"load-more"};function Ye(r,t,n,e,o,a){const l=g("a-tag"),s=g("a-button"),i=g("a-space"),d=g("a-col"),_=g("a-spin"),j=g("a-alert"),A=g("a-empty"),h=g("a-row");return u(),O("div",Ne,[v("div",Me,[t[6]||(t[6]=v("div",null,[v("h2",{class:"page-title"},"数据浏览器"),v("p",{class:"page-sub"}," Vault 里所有已采集的数据,按类目浏览 / 全文检索 / 时间窗口筛选。 完全离线,不外传。 ")],-1)),c(i,null,{default:m(()=>[e.store.mode==="fts5"?(u(),C(l,{key:0,color:"green"},{default:m(()=>[...t[3]||(t[3]=[b("FTS5 trigram",-1)])]),_:1})):e.store.mode==="like"?(u(),C(l,{key:1,color:"orange"},{default:m(()=>[...t[4]||(t[4]=[b("LIKE 兜底",-1)])]),_:1})):x("v-if",!0),c(e.ExportDropdown,{events:e.store.results,category:e.store.filters.category},null,8,["events","category"]),c(s,{onClick:t[0]||(t[0]=y=>e.store.search()),loading:e.store.isLoading},{icon:m(()=>[c(e.ReloadOutlined)]),default:m(()=>[t[5]||(t[5]=b(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),c(h,{gutter:16,class:"browser-layout"},{default:m(()=>[c(d,{xs:24,sm:24,md:6,lg:5,xl:4},{default:m(()=>[c(e.CategorySidebar,{selected:e.store.filters.category,facets:e.store.facets,onSelect:e.onCategorySelect},null,8,["selected","facets"])]),_:1}),c(d,{xs:24,sm:24,md:18,lg:19,xl:20},{default:m(()=>[v("div",Je,[c(e.SearchFilterBar,{filters:e.store.filters,facets:e.store.facets,"is-loading":e.store.isLoading,mode:e.store.mode,"short-query":e.store.shortQuery,onSetFilter:e.onSetFilter,onReset:t[1]||(t[1]=y=>{e.store.reset(),e.store.search()})},null,8,["filters","facets","is-loading","mode","short-query"]),v("div",Ue,[e.store.isLoading&&e.store.results.length===0?(u(),O("span",Qe,[c(_,{size:"small"}),t[7]||(t[7]=b(" 载入中… ",-1))])):(u(),O(V,{key:1},[v("strong",null,R(e.store.facets.total),1),t[11]||(t[11]=b(" 条事件 ",-1)),e.store.filters.category?(u(),O("span",ze,[t[8]||(t[8]=b(" / 当前类目 ",-1)),v("strong",null,R(e.categoryLabel(e.store.filters.category)),1),v("strong",null,R(e.store.facets.byCategory[e.store.filters.category]||0),1)])):x("v-if",!0),e.store.filters.q?(u(),O("span",Ge,[t[9]||(t[9]=b(' / 关键词 "',-1)),v("em",null,R(e.store.filters.q),1),t[10]||(t[10]=b('"',-1))])):x("v-if",!0),v("span",He," / 已显示 "+R(e.store.results.length),1)],64))]),e.store.error?(u(),C(j,{key:0,type:"error","show-icon":"",message:e.store.error,closable:"",style:{margin:"12px 0"}},null,8,["message"])):x("v-if",!0),!e.store.isLoading&&e.store.results.length===0&&!e.store.error?(u(),C(A,{key:1,description:e.emptyHint,style:{"margin-top":"40px"}},null,8,["description"])):x("v-if",!0),v("div",Ke,[(u(!0),O(V,null,se(e.store.results,(y,k)=>(u(),C(e.RendererDispatcher,{key:`r-${k}-${y.id}`,event:y},null,8,["event"]))),128))]),e.store.canLoadMore?(u(),O("div",We,[c(s,{loading:e.store.isAppending,onClick:t[2]||(t[2]=y=>e.store.loadMore()),block:""},{default:m(()=>[...t[12]||(t[12]=[b(" 加载下一页 (50 条) ",-1)])]),_:1},8,["loading"])])):x("v-if",!0)])]),_:1})]),_:1})])}const nt=F(Ve,[["render",Ye],["__scopeId","data-v-0f7c02cd"],["__file","/tmp/cc-web-panel-Ix5cmp/repo/packages/web-panel/src/views/PdhVaultBrowser.vue"]]);export{nt as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Q as r}from"./index-3_CEBEEf.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as o}from"./Col-dZ2i4aAj.js";import{a0 as t}from"./index-3_CEBEEf.js";import"./vendor-Bn1JzzAn.js";import"./index-CC7RnaPP.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as o}from"./Row-D1G1fD7N.js";import{a0 as t}from"./index-3_CEBEEf.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-CPxTWodH.js";import"./useFlexGapSupport-DRWp7px1.js";import"./styleChecker-B2O7yRk3.js";import"./index-CC7RnaPP.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};
|