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.
Files changed (230) hide show
  1. package/README.md +9 -8
  2. package/completions/_cc +1 -1
  3. package/completions/cc.bash +1 -1
  4. package/completions/cc.fish +1 -1
  5. package/completions/cc.ps1 +1 -1
  6. package/package.json +1 -1
  7. package/src/assets/linux-subreaper/linux-arm64/manifest.json +10 -0
  8. package/src/assets/linux-subreaper/linux-arm64/supervisor +0 -0
  9. package/src/assets/linux-subreaper/linux-x64/manifest.json +10 -0
  10. package/src/assets/linux-subreaper/linux-x64/supervisor +0 -0
  11. package/src/assets/web-panel/assets/{AIOps-CpiCBhRh.js → AIOps-CwD6Pm_Y.js} +1 -1
  12. package/src/assets/web-panel/assets/{ActionButton-CnU-Xvx-.js → ActionButton-Du5Rp-O6.js} +1 -1
  13. package/src/assets/web-panel/assets/{Analytics-BJW-CNtf.js → Analytics-DY9l72ma.js} +3 -3
  14. package/src/assets/web-panel/assets/{AppLayout-UFQJL3G9.js → AppLayout-7t1WIaCJ.js} +5 -5
  15. package/src/assets/web-panel/assets/{Artifacts-Dr_IUDoY.js → Artifacts-BLIA5yny.js} +1 -1
  16. package/src/assets/web-panel/assets/{Audit-aglWo6rr.js → Audit-BC_N0QTg.js} +1 -1
  17. package/src/assets/web-panel/assets/{BackgroundAgents-Dm_TCiXC.js → BackgroundAgents-CA7SxDtg.js} +1 -1
  18. package/src/assets/web-panel/assets/{Backup-DUdX4-gA.js → Backup-BZ4AzS1_.js} +1 -1
  19. package/src/assets/web-panel/assets/{BaseInput-BTcLjy1o.js → BaseInput-BhiggGaH.js} +1 -1
  20. package/src/assets/web-panel/assets/{Chat-Bhy9qZrl.js → Chat-CDdBoIBI.js} +5 -5
  21. package/src/assets/web-panel/assets/ChatBubbleRenderer-hsBsrl31.js +1 -0
  22. package/src/assets/web-panel/assets/{Checkbox-CblrPa21.js → Checkbox-asoMKSEK.js} +1 -1
  23. package/src/assets/web-panel/assets/{Codegen-SEAHzOlr.js → Codegen-B0gElLdm.js} +1 -1
  24. package/src/assets/web-panel/assets/{Col-DJz8iFOR.js → Col-DrNzLpF6.js} +1 -1
  25. package/src/assets/web-panel/assets/{Community-RufKhcQt.js → Community-DCzB5qkI.js} +1 -1
  26. package/src/assets/web-panel/assets/{Compact-Dlifx08U.js → Compact-Db-Eua_j.js} +1 -1
  27. package/src/assets/web-panel/assets/{Compliance-DdhQWcHh.js → Compliance-B76NByjl.js} +1 -1
  28. package/src/assets/web-panel/assets/{Cowork-BLNn6oOm.js → Cowork-C-nK6Qpk.js} +3 -3
  29. package/src/assets/web-panel/assets/{Cron-Dv-JWY2d.js → Cron-C-GlQO19.js} +2 -2
  30. package/src/assets/web-panel/assets/{Crosschain-k7Pz7O-b.js → Crosschain-Cuuz9IIh.js} +1 -1
  31. package/src/assets/web-panel/assets/{DID-C_10syUW.js → DID-gwFaT973.js} +2 -2
  32. package/src/assets/web-panel/assets/{Dashboard-CMyH6Szx.js → Dashboard-DHDt5jEf.js} +2 -2
  33. package/src/assets/web-panel/assets/{Dropdown-DjmD2Saa.js → Dropdown-CJ9kog-Y.js} +1 -1
  34. package/src/assets/web-panel/assets/{EmailListRenderer-36_IRUSo.js → EmailListRenderer-DOSXFRiQ.js} +1 -1
  35. package/src/assets/web-panel/assets/{EvolutionSettings-CmtU0XmM.js → EvolutionSettings-CHYMP7rR.js} +1 -1
  36. package/src/assets/web-panel/assets/{FamilyGuardDashboard-DEgf9kyP.js → FamilyGuardDashboard-C1gzG5EK.js} +1 -1
  37. package/src/assets/web-panel/assets/{Federation-DGO1wQls.js → Federation-CEdNVWUw.js} +1 -1
  38. package/src/assets/web-panel/assets/{FormItemContext-Doj1FmKW.js → FormItemContext-CwVOWPX8.js} +1 -1
  39. package/src/assets/web-panel/assets/{GenericCardRenderer-GzOU27iT.js → GenericCardRenderer-CgNUs3kT.js} +1 -1
  40. package/src/assets/web-panel/assets/{Git-Dd7D1EDK.js → Git-DM4MNnQo.js} +2 -2
  41. package/src/assets/web-panel/assets/{Governance-6IY8LcjI.js → Governance-DdOtjkvd.js} +1 -1
  42. package/src/assets/web-panel/assets/{Inference-BB9gl8q1.js → Inference-28PidFfr.js} +1 -1
  43. package/src/assets/web-panel/assets/{KnowledgeGraph-CeCed5wd.js → KnowledgeGraph-Bpj_qNUK.js} +1 -1
  44. package/src/assets/web-panel/assets/{Logs-CYOeHuaI.js → Logs-C6Ix19Ay.js} +2 -2
  45. package/src/assets/web-panel/assets/{MarkdownRenderer-Bk8Zqc2R.js → MarkdownRenderer-Bj6mtPbf.js} +1 -1
  46. package/src/assets/web-panel/assets/{Marketplace-D-_xgHgM.js → Marketplace-DqkhRSMP.js} +1 -1
  47. package/src/assets/web-panel/assets/{McpTools-NnaUTF5t.js → McpTools-1WQ2SjaE.js} +3 -3
  48. package/src/assets/web-panel/assets/{Memory-CndN9pMt.js → Memory-BWTi7v6R.js} +2 -2
  49. package/src/assets/web-panel/assets/{MobileBridge-BXblFmhY.js → MobileBridge-DB4wu3UE.js} +1 -1
  50. package/src/assets/web-panel/assets/{MobileProjects-CC26Dm2k.js → MobileProjects-Bh9pWx2f.js} +1 -1
  51. package/src/assets/web-panel/assets/{Mtc-BhaqWCiW.js → Mtc-BVF1Wrno.js} +4 -4
  52. package/src/assets/web-panel/assets/{MtcAudit-D6fktM2w.js → MtcAudit-DtNfslPf.js} +5 -5
  53. package/src/assets/web-panel/assets/{Multisig-CFvahz7s.js → Multisig-4qcXP0bf.js} +3 -3
  54. package/src/assets/web-panel/assets/{NLProgramming-Co73Ivya.js → NLProgramming-BRJl5Ehw.js} +1 -1
  55. package/src/assets/web-panel/assets/{Notes-B4g33L1o.js → Notes-BRY_bgMk.js} +3 -3
  56. package/src/assets/web-panel/assets/{NotificationSettings-lXd17EbN.js → NotificationSettings-DirXMFz4.js} +1 -1
  57. package/src/assets/web-panel/assets/{OrderTableRenderer-BiOB0GIi.js → OrderTableRenderer-BlrY8lwu.js} +1 -1
  58. package/src/assets/web-panel/assets/{Organization-JQ7_wQIA.js → Organization-CVzQ1vO-.js} +4 -4
  59. package/src/assets/web-panel/assets/{Overflow-gwgJgozQ.js → Overflow-A3rXTPG4.js} +1 -1
  60. package/src/assets/web-panel/assets/{P2P-D9L_0gie.js → P2P-Db9ABWz0.js} +2 -2
  61. package/src/assets/web-panel/assets/{PdhVaultBrowser-CbOPsFE9.js → PdhVaultBrowser-CPv0H2OZ.js} +3 -3
  62. package/src/assets/web-panel/assets/{Permissions-Cz42HNQf.js → Permissions-COnW4sIR.js} +4 -4
  63. package/src/assets/web-panel/assets/{PersonalDataHub-DjorYtrF.js → PersonalDataHub-C1hG7rp7.js} +5 -5
  64. package/src/assets/web-panel/assets/{Pipeline-DyWPhmm5.js → Pipeline---GLRDEe.js} +1 -1
  65. package/src/assets/web-panel/assets/{Privacy-DyfLMl2j.js → Privacy-aaN9R3Lu.js} +1 -1
  66. package/src/assets/web-panel/assets/{ProjectInit-CyqDx1OE.js → ProjectInit-C-kw49hE.js} +2 -2
  67. package/src/assets/web-panel/assets/{ProjectSettings-DsBw0Csy.js → ProjectSettings-y5tTkBTC.js} +2 -2
  68. package/src/assets/web-panel/assets/Projects-DZHlhyPB.js +1 -0
  69. package/src/assets/web-panel/assets/{Providers-CCI_klN-.js → Providers-LqxnV72o.js} +1 -1
  70. package/src/assets/web-panel/assets/{QrScannerModal-DNsnlDdS.js → QrScannerModal-D_q-Y5F0.js} +1 -1
  71. package/src/assets/web-panel/assets/{QuickAsk-B9r2iaee.js → QuickAsk-_E_KB5o8.js} +1 -1
  72. package/src/assets/web-panel/assets/{Recommend-BJDe03GR.js → Recommend-BN8S5WJA.js} +1 -1
  73. package/src/assets/web-panel/assets/{RemoteSession-J7JR3rRo.js → RemoteSession-BFzrY_aW.js} +3 -3
  74. package/src/assets/web-panel/assets/{Reputation-DR39AJeV.js → Reputation-C1HCLaTV.js} +1 -1
  75. package/src/assets/web-panel/assets/{Row-Dh77m3NZ.js → Row-B8T2-Qv7.js} +1 -1
  76. package/src/assets/web-panel/assets/{RssFeed-BUdg28nJ.js → RssFeed-CNQLk8v1.js} +3 -3
  77. package/src/assets/web-panel/assets/{Search-BNC7sGhj.js → Search-BOx720Kc.js} +1 -1
  78. package/src/assets/web-panel/assets/{Security-DISENGI7.js → Security-Ds8z6PF6.js} +4 -4
  79. package/src/assets/web-panel/assets/{Services-BBBGpJ1-.js → Services-C0-YkRSF.js} +2 -2
  80. package/src/assets/web-panel/assets/{Skeleton-DMcIoIv2.js → Skeleton-DUHlSySD.js} +1 -1
  81. package/src/assets/web-panel/assets/{Skills-QAyFbI3r.js → Skills-C8CBbbh0.js} +1 -1
  82. package/src/assets/web-panel/assets/{Sla-CSg5wLH7.js → Sla-lQltyYfB.js} +1 -1
  83. package/src/assets/web-panel/assets/{SpeechSettings-DMPxTc5x.js → SpeechSettings-B5vyOma-.js} +1 -1
  84. package/src/assets/web-panel/assets/{SyncSettings-CPG7l30y.js → SyncSettings-BKDPu_y-.js} +2 -2
  85. package/src/assets/web-panel/assets/{Tasks-Y1kOVvVL.js → Tasks-Bgvf7LTx.js} +1 -1
  86. package/src/assets/web-panel/assets/{Templates-jt9NagL0.js → Templates-BMZyYYS7.js} +1 -1
  87. package/src/assets/web-panel/assets/{Tenant-DauuJICx.js → Tenant-7PYTig8f.js} +1 -1
  88. package/src/assets/web-panel/assets/{Terminal-E9rnKeGq.js → Terminal-C2W0LMdR.js} +2 -2
  89. package/src/assets/web-panel/assets/{TimelineRenderer-Cc7z2APG.js → TimelineRenderer-CqREew_l.js} +1 -1
  90. package/src/assets/web-panel/assets/{Tokens-CV0UthRA.js → Tokens-BhTyxTuD.js} +1 -1
  91. package/src/assets/web-panel/assets/{Trigger-BFcJJGfu.js → Trigger-DxNSSZy_.js} +1 -1
  92. package/src/assets/web-panel/assets/{Trust-BAydbNJA.js → Trust-Dy_wfbIh.js} +1 -1
  93. package/src/assets/web-panel/assets/{UkeySign-DcOS6sqL.js → UkeySign-DJC5ANqx.js} +1 -1
  94. package/src/assets/web-panel/assets/{VideoEditing-BLHJZvif.js → VideoEditing-CNFevrO4.js} +1 -1
  95. package/src/assets/web-panel/assets/{Wallet-4QFLKHwW.js → Wallet-CXzuS1YK.js} +4 -4
  96. package/src/assets/web-panel/assets/{WebAuthn-BocEOOSj.js → WebAuthn-BWS6HP8c.js} +5 -5
  97. package/src/assets/web-panel/assets/{WorkflowEditor-DCfF7D0B.js → WorkflowEditor-swiN_7Vj.js} +1 -1
  98. package/src/assets/web-panel/assets/{chat-CxvfsYGr.js → chat-NwH7qlBs.js} +1 -1
  99. package/src/assets/web-panel/assets/{colors-KtQB9DmQ.js → colors-h6nRhBTw.js} +1 -1
  100. package/src/assets/web-panel/assets/{compact-item-Dx4J6arN.js → compact-item-BQ6B6rP2.js} +1 -1
  101. package/src/assets/web-panel/assets/{createContext-Cq0olgzo.js → createContext-CQkJuRcG.js} +1 -1
  102. package/src/assets/web-panel/assets/devWarning-Bz6vqBGV.js +1 -0
  103. package/src/assets/web-panel/assets/{hasIn-Bf9-h3D-.js → hasIn-Diwl1WyI.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-CpO6DKuu.js → index-0ZztPzIm.js} +1 -1
  105. package/src/assets/web-panel/assets/index-1b7DEw-w.js +1 -0
  106. package/src/assets/web-panel/assets/{index-DQDR-_ai.js → index-AzeSQJDK.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-BMcC4cbj.js → index-B3QgcUBV.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-BO6XvO-C.js → index-B5gj_uCC.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-ClUfSChI.js → index-BI3ALCgN.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-B3xfiItB.js → index-BRl3KUj0.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-DFdEDvFn.js → index-BYYb8oeV.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-CqnggDos.js → index-BcKDUGYf.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-B_8UcDan.js → index-BcjlIMP9.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-CmQuG0fr.js → index-BheCvudN.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-iE9tqEN5.js → index-BjcARUtr.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-nmyDOh_b.js → index-BnQUin2K.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-Br1mDMfO.js → index-Bs6HyCfP.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-DZWjYfWt.js → index-BvPz6vZ8.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-0fi8DIVQ.js → index-C3Ye1ISy.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-hSzyoXri.js → index-C7-T-u0L.js} +3 -3
  121. package/src/assets/web-panel/assets/{index-DfrFNMvz.js → index-CRWpixu2.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-C9yaUHm9.js → index-CatBQDSQ.js} +1 -1
  123. package/src/assets/web-panel/assets/index-CfD4tMuW.js +1 -0
  124. package/src/assets/web-panel/assets/{index-DMR-keCL.js → index-CqH-oOR3.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-Cy865Hhq.js → index-CwsoVDi-.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-DI5bRqNG.js → index-CyBtEVLM.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-gt5N6VM_.js → index-D5P498Rk.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-6dDDSCHD.js → index-DKaB4xTf.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-BKtQyb2o.js → index-DQYZa1Ci.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-CaIclw-E.js → index-DZ9CNcbJ.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-_FIz-0tp.js → index-DZAsByy4.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-DBRlZdZj.js → index-D_HY0nyN.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-DsCdl2Od.js → index-Da8frO_A.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-Cfsn7N18.js → index-DjB8IC9D.js} +1 -1
  135. package/src/assets/web-panel/assets/{index-CeYP_kT9.js → index-Dwpthe2b.js} +1 -1
  136. package/src/assets/web-panel/assets/{index-B8WuPI-h.js → index-Fm95dO4u.js} +1 -1
  137. package/src/assets/web-panel/assets/{index-CK2U_AHi.js → index-GTefQSbY.js} +1 -1
  138. package/src/assets/web-panel/assets/{index-DnU-dUWd.js → index-OEWSrqit.js} +1 -1
  139. package/src/assets/web-panel/assets/{index-DDAe1UmZ.js → index-TYMmUsxZ.js} +1 -1
  140. package/src/assets/web-panel/assets/{index-D2BfSIrn.js → index-iHNOr_wL.js} +1 -1
  141. package/src/assets/web-panel/assets/{index-Cz7f4Jaq.js → index-mxxZtsHp.js} +1 -1
  142. package/src/assets/web-panel/assets/{index-BHmdMKYl.js → index-pYwYBVeQ.js} +1 -1
  143. package/src/assets/web-panel/assets/{initDefaultProps-DvzKJ6o5.js → initDefaultProps-BeUrpC_H.js} +1 -1
  144. package/src/assets/web-panel/assets/{motion-D1yTvmxW.js → motion-CHW5EXt1.js} +1 -1
  145. package/src/assets/web-panel/assets/{move-DxtSIF8K.js → move-CWaoWJvF.js} +1 -1
  146. package/src/assets/web-panel/assets/{mtc-parser-BDsQgIHY.js → mtc-parser-CEC6Us1u.js} +1 -1
  147. package/src/assets/web-panel/assets/{omit-UVBJW8kh.js → omit-1D-kP_Qj.js} +1 -1
  148. package/src/assets/web-panel/assets/{pickAttrs-D4QqtTyX.js → pickAttrs-CsS0myLl.js} +1 -1
  149. package/src/assets/web-panel/assets/{placementArrow-QXmu6vBf.js → placementArrow-bMThOvkI.js} +1 -1
  150. package/src/assets/web-panel/assets/{responsiveObserve-D-PmXO9M.js → responsiveObserve-B72knbW8.js} +1 -1
  151. package/src/assets/web-panel/assets/{slide-CKbGxEZJ.js → slide-C3bI_2yy.js} +1 -1
  152. package/src/assets/web-panel/assets/{statusUtils-BbgXPkXm.js → statusUtils-0-FmcCAS.js} +1 -1
  153. package/src/assets/web-panel/assets/{styleChecker-DOr9rk68.js → styleChecker-DXUyqoWY.js} +1 -1
  154. package/src/assets/web-panel/assets/{useFlexGapSupport-B2wO2r36.js → useFlexGapSupport-BSSnL3f1.js} +1 -1
  155. package/src/assets/web-panel/assets/{useFs-SeVGBK34.js → useFs-B0Cvvl0S.js} +1 -1
  156. package/src/assets/web-panel/assets/{usePersonalDataHub-DUJBCxjD.js → usePersonalDataHub-6D-d4WU5.js} +1 -1
  157. package/src/assets/web-panel/assets/{vnode-CF4EYsig.js → vnode-zjIrlxT_.js} +1 -1
  158. package/src/assets/web-panel/assets/{zoom-pRUs5pqI.js → zoom-Hw7NEisu.js} +1 -1
  159. package/src/assets/web-panel/index.html +1 -1
  160. package/src/command-help-index.json +1 -1
  161. package/src/command-manifest.json +1 -1
  162. package/src/commands/checkpoint.js +42 -7
  163. package/src/commands/orchestrate.js +85 -25
  164. package/src/commands/session-location.js +5 -0
  165. package/src/commands/session-show.js +109 -1
  166. package/src/commands/session.js +26 -2
  167. package/src/commands/tokens.js +9 -4
  168. package/src/data/changelog.json +26 -0
  169. package/src/generated/cc-agent-protocol.schema.json +71 -0
  170. package/src/harness/jsonl-session-store.js +357 -114
  171. package/src/harness/mcp-client.js +44 -1
  172. package/src/lib/agent-router.js +35 -7
  173. package/src/lib/agent-sandbox.js +302 -2
  174. package/src/lib/app-server/server.js +14 -0
  175. package/src/lib/background-agent-supervisor.js +14 -4
  176. package/src/lib/causal-observability.js +64 -1
  177. package/src/lib/checkpoint-summary-projection.js +98 -0
  178. package/src/lib/checkpoint-timeline-authority.js +15 -51
  179. package/src/lib/claude-code-bridge.js +302 -60
  180. package/src/lib/codex-app-server-adapter.js +161 -35
  181. package/src/lib/cost-budget.js +4 -0
  182. package/src/lib/doctor-checkup.js +31 -2
  183. package/src/lib/durable-security-store.js +6 -1
  184. package/src/lib/evolution/evolution-artifact-identity.js +21 -0
  185. package/src/lib/evolution/evolution-artifact-ports.js +5 -11
  186. package/src/lib/evolution/evolution-eval-cohort-receipt-reconciliation.js +389 -0
  187. package/src/lib/execution-location-failure-site.js +63 -0
  188. package/src/lib/execution-location-target.js +102 -8
  189. package/src/lib/external-agent-adapters.js +2 -0
  190. package/src/lib/image-file-boundary.js +154 -0
  191. package/src/lib/image-input.js +16 -3
  192. package/src/lib/llm-pricing.js +114 -8
  193. package/src/lib/lsp/code-intelligence.js +7 -1
  194. package/src/lib/mcp-call-ledger-store.js +7 -2
  195. package/src/lib/model-capabilities.js +21 -10
  196. package/src/lib/model-context-catalog.js +60 -1
  197. package/src/lib/openai-responses.js +7 -1
  198. package/src/lib/orchestrator.js +8 -2
  199. package/src/lib/process-execution-broker/index.js +93 -1
  200. package/src/lib/process-execution-broker/linux-subreaper-artifact.js +120 -0
  201. package/src/lib/process-execution-broker/linux-subreaper-helper.js +344 -0
  202. package/src/lib/process-execution-broker/linux-subreaper-process.js +326 -0
  203. package/src/lib/process-execution-broker/linux-subreaper-supervisor.c +360 -0
  204. package/src/lib/process-execution-broker/owned-posix-process-group-worker.mjs +131 -0
  205. package/src/lib/process-execution-broker/owned-posix-process-group.js +267 -0
  206. package/src/lib/process-execution-broker/process-ownership-journal.js +297 -0
  207. package/src/lib/process-execution-broker/process-ownership-quarantine.js +91 -0
  208. package/src/lib/runtime-usage-ledger.js +3 -0
  209. package/src/lib/sandbox-docker-egress.js +507 -0
  210. package/src/lib/sandbox-egress-proxy.js +167 -10
  211. package/src/lib/sandbox-egress-worker-thread.js +38 -0
  212. package/src/lib/sandbox-egress-worker.js +196 -0
  213. package/src/lib/secure-fs.js +158 -42
  214. package/src/lib/session-branch-history.js +240 -0
  215. package/src/lib/session-history-origins.js +285 -0
  216. package/src/lib/session-input-receipt.js +110 -0
  217. package/src/lib/session-resource-budget.js +8 -8
  218. package/src/lib/session-transcript-history.js +456 -0
  219. package/src/lib/session-transcript-page.js +164 -0
  220. package/src/lib/session-transcript-reference.js +38 -0
  221. package/src/lib/session-usage.js +8 -0
  222. package/src/lib/token-tracker.js +32 -54
  223. package/src/lib/usage-pricing-context.js +93 -0
  224. package/src/runtime/agent-core.js +141 -21
  225. package/src/runtime/headless-stream.js +202 -4
  226. package/src/assets/web-panel/assets/ChatBubbleRenderer-D0WrJQaQ.js +0 -1
  227. package/src/assets/web-panel/assets/Projects-CRaSI25Z.js +0 -1
  228. package/src/assets/web-panel/assets/devWarning-CmgDNkoO.js +0 -1
  229. package/src/assets/web-panel/assets/index-BpIZ2S01.js +0 -1
  230. 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
- logger.error(`Failed: ${error.message}`);
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();
@@ -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
- await startChatRepl({
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;
@@ -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("$" + stats.total_cost_usd.toFixed(4))}`,
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("$" + todayStats.total_cost_usd.toFixed(4))}`,
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("$" + row.cost_usd.toFixed(4))}`,
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("$" + e.cost_usd.toFixed(4))} ${chalk.gray(e.response_time_ms + "ms")}`,
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
  }
@@ -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": {