chainlesschain 0.166.77 → 0.166.79
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 +9 -8
- package/completions/_cc +1 -1
- package/completions/cc.bash +1 -1
- package/completions/cc.fish +1 -1
- package/completions/cc.ps1 +1 -1
- package/package.json +1 -1
- package/src/assets/linux-subreaper/linux-arm64/manifest.json +10 -0
- package/src/assets/linux-subreaper/linux-arm64/supervisor +0 -0
- package/src/assets/linux-subreaper/linux-x64/manifest.json +10 -0
- package/src/assets/linux-subreaper/linux-x64/supervisor +0 -0
- package/src/assets/web-panel/assets/{AIOps-CpiCBhRh.js → AIOps-CwD6Pm_Y.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-CnU-Xvx-.js → ActionButton-Du5Rp-O6.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-BJW-CNtf.js → Analytics-DY9l72ma.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-UFQJL3G9.js → AppLayout-7t1WIaCJ.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-Dr_IUDoY.js → Artifacts-BLIA5yny.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-aglWo6rr.js → Audit-BC_N0QTg.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-Dm_TCiXC.js → BackgroundAgents-CA7SxDtg.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-DUdX4-gA.js → Backup-BZ4AzS1_.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-BTcLjy1o.js → BaseInput-BhiggGaH.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-Bhy9qZrl.js → Chat-CDdBoIBI.js} +5 -5
- package/src/assets/web-panel/assets/ChatBubbleRenderer-hsBsrl31.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-CblrPa21.js → Checkbox-asoMKSEK.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-SEAHzOlr.js → Codegen-B0gElLdm.js} +1 -1
- package/src/assets/web-panel/assets/{Col-DJz8iFOR.js → Col-DrNzLpF6.js} +1 -1
- package/src/assets/web-panel/assets/{Community-RufKhcQt.js → Community-DCzB5qkI.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-Dlifx08U.js → Compact-Db-Eua_j.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-DdhQWcHh.js → Compliance-B76NByjl.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-BLNn6oOm.js → Cowork-C-nK6Qpk.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-Dv-JWY2d.js → Cron-C-GlQO19.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-k7Pz7O-b.js → Crosschain-Cuuz9IIh.js} +1 -1
- package/src/assets/web-panel/assets/{DID-C_10syUW.js → DID-gwFaT973.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-CMyH6Szx.js → Dashboard-DHDt5jEf.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-DjmD2Saa.js → Dropdown-CJ9kog-Y.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-36_IRUSo.js → EmailListRenderer-DOSXFRiQ.js} +1 -1
- package/src/assets/web-panel/assets/{EvolutionSettings-CmtU0XmM.js → EvolutionSettings-CHYMP7rR.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-DEgf9kyP.js → FamilyGuardDashboard-C1gzG5EK.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-DGO1wQls.js → Federation-CEdNVWUw.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-Doj1FmKW.js → FormItemContext-CwVOWPX8.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-GzOU27iT.js → GenericCardRenderer-CgNUs3kT.js} +1 -1
- package/src/assets/web-panel/assets/{Git-Dd7D1EDK.js → Git-DM4MNnQo.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-6IY8LcjI.js → Governance-DdOtjkvd.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-BB9gl8q1.js → Inference-28PidFfr.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-CeCed5wd.js → KnowledgeGraph-Bpj_qNUK.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-CYOeHuaI.js → Logs-C6Ix19Ay.js} +2 -2
- package/src/assets/web-panel/assets/{MarkdownRenderer-Bk8Zqc2R.js → MarkdownRenderer-Bj6mtPbf.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-D-_xgHgM.js → Marketplace-DqkhRSMP.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-NnaUTF5t.js → McpTools-1WQ2SjaE.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-CndN9pMt.js → Memory-BWTi7v6R.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-BXblFmhY.js → MobileBridge-DB4wu3UE.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-CC26Dm2k.js → MobileProjects-Bh9pWx2f.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-BhaqWCiW.js → Mtc-BVF1Wrno.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-D6fktM2w.js → MtcAudit-DtNfslPf.js} +5 -5
- package/src/assets/web-panel/assets/{Multisig-CFvahz7s.js → Multisig-4qcXP0bf.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-Co73Ivya.js → NLProgramming-BRJl5Ehw.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-B4g33L1o.js → Notes-BRY_bgMk.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-lXd17EbN.js → NotificationSettings-DirXMFz4.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-BiOB0GIi.js → OrderTableRenderer-BlrY8lwu.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-JQ7_wQIA.js → Organization-CVzQ1vO-.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-gwgJgozQ.js → Overflow-A3rXTPG4.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-D9L_0gie.js → P2P-Db9ABWz0.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-CbOPsFE9.js → PdhVaultBrowser-CPv0H2OZ.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-Cz42HNQf.js → Permissions-COnW4sIR.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-DjorYtrF.js → PersonalDataHub-C1hG7rp7.js} +5 -5
- package/src/assets/web-panel/assets/{Pipeline-DyWPhmm5.js → Pipeline---GLRDEe.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-DyfLMl2j.js → Privacy-aaN9R3Lu.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-CyqDx1OE.js → ProjectInit-C-kw49hE.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-DsBw0Csy.js → ProjectSettings-y5tTkBTC.js} +2 -2
- package/src/assets/web-panel/assets/Projects-DZHlhyPB.js +1 -0
- package/src/assets/web-panel/assets/{Providers-CCI_klN-.js → Providers-LqxnV72o.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-DNsnlDdS.js → QrScannerModal-D_q-Y5F0.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-B9r2iaee.js → QuickAsk-_E_KB5o8.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-BJDe03GR.js → Recommend-BN8S5WJA.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-J7JR3rRo.js → RemoteSession-BFzrY_aW.js} +3 -3
- package/src/assets/web-panel/assets/{Reputation-DR39AJeV.js → Reputation-C1HCLaTV.js} +1 -1
- package/src/assets/web-panel/assets/{Row-Dh77m3NZ.js → Row-B8T2-Qv7.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-BUdg28nJ.js → RssFeed-CNQLk8v1.js} +3 -3
- package/src/assets/web-panel/assets/{Search-BNC7sGhj.js → Search-BOx720Kc.js} +1 -1
- package/src/assets/web-panel/assets/{Security-DISENGI7.js → Security-Ds8z6PF6.js} +4 -4
- package/src/assets/web-panel/assets/{Services-BBBGpJ1-.js → Services-C0-YkRSF.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-DMcIoIv2.js → Skeleton-DUHlSySD.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-QAyFbI3r.js → Skills-C8CBbbh0.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-CSg5wLH7.js → Sla-lQltyYfB.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-DMPxTc5x.js → SpeechSettings-B5vyOma-.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-CPG7l30y.js → SyncSettings-BKDPu_y-.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-Y1kOVvVL.js → Tasks-Bgvf7LTx.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-jt9NagL0.js → Templates-BMZyYYS7.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-DauuJICx.js → Tenant-7PYTig8f.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-E9rnKeGq.js → Terminal-C2W0LMdR.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-Cc7z2APG.js → TimelineRenderer-CqREew_l.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-CV0UthRA.js → Tokens-BhTyxTuD.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-BFcJJGfu.js → Trigger-DxNSSZy_.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-BAydbNJA.js → Trust-Dy_wfbIh.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-DcOS6sqL.js → UkeySign-DJC5ANqx.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-BLHJZvif.js → VideoEditing-CNFevrO4.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-4QFLKHwW.js → Wallet-CXzuS1YK.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-BocEOOSj.js → WebAuthn-BWS6HP8c.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-DCfF7D0B.js → WorkflowEditor-swiN_7Vj.js} +1 -1
- package/src/assets/web-panel/assets/{chat-CxvfsYGr.js → chat-NwH7qlBs.js} +1 -1
- package/src/assets/web-panel/assets/{colors-KtQB9DmQ.js → colors-h6nRhBTw.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-Dx4J6arN.js → compact-item-BQ6B6rP2.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-Cq0olgzo.js → createContext-CQkJuRcG.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-Bz6vqBGV.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-Bf9-h3D-.js → hasIn-Diwl1WyI.js} +1 -1
- package/src/assets/web-panel/assets/{index-CpO6DKuu.js → index-0ZztPzIm.js} +1 -1
- package/src/assets/web-panel/assets/index-1b7DEw-w.js +1 -0
- package/src/assets/web-panel/assets/{index-DQDR-_ai.js → index-AzeSQJDK.js} +1 -1
- package/src/assets/web-panel/assets/{index-BMcC4cbj.js → index-B3QgcUBV.js} +1 -1
- package/src/assets/web-panel/assets/{index-BO6XvO-C.js → index-B5gj_uCC.js} +1 -1
- package/src/assets/web-panel/assets/{index-ClUfSChI.js → index-BI3ALCgN.js} +1 -1
- package/src/assets/web-panel/assets/{index-B3xfiItB.js → index-BRl3KUj0.js} +1 -1
- package/src/assets/web-panel/assets/{index-DFdEDvFn.js → index-BYYb8oeV.js} +1 -1
- package/src/assets/web-panel/assets/{index-CqnggDos.js → index-BcKDUGYf.js} +1 -1
- package/src/assets/web-panel/assets/{index-B_8UcDan.js → index-BcjlIMP9.js} +1 -1
- package/src/assets/web-panel/assets/{index-CmQuG0fr.js → index-BheCvudN.js} +1 -1
- package/src/assets/web-panel/assets/{index-iE9tqEN5.js → index-BjcARUtr.js} +1 -1
- package/src/assets/web-panel/assets/{index-nmyDOh_b.js → index-BnQUin2K.js} +1 -1
- package/src/assets/web-panel/assets/{index-Br1mDMfO.js → index-Bs6HyCfP.js} +1 -1
- package/src/assets/web-panel/assets/{index-DZWjYfWt.js → index-BvPz6vZ8.js} +1 -1
- package/src/assets/web-panel/assets/{index-0fi8DIVQ.js → index-C3Ye1ISy.js} +1 -1
- package/src/assets/web-panel/assets/{index-hSzyoXri.js → index-C7-T-u0L.js} +3 -3
- package/src/assets/web-panel/assets/{index-DfrFNMvz.js → index-CRWpixu2.js} +1 -1
- package/src/assets/web-panel/assets/{index-C9yaUHm9.js → index-CatBQDSQ.js} +1 -1
- package/src/assets/web-panel/assets/index-CfD4tMuW.js +1 -0
- package/src/assets/web-panel/assets/{index-DMR-keCL.js → index-CqH-oOR3.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cy865Hhq.js → index-CwsoVDi-.js} +1 -1
- package/src/assets/web-panel/assets/{index-DI5bRqNG.js → index-CyBtEVLM.js} +1 -1
- package/src/assets/web-panel/assets/{index-gt5N6VM_.js → index-D5P498Rk.js} +1 -1
- package/src/assets/web-panel/assets/{index-6dDDSCHD.js → index-DKaB4xTf.js} +1 -1
- package/src/assets/web-panel/assets/{index-BKtQyb2o.js → index-DQYZa1Ci.js} +1 -1
- package/src/assets/web-panel/assets/{index-CaIclw-E.js → index-DZ9CNcbJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-_FIz-0tp.js → index-DZAsByy4.js} +1 -1
- package/src/assets/web-panel/assets/{index-DBRlZdZj.js → index-D_HY0nyN.js} +1 -1
- package/src/assets/web-panel/assets/{index-DsCdl2Od.js → index-Da8frO_A.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cfsn7N18.js → index-DjB8IC9D.js} +1 -1
- package/src/assets/web-panel/assets/{index-CeYP_kT9.js → index-Dwpthe2b.js} +1 -1
- package/src/assets/web-panel/assets/{index-B8WuPI-h.js → index-Fm95dO4u.js} +1 -1
- package/src/assets/web-panel/assets/{index-CK2U_AHi.js → index-GTefQSbY.js} +1 -1
- package/src/assets/web-panel/assets/{index-DnU-dUWd.js → index-OEWSrqit.js} +1 -1
- package/src/assets/web-panel/assets/{index-DDAe1UmZ.js → index-TYMmUsxZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-D2BfSIrn.js → index-iHNOr_wL.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cz7f4Jaq.js → index-mxxZtsHp.js} +1 -1
- package/src/assets/web-panel/assets/{index-BHmdMKYl.js → index-pYwYBVeQ.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-DvzKJ6o5.js → initDefaultProps-BeUrpC_H.js} +1 -1
- package/src/assets/web-panel/assets/{motion-D1yTvmxW.js → motion-CHW5EXt1.js} +1 -1
- package/src/assets/web-panel/assets/{move-DxtSIF8K.js → move-CWaoWJvF.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-BDsQgIHY.js → mtc-parser-CEC6Us1u.js} +1 -1
- package/src/assets/web-panel/assets/{omit-UVBJW8kh.js → omit-1D-kP_Qj.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-D4QqtTyX.js → pickAttrs-CsS0myLl.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-QXmu6vBf.js → placementArrow-bMThOvkI.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-D-PmXO9M.js → responsiveObserve-B72knbW8.js} +1 -1
- package/src/assets/web-panel/assets/{slide-CKbGxEZJ.js → slide-C3bI_2yy.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-BbgXPkXm.js → statusUtils-0-FmcCAS.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-DOr9rk68.js → styleChecker-DXUyqoWY.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-B2wO2r36.js → useFlexGapSupport-BSSnL3f1.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-SeVGBK34.js → useFs-B0Cvvl0S.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-DUJBCxjD.js → usePersonalDataHub-6D-d4WU5.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-CF4EYsig.js → vnode-zjIrlxT_.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-pRUs5pqI.js → zoom-Hw7NEisu.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/command-help-index.json +1 -1
- package/src/command-manifest.json +1 -1
- package/src/commands/checkpoint.js +42 -7
- package/src/commands/orchestrate.js +85 -25
- package/src/commands/session-location.js +5 -0
- package/src/commands/session-show.js +109 -1
- package/src/commands/session.js +26 -2
- package/src/commands/tokens.js +9 -4
- package/src/data/changelog.json +26 -0
- package/src/generated/cc-agent-protocol.schema.json +71 -0
- package/src/harness/jsonl-session-store.js +357 -114
- package/src/harness/mcp-client.js +44 -1
- package/src/lib/agent-router.js +35 -7
- package/src/lib/agent-sandbox.js +302 -2
- package/src/lib/app-server/server.js +14 -0
- package/src/lib/background-agent-supervisor.js +14 -4
- package/src/lib/causal-observability.js +64 -1
- package/src/lib/checkpoint-summary-projection.js +98 -0
- package/src/lib/checkpoint-timeline-authority.js +15 -51
- package/src/lib/claude-code-bridge.js +302 -60
- package/src/lib/codex-app-server-adapter.js +161 -35
- package/src/lib/cost-budget.js +4 -0
- package/src/lib/doctor-checkup.js +31 -2
- package/src/lib/durable-security-store.js +6 -1
- package/src/lib/evolution/evolution-artifact-identity.js +21 -0
- package/src/lib/evolution/evolution-artifact-ports.js +5 -11
- package/src/lib/evolution/evolution-eval-cohort-receipt-reconciliation.js +389 -0
- package/src/lib/execution-location-failure-site.js +63 -0
- package/src/lib/execution-location-target.js +102 -8
- package/src/lib/external-agent-adapters.js +2 -0
- package/src/lib/image-file-boundary.js +154 -0
- package/src/lib/image-input.js +16 -3
- package/src/lib/llm-pricing.js +114 -8
- package/src/lib/lsp/code-intelligence.js +7 -1
- package/src/lib/mcp-call-ledger-store.js +7 -2
- package/src/lib/model-capabilities.js +21 -10
- package/src/lib/model-context-catalog.js +60 -1
- package/src/lib/openai-responses.js +7 -1
- package/src/lib/orchestrator.js +8 -2
- package/src/lib/process-execution-broker/index.js +93 -1
- package/src/lib/process-execution-broker/linux-subreaper-artifact.js +120 -0
- package/src/lib/process-execution-broker/linux-subreaper-helper.js +344 -0
- package/src/lib/process-execution-broker/linux-subreaper-process.js +326 -0
- package/src/lib/process-execution-broker/linux-subreaper-supervisor.c +360 -0
- package/src/lib/process-execution-broker/owned-posix-process-group-worker.mjs +131 -0
- package/src/lib/process-execution-broker/owned-posix-process-group.js +267 -0
- package/src/lib/process-execution-broker/process-ownership-journal.js +297 -0
- package/src/lib/process-execution-broker/process-ownership-quarantine.js +91 -0
- package/src/lib/runtime-usage-ledger.js +3 -0
- package/src/lib/sandbox-docker-egress.js +507 -0
- package/src/lib/sandbox-egress-proxy.js +167 -10
- package/src/lib/sandbox-egress-worker-thread.js +38 -0
- package/src/lib/sandbox-egress-worker.js +196 -0
- package/src/lib/secure-fs.js +158 -42
- package/src/lib/session-branch-history.js +240 -0
- package/src/lib/session-history-origins.js +285 -0
- package/src/lib/session-input-receipt.js +110 -0
- package/src/lib/session-resource-budget.js +8 -8
- package/src/lib/session-transcript-history.js +456 -0
- package/src/lib/session-transcript-page.js +164 -0
- package/src/lib/session-transcript-reference.js +38 -0
- package/src/lib/session-usage.js +8 -0
- package/src/lib/token-tracker.js +32 -54
- package/src/lib/usage-pricing-context.js +93 -0
- package/src/runtime/agent-core.js +141 -21
- package/src/runtime/headless-stream.js +202 -4
- package/src/assets/web-panel/assets/ChatBubbleRenderer-D0WrJQaQ.js +0 -1
- package/src/assets/web-panel/assets/Projects-CRaSI25Z.js +0 -1
- package/src/assets/web-panel/assets/devWarning-CmgDNkoO.js +0 -1
- package/src/assets/web-panel/assets/index-BpIZ2S01.js +0 -1
- package/src/assets/web-panel/assets/index-C-VmKuyv.js +0 -1
|
@@ -2,6 +2,8 @@ import chalk from "chalk";
|
|
|
2
2
|
import { numericOption } from "../lib/cli-numeric.js";
|
|
3
3
|
import { logger } from "../lib/logger.js";
|
|
4
4
|
import { getPrLinks } from "../lib/pr-link-store.js";
|
|
5
|
+
import { readSessionTranscriptPage } from "../lib/session-transcript-page.js";
|
|
6
|
+
import { readSessionInputReceipt } from "../lib/session-input-receipt.js";
|
|
5
7
|
import {
|
|
6
8
|
getJsonlSessionMetadata,
|
|
7
9
|
rebuildMessages,
|
|
@@ -15,9 +17,30 @@ export function registerSessionShowSubcommand(session, program) {
|
|
|
15
17
|
.argument("<id>", "Session ID (or prefix)")
|
|
16
18
|
.option("-n, --limit <n>", "Max messages to show")
|
|
17
19
|
.option("--json", "Output as JSON")
|
|
20
|
+
.option(
|
|
21
|
+
"--history",
|
|
22
|
+
"Page verified display history across canonical compaction (requires --json)",
|
|
23
|
+
)
|
|
24
|
+
.option(
|
|
25
|
+
"--input-receipt <client-message-id>",
|
|
26
|
+
"Read verified input acceptance without replay (requires --json)",
|
|
27
|
+
)
|
|
28
|
+
.option(
|
|
29
|
+
"--page-size <n>",
|
|
30
|
+
"Verified context/history page size (1–100; requires --json)",
|
|
31
|
+
)
|
|
32
|
+
.option(
|
|
33
|
+
"--before <cursor>",
|
|
34
|
+
"Load the previous page in the selected view (requires --json)",
|
|
35
|
+
)
|
|
36
|
+
.option(
|
|
37
|
+
"--after <cursor>",
|
|
38
|
+
"Read new display messages after a history sync cursor (requires --json --history)",
|
|
39
|
+
)
|
|
18
40
|
.action(async (id, options) => {
|
|
19
41
|
let ctx = null;
|
|
20
42
|
let shutdown = null;
|
|
43
|
+
let changesSessionId = id;
|
|
21
44
|
try {
|
|
22
45
|
let sess = null;
|
|
23
46
|
|
|
@@ -26,7 +49,15 @@ export function registerSessionShowSubcommand(session, program) {
|
|
|
26
49
|
// if JSONL_SESSION is later disabled.
|
|
27
50
|
const authority = resolveSessionAuthority(id);
|
|
28
51
|
const jsonlId = authority?.readable ? authority.id : null;
|
|
52
|
+
changesSessionId = authority?.id || id;
|
|
29
53
|
if (authority && !authority.readable) {
|
|
54
|
+
if (options.after !== undefined && options.json)
|
|
55
|
+
throw Object.assign(
|
|
56
|
+
new Error("Canonical transcript is unavailable"),
|
|
57
|
+
{
|
|
58
|
+
code: "SESSION_TRANSCRIPT_UNAVAILABLE",
|
|
59
|
+
},
|
|
60
|
+
);
|
|
30
61
|
logger.error(
|
|
31
62
|
`Session ${authority.id} has canonical persistence evidence but no readable transcript (${authority.presence}).`,
|
|
32
63
|
);
|
|
@@ -34,6 +65,61 @@ export function registerSessionShowSubcommand(session, program) {
|
|
|
34
65
|
return;
|
|
35
66
|
}
|
|
36
67
|
if (jsonlId) {
|
|
68
|
+
if (
|
|
69
|
+
options.after !== undefined &&
|
|
70
|
+
(!options.json || !options.history || options.before)
|
|
71
|
+
)
|
|
72
|
+
throw new Error(
|
|
73
|
+
"History changes require --json --history without --before",
|
|
74
|
+
);
|
|
75
|
+
if (options.inputReceipt !== undefined) {
|
|
76
|
+
if (
|
|
77
|
+
!options.json ||
|
|
78
|
+
options.pageSize ||
|
|
79
|
+
options.before ||
|
|
80
|
+
options.after !== undefined ||
|
|
81
|
+
options.history ||
|
|
82
|
+
options.limit
|
|
83
|
+
)
|
|
84
|
+
throw new Error(
|
|
85
|
+
"Input receipt requires --json without pagination or --limit",
|
|
86
|
+
);
|
|
87
|
+
console.log(
|
|
88
|
+
JSON.stringify(
|
|
89
|
+
readSessionInputReceipt(jsonlId, options.inputReceipt),
|
|
90
|
+
),
|
|
91
|
+
);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (
|
|
95
|
+
options.pageSize ||
|
|
96
|
+
options.before ||
|
|
97
|
+
options.history ||
|
|
98
|
+
options.after !== undefined
|
|
99
|
+
) {
|
|
100
|
+
if (!options.json)
|
|
101
|
+
throw new Error("Transcript pagination requires --json");
|
|
102
|
+
if (options.limit)
|
|
103
|
+
throw new Error(
|
|
104
|
+
"Transcript pagination cannot be combined with --limit",
|
|
105
|
+
);
|
|
106
|
+
const readPage = options.history
|
|
107
|
+
? (await import("../lib/session-transcript-history.js"))
|
|
108
|
+
.readSessionTranscriptHistory
|
|
109
|
+
: readSessionTranscriptPage;
|
|
110
|
+
const page = readPage(jsonlId, {
|
|
111
|
+
limit: numericOption(options.pageSize || "50", {
|
|
112
|
+
name: "--page-size",
|
|
113
|
+
integer: true,
|
|
114
|
+
min: 1,
|
|
115
|
+
max: 100,
|
|
116
|
+
}),
|
|
117
|
+
cursor: options.before || null,
|
|
118
|
+
...(options.after !== undefined ? { after: options.after } : {}),
|
|
119
|
+
});
|
|
120
|
+
console.log(JSON.stringify(page));
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
37
123
|
const metadata = getJsonlSessionMetadata(jsonlId);
|
|
38
124
|
const messages = rebuildMessages(jsonlId);
|
|
39
125
|
sess = {
|
|
@@ -50,6 +136,16 @@ export function registerSessionShowSubcommand(session, program) {
|
|
|
50
136
|
// Keep SQLite and the application bootstrap outside the canonical
|
|
51
137
|
// JSONL read path. Legacy sessions still retain the original fallback.
|
|
52
138
|
if (!sess) {
|
|
139
|
+
if (
|
|
140
|
+
options.pageSize ||
|
|
141
|
+
options.before ||
|
|
142
|
+
options.after !== undefined ||
|
|
143
|
+
options.history ||
|
|
144
|
+
options.inputReceipt !== undefined
|
|
145
|
+
)
|
|
146
|
+
throw new Error(
|
|
147
|
+
"Verified transcript pages and input receipts require a canonical JSONL session",
|
|
148
|
+
);
|
|
53
149
|
const runtime = await import("../runtime/bootstrap.js");
|
|
54
150
|
const sessionManager = await import("../lib/session-manager.js");
|
|
55
151
|
shutdown = runtime.shutdown;
|
|
@@ -113,7 +209,19 @@ export function registerSessionShowSubcommand(session, program) {
|
|
|
113
209
|
logger.log("");
|
|
114
210
|
}
|
|
115
211
|
} catch (error) {
|
|
116
|
-
|
|
212
|
+
if (options.after !== undefined && options.json) {
|
|
213
|
+
console.log(
|
|
214
|
+
JSON.stringify({
|
|
215
|
+
schema: "chainlesschain.session-transcript-changes-error/v1",
|
|
216
|
+
sessionId: changesSessionId,
|
|
217
|
+
code:
|
|
218
|
+
typeof error.code === "string" && error.code.length <= 128
|
|
219
|
+
? error.code
|
|
220
|
+
: "SESSION_TRANSCRIPT_CHANGES_FAILED",
|
|
221
|
+
error: String(error.message).slice(0, 1000),
|
|
222
|
+
}),
|
|
223
|
+
);
|
|
224
|
+
} else logger.error(`Failed: ${error.message}`);
|
|
117
225
|
process.exitCode = 1;
|
|
118
226
|
} finally {
|
|
119
227
|
if (ctx && shutdown) await shutdown();
|
package/src/commands/session.js
CHANGED
|
@@ -220,7 +220,7 @@ export function rankSessions(sessions, limit) {
|
|
|
220
220
|
.slice(0, limit);
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
-
export function registerSessionCommand(program) {
|
|
223
|
+
export function registerSessionCommand(program, dependencies = {}) {
|
|
224
224
|
const session = program
|
|
225
225
|
.command("session")
|
|
226
226
|
.description("Conversation session management");
|
|
@@ -737,13 +737,37 @@ export function registerSessionCommand(program) {
|
|
|
737
737
|
|
|
738
738
|
// Import and start chat REPL with restored messages
|
|
739
739
|
const { startChatRepl } = await import("../repl/chat-repl.js");
|
|
740
|
-
|
|
740
|
+
const {
|
|
741
|
+
resolveChatCommandEvolutionComposition,
|
|
742
|
+
assertChatSessionUsageAdmission,
|
|
743
|
+
} = await import("./chat.js");
|
|
744
|
+
const { readEvolutionCompositionFactory } =
|
|
745
|
+
await import("../lib/evolution/governed-model-turn.js");
|
|
746
|
+
const { loadEvolutionDeploymentCommandDependencies } =
|
|
747
|
+
await import("../lib/evolution/evolution-deployment-loader.js");
|
|
748
|
+
const { waitForAgentEvolutionSession } =
|
|
749
|
+
await import("../lib/evolution/agent-evolution-session-lifecycle.js");
|
|
750
|
+
assertChatSessionUsageAdmission(sess.id);
|
|
751
|
+
// Resume is a chat entrypoint. Use the target's authenticated chat
|
|
752
|
+
// deployment, loaded only here so read-only session commands need none.
|
|
753
|
+
const factory =
|
|
754
|
+
readEvolutionCompositionFactory(dependencies) ??
|
|
755
|
+
readEvolutionCompositionFactory(
|
|
756
|
+
(await loadEvolutionDeploymentCommandDependencies("chat")) || {},
|
|
757
|
+
);
|
|
758
|
+
const composition =
|
|
759
|
+
await resolveChatCommandEvolutionComposition(factory);
|
|
760
|
+
const ingress = composition.evolutionIngress;
|
|
761
|
+
await ingress.start();
|
|
762
|
+
const lifecycle = await startChatRepl({
|
|
741
763
|
model: options.model || sess.model || "qwen2:7b",
|
|
742
764
|
provider: options.provider || sess.provider || "ollama",
|
|
743
765
|
baseUrl: options.baseUrl || "http://localhost:11434",
|
|
744
766
|
resumeMessages: sess.messages,
|
|
745
767
|
sessionId: sess.id,
|
|
768
|
+
evolutionIngress: ingress,
|
|
746
769
|
});
|
|
770
|
+
await waitForAgentEvolutionSession(lifecycle, ingress);
|
|
747
771
|
} catch (err) {
|
|
748
772
|
logger.error(`Failed: ${err.message}`);
|
|
749
773
|
process.exitCode = 1;
|
package/src/commands/tokens.js
CHANGED
|
@@ -49,6 +49,11 @@ import {
|
|
|
49
49
|
clearExpired,
|
|
50
50
|
} from "../lib/response-cache.js";
|
|
51
51
|
|
|
52
|
+
function displayCost(value, unpriced = 0) {
|
|
53
|
+
if (value == null) return "unpriced";
|
|
54
|
+
return `$${Number(value).toFixed(4)}${unpriced ? ` (partial; ${unpriced} unpriced calls)` : ""}`;
|
|
55
|
+
}
|
|
56
|
+
|
|
52
57
|
export function registerTokensCommand(program) {
|
|
53
58
|
const tokens = program
|
|
54
59
|
.command("tokens")
|
|
@@ -99,7 +104,7 @@ export function registerTokensCommand(program) {
|
|
|
99
104
|
` Total tokens: ${chalk.cyan(stats.total_tokens.toLocaleString())}`,
|
|
100
105
|
);
|
|
101
106
|
logger.log(
|
|
102
|
-
` Total cost: ${chalk.yellow(
|
|
107
|
+
` Total cost: ${chalk.yellow(displayCost(stats.total_cost_usd, stats.unpriced_calls))}`,
|
|
103
108
|
);
|
|
104
109
|
logger.log(
|
|
105
110
|
` Avg response: ${chalk.gray(Math.round(stats.avg_response_time_ms) + "ms")}`,
|
|
@@ -108,7 +113,7 @@ export function registerTokensCommand(program) {
|
|
|
108
113
|
if (options.period !== "today") {
|
|
109
114
|
logger.log(chalk.bold("\n Today:"));
|
|
110
115
|
logger.log(
|
|
111
|
-
` Calls: ${chalk.cyan(todayStats.total_calls)} Tokens: ${chalk.cyan(todayStats.total_tokens.toLocaleString())} Cost: ${chalk.yellow(
|
|
116
|
+
` Calls: ${chalk.cyan(todayStats.total_calls)} Tokens: ${chalk.cyan(todayStats.total_tokens.toLocaleString())} Cost: ${chalk.yellow(displayCost(todayStats.total_cost_usd, todayStats.unpriced_calls))}`,
|
|
112
117
|
);
|
|
113
118
|
}
|
|
114
119
|
}
|
|
@@ -146,7 +151,7 @@ export function registerTokensCommand(program) {
|
|
|
146
151
|
` ${chalk.cyan(row.provider)}/${chalk.white(row.model)}`,
|
|
147
152
|
);
|
|
148
153
|
logger.log(
|
|
149
|
-
` Calls: ${row.calls} Tokens: ${row.total_tokens.toLocaleString()} Cost: ${chalk.yellow(
|
|
154
|
+
` Calls: ${row.calls} Tokens: ${row.total_tokens.toLocaleString()} Cost: ${chalk.yellow(displayCost(row.cost_usd, row.unpriced_calls))}`,
|
|
150
155
|
);
|
|
151
156
|
}
|
|
152
157
|
}
|
|
@@ -185,7 +190,7 @@ export function registerTokensCommand(program) {
|
|
|
185
190
|
logger.log(chalk.bold("Recent LLM Calls:\n"));
|
|
186
191
|
for (const e of entries) {
|
|
187
192
|
logger.log(
|
|
188
|
-
` ${chalk.gray(e.created_at)} ${chalk.cyan(e.provider)}/${chalk.white(e.model)} ${e.total_tokens} tokens ${chalk.yellow(
|
|
193
|
+
` ${chalk.gray(e.created_at)} ${chalk.cyan(e.provider)}/${chalk.white(e.model)} ${e.total_tokens} tokens ${chalk.yellow(displayCost(e.cost_usd))} ${chalk.gray(e.response_time_ms + "ms")}`,
|
|
189
194
|
);
|
|
190
195
|
}
|
|
191
196
|
}
|
package/src/data/changelog.json
CHANGED
|
@@ -1,6 +1,32 @@
|
|
|
1
1
|
{
|
|
2
2
|
"source": "CHANGELOG.md",
|
|
3
3
|
"releases": [
|
|
4
|
+
{
|
|
5
|
+
"productVersion": null,
|
|
6
|
+
"cliVersion": "0.166.79",
|
|
7
|
+
"cliVersions": ["0.166.79"],
|
|
8
|
+
"date": null,
|
|
9
|
+
"title": "",
|
|
10
|
+
"sections": [
|
|
11
|
+
{
|
|
12
|
+
"heading": "Added - cc CLI 0.166.79: opt-in Docker domain egress",
|
|
13
|
+
"body": "- Add an explicit Linux Docker egress engine for `run_shell`, with pinned target\n and relay images, a Unix-socket policy broker, target isolation verification,\n and a real product-path Docker probe.\n- Report an unknown execution outcome after target start or cleanup uncertainty\n without suggesting a safe automatic retry. Runtime policy-revision revocation\n remains under development."
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"productVersion": null,
|
|
19
|
+
"cliVersion": "0.166.78",
|
|
20
|
+
"cliVersions": ["0.166.78"],
|
|
21
|
+
"date": null,
|
|
22
|
+
"title": "",
|
|
23
|
+
"sections": [
|
|
24
|
+
{
|
|
25
|
+
"heading": "Added - cc CLI 0.166.78: CLI and IDE recovery candidate",
|
|
26
|
+
"body": "- Add verified session history paging and recovery across CLI, VS Code, and\n JetBrains, including bounded input and draft handling.\n- Improve process lifecycle and IDE host recovery; keep approval and sandbox\n boundaries with the CLI host.\n- Repair cross-platform CI fixtures and release validation for the exact source\n commit. Publish child npm packages before the CLI, then the IDE extensions."
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
},
|
|
4
30
|
{
|
|
5
31
|
"productVersion": null,
|
|
6
32
|
"cliVersion": "0.166.77",
|
|
@@ -2828,6 +2828,37 @@
|
|
|
2828
2828
|
}
|
|
2829
2829
|
}
|
|
2830
2830
|
},
|
|
2831
|
+
"AgentTranscriptReferences": {
|
|
2832
|
+
"type": "object",
|
|
2833
|
+
"additionalProperties": false,
|
|
2834
|
+
"required": [
|
|
2835
|
+
"schema",
|
|
2836
|
+
"sessionId",
|
|
2837
|
+
"assistantEventId"
|
|
2838
|
+
],
|
|
2839
|
+
"properties": {
|
|
2840
|
+
"schema": {
|
|
2841
|
+
"const": "chainlesschain.session-transcript-references/v1"
|
|
2842
|
+
},
|
|
2843
|
+
"sessionId": {
|
|
2844
|
+
"type": "string",
|
|
2845
|
+
"minLength": 1,
|
|
2846
|
+
"maxLength": 256
|
|
2847
|
+
},
|
|
2848
|
+
"assistantEventId": {
|
|
2849
|
+
"type": "string",
|
|
2850
|
+
"pattern": "^[a-f0-9]{64}$"
|
|
2851
|
+
},
|
|
2852
|
+
"userEventId": {
|
|
2853
|
+
"type": "string",
|
|
2854
|
+
"pattern": "^[a-f0-9]{64}$"
|
|
2855
|
+
},
|
|
2856
|
+
"clientMessageId": {
|
|
2857
|
+
"type": "string",
|
|
2858
|
+
"pattern": "^[a-zA-Z0-9_-]{1,80}$"
|
|
2859
|
+
}
|
|
2860
|
+
}
|
|
2861
|
+
},
|
|
2831
2862
|
"AgentResultStreamEvent": {
|
|
2832
2863
|
"type": "object",
|
|
2833
2864
|
"required": [
|
|
@@ -2868,6 +2899,9 @@
|
|
|
2868
2899
|
"type": "integer",
|
|
2869
2900
|
"minimum": 0
|
|
2870
2901
|
},
|
|
2902
|
+
"transcript_refs": {
|
|
2903
|
+
"$ref": "#/$defs/AgentTranscriptReferences"
|
|
2904
|
+
},
|
|
2871
2905
|
"duration_ms": {
|
|
2872
2906
|
"type": "integer",
|
|
2873
2907
|
"minimum": 0
|
|
@@ -3194,6 +3228,43 @@
|
|
|
3194
3228
|
"type": "string",
|
|
3195
3229
|
"maxLength": 64
|
|
3196
3230
|
},
|
|
3231
|
+
"permission_mode_state": {
|
|
3232
|
+
"type": "object",
|
|
3233
|
+
"required": [
|
|
3234
|
+
"correlation_id",
|
|
3235
|
+
"requested",
|
|
3236
|
+
"effective",
|
|
3237
|
+
"policy_revision"
|
|
3238
|
+
],
|
|
3239
|
+
"properties": {
|
|
3240
|
+
"correlation_id": {
|
|
3241
|
+
"type": "string",
|
|
3242
|
+
"pattern": "^[a-zA-Z0-9-]{1,80}$"
|
|
3243
|
+
},
|
|
3244
|
+
"requested": {
|
|
3245
|
+
"enum": [
|
|
3246
|
+
"default",
|
|
3247
|
+
"acceptEdits",
|
|
3248
|
+
"bypassPermissions"
|
|
3249
|
+
]
|
|
3250
|
+
},
|
|
3251
|
+
"effective": {
|
|
3252
|
+
"enum": [
|
|
3253
|
+
"default",
|
|
3254
|
+
"acceptEdits",
|
|
3255
|
+
"auto",
|
|
3256
|
+
"bypassPermissions",
|
|
3257
|
+
"dontAsk",
|
|
3258
|
+
"plan"
|
|
3259
|
+
]
|
|
3260
|
+
},
|
|
3261
|
+
"policy_revision": {
|
|
3262
|
+
"type": "string",
|
|
3263
|
+
"pattern": "^[a-f0-9]{16,64}$"
|
|
3264
|
+
}
|
|
3265
|
+
},
|
|
3266
|
+
"additionalProperties": true
|
|
3267
|
+
},
|
|
3197
3268
|
"tools": {
|
|
3198
3269
|
"type": "array",
|
|
3199
3270
|
"items": {
|