chainlesschain 0.166.46 → 0.166.48

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 (232) hide show
  1. package/README.md +6 -4
  2. package/package.json +4 -2
  3. package/src/assets/web-panel/assets/{AIOps-Cp8KiMmv.js → AIOps-BLGEffkh.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-B4d9BGsm.js → ActionButton-Cz1z2VGD.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-Cf9yXTkv.js → Analytics-C3j9cf6q.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-40UkmxtP.js → AppLayout-BR9ERuCA.js} +4 -4
  7. package/src/assets/web-panel/assets/{Artifacts-Ckkb4oOA.js → Artifacts-CozJCm4y.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-Dnf569k5.js → Audit-DC5g9Ra2.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-CA6bLem4.js → BackgroundAgents-B1zrQ0dW.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-ChQU0I_Q.js → Backup-ChVnfjpm.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-BHeZXnNN.js → BaseInput-8_vLQsLf.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-DcFVYB2E.js → Chat-Dct9bm6L.js} +5 -5
  13. package/src/assets/web-panel/assets/ChatBubbleRenderer-BvoSsCKh.js +1 -0
  14. package/src/assets/web-panel/assets/{Checkbox-2PDbejv2.js → Checkbox-DZQIsCIC.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-DJBn1RAu.js → Codegen-CdzHxmnq.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-CPRq7n6y.js → Col-DdAN8LeW.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-axvINFMi.js → Community-CNgjT9MA.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-_OX4Qbe0.js → Compact-BtQiX6G-.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-DWAkvzRL.js → Compliance-OGX5ma3j.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-CUIJ25oj.js → Cowork-CgugQnGM.js} +3 -3
  21. package/src/assets/web-panel/assets/{Cron-nR0m7H3_.js → Cron-Bpg7cPFD.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-CgTLXzh_.js → Crosschain-D1hsuswf.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-BllzRB6Q.js → DID-miDRsMBw.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-C9f0IIBN.js → Dashboard-CGcl8htP.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-BkahetiO.js → Dropdown-BFaxTdVE.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-rartVC-k.js → EmailListRenderer-BQdGLZIO.js} +1 -1
  27. package/src/assets/web-panel/assets/{EvolutionSettings-BqpG3XHV.js → EvolutionSettings-bMvgBk6r.js} +1 -1
  28. package/src/assets/web-panel/assets/{FamilyGuardDashboard-DgUdFvw1.js → FamilyGuardDashboard-c1WVC_--.js} +1 -1
  29. package/src/assets/web-panel/assets/{Federation-oFpIQU6g.js → Federation-DyAcFrQY.js} +1 -1
  30. package/src/assets/web-panel/assets/{FormItemContext-BUH5xlyP.js → FormItemContext-CfwpfD2B.js} +1 -1
  31. package/src/assets/web-panel/assets/{GenericCardRenderer-ilRa-ueg.js → GenericCardRenderer-DkJcbBpS.js} +1 -1
  32. package/src/assets/web-panel/assets/{Git-DlHHSF8j.js → Git-DgYIrPJh.js} +2 -2
  33. package/src/assets/web-panel/assets/{Governance-yQiiXIWe.js → Governance-BF1tYPJ6.js} +1 -1
  34. package/src/assets/web-panel/assets/{Inference-BUDRVGOP.js → Inference-BFkwRIrU.js} +1 -1
  35. package/src/assets/web-panel/assets/{KnowledgeGraph-BaGyIoN1.js → KnowledgeGraph-DpCoqhBa.js} +1 -1
  36. package/src/assets/web-panel/assets/{Logs-C1cO6zE0.js → Logs-DU2qAJmD.js} +2 -2
  37. package/src/assets/web-panel/assets/{MarkdownRenderer-_z_Iaoes.js → MarkdownRenderer-QWv7UJLq.js} +1 -1
  38. package/src/assets/web-panel/assets/{Marketplace-CM8cGL0K.js → Marketplace-Dz9NUrfo.js} +1 -1
  39. package/src/assets/web-panel/assets/{McpTools-CDqAMU0U.js → McpTools-B67I3d5v.js} +3 -3
  40. package/src/assets/web-panel/assets/{Memory-CfB0-Ofv.js → Memory-crkElJSy.js} +2 -2
  41. package/src/assets/web-panel/assets/{MobileBridge-BL18ytvB.js → MobileBridge-BO20VbdX.js} +1 -1
  42. package/src/assets/web-panel/assets/{MobileProjects-PIyyxbuJ.js → MobileProjects-Ba-3gZZd.js} +1 -1
  43. package/src/assets/web-panel/assets/{Mtc-BTTrFCol.js → Mtc-BAHZM084.js} +4 -4
  44. package/src/assets/web-panel/assets/{MtcAudit-JHZn037c.js → MtcAudit-CL3DzajL.js} +4 -4
  45. package/src/assets/web-panel/assets/{Multisig-CMf9NEdB.js → Multisig-BSWWzvWH.js} +3 -3
  46. package/src/assets/web-panel/assets/{NLProgramming-Dhk3qaus.js → NLProgramming-fnxqXM_3.js} +1 -1
  47. package/src/assets/web-panel/assets/{Notes-6F8EarNN.js → Notes-qUZPIQXT.js} +3 -3
  48. package/src/assets/web-panel/assets/{NotificationSettings-gxdaVEit.js → NotificationSettings-x9Xrixqu.js} +1 -1
  49. package/src/assets/web-panel/assets/{OrderTableRenderer-gVgXQWdc.js → OrderTableRenderer-BtMtQUt7.js} +1 -1
  50. package/src/assets/web-panel/assets/{Organization-CzvHcDNO.js → Organization-C946Hzna.js} +4 -4
  51. package/src/assets/web-panel/assets/{Overflow-Dclx30Vv.js → Overflow-BYf8KIts.js} +1 -1
  52. package/src/assets/web-panel/assets/{P2P-CM0Wm9vZ.js → P2P-Cbqf5dnv.js} +2 -2
  53. package/src/assets/web-panel/assets/PdhVaultBrowser-rmxp0cuF.js +7 -0
  54. package/src/assets/web-panel/assets/{Permissions-B_oATenG.js → Permissions-CZBw45EW.js} +3 -3
  55. package/src/assets/web-panel/assets/{PersonalDataHub-CptiVBh5.js → PersonalDataHub-BKwUAt43.js} +4 -4
  56. package/src/assets/web-panel/assets/{Pipeline-DkHzgyyI.js → Pipeline-DmFD2QW4.js} +1 -1
  57. package/src/assets/web-panel/assets/{Privacy-DzZvwcKh.js → Privacy-KpuwWvt5.js} +1 -1
  58. package/src/assets/web-panel/assets/{ProjectInit-CzkCs-5G.js → ProjectInit-Bt8UheX6.js} +2 -2
  59. package/src/assets/web-panel/assets/{ProjectSettings-BB8dcxRD.js → ProjectSettings-2ZeAn9CP.js} +2 -2
  60. package/src/assets/web-panel/assets/{Projects-B7PW9CFY.js → Projects-zBuet8Zs.js} +1 -1
  61. package/src/assets/web-panel/assets/{Providers-Tfx-ti1V.js → Providers-DcEAnw6L.js} +1 -1
  62. package/src/assets/web-panel/assets/{QrScannerModal-EvWlNhfX.js → QrScannerModal-qF7liYG9.js} +1 -1
  63. package/src/assets/web-panel/assets/{QuickAsk-CUspgbNC.js → QuickAsk-qiESlVBJ.js} +1 -1
  64. package/src/assets/web-panel/assets/{Recommend-COY2g77J.js → Recommend-Bk-cQyi9.js} +1 -1
  65. package/src/assets/web-panel/assets/{RemoteSession-BzMBU6E6.js → RemoteSession-CwrekErS.js} +2 -2
  66. package/src/assets/web-panel/assets/{Reputation-RtYRF4YP.js → Reputation-Bmw_UQtW.js} +1 -1
  67. package/src/assets/web-panel/assets/{Row-Bva3l9Lc.js → Row-CPdqZIUX.js} +1 -1
  68. package/src/assets/web-panel/assets/{RssFeed-BhjzLvW3.js → RssFeed-D_W-xxvS.js} +2 -2
  69. package/src/assets/web-panel/assets/{Search-BYzT2PTR.js → Search-Hu0oDFj_.js} +1 -1
  70. package/src/assets/web-panel/assets/{Security-Bcl4-KTv.js → Security-DeRxUwmq.js} +3 -3
  71. package/src/assets/web-panel/assets/{Services-BRRa4A0f.js → Services-CsNmHFkf.js} +2 -2
  72. package/src/assets/web-panel/assets/{Skeleton-DYQ016qy.js → Skeleton-gv_Vz0tN.js} +1 -1
  73. package/src/assets/web-panel/assets/{Skills-CAUKL9JA.js → Skills-Dgg-_rCB.js} +1 -1
  74. package/src/assets/web-panel/assets/{Sla-BTyUqfuD.js → Sla-Bpu-bsEJ.js} +1 -1
  75. package/src/assets/web-panel/assets/{SpeechSettings-CUjMihrs.js → SpeechSettings-CrhleHuF.js} +1 -1
  76. package/src/assets/web-panel/assets/{SyncSettings-CvfOSupr.js → SyncSettings-JHjUN6I9.js} +2 -2
  77. package/src/assets/web-panel/assets/{Tasks-EvjNXrWH.js → Tasks-DKRWKkl9.js} +1 -1
  78. package/src/assets/web-panel/assets/{Templates-wPAp0EoM.js → Templates-leiWntLq.js} +1 -1
  79. package/src/assets/web-panel/assets/{Tenant-CP0D-q9Q.js → Tenant--1bYulvn.js} +1 -1
  80. package/src/assets/web-panel/assets/{Terminal-CQ0f2iFg.js → Terminal-C0y6FvSS.js} +2 -2
  81. package/src/assets/web-panel/assets/{TimelineRenderer-D3JrGSPb.js → TimelineRenderer-CQK4PVv4.js} +1 -1
  82. package/src/assets/web-panel/assets/{Tokens-yXf2PPp9.js → Tokens-DbIvF-DV.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trigger-DfmMOoZ2.js → Trigger-CkXJ2vuq.js} +1 -1
  84. package/src/assets/web-panel/assets/{Trust-BTCyMgf1.js → Trust-B02WXJPw.js} +1 -1
  85. package/src/assets/web-panel/assets/{UkeySign-DKCwIBHi.js → UkeySign-VPMkfzmw.js} +1 -1
  86. package/src/assets/web-panel/assets/{VideoEditing-CQpDSzLO.js → VideoEditing-C5ezUnah.js} +1 -1
  87. package/src/assets/web-panel/assets/{Wallet-CyFrzC3K.js → Wallet-CYfvYRrY.js} +4 -4
  88. package/src/assets/web-panel/assets/{WebAuthn-D6Nr_1kd.js → WebAuthn-DtKl-kpr.js} +4 -4
  89. package/src/assets/web-panel/assets/{WorkflowEditor-CgR9tNrB.js → WorkflowEditor-DACITF-u.js} +1 -1
  90. package/src/assets/web-panel/assets/{chat-CRG_IeyP.js → chat-qnygfnLi.js} +1 -1
  91. package/src/assets/web-panel/assets/{colors-MdE3TStI.js → colors-D4mISLBD.js} +1 -1
  92. package/src/assets/web-panel/assets/{compact-item-B0LRuiNV.js → compact-item-BBPfxYGL.js} +1 -1
  93. package/src/assets/web-panel/assets/{createContext-B_V5fjcX.js → createContext-Byx4ndHp.js} +1 -1
  94. package/src/assets/web-panel/assets/devWarning-DBy6gsuI.js +1 -0
  95. package/src/assets/web-panel/assets/{hasIn-DSL-c_hr.js → hasIn-CGjLkkn3.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-DE7bSYmW.js → index-B8UpadHC.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-BD0w-888.js → index-B9jH-h4X.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-BbZZ7P_c.js → index-BN7_TSgU.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-BIDCNwy6.js → index-BNe2lCk6.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-CkN53KiJ.js → index-B_fHPZ8E.js} +1 -1
  101. package/src/assets/web-panel/assets/index-BfEDXk_E.js +1 -0
  102. package/src/assets/web-panel/assets/{index-BsAEd-Do.js → index-BklGH3YI.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-CS3bOhV7.js → index-BmKYaaGP.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-B3iW-mhn.js → index-BxQF1wCU.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-SmQfEHjp.js → index-ByA1NyFP.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-0200QxC4.js → index-BzeBBAl5.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-c8OqO3rq.js → index-C3abGsSW.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-C-aKWR2v.js → index-C9tcHs46.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-BNhWoD6d.js → index-CD5Btq6p.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-CVDi4rS9.js → index-CFMWjuav.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-CEOAZm5j.js → index-CMj8qmpX.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-C67dPW0L.js → index-CVUJjQAT.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-D3pJBTvo.js → index-CWhI8G14.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-DtOTppk8.js → index-CZjNamSU.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-DRRY44XP.js → index-CmHE-lY_.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-Tg3yl8wc.js → index-CoA8WsVr.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-CXMeisJK.js → index-Cpg3AWRy.js} +1 -1
  118. package/src/assets/web-panel/assets/index-CrxUwNM8.js +1 -0
  119. package/src/assets/web-panel/assets/{index-Bq8-2Ibv.js → index-CsVuQsY1.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-BHp1nSur.js → index-CydHMjwc.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-CPYshcic.js → index-DH6iC5b2.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-DBwBZwio.js → index-DZXhKAk9.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-Didyuq2Z.js → index-D_g9mA1N.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-CdHMc9LQ.js → index-DboTeuPF.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-C5dqieYX.js → index-DfgpKd64.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-CdplnAS9.js → index-Dmfe0L2Z.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-KaSejHjf.js → index-Dzni_5Qw.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-BpwGsAA-.js → index-J5JkStvY.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-OBhlHSMN.js → index-Ne8UGllV.js} +3 -3
  130. package/src/assets/web-panel/assets/{index-CZICtYJ0.js → index-O09jXbir.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-DVgTf7CZ.js → index-Y7el_3WS.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-BQAsL19t.js → index-c_tBkIlU.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-BMm8tO2X.js → index-lKJWAmd4.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-CNytQuFq.js → index-xzRKTy0R.js} +1 -1
  135. package/src/assets/web-panel/assets/{initDefaultProps-P8SBN6Di.js → initDefaultProps-XuhfEIhB.js} +1 -1
  136. package/src/assets/web-panel/assets/{motion-BubbjUT_.js → motion-Cbxh6AxO.js} +1 -1
  137. package/src/assets/web-panel/assets/{move-Chcykv0I.js → move-C7IEnFly.js} +1 -1
  138. package/src/assets/web-panel/assets/{mtc-parser-DyiYuGDu.js → mtc-parser-lLADx4LL.js} +1 -1
  139. package/src/assets/web-panel/assets/{omit-Rdwb_Neb.js → omit-mIbic_k-.js} +1 -1
  140. package/src/assets/web-panel/assets/{pickAttrs-CCr0MYHl.js → pickAttrs-_xIYEqu3.js} +1 -1
  141. package/src/assets/web-panel/assets/{placementArrow-B1ZXz3bb.js → placementArrow-ClB-E0ny.js} +1 -1
  142. package/src/assets/web-panel/assets/{responsiveObserve-BGEdwej6.js → responsiveObserve-D36Bg2ut.js} +1 -1
  143. package/src/assets/web-panel/assets/{slide-CpnsUMaT.js → slide-CUuO08Bl.js} +1 -1
  144. package/src/assets/web-panel/assets/{statusUtils-C7x-TVp_.js → statusUtils-BKahwLbv.js} +1 -1
  145. package/src/assets/web-panel/assets/{styleChecker-CC5k_791.js → styleChecker-2pT-T8vy.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFlexGapSupport-BpZFKsJW.js → useFlexGapSupport-DyH5g7Rg.js} +1 -1
  147. package/src/assets/web-panel/assets/{useFs-CVq5HySy.js → useFs-CTOauB3X.js} +1 -1
  148. package/src/assets/web-panel/assets/{usePersonalDataHub-BGkdLryu.js → usePersonalDataHub-B02JYIMe.js} +1 -1
  149. package/src/assets/web-panel/assets/{vnode-uLtOUEK-.js → vnode-Do22wQrc.js} +1 -1
  150. package/src/assets/web-panel/assets/{zoom-BfVC9iUs.js → zoom-BfnL7rit.js} +1 -1
  151. package/src/assets/web-panel/index.html +1 -1
  152. package/src/command-help-index.json +3 -3
  153. package/src/commands/agent.js +8 -0
  154. package/src/commands/background-session.js +31 -3
  155. package/src/commands/chat.js +5 -1
  156. package/src/commands/eval.js +86 -28
  157. package/src/commands/llm.js +104 -1
  158. package/src/commands/plugin.js +161 -1
  159. package/src/commands/sandbox.js +121 -2
  160. package/src/commands/serve.js +11 -2
  161. package/src/commands/skill.js +29 -0
  162. package/src/data/changelog.json +26 -0
  163. package/src/gateways/ws/session-protocol.js +13 -0
  164. package/src/gateways/ws/ws-agent-handler.js +17 -0
  165. package/src/gateways/ws/ws-server.js +3 -0
  166. package/src/gateways/ws/ws-session-state.js +131 -0
  167. package/src/generated/cc-agent-protocol.schema.json +48 -1
  168. package/src/lazy-dispatch.js +8 -1
  169. package/src/lib/agent-sandbox.js +337 -53
  170. package/src/lib/app-server/cli-agent-kernel-adapter.js +28 -0
  171. package/src/lib/app-server/server.js +93 -0
  172. package/src/lib/background-agent-keeper-client.js +2 -0
  173. package/src/lib/background-agent-keeper-protocol.js +7 -0
  174. package/src/lib/background-agent-list-index.js +222 -0
  175. package/src/lib/background-agent-supervisor.js +232 -47
  176. package/src/lib/codex-app-server-adapter.js +82 -27
  177. package/src/lib/context-memory-kernel/durable-memory-port.js +31 -8
  178. package/src/lib/context-memory-kernel/provider-context.js +118 -19
  179. package/src/lib/deferred-question-context.js +278 -0
  180. package/src/lib/eval/evidence.js +202 -64
  181. package/src/lib/eval/plugin-suite.js +1181 -0
  182. package/src/lib/eval/runner.js +10 -3
  183. package/src/lib/evolution/agent-evolution-runtime-composition.js +236 -1
  184. package/src/lib/evolution/agent-model-projection.js +97 -1
  185. package/src/lib/evolution/evidence-backed-wiki-maintainer.js +154 -1
  186. package/src/lib/evolution/evolution-artifact-ports.js +6 -0
  187. package/src/lib/evolution/evolution-deployment-loader.js +87 -3
  188. package/src/lib/evolution/evolution-eval-gate.js +8 -0
  189. package/src/lib/evolution/evolution-eval-runtime-composition.js +255 -0
  190. package/src/lib/evolution/evolution-evidence-artifact-adapter.js +58 -2
  191. package/src/lib/evolution/evolution-ledger-file-backend.js +23 -2
  192. package/src/lib/evolution/evolution-ledger-manifest-chain.js +223 -7
  193. package/src/lib/evolution/evolution-ledger-v2-journal.js +525 -0
  194. package/src/lib/evolution/evolution-ledger-v2-manifest-backend.js +46 -2
  195. package/src/lib/evolution/evolution-ledger.js +57 -1
  196. package/src/lib/evolution/evolution-run-ledger-adapter.js +93 -0
  197. package/src/lib/evolution/evolution-run-wiki-evidence-resolver.js +259 -0
  198. package/src/lib/evolution/governed-hub-llm.js +238 -5
  199. package/src/lib/evolution/governed-hub-resolver.js +82 -4
  200. package/src/lib/evolution/governed-hub-skill.js +11 -5
  201. package/src/lib/evolution/governed-skill-synthesis-provider-chat.js +10 -1
  202. package/src/lib/evolution/skill-runtime-revalidation-ledger-adapter.js +254 -0
  203. package/src/lib/evolution/skill-runtime-revalidation.js +530 -0
  204. package/src/lib/evolution/skill-target-matrix-eval.js +4 -4
  205. package/src/lib/evolution/wiki-evidence-commit-guard.js +366 -0
  206. package/src/lib/evolution/wiki-informed-skill-proposer.js +13 -1
  207. package/src/lib/goal-context.js +14 -5
  208. package/src/lib/interaction-adapter.js +166 -1
  209. package/src/lib/model-capabilities.js +271 -0
  210. package/src/lib/model-context-catalog.js +105 -0
  211. package/src/lib/model-context-window.js +4 -49
  212. package/src/lib/openai-responses.js +428 -0
  213. package/src/lib/plugin-runtime/scopes.js +7 -1
  214. package/src/lib/remote-read-loop-guard.js +2 -2
  215. package/src/lib/runtime-usage-ledger.js +16 -0
  216. package/src/lib/session-host-snapshot.js +16 -0
  217. package/src/lib/skill-loader.js +12 -0
  218. package/src/lib/with-file-lock.js +3 -1
  219. package/src/repl/agent-repl.js +5 -1
  220. package/src/runtime/agent-core.js +348 -23
  221. package/src/runtime/agent-runtime.js +7 -0
  222. package/src/runtime/coding-agent-contract-shared.cjs +13 -1
  223. package/src/runtime/headless-runner.js +4 -1
  224. package/src/runtime/headless-stream.js +283 -45
  225. package/src/runtime/runtime-factory.js +26 -2
  226. package/src/workers/background-agent-keeper.js +23 -13
  227. package/src/workers/background-agent-worker.js +27 -13
  228. package/src/assets/web-panel/assets/ChatBubbleRenderer-Bi2SY9E_.js +0 -1
  229. package/src/assets/web-panel/assets/PdhVaultBrowser-fYmQzmTA.js +0 -7
  230. package/src/assets/web-panel/assets/devWarning-BtFLt3qI.js +0 -1
  231. package/src/assets/web-panel/assets/index-BhuWQHeG.js +0 -1
  232. package/src/assets/web-panel/assets/index-D-4tFek3.js +0 -1
