chainlesschain 0.166.20 → 0.166.21

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 (214) hide show
  1. package/package.json +2 -2
  2. package/src/assets/web-panel/assets/{AIOps-CcJst5Zs.js → AIOps-BjMnsUci.js} +1 -1
  3. package/src/assets/web-panel/assets/{ActionButton-BpHPFKd3.js → ActionButton-DdYFP03A.js} +1 -1
  4. package/src/assets/web-panel/assets/{Analytics-DHAsASuS.js → Analytics-Bb8TuuK_.js} +3 -3
  5. package/src/assets/web-panel/assets/{AppLayout-BTKwo5RC.js → AppLayout-Kn3TIOtk.js} +5 -5
  6. package/src/assets/web-panel/assets/{Artifacts-BcCBTggA.js → Artifacts-4IxpqI_b.js} +1 -1
  7. package/src/assets/web-panel/assets/{Audit-z1JvJYbT.js → Audit-BOV2caqU.js} +1 -1
  8. package/src/assets/web-panel/assets/{BackgroundAgents-CJ7DCMDR.js → BackgroundAgents-B86k-ay4.js} +1 -1
  9. package/src/assets/web-panel/assets/{Backup-CKpxw4uw.js → Backup-C5_ie1e3.js} +1 -1
  10. package/src/assets/web-panel/assets/{BaseInput-2jI_IlUB.js → BaseInput-xpwg6QCW.js} +1 -1
  11. package/src/assets/web-panel/assets/{Chat-C_4RfBeN.js → Chat-CVZOcZau.js} +5 -5
  12. package/src/assets/web-panel/assets/ChatBubbleRenderer-D8fPYhUu.js +1 -0
  13. package/src/assets/web-panel/assets/{Checkbox-BnF4z4N1.js → Checkbox-MKTq3zdP.js} +1 -1
  14. package/src/assets/web-panel/assets/{Codegen-m_LMamhM.js → Codegen-JUk3wzep.js} +1 -1
  15. package/src/assets/web-panel/assets/{Col-DzMbA760.js → Col-JPvTA0kC.js} +1 -1
  16. package/src/assets/web-panel/assets/{Community-SScuZUcW.js → Community-Tqgl87NQ.js} +1 -1
  17. package/src/assets/web-panel/assets/{Compact-CiOHRvwQ.js → Compact-BuAFYBmN.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compliance-97FzYz-6.js → Compliance-CXS9WIPZ.js} +1 -1
  19. package/src/assets/web-panel/assets/{Cowork-C0ss-SRl.js → Cowork-Ds2bFHrr.js} +2 -2
  20. package/src/assets/web-panel/assets/{Cron-CCbdc9fp.js → Cron-C_dV_OeW.js} +2 -2
  21. package/src/assets/web-panel/assets/{Crosschain-BPnabXej.js → Crosschain-BsO6tIRo.js} +1 -1
  22. package/src/assets/web-panel/assets/{DID-B65hFnHs.js → DID-rNOFqBac.js} +2 -2
  23. package/src/assets/web-panel/assets/{Dashboard-B6qR_TF2.js → Dashboard-C2fcKKVY.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dropdown-6c-2Fxm-.js → Dropdown-Y7Ndr0X_.js} +1 -1
  25. package/src/assets/web-panel/assets/{EmailListRenderer-GD57mfiz.js → EmailListRenderer-DcP_uPmL.js} +1 -1
  26. package/src/assets/web-panel/assets/{FamilyGuardDashboard-B2mxG6LN.js → FamilyGuardDashboard-Cwn3gDzk.js} +1 -1
  27. package/src/assets/web-panel/assets/{Federation-cZS-uvAo.js → Federation-ClQuOsqb.js} +1 -1
  28. package/src/assets/web-panel/assets/{FormItemContext-UbSfBIe1.js → FormItemContext-DfwtmlcK.js} +1 -1
  29. package/src/assets/web-panel/assets/GenericCardRenderer-zNZhtbC5.js +1 -0
  30. package/src/assets/web-panel/assets/{Git-DAlhOiDA.js → Git-BZmdW-G5.js} +2 -2
  31. package/src/assets/web-panel/assets/{Governance-B-RRVaP8.js → Governance-CqBk4lEn.js} +1 -1
  32. package/src/assets/web-panel/assets/{Inference-DBl-pXYR.js → Inference-Dbmt3ZXk.js} +1 -1
  33. package/src/assets/web-panel/assets/{KnowledgeGraph-DjqOkvgY.js → KnowledgeGraph-hMTH6qf3.js} +1 -1
  34. package/src/assets/web-panel/assets/{Logs-CEV7AEAD.js → Logs-CkiYgiW2.js} +2 -2
  35. package/src/assets/web-panel/assets/{MarkdownRenderer-BDCxa4d1.js → MarkdownRenderer-BL1FElXg.js} +1 -1
  36. package/src/assets/web-panel/assets/{Marketplace-oRjzfmYJ.js → Marketplace-CbB6wfin.js} +1 -1
  37. package/src/assets/web-panel/assets/{McpTools-BiTnznLw.js → McpTools-BSwiFtte.js} +3 -3
  38. package/src/assets/web-panel/assets/{Memory-DR0C5K4N.js → Memory-B03PeHrz.js} +2 -2
  39. package/src/assets/web-panel/assets/{MobileBridge--oR8wEcp.js → MobileBridge-CRGrnd-X.js} +1 -1
  40. package/src/assets/web-panel/assets/{MobileProjects-DKqpYMuG.js → MobileProjects-CE_5v2kO.js} +1 -1
  41. package/src/assets/web-panel/assets/{Mtc-Dg0D6fDQ.js → Mtc-Dp11QVx1.js} +2 -2
  42. package/src/assets/web-panel/assets/{MtcAudit-D4_-yWTK.js → MtcAudit-CYu-3JBu.js} +5 -5
  43. package/src/assets/web-panel/assets/{Multisig-Coz55FxA.js → Multisig-CGyJ0Xl3.js} +3 -3
  44. package/src/assets/web-panel/assets/{NLProgramming-BWVjgW9Y.js → NLProgramming-CoWi_ov1.js} +1 -1
  45. package/src/assets/web-panel/assets/{Notes-BflVuGwr.js → Notes-CgU9DDo9.js} +3 -3
  46. package/src/assets/web-panel/assets/{NotificationSettings-CT0F_dJ7.js → NotificationSettings-DX4I2b4W.js} +1 -1
  47. package/src/assets/web-panel/assets/OrderTableRenderer-CwHc15Zs.js +1 -0
  48. package/src/assets/web-panel/assets/{Organization-CMDTM2z5.js → Organization-oopLO_tk.js} +4 -4
  49. package/src/assets/web-panel/assets/{Overflow-acKvvYpC.js → Overflow-BFVvjMyf.js} +1 -1
  50. package/src/assets/web-panel/assets/{P2P-CRq5j9Ax.js → P2P-CBy5t-Tk.js} +2 -2
  51. package/src/assets/web-panel/assets/{PdhVaultBrowser-DmtzN6Kn.js → PdhVaultBrowser--YWJNsu6.js} +4 -4
  52. package/src/assets/web-panel/assets/{Permissions-SZ-kjJDa.js → Permissions-C2dZ8scb.js} +3 -3
  53. package/src/assets/web-panel/assets/{PersonalDataHub-DXh-ZfgJ.js → PersonalDataHub-Bs3l7Hlx.js} +6 -6
  54. package/src/assets/web-panel/assets/{Pipeline-DhBU9ftP.js → Pipeline-DEBWbZuD.js} +1 -1
  55. package/src/assets/web-panel/assets/{Privacy-BgEXpO_V.js → Privacy-CjHBb6NU.js} +1 -1
  56. package/src/assets/web-panel/assets/{ProjectInit-B2DJ-dmK.js → ProjectInit-D2WipUz5.js} +2 -2
  57. package/src/assets/web-panel/assets/{ProjectSettings-ve3SocWc.js → ProjectSettings-B6WfnrGB.js} +2 -2
  58. package/src/assets/web-panel/assets/{Projects-5ZvFasSJ.js → Projects-FF_thRi6.js} +1 -1
  59. package/src/assets/web-panel/assets/{Providers-C8fcF3BK.js → Providers-CCv5M_Dv.js} +1 -1
  60. package/src/assets/web-panel/assets/{QrScannerModal-unjO8lNO.js → QrScannerModal-CGthxU54.js} +1 -1
  61. package/src/assets/web-panel/assets/{QuickAsk-BT1QtT7D.js → QuickAsk-CnPmXPFb.js} +1 -1
  62. package/src/assets/web-panel/assets/{Recommend-BSjFrY1w.js → Recommend-Df_tGEa9.js} +1 -1
  63. package/src/assets/web-panel/assets/{RemoteSession-CWV0bICg.js → RemoteSession-Z58N0Loe.js} +2 -2
  64. package/src/assets/web-panel/assets/{Reputation-BMjiMsk2.js → Reputation-CZTBQ2Vt.js} +1 -1
  65. package/src/assets/web-panel/assets/{Row-9XCY22PM.js → Row-CdK3YpCQ.js} +1 -1
  66. package/src/assets/web-panel/assets/{RssFeed-DQ9PDy7Q.js → RssFeed-CFMVT5sb.js} +3 -3
  67. package/src/assets/web-panel/assets/{Search-Boym2HwG.js → Search-DrF8RIvD.js} +1 -1
  68. package/src/assets/web-panel/assets/{Security-Gbq3lGQb.js → Security-Ddk2f2DM.js} +4 -4
  69. package/src/assets/web-panel/assets/{Services-OcUfLdnu.js → Services-CCuK-VOo.js} +2 -2
  70. package/src/assets/web-panel/assets/{Skeleton-BjTog6cA.js → Skeleton-DxCpHzeM.js} +1 -1
  71. package/src/assets/web-panel/assets/{Skills-Dny4ft_1.js → Skills-t2oTDgcv.js} +1 -1
  72. package/src/assets/web-panel/assets/{Sla-Cy_VnhpZ.js → Sla-Df63M9_R.js} +1 -1
  73. package/src/assets/web-panel/assets/{SpeechSettings-CrFuL_lp.js → SpeechSettings-l7ox6KuX.js} +1 -1
  74. package/src/assets/web-panel/assets/{SyncSettings-k-FnjuOR.js → SyncSettings-COd_tgPp.js} +2 -2
  75. package/src/assets/web-panel/assets/{Tasks-ZEqDSo0_.js → Tasks-CzDCcrik.js} +1 -1
  76. package/src/assets/web-panel/assets/{Templates-CYYksYV5.js → Templates-D-vfxTGA.js} +1 -1
  77. package/src/assets/web-panel/assets/{Tenant-BvTTRTHS.js → Tenant-BlpT_Gxc.js} +1 -1
  78. package/src/assets/web-panel/assets/{Terminal-DMOQOtkj.js → Terminal-D5rq52Hg.js} +2 -2
  79. package/src/assets/web-panel/assets/TimelineRenderer-DdoMndkK.js +1 -0
  80. package/src/assets/web-panel/assets/{Tokens-VW6Wocdp.js → Tokens-BhgBsI6g.js} +1 -1
  81. package/src/assets/web-panel/assets/{Trigger-BtOxZqP6.js → Trigger-DwwzoikZ.js} +1 -1
  82. package/src/assets/web-panel/assets/{Trust-XcGJoTQx.js → Trust-HkTpzXFb.js} +1 -1
  83. package/src/assets/web-panel/assets/{UkeySign-aASNCs5j.js → UkeySign-D9nk6Ehe.js} +1 -1
  84. package/src/assets/web-panel/assets/{VideoEditing-Bz89M52u.js → VideoEditing-BKk0rfoy.js} +1 -1
  85. package/src/assets/web-panel/assets/{Wallet-uU4dSS_N.js → Wallet-IVWIU_Lq.js} +4 -4
  86. package/src/assets/web-panel/assets/{WebAuthn-Brrroxgr.js → WebAuthn-CFTCpfsG.js} +4 -4
  87. package/src/assets/web-panel/assets/{WorkflowEditor-Cny-evI9.js → WorkflowEditor-Dnf4Obif.js} +1 -1
  88. package/src/assets/web-panel/assets/{chat-CJ5iSwWq.js → chat-D2snERdj.js} +1 -1
  89. package/src/assets/web-panel/assets/{colors-DWa-2flG.js → colors-DKEjK1N1.js} +1 -1
  90. package/src/assets/web-panel/assets/{compact-item-DFwUfptU.js → compact-item-BEDLwQdt.js} +1 -1
  91. package/src/assets/web-panel/assets/{createContext-FHWWcyeB.js → createContext-DA9iW1a0.js} +1 -1
  92. package/src/assets/web-panel/assets/devWarning-DyhgpXPf.js +1 -0
  93. package/src/assets/web-panel/assets/{hasIn-QY_TElrN.js → hasIn-5l2xEcY9.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-hw1J_Oxs.js → index-5pW4t1iD.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-BR4RMPnB.js → index-7P1b8HZo.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-BUNwuu5v.js → index-B00GeekA.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-B18zERdP.js → index-B4QYBliR.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-wqiOz655.js → index-B7_W_rYd.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-BQCtBurK.js → index-BO9dQjpt.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-DUfILsc-.js → index-BZ5lY2zx.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-DUepuy7O.js → index-B_eCoZgW.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-uRUZdL7I.js → index-BgfImyZI.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-CUoLd1dt.js → index-Bq5P3piS.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-BiHRihC0.js → index-Bqc8tdIF.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-BcVr-LOk.js → index-C7sKbM5s.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-DDpXDi4J.js → index-CGlotREA.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-CjejB-z9.js → index-CRPrHE7h.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-D2rPJ6Sv.js → index-CX1x4AFn.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-w3SdYwaC.js → index-CbTPvp2_.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-D-Mhq8K6.js → index-CjWltbi_.js} +1 -1
  111. package/src/assets/web-panel/assets/index-Ck1jhFE0.js +1 -0
  112. package/src/assets/web-panel/assets/{index-Bd7McYpJ.js → index-CkMKuqUs.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-BYbwQ7SP.js → index-CmruhzFi.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-2ufsNuVn.js → index-Csfb-7hw.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-0umhind6.js → index-CxEtQYdi.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-B33frlaD.js → index-D7z4zB_a.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-Dy2PnKZx.js → index-DLoalqRX.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-CUiTugu3.js → index-DU2TXJu-.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-CGv5In_T.js → index-DXet1xol.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-DCHMVYG1.js → index-Dbd7eEex.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-th467RN6.js → index-Dbkghqn_.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-CkmgbT7h.js → index-Dg2a9owQ.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-aTiI7lOQ.js → index-DpqtbXdE.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-C5F1vwec.js → index-DqwPFbOb.js} +3 -3
  125. package/src/assets/web-panel/assets/{index-DaHvj4jA.js → index-DvV03Ayk.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-BRsGZBHc.js → index-NJieh3T1.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-CeGn0A4W.js → index-Td8ZwyoC.js} +1 -1
  128. package/src/assets/web-panel/assets/index-c8jJEHVs.js +1 -0
  129. package/src/assets/web-panel/assets/{index-va4Rt-yM.js → index-e-e40id6.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-CKS7n6mE.js → index-fccZmC_h.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-BEjwv2x6.js → index-fgYk0QXO.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-Dlq-u9E4.js → index-yYEQXYaU.js} +1 -1
  133. package/src/assets/web-panel/assets/{initDefaultProps-BeSPUFDz.js → initDefaultProps-CPrcB1TC.js} +1 -1
  134. package/src/assets/web-panel/assets/{motion-Dcajvjm9.js → motion-BQ7mWRh_.js} +1 -1
  135. package/src/assets/web-panel/assets/{move-B76orau-.js → move-CzOEq99p.js} +1 -1
  136. package/src/assets/web-panel/assets/{mtc-parser-zB6yFwcX.js → mtc-parser-BlQI5jrw.js} +1 -1
  137. package/src/assets/web-panel/assets/{omit-BsbNjz8w.js → omit-DlW4gxmv.js} +1 -1
  138. package/src/assets/web-panel/assets/{pickAttrs-BiJ9tssQ.js → pickAttrs-BBYms5nP.js} +1 -1
  139. package/src/assets/web-panel/assets/{placementArrow-BdfMjMeN.js → placementArrow-az2MPJ_7.js} +1 -1
  140. package/src/assets/web-panel/assets/{responsiveObserve-rV4LGpbU.js → responsiveObserve-D1-ibEol.js} +1 -1
  141. package/src/assets/web-panel/assets/{slide-HsVw1qFQ.js → slide-DHGqa4GA.js} +1 -1
  142. package/src/assets/web-panel/assets/{statusUtils-D1ry8XPE.js → statusUtils-CYGDo6lD.js} +1 -1
  143. package/src/assets/web-panel/assets/{styleChecker-B1t6aQQ_.js → styleChecker-Cl2EM9K6.js} +1 -1
  144. package/src/assets/web-panel/assets/{useFlexGapSupport-C8qbl-9w.js → useFlexGapSupport-DdYhzuv1.js} +1 -1
  145. package/src/assets/web-panel/assets/{useFs-R7g_mYTC.js → useFs-DWumPuBW.js} +1 -1
  146. package/src/assets/web-panel/assets/{usePersonalDataHub-Cd-kCe7Z.js → usePersonalDataHub-DxAO-Aqi.js} +1 -1
  147. package/src/assets/web-panel/assets/{vnode-9WhK5UWA.js → vnode-CplsQf_N.js} +1 -1
  148. package/src/assets/web-panel/assets/{zoom-CUqppPco.js → zoom-Cw5HXNSG.js} +1 -1
  149. package/src/assets/web-panel/index.html +1 -1
  150. package/src/command-help-index.json +2 -2
  151. package/src/commands/agent.js +19 -1
  152. package/src/commands/evolution-knowledge.js +54 -0
  153. package/src/commands/evolution-workbench.js +83 -0
  154. package/src/commands/evolution.js +6 -1
  155. package/src/commands/serve.js +16 -0
  156. package/src/commands/skill.js +158 -16
  157. package/src/data/changelog.json +13 -0
  158. package/src/gateways/ws/session-protocol.js +2 -0
  159. package/src/gateways/ws/ws-agent-handler.js +124 -69
  160. package/src/gateways/ws/ws-server.js +19 -0
  161. package/src/generated/cc-agent-protocol.schema.json +7 -1
  162. package/src/harness/jsonl-session-store.js +25 -1
  163. package/src/index.js +1 -1
  164. package/src/lib/app-server/cli-agent-kernel-adapter.js +8 -0
  165. package/src/lib/app-server/graph-runtime.js +40 -1
  166. package/src/lib/app-server/server.js +181 -3
  167. package/src/lib/app-server/websocket-transport.js +2 -0
  168. package/src/lib/evolution/agent-evolution-runtime-composition-brand.js +17 -0
  169. package/src/lib/evolution/agent-evolution-runtime-composition.js +165 -1
  170. package/src/lib/evolution/controlled-skill-production-pilot.js +912 -0
  171. package/src/lib/evolution/evolution-artifact-ports.js +21 -0
  172. package/src/lib/evolution/evolution-raw-crypto-shred.js +185 -0
  173. package/src/lib/evolution/evolution-workbench-batch-executor.js +195 -0
  174. package/src/lib/evolution/evolution-workbench-cli-host.js +169 -0
  175. package/src/lib/evolution/evolution-workbench-metrics-ledger-adapter.js +648 -0
  176. package/src/lib/evolution/evolution-workbench-metrics.js +943 -0
  177. package/src/lib/evolution/evolution-workbench-projection.js +734 -0
  178. package/src/lib/evolution/evolution-workbench-version-control.js +272 -0
  179. package/src/lib/evolution/governed-knowledge-conflict-merge.js +352 -0
  180. package/src/lib/evolution/governed-knowledge-dependency-authority.js +273 -0
  181. package/src/lib/evolution/governed-knowledge-dependency-ledger-executor.js +646 -0
  182. package/src/lib/evolution/governed-knowledge-merge-ledger-executor.js +644 -0
  183. package/src/lib/evolution/governed-knowledge-merge-publisher-authority.js +282 -0
  184. package/src/lib/evolution/governed-knowledge-node-crypto-authority.js +348 -0
  185. package/src/lib/evolution/governed-knowledge-rbac-approval-authority.js +621 -0
  186. package/src/lib/evolution/governed-knowledge-review-host.js +249 -0
  187. package/src/lib/evolution/governed-knowledge-sync-ledger-adapter.js +643 -0
  188. package/src/lib/evolution/governed-knowledge-sync-merge-publisher.js +259 -0
  189. package/src/lib/evolution/governed-knowledge-sync.js +485 -0
  190. package/src/lib/evolution/governed-knowledge-trust-ledger.js +707 -0
  191. package/src/lib/evolution/governed-skill-marketplace.js +430 -0
  192. package/src/lib/evolution/governed-wiki-pruning.js +435 -0
  193. package/src/lib/evolution/skill-outcome-index-authority.js +268 -0
  194. package/src/lib/evolution/skill-outcome-source-catalog-authority.js +237 -0
  195. package/src/lib/public-ide-capability-manifest.js +4 -0
  196. package/src/lib/skill-outcome-authority.js +43 -0
  197. package/src/lib/skill-outcome-transcript-authority.js +252 -0
  198. package/src/lib/skill-retrieval-router-benchmark.js +135 -0
  199. package/src/lib/skill-retrieval-router.js +235 -0
  200. package/src/lib/skill-vector-authority.js +325 -0
  201. package/src/lib/skill-vector-process-authority.js +386 -0
  202. package/src/repl/agent-repl.js +7 -1
  203. package/src/runtime/agent-core.js +72 -6
  204. package/src/runtime/agent-runtime.js +42 -0
  205. package/src/runtime/headless-runner.js +32 -0
  206. package/src/runtime/headless-stream.js +36 -1
  207. package/src/runtime/runtime-factory.js +62 -4
  208. package/src/assets/web-panel/assets/ChatBubbleRenderer-eMmw1eZF.js +0 -1
  209. package/src/assets/web-panel/assets/GenericCardRenderer-BMAtvGt1.js +0 -1
  210. package/src/assets/web-panel/assets/OrderTableRenderer-Dyrnqy_o.js +0 -1
  211. package/src/assets/web-panel/assets/TimelineRenderer-CnudkJxk.js +0 -1
  212. package/src/assets/web-panel/assets/devWarning-DxufPwXC.js +0 -1
  213. package/src/assets/web-panel/assets/index-ZMTB9p5z.js +0 -1
  214. package/src/assets/web-panel/assets/index-_PvIDelE.js +0 -1