@@ -76,6 +76,7 @@ import {
76
76
  import { sessionBudgetAdmissionError } from "../../lib/session-budget-production-root.js";
77
77
  import { captureAgentSkillOutcomeIndex } from "../../lib/evolution/agent-evolution-runtime-composition-brand.js";
78
78
  import { captureSkillVectorAuthority } from "../../lib/skill-vector-authority.js";
79
+ import { captureSkillRuntimeDependencies } from "../../lib/evolution/skill-runtime-revalidation.js";
79
80
  import {
80
81
  beginSessionBudgetUsage,
81
82
  markSessionBudgetUsageUnknown,
@@ -84,6 +85,7 @@ import {
84
85
  } from "../../lib/session-budget-usage.js";
85
86
  import { HostResourceBudget } from "../../lib/host-resource-budget.js";
86
87
  import { captureAgentEvolutionRuntimeComposition } from "../../lib/evolution/agent-evolution-runtime-composition-brand.js";
88
+ import { composePrepareCall } from "../../lib/goal-context.js";
87
89
 
88
90
  const CANONICAL_WS_TURN_QUEUES = new Map();
89
91
  const CANONICAL_WS_CLAIM_CAS_ATTEMPTS = 4;
@@ -182,8 +184,14 @@ export class WSAgentHandler {
182
184
  evolutionCompositionFactory = null,
183
185
  skillOutcomeIndex = null,
184
186
  skillVectorAuthority = null,
187
+ skillRuntimeAdmission = null,
188
+ skillRuntimeAdmissionRequired = false,
185
189
  }) {
186
190
  this.session = session;
191
+ this._runtimeAdmissionDependencies = captureSkillRuntimeDependencies({
192
+ skillRuntimeAdmission,
193
+ skillRuntimeAdmissionRequired,
194
+ });
187
195
  this.interaction = interaction;
188
196
  this.db = db || null;
189
197
  this._processing = false;
@@ -371,6 +379,10 @@ export class WSAgentHandler {
371
379
  "WebSocket evolution composition and Skill vector authority must share one tenant",
372
380
  );
373
381
  }
382
+ captureSkillRuntimeDependencies(
383
+ this._runtimeAdmissionDependencies,
384
+ composition.tenantId,
385
+ );
374
386
  await composition.evolutionIngress.start();
375
387
  return composition;
376
388
  } catch (cause) {
@@ -1373,6 +1385,7 @@ export class WSAgentHandler {
1373
1385
  }
1374
1386
 
1375
1387
  this._processing = true;
1388
+ this.interaction.beginContextRevision?.();
1376
1389
  const abortController = new AbortController();
1377
1390
  const turnSignal = this._turnSignal(abortController.signal);
1378
1391
  this._abortController = abortController;
@@ -1539,9 +1552,13 @@ export class WSAgentHandler {
1539
1552
  shellPolicyOverrides: session.shellPolicyOverrides || null,
1540
1553
  slotFiller,
1541
1554
  interaction: this.interaction,
1555
+ prepareCall: composePrepareCall([
1556
+ this.interaction.createDeferredPrepareCall?.(),
1557
+ ]),
1542
1558
  ...(this._skillOutcomeIndex === null
1543
1559
  ? {}
1544
1560
  : { skillOutcomeIndex: this._skillOutcomeIndex }),
1561
+ ...this._runtimeAdmissionDependencies,
1545
1562
  ...(this._skillVectorAuthority === null
1546
1563
  ? {}
1547
1564
  : { skillVectorAuthority: this._skillVectorAuthority }),
@@ -17,6 +17,7 @@ import { dirname, join } from "node:path";
17
17
  import { WebSocketServer } from "ws";
18
18
  import { captureAgentSkillOutcomeIndex } from "../../lib/evolution/agent-evolution-runtime-composition-brand.js";
19
19
  import { captureSkillVectorAuthority } from "../../lib/skill-vector-authority.js";
20
+ import { captureSkillRuntimeDependencies } from "../../lib/evolution/skill-runtime-revalidation.js";
20
21
  import {
21
22
  createEnvelope,
22
23
  envelopeFromStreamEvent,
@@ -332,6 +333,8 @@ export class ChainlessChainWSServer extends EventEmitter {
332
333
  }
333
334
  this.evolutionCompositionFactory =
334
335
  options.evolutionCompositionFactory || null;
336
+ this.runtimeAdmissionDependencies =
337
+ captureSkillRuntimeDependencies(options);
335
338
  this.skillOutcomeIndex =
336
339
  options.skillOutcomeIndex == null
337
340
  ? null
@@ -16,6 +16,7 @@ export const DEFAULT_WS_SESSION_STATE_MAX_EVENTS = 64;
16
16
 
17
17
  const RUN_STATUSES = new Set(["idle", "running", "interrupted"]);
18
18
  const APPROVAL_STATUSES = new Set(["pending", "interrupted"]);
19
+ const MAX_DEFERRED_QUESTIONS = 32;
19
20
 
20
21
  function own(object, key) {
21
22
  return Object.prototype.hasOwnProperty.call(object || {}, key);
@@ -112,12 +113,87 @@ function normalizeRun(value) {
112
113
  };
113
114
  }
114
115
 
116
+ function normalizeDeferredRecord(value, resolved = false) {
117
+ if (!value || typeof value !== "object") return null;
118
+ const requestId =
119
+ typeof value.requestId === "string" && value.requestId.length > 0
120
+ ? value.requestId
121
+ : null;
122
+ if (!requestId || !value.binding || typeof value.binding !== "object") {
123
+ return null;
124
+ }
125
+ const binding = cloneJson(value.binding);
126
+ if (
127
+ binding.sessionId == null ||
128
+ !Number.isSafeInteger(binding.sequence) ||
129
+ binding.sequence <= 0
130
+ ) {
131
+ return null;
132
+ }
133
+ let answer = "";
134
+ if (resolved) {
135
+ if (typeof value.answer === "string") answer = value.answer;
136
+ else {
137
+ try {
138
+ answer = JSON.stringify(value.answer);
139
+ } catch {
140
+ answer = String(value.answer ?? "");
141
+ }
142
+ }
143
+ if (typeof answer !== "string") answer = String(value.answer ?? "");
144
+ answer = answer.slice(0, 16384);
145
+ }
146
+ return {
147
+ requestId,
148
+ question:
149
+ typeof value.question === "string" ? value.question.slice(0, 2048) : "",
150
+ binding,
151
+ requestedRevision: nonNegativeRevision(
152
+ value.requestedRevision ?? value.contextRevision,
153
+ ),
154
+ ...(resolved
155
+ ? {
156
+ answer,
157
+ resolvedRevision: nonNegativeRevision(value.resolvedRevision),
158
+ }
159
+ : {
160
+ options: Array.isArray(value.options)
161
+ ? cloneJson(value.options.slice(0, 32), [])
162
+ : null,
163
+ multiSelect: value.multiSelect === true,
164
+ purpose:
165
+ value.purpose === "preference" ? "preference" : "information",
166
+ contextRevision: nonNegativeRevision(value.contextRevision),
167
+ }),
168
+ };
169
+ }
170
+
171
+ function upsertBounded(list, record) {
172
+ if (!record) return list;
173
+ const next = list.filter((item) => item.requestId !== record.requestId);
174
+ next.push(record);
175
+ return next.slice(-MAX_DEFERRED_QUESTIONS);
176
+ }
177
+
115
178
  function normalizeSnapshot(value = {}, options = {}) {
116
179
  const source = value && typeof value === "object" ? value : {};
117
180
  const snapshot = {
118
181
  revision: nonNegativeRevision(source.revision),
119
182
  todo: normalizeTodoSnapshot(source.todo),
120
183
  pendingApproval: normalizePendingApproval(source.pendingApproval),
184
+ contextRevision: nonNegativeRevision(source.contextRevision),
185
+ deferredQuestions: Array.isArray(source.deferredQuestions)
186
+ ? source.deferredQuestions
187
+ .map((value) => normalizeDeferredRecord(value, false))
188
+ .filter(Boolean)
189
+ .slice(-MAX_DEFERRED_QUESTIONS)
190
+ : [],
191
+ deferredAnswers: Array.isArray(source.deferredAnswers)
192
+ ? source.deferredAnswers
193
+ .map((value) => normalizeDeferredRecord(value, true))
194
+ .filter(Boolean)
195
+ .slice(-MAX_DEFERRED_QUESTIONS)
196
+ : [],
121
197
  run: normalizeRun(source.run),
122
198
  };
123
199
 
@@ -183,6 +259,58 @@ function applyEvent(snapshot, event) {
183
259
  }
184
260
  break;
185
261
 
262
+ case "question.context.revision":
263
+ next.contextRevision = Math.max(
264
+ next.contextRevision,
265
+ nonNegativeRevision(payload.contextRevision),
266
+ );
267
+ break;
268
+
269
+ case "question.deferred.requested": {
270
+ const question = normalizeDeferredRecord(payload, false);
271
+ if (
272
+ question &&
273
+ question.binding.sessionId === payload.binding?.sessionId
274
+ ) {
275
+ next.deferredQuestions = upsertBounded(
276
+ next.deferredQuestions,
277
+ question,
278
+ );
279
+ }
280
+ break;
281
+ }
282
+
283
+ case "question.deferred.resolved": {
284
+ const answer = normalizeDeferredRecord(payload, true);
285
+ if (answer) {
286
+ const pending = next.deferredQuestions.find(
287
+ (item) => item.requestId === answer.requestId,
288
+ );
289
+ if (
290
+ pending &&
291
+ JSON.stringify(pending.binding) === JSON.stringify(answer.binding)
292
+ ) {
293
+ next.deferredQuestions = next.deferredQuestions.filter(
294
+ (item) => item.requestId !== answer.requestId,
295
+ );
296
+ next.deferredAnswers = upsertBounded(next.deferredAnswers, answer);
297
+ }
298
+ }
299
+ break;
300
+ }
301
+
302
+ case "question.deferred.consumed": {
303
+ const ids = new Set(
304
+ Array.isArray(payload.questionIds)
305
+ ? payload.questionIds.filter((id) => typeof id === "string")
306
+ : [],
307
+ );
308
+ next.deferredAnswers = next.deferredAnswers.filter(
309
+ (item) => !ids.has(item.requestId),
310
+ );
311
+ break;
312
+ }
313
+
186
314
  case "run.started":
187
315
  next.run = normalizeRun({
188
316
  status: "running",
@@ -302,6 +430,9 @@ export function createWsSessionState(options = {}) {
302
430
  revision: 0,
303
431
  todo: normalizeTodoSnapshot(options.todo),
304
432
  pendingApproval: null,
433
+ contextRevision: 0,
434
+ deferredQuestions: [],
435
+ deferredAnswers: [],
305
436
  run: normalizeRun(),
306
437
  ...(hasPlanSnapshot
307
438
  ? { planSnapshot: cloneJson(options.planSnapshot) }
@@ -18,12 +18,13 @@
18
18
  "agent_stream_events",
19
19
  "agent_stream_payloads",
20
20
  "unified_policy_decision",
21
+ "deferred_questions",
21
22
  "context_memory_kernel"
22
23
  ],
23
24
  "contextMemory": {
24
25
  "schemaId": "https://chainlesschain.com/schemas/context-memory-kernel/v1",
25
26
  "schemaVersion": 1,
26
- "sourceDigest": "sha256:9dabfbccf4315d511bb09d13decc743e1b43b90ad81eaa5da62df44ba55934cb",
27
+ "sourceDigest": "sha256:6599168b8fa9ace2d1697c44c2ac10141aa20bd7e9be29e9ea814ff032f87d68",
27
28
  "methods": {
28
29
  "context/plan": {
29
30
  "request": "ContextPlanRequest",
@@ -3832,6 +3833,7 @@
3832
3833
  "method": {
3833
3834
  "enum": [
3834
3835
  "approval/decide",
3836
+ "question/answer",
3835
3837
  "humanTask/decide"
3836
3838
  ]
3837
3839
  },
@@ -3862,6 +3864,8 @@
3862
3864
  "item/completed",
3863
3865
  "approval/requested",
3864
3866
  "approval/resolved",
3867
+ "question/requested",
3868
+ "question/resolved",
3865
3869
  "tool/requested",
3866
3870
  "tool/result",
3867
3871
  "subagent/started",
@@ -4804,6 +4808,13 @@
4804
4808
  "$ref": "#/$defs/ContextScopeAdmission"
4805
4809
  }
4806
4810
  },
4811
+ "semanticCandidates": {
4812
+ "type": "array",
4813
+ "maxItems": 1000,
4814
+ "items": {
4815
+ "$ref": "#/$defs/MemorySemanticCandidate"
4816
+ }
4817
+ },
4807
4818
  "limit": {
4808
4819
  "type": "integer",
4809
4820
  "minimum": 1,
@@ -4850,6 +4861,15 @@
4850
4861
  "type": "integer",
4851
4862
  "minimum": 0
4852
4863
  },
4864
+ "retrievalMode": {
4865
+ "enum": [
4866
+ "governed_hybrid"
4867
+ ]
4868
+ },
4869
+ "semanticEvidenceCount": {
4870
+ "type": "integer",
4871
+ "minimum": 0
4872
+ },
4853
4873
  "results": {
4854
4874
  "type": "array",
4855
4875
  "maxItems": 1000,
@@ -5764,6 +5784,33 @@
5764
5784
  "$ref": "#/$defs/MemoryRecallResult"
5765
5785
  }
5766
5786
  }
5787
+ },
5788
+ "MemorySemanticCandidate": {
5789
+ "type": "object",
5790
+ "additionalProperties": false,
5791
+ "required": [
5792
+ "memoryId",
5793
+ "revision",
5794
+ "recordDigest",
5795
+ "score"
5796
+ ],
5797
+ "properties": {
5798
+ "memoryId": {
5799
+ "$ref": "#/$defs/ContextMemoryIdentifier"
5800
+ },
5801
+ "revision": {
5802
+ "type": "integer",
5803
+ "minimum": 1
5804
+ },
5805
+ "recordDigest": {
5806
+ "$ref": "#/$defs/ContextMemoryDigest"
5807
+ },
5808
+ "score": {
5809
+ "type": "number",
5810
+ "minimum": 0,
5811
+ "maximum": 1
5812
+ }
5813
+ }
5767
5814
  }
5768
5815
  }
5769
5816
  }
@@ -814,7 +814,14 @@ export function isFastReadOnlyInvocation(argv, env = process.env) {
814
814
  commandLocation?.token === "session" &&
815
815
  argv[commandLocation.index + 1] === "show" &&
816
816
  !explicitOtlp;
817
- return quickStatus || sessionShow;
817
+ // Capability inspection is a deliberately static, read-only diagnostic.
818
+ // Keep it ahead of observability initialization even when an OTLP endpoint
819
+ // is configured; otherwise merely inspecting a profile creates a queue and
820
+ // contradicts the command's no-network/no-write contract.
821
+ const llmCapabilities =
822
+ commandLocation?.token === "llm" &&
823
+ argv[commandLocation.index + 1] === "capabilities";
824
+ return quickStatus || sessionShow || llmCapabilities;
818
825
  }
819
826
 
820
827
  let processHandlersInstalled = false;