@@ -7,8 +7,12 @@ import {
7
7
  createRolloutStore,
8
8
  } from "./rollout-store-factory.js";
9
9
  import { AppServerGraphRuntime } from "./graph-runtime.js";
10
+ import { captureAgentSkillOutcomeIndex } from "../evolution/agent-evolution-runtime-composition-brand.js";
11
+ import { captureSkillVectorAuthority } from "../skill-vector-authority.js";
10
12
  import { compileGraphDefinition } from "../graph-kernel/compiler.js";
11
13
  import { createCliContextMemoryRuntime } from "../context-memory-kernel/runtime.js";
14
+ import { isEvolutionWorkbenchCliHost } from "../evolution/evolution-workbench-cli-host.js";
15
+ import { isGovernedKnowledgeReviewHost } from "../evolution/governed-knowledge-review-host.js";
12
16
  import {
13
17
  contextPlanCreatedNotification,
14
18
  memoryDeletionNotification,
@@ -145,6 +149,10 @@ export class CcAppServer {
145
149
  transport = "stdio",
146
150
  graphRuntime = null,
147
151
  evolutionCompositionFactory = null,
152
+ skillOutcomeIndex = null,
153
+ skillVectorAuthority = null,
154
+ evolutionWorkbenchHost = null,
155
+ governedKnowledgeReviewHost = null,
148
156
  contextMemoryRuntimeFactory = createCliContextMemoryRuntime,
149
157
  } = {}) {
150
158
  if (typeof send !== "function") {
@@ -166,9 +174,47 @@ export class CcAppServer {
166
174
  throw new TypeError("contextMemoryRuntimeFactory must be a function");
167
175
  }
168
176
  this.contextMemoryRuntimeFactory = contextMemoryRuntimeFactory;
169
- if (graphRuntime && evolutionCompositionFactory) {
177
+ if (
178
+ evolutionWorkbenchHost !== null &&
179
+ !isEvolutionWorkbenchCliHost(evolutionWorkbenchHost)
180
+ ) {
181
+ throw new TypeError(
182
+ "CcAppServer evolutionWorkbenchHost must be a branded Workbench host",
183
+ );
184
+ }
185
+ this.evolutionWorkbenchHost = evolutionWorkbenchHost;
186
+ if (
187
+ governedKnowledgeReviewHost !== null &&
188
+ !isGovernedKnowledgeReviewHost(governedKnowledgeReviewHost)
189
+ ) {
190
+ throw new TypeError(
191
+ "CcAppServer governedKnowledgeReviewHost must be a branded review host",
192
+ );
193
+ }
194
+ this.governedKnowledgeReviewHost = governedKnowledgeReviewHost;
195
+ this.skillOutcomeIndex =
196
+ skillOutcomeIndex === null
197
+ ? null
198
+ : captureAgentSkillOutcomeIndex(skillOutcomeIndex);
199
+ this.skillVectorAuthority =
200
+ skillVectorAuthority === null
201
+ ? null
202
+ : captureSkillVectorAuthority(skillVectorAuthority);
203
+ if (
204
+ this.skillOutcomeIndex !== null &&
205
+ this.skillVectorAuthority !== null &&
206
+ this.skillOutcomeIndex.tenantId !== this.skillVectorAuthority.tenantId
207
+ ) {
208
+ throw new TypeError(
209
+ "App Server retrieval authorities must share one tenant",
210
+ );
211
+ }
212
+ if (
213
+ graphRuntime &&
214
+ (evolutionCompositionFactory || skillOutcomeIndex || skillVectorAuthority)
215
+ ) {
170
216
  throw new TypeError(
171
- "graphRuntime and evolutionCompositionFactory cannot both be provided",
217
+ "graphRuntime and host-owned Graph authorities cannot both be provided",
172
218
  );
173
219
  }
174
220
  this.graphRuntime =
@@ -178,6 +224,8 @@ export class CcAppServer {
178
224
  now,
179
225
  createId,
180
226
  evolutionCompositionFactory,
227
+ skillOutcomeIndex: this.skillOutcomeIndex,
228
+ skillVectorAuthority: this.skillVectorAuthority,
181
229
  executeNode: (context) => this._executeGraphNode(context),
182
230
  requestHumanTask: (context) => this._requestHumanTask(context),
183
231
  onEvent: (event) => {
@@ -353,6 +401,18 @@ export class CcAppServer {
353
401
  "memory/decide": () => this._memoryDecide(message.params),
354
402
  "memory/delete": () => this._memoryDelete(message.params),
355
403
  "memory/reconcile": () => this._memoryReconcile(message.params),
404
+ "evolution/workbench/list": () =>
405
+ this._evolutionWorkbenchList(message.params),
406
+ "evolution/workbench/compare": () =>
407
+ this._evolutionWorkbenchCompare(message.params),
408
+ "evolution/workbench/review": () =>
409
+ this._evolutionWorkbenchReview(message.params),
410
+ "evolution/workbench/rollback": () =>
411
+ this._evolutionWorkbenchRollback(message.params),
412
+ "evolution/knowledge/conflicts": () =>
413
+ this._governedKnowledgeConflicts(message.params),
414
+ "evolution/knowledge/merge": () =>
415
+ this._governedKnowledgeMerge(message.params),
356
416
  };
357
417
  const handler = handlers[method];
358
418
  if (!handler) {
@@ -400,6 +460,20 @@ export class CcAppServer {
400
460
  websocket: { stability: "experimental" },
401
461
  limits: this.requestQueue.snapshot(),
402
462
  graphRuntime: this.graphRuntime.runtimeClaims(),
463
+ evolutionWorkbench: {
464
+ available: this.evolutionWorkbenchHost !== null,
465
+ methods:
466
+ this.evolutionWorkbenchHost === null
467
+ ? []
468
+ : ["list", "compare", "review", "rollback"],
469
+ },
470
+ governedKnowledgeReview: {
471
+ available: this.governedKnowledgeReviewHost !== null,
472
+ methods:
473
+ this.governedKnowledgeReviewHost === null
474
+ ? []
475
+ : ["conflicts", "merge"],
476
+ },
403
477
  schema: {
404
478
  id: APP_SERVER_SCHEMA.$id,
405
479
  version: APP_SERVER_PROTOCOL_VERSION,
@@ -415,6 +489,91 @@ export class CcAppServer {
415
489
  return runtime;
416
490
  }
417
491
 
492
+ _requireEvolutionWorkbenchHost() {
493
+ if (this.evolutionWorkbenchHost === null) {
494
+ throw new JsonRpcError(
495
+ JSON_RPC_ERROR.NOT_FOUND,
496
+ "Evolution Workbench is not configured for this App Server",
497
+ );
498
+ }
499
+ return this.evolutionWorkbenchHost;
500
+ }
501
+
502
+ _evolutionWorkbenchList(rawParams = {}) {
503
+ const params = requireObject(rawParams);
504
+ return this._requireEvolutionWorkbenchHost().list({
505
+ query: typeof params.query === "string" ? params.query : "",
506
+ status: params.status ?? null,
507
+ offset: params.offset ?? 0,
508
+ limit: params.limit ?? 100,
509
+ });
510
+ }
511
+
512
+ _evolutionWorkbenchCompare(rawParams) {
513
+ const params = requireObject(rawParams);
514
+ return this._requireEvolutionWorkbenchHost().compare(
515
+ requiredString(params.leftPacketDigest, "leftPacketDigest"),
516
+ requiredString(params.rightPacketDigest, "rightPacketDigest"),
517
+ );
518
+ }
519
+
520
+ _evolutionWorkbenchReview(rawParams) {
521
+ const params = requireObject(rawParams);
522
+ if (!Array.isArray(params.packetDigests)) {
523
+ throw new JsonRpcError(
524
+ JSON_RPC_ERROR.INVALID_PARAMS,
525
+ "packetDigests must be an array",
526
+ );
527
+ }
528
+ return this._requireEvolutionWorkbenchHost().review({
529
+ packetDigests: params.packetDigests,
530
+ decision: requiredString(params.decision, "decision"),
531
+ reason: requiredString(params.reason, "reason"),
532
+ });
533
+ }
534
+
535
+ _evolutionWorkbenchRollback(rawParams) {
536
+ const params = requireObject(rawParams);
537
+ return this._requireEvolutionWorkbenchHost().rollback({
538
+ fromPacketDigest: requiredString(
539
+ params.fromPacketDigest,
540
+ "fromPacketDigest",
541
+ ),
542
+ toPacketDigest: requiredString(params.toPacketDigest, "toPacketDigest"),
543
+ reason: requiredString(params.reason, "reason"),
544
+ });
545
+ }
546
+
547
+ _requireGovernedKnowledgeReviewHost() {
548
+ if (this.governedKnowledgeReviewHost === null) {
549
+ throw new JsonRpcError(
550
+ JSON_RPC_ERROR.NOT_FOUND,
551
+ "Governed knowledge review is not configured for this App Server",
552
+ );
553
+ }
554
+ return this.governedKnowledgeReviewHost;
555
+ }
556
+
557
+ _governedKnowledgeConflicts(rawParams = {}) {
558
+ const params = requireObject(rawParams);
559
+ return this._requireGovernedKnowledgeReviewHost().list({
560
+ cursor: params.cursor ?? 0,
561
+ limit: params.limit ?? 50,
562
+ });
563
+ }
564
+
565
+ _governedKnowledgeMerge(rawParams) {
566
+ const params = requireObject(rawParams);
567
+ return this._requireGovernedKnowledgeReviewHost().merge({
568
+ conflictEnvelopeDigest: requiredString(
569
+ params.conflictEnvelopeDigest,
570
+ "conflictEnvelopeDigest",
571
+ ),
572
+ mergedRecord: requireObject(params.mergedRecord, "mergedRecord"),
573
+ reason: requiredString(params.reason, "reason"),
574
+ });
575
+ }
576
+
418
577
  async _contextPlan(rawParams) {
419
578
  const params = requireObject(rawParams);
420
579
  const runtime = this._contextMemoryRuntime({
@@ -612,6 +771,8 @@ export class CcAppServer {
612
771
  input,
613
772
  signal,
614
773
  evolutionIngress,
774
+ skillOutcomeIndex,
775
+ skillVectorAuthority,
615
776
  }) {
616
777
  const threadId = `graph-agent:${runId}:${nodeId}`;
617
778
  const turn = { id: attempt.id, threadId };
@@ -622,9 +783,17 @@ export class CcAppServer {
622
783
  try {
623
784
  const turnOptions = { ...(input?.options || {}) };
624
785
  delete turnOptions.evolutionIngress;
786
+ delete turnOptions.skillOutcomeIndex;
787
+ delete turnOptions.skillVectorAuthority;
625
788
  if (evolutionIngress !== null && evolutionIngress !== undefined) {
626
789
  turnOptions.evolutionIngress = evolutionIngress;
627
790
  }
791
+ if (skillOutcomeIndex !== null && skillOutcomeIndex !== undefined) {
792
+ turnOptions.skillOutcomeIndex = skillOutcomeIndex;
793
+ }
794
+ if (skillVectorAuthority !== null && skillVectorAuthority !== undefined) {
795
+ turnOptions.skillVectorAuthority = skillVectorAuthority;
796
+ }
628
797
  const result = await this.kernel.startTurn({
629
798
  threadId,
630
799
  turnId: attempt.id,
@@ -866,11 +1035,20 @@ export class CcAppServer {
866
1035
  async _runTurn(active, input, options) {
867
1036
  const { turn } = active;
868
1037
  try {
1038
+ const turnOptions = { ...options };
1039
+ delete turnOptions.skillOutcomeIndex;
1040
+ delete turnOptions.skillVectorAuthority;
1041
+ if (this.skillOutcomeIndex !== null) {
1042
+ turnOptions.skillOutcomeIndex = this.skillOutcomeIndex;
1043
+ }
1044
+ if (this.skillVectorAuthority !== null) {
1045
+ turnOptions.skillVectorAuthority = this.skillVectorAuthority;
1046
+ }
869
1047
  const result = await this.kernel.startTurn({
870
1048
  threadId: turn.threadId,
871
1049
  turnId: turn.id,
872
1050
  input,
873
- options,
1051
+ options: turnOptions,
874
1052
  emit: (event) => this._emitKernelEvent(turn, event),
875
1053
  requestApproval: (event) => this._requestApproval(turn, event),
876
1054
  });
@@ -398,6 +398,8 @@ export class WebSocketAppServerHost extends EventEmitter {
398
398
  kernel: this.kernelFactory?.(),
399
399
  evolutionCompositionFactory:
400
400
  this.options.evolutionCompositionFactory ?? null,
401
+ skillOutcomeIndex: this.options.skillOutcomeIndex ?? null,
402
+ skillVectorAuthority: this.options.skillVectorAuthority ?? null,
401
403
  transport: "websocket",
402
404
  maxQueuedRequests: this.options.maxQueuedRequests,
403
405
  maxQueuedRequestBytes: this.options.maxQueuedRequestBytes,
@@ -2,6 +2,7 @@ export const AGENT_EVOLUTION_RUNTIME_COMPOSITION_SCHEMA =
2
2
  "chainlesschain.agent-evolution-runtime-composition/v1";
3
3
 
4
4
  const COMPOSITIONS = new WeakSet();
5
+ const SKILL_OUTCOME_INDEXES = new WeakSet();
5
6
 
6
7
  export function sealAgentEvolutionRuntimeComposition(fields) {
7
8
  const composition = Object.freeze({
@@ -20,3 +21,19 @@ export function captureAgentEvolutionRuntimeComposition(value) {
20
21
  }
21
22
  return value;
22
23
  }
24
+
25
+ export function sealAgentSkillOutcomeIndex(fields) {
26
+ const index = Object.freeze({
27
+ schema: "chainlesschain.agent-skill-outcome-index/v1",
28
+ ...fields,
29
+ });
30
+ SKILL_OUTCOME_INDEXES.add(index);
31
+ return index;
32
+ }
33
+
34
+ export function captureAgentSkillOutcomeIndex(value) {
35
+ if (!SKILL_OUTCOME_INDEXES.has(value)) {
36
+ throw new TypeError("a branded Agent Skill outcome index is required");
37
+ }
38
+ return value;
39
+ }
@@ -18,11 +18,17 @@ import {
18
18
  createEvolutionLedgerFileBackend,
19
19
  } from "./evolution-ledger-file-backend.js";
20
20
  import { EvolutionRunLedgerAdapter } from "./evolution-run-ledger-adapter.js";
21
+ import { EvolutionWorkbenchMetricsLedgerAdapter } from "./evolution-workbench-metrics-ledger-adapter.js";
22
+ import { captureSkillOutcomeSourceCatalogAuthority } from "./skill-outcome-source-catalog-authority.js";
21
23
  import {
22
24
  captureAgentEvolutionIngress,
23
25
  createAgentEvolutionIngress,
24
26
  } from "./agent-evolution-ingress.js";
25
- import { sealAgentEvolutionRuntimeComposition } from "./agent-evolution-runtime-composition-brand.js";
27
+ import {
28
+ captureAgentEvolutionRuntimeComposition,
29
+ sealAgentSkillOutcomeIndex,
30
+ sealAgentEvolutionRuntimeComposition,
31
+ } from "./agent-evolution-runtime-composition-brand.js";
26
32
 
27
33
  export {
28
34
  AGENT_EVOLUTION_RUNTIME_COMPOSITION_SCHEMA,
@@ -46,6 +52,9 @@ const ARTIFACT_AUTHORITY_KEYS = new Set([
46
52
  "envelopeSigner",
47
53
  "envelopeVerifier",
48
54
  ]);
55
+ const SKILL_OUTCOME_SOURCE_KEYS = new Set(["composition", "skillName"]);
56
+ const SKILL_OUTCOME_CATALOG_ENTRY_KEYS = new Set(["runId", "skillNames"]);
57
+ const MAX_SKILL_OUTCOME_SOURCES = 128;
49
58
 
50
59
  function exactRecord(value, keys, label) {
51
60
  if (
@@ -346,6 +355,27 @@ export function createAgentEvolutionRuntimeComposition({
346
355
  ledgerArtifactResolver,
347
356
  now: clock,
348
357
  });
358
+ const skillOutcomeReaders = new Map();
359
+ const createSkillOutcomeReader = Object.freeze((skillNameInput) => {
360
+ const skillName = identifier(skillNameInput, "skillName");
361
+ const cached = skillOutcomeReaders.get(skillName);
362
+ if (cached) return cached;
363
+ const reader = new EvolutionWorkbenchMetricsLedgerAdapter({
364
+ descriptor: {
365
+ tenantId,
366
+ artifactTenantId: tenantId,
367
+ evolutionRunId: runId,
368
+ skillName,
369
+ audience,
370
+ purpose: "evolution-ledger",
371
+ },
372
+ artifactPorts,
373
+ ledger: backend.ledger,
374
+ ledgerArtifactResolver,
375
+ }).createOutcomeReader();
376
+ skillOutcomeReaders.set(skillName, reader);
377
+ return reader;
378
+ });
349
379
  const evolutionIngress = createAgentEvolutionIngress({
350
380
  evidenceAdapter,
351
381
  runAdapter,
@@ -361,9 +391,143 @@ export function createAgentEvolutionRuntimeComposition({
361
391
  tenantId,
362
392
  runId,
363
393
  evolutionIngress,
394
+ createSkillOutcomeReader,
364
395
  loadRun: Object.freeze(() => runAdapter.load()),
365
396
  ledgerDescriptor: backend.descriptor,
366
397
  storage,
367
398
  });
368
399
  return composition;
369
400
  }
401
+
402
+ export function assembleAgentSkillOutcomeIndex({ sources } = {}) {
403
+ if (
404
+ !Array.isArray(sources) ||
405
+ utilTypes.isProxy(sources) ||
406
+ sources.length < 1 ||
407
+ sources.length > MAX_SKILL_OUTCOME_SOURCES
408
+ ) {
409
+ throw new TypeError("Skill outcome index sources are invalid or unbounded");
410
+ }
411
+ let tenantId = null;
412
+ const sourceIds = new Set();
413
+ const readers = sources.map((input, index) => {
414
+ const source = exactRecord(
415
+ input,
416
+ SKILL_OUTCOME_SOURCE_KEYS,
417
+ `sources[${index}]`,
418
+ );
419
+ const composition = captureAgentEvolutionRuntimeComposition(
420
+ source.composition,
421
+ );
422
+ const skillName = identifier(
423
+ source.skillName,
424
+ `sources[${index}].skillName`,
425
+ );
426
+ if (tenantId === null) tenantId = composition.tenantId;
427
+ if (composition.tenantId !== tenantId) {
428
+ throw new Error("Skill outcome index sources crossed a tenant boundary");
429
+ }
430
+ const sourceId = `${composition.runId}\0${skillName}`;
431
+ if (sourceIds.has(sourceId)) {
432
+ throw new Error("Skill outcome index sources contain a duplicate");
433
+ }
434
+ sourceIds.add(sourceId);
435
+ if (typeof composition.createSkillOutcomeReader !== "function") {
436
+ throw new TypeError(
437
+ "Agent evolution composition lacks an outcome reader",
438
+ );
439
+ }
440
+ return composition.createSkillOutcomeReader(skillName);
441
+ });
442
+ return sealAgentSkillOutcomeIndex({
443
+ tenantId,
444
+ readers: Object.freeze(readers),
445
+ });
446
+ }
447
+
448
+ export async function assembleAgentSkillOutcomeIndexFromCatalog({
449
+ tenantId: tenantIdInput,
450
+ catalogAuthority: catalogAuthorityInput,
451
+ openComposition,
452
+ } = {}) {
453
+ const tenantId = identifier(tenantIdInput, "tenantId");
454
+ const catalogAuthority = captureSkillOutcomeSourceCatalogAuthority(
455
+ catalogAuthorityInput,
456
+ );
457
+ if (
458
+ typeof openComposition !== "function" ||
459
+ utilTypes.isProxy(openComposition)
460
+ ) {
461
+ throw new TypeError("Skill outcome composition opener is invalid");
462
+ }
463
+ const loaded = await catalogAuthority.loadCatalog();
464
+ if (
465
+ loaded?.authenticated !== true ||
466
+ loaded.durable !== true ||
467
+ loaded.tenantId !== tenantId ||
468
+ !Array.isArray(loaded.entries)
469
+ ) {
470
+ throw new Error("Skill outcome source catalog authority is invalid");
471
+ }
472
+ const catalog = loaded.entries;
473
+ const runIds = new Set();
474
+ let sourceCount = 0;
475
+ const normalizedCatalog = catalog.map((input, index) => {
476
+ const entry = exactRecord(
477
+ input,
478
+ SKILL_OUTCOME_CATALOG_ENTRY_KEYS,
479
+ `catalog[${index}]`,
480
+ );
481
+ const runId = identifier(entry.runId, `catalog[${index}].runId`);
482
+ if (runIds.has(runId)) {
483
+ throw new TypeError(
484
+ "Skill outcome source catalog contains a duplicate run",
485
+ );
486
+ }
487
+ runIds.add(runId);
488
+ if (
489
+ !Array.isArray(entry.skillNames) ||
490
+ utilTypes.isProxy(entry.skillNames) ||
491
+ entry.skillNames.length < 1 ||
492
+ entry.skillNames.length > MAX_SKILL_OUTCOME_SOURCES
493
+ ) {
494
+ throw new TypeError(
495
+ `catalog[${index}].skillNames is invalid or unbounded`,
496
+ );
497
+ }
498
+ const skillNames = entry.skillNames.map((skillName, skillIndex) =>
499
+ identifier(skillName, `catalog[${index}].skillNames[${skillIndex}]`),
500
+ );
501
+ if (new Set(skillNames).size !== skillNames.length) {
502
+ throw new TypeError(
503
+ "Skill outcome source catalog contains a duplicate Skill",
504
+ );
505
+ }
506
+ sourceCount += skillNames.length;
507
+ if (sourceCount > MAX_SKILL_OUTCOME_SOURCES) {
508
+ throw new TypeError(
509
+ "Skill outcome source catalog is invalid or unbounded",
510
+ );
511
+ }
512
+ return Object.freeze({ runId, skillNames: Object.freeze(skillNames) });
513
+ });
514
+ const sources = [];
515
+ for (const entry of normalizedCatalog) {
516
+ const context = Object.freeze({ tenantId, runId: entry.runId });
517
+ const composition = captureAgentEvolutionRuntimeComposition(
518
+ await openComposition(context),
519
+ );
520
+ if (
521
+ composition.tenantId !== tenantId ||
522
+ composition.runId !== entry.runId
523
+ ) {
524
+ throw new TypeError(
525
+ "Skill outcome catalog opener returned an unbound composition",
526
+ );
527
+ }
528
+ for (const skillName of entry.skillNames) {
529
+ sources.push(Object.freeze({ composition, skillName }));
530
+ }
531
+ }
532
+ return assembleAgentSkillOutcomeIndex({ sources });
533
+ }