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
@@ -0,0 +1,430 @@
1
+ import { createHash } from "node:crypto";
2
+ import { types as utilTypes } from "node:util";
3
+
4
+ export const GOVERNED_SKILL_MARKETPLACE_MANIFEST_SCHEMA =
5
+ "chainlesschain.governed-skill-marketplace-manifest/v1";
6
+ export const GOVERNED_SKILL_MARKETPLACE_STATE_SCHEMA =
7
+ "chainlesschain.governed-skill-marketplace-state/v1";
8
+ export const GOVERNED_SKILL_MARKETPLACE_RANKING_SCHEMA =
9
+ "chainlesschain.governed-skill-marketplace-ranking/v1";
10
+
11
+ const DIGEST = /^sha256:[a-f0-9]{64}$/u;
12
+ const ID = /^[A-Za-z0-9][A-Za-z0-9._:@/-]{0,255}$/u;
13
+ const STAGES = new Map([
14
+ ["candidate", "shadow"],
15
+ ["shadow", "canary"],
16
+ ["canary", "active"],
17
+ ]);
18
+
19
+ function canonical(value) {
20
+ if (value === null || typeof value !== "object") return JSON.stringify(value);
21
+ if (Array.isArray(value)) return `[${value.map(canonical).join(",")}]`;
22
+ return `{${Object.keys(value)
23
+ .sort()
24
+ .map((key) => `${JSON.stringify(key)}:${canonical(value[key])}`)
25
+ .join(",")}}`;
26
+ }
27
+
28
+ function hash(domain, value) {
29
+ return `sha256:${createHash("sha256")
30
+ .update(`${domain}\0${canonical(value)}`)
31
+ .digest("hex")}`;
32
+ }
33
+
34
+ function clone(value) {
35
+ return value == null ? value : JSON.parse(JSON.stringify(value));
36
+ }
37
+
38
+ function freeze(value) {
39
+ if (value && typeof value === "object" && !Object.isFrozen(value)) {
40
+ Object.freeze(value);
41
+ for (const child of Object.values(value)) freeze(child);
42
+ }
43
+ return value;
44
+ }
45
+
46
+ function record(value, label) {
47
+ if (
48
+ !value ||
49
+ typeof value !== "object" ||
50
+ Array.isArray(value) ||
51
+ utilTypes.isProxy(value) ||
52
+ ![Object.prototype, null].includes(Object.getPrototypeOf(value))
53
+ )
54
+ throw new TypeError(`${label} must be a plain object`);
55
+ return value;
56
+ }
57
+
58
+ function id(value, label) {
59
+ if (typeof value !== "string" || !ID.test(value))
60
+ throw new TypeError(`${label} is invalid`);
61
+ return value;
62
+ }
63
+
64
+ function digest(value, label) {
65
+ if (typeof value !== "string" || !DIGEST.test(value))
66
+ throw new TypeError(`${label} must be sha256-bound`);
67
+ return value;
68
+ }
69
+
70
+ function capture(owner, method) {
71
+ if (
72
+ !owner ||
73
+ typeof owner !== "object" ||
74
+ utilTypes.isProxy(owner) ||
75
+ typeof owner[method] !== "function"
76
+ )
77
+ throw new TypeError(`${method} authority is required`);
78
+ return (...args) => Reflect.apply(owner[method], owner, args);
79
+ }
80
+
81
+ function normalizeManifest(input, tenantId) {
82
+ record(input, "marketplace manifest");
83
+ if (
84
+ input.schema !== GOVERNED_SKILL_MARKETPLACE_MANIFEST_SCHEMA ||
85
+ input.tenantId !== tenantId ||
86
+ !Array.isArray(input.compatibilityMatrix) ||
87
+ input.compatibilityMatrix.length < 1 ||
88
+ input.compatibilityMatrix.length > 256 ||
89
+ !Array.isArray(input.lineage) ||
90
+ input.lineage.length < 1 ||
91
+ input.lineage.length > 256 ||
92
+ typeof input.signature !== "string" ||
93
+ input.signature.length < 16
94
+ )
95
+ throw new TypeError("marketplace manifest is incomplete or cross-tenant");
96
+ const core = { ...input };
97
+ delete core.manifestDigest;
98
+ delete core.signature;
99
+ for (const field of [
100
+ "packageDigest",
101
+ "sourceCommitDigest",
102
+ "sbomDigest",
103
+ "dependencyLockDigest",
104
+ "permissionManifestDigest",
105
+ "targetMatrixDigest",
106
+ "evalBadgeDigest",
107
+ ])
108
+ digest(input[field], field);
109
+ id(input.skillName, "skillName");
110
+ id(input.version, "version");
111
+ id(input.sourceModel, "sourceModel");
112
+ for (const value of input.lineage) digest(value, "lineage digest");
113
+ const cells = input.compatibilityMatrix.map((cell) => {
114
+ record(cell, "compatibility cell");
115
+ if (
116
+ typeof cell.accepted !== "boolean" ||
117
+ typeof cell.safetyPassed !== "boolean" ||
118
+ !Number.isFinite(cell.qualityScore) ||
119
+ cell.qualityScore < 0 ||
120
+ cell.qualityScore > 1 ||
121
+ !Number.isSafeInteger(cell.sampleCount) ||
122
+ cell.sampleCount < 1 ||
123
+ !["model", "os", "tool", "runtime"].every((field) =>
124
+ ID.test(cell[field] || ""),
125
+ )
126
+ )
127
+ throw new TypeError("compatibility cell is invalid");
128
+ digest(cell.evalReceiptDigest, "compatibility eval receipt");
129
+ return clone(cell);
130
+ });
131
+ if (
132
+ input.manifestDigest !==
133
+ hash(GOVERNED_SKILL_MARKETPLACE_MANIFEST_SCHEMA, core)
134
+ )
135
+ throw new TypeError("marketplace manifest digest is invalid");
136
+ return freeze({ ...clone(input), compatibilityMatrix: cells });
137
+ }
138
+
139
+ function targetCell(manifest, target) {
140
+ record(target, "marketplace target");
141
+ const matches = manifest.compatibilityMatrix.filter(
142
+ (cell) =>
143
+ cell.model === target.model &&
144
+ cell.os === target.os &&
145
+ cell.tool === target.tool &&
146
+ cell.runtime === target.runtime,
147
+ );
148
+ if (matches.length !== 1 || matches[0].accepted !== true)
149
+ throw new Error("target has no unique accepted compatibility evaluation");
150
+ return matches[0];
151
+ }
152
+
153
+ export function buildGovernedSkillMarketplaceManifest(input, signature) {
154
+ record(input, "marketplace manifest input");
155
+ const core = {
156
+ schema: GOVERNED_SKILL_MARKETPLACE_MANIFEST_SCHEMA,
157
+ ...clone(input),
158
+ };
159
+ const manifestDigest = hash(GOVERNED_SKILL_MARKETPLACE_MANIFEST_SCHEMA, core);
160
+ return freeze({ ...core, manifestDigest, signature });
161
+ }
162
+
163
+ export class GovernedSkillMarketplace {
164
+ constructor({ tenantId, ports } = {}) {
165
+ this.tenantId = id(tenantId, "tenantId");
166
+ this._verifySignature = capture(ports, "verifySignature");
167
+ this._adapt = capture(ports, "adapt");
168
+ this._load = capture(ports, "load");
169
+ this._commit = capture(ports, "commit");
170
+ this._transition = capture(ports, "transition");
171
+ this._verifyPilot = capture(ports, "verifyPilot");
172
+ this._verifyRevocation = capture(ports, "verifyRevocation");
173
+ }
174
+
175
+ async inspect(input, target) {
176
+ const manifest = normalizeManifest(input, this.tenantId);
177
+ if ((await this._verifySignature({ manifest })) !== true)
178
+ throw new Error("marketplace manifest signature is invalid");
179
+ const cell = targetCell(manifest, target);
180
+ if (cell.safetyPassed !== true)
181
+ throw new Error("marketplace target safety gate failed");
182
+ const adapted = await this._adapt({
183
+ manifest,
184
+ target: clone(target),
185
+ cell,
186
+ });
187
+ if (
188
+ adapted?.authenticated !== true ||
189
+ adapted.manifestDigest !== manifest.manifestDigest ||
190
+ adapted.evalReceiptDigest !== cell.evalReceiptDigest ||
191
+ !DIGEST.test(adapted.outputDigest || "") ||
192
+ !DIGEST.test(adapted.adapterDigest || "")
193
+ )
194
+ throw new Error(
195
+ "target adapter did not bind its output to the evaluation",
196
+ );
197
+ return freeze({
198
+ manifest,
199
+ target: clone(target),
200
+ cell,
201
+ adapted: clone(adapted),
202
+ });
203
+ }
204
+
205
+ async stage({ manifest: input, target, expectedStateDigest = null } = {}) {
206
+ const inspected = await this.inspect(input, target);
207
+ const current = await this._load({
208
+ skillName: inspected.manifest.skillName,
209
+ });
210
+ if ((current?.stateDigest || null) !== expectedStateDigest)
211
+ throw new Error("marketplace install baseline changed");
212
+ const state = {
213
+ schema: GOVERNED_SKILL_MARKETPLACE_STATE_SCHEMA,
214
+ tenantId: this.tenantId,
215
+ skillName: inspected.manifest.skillName,
216
+ version: inspected.manifest.version,
217
+ manifestDigest: inspected.manifest.manifestDigest,
218
+ packageDigest: inspected.manifest.packageDigest,
219
+ adaptedOutputDigest: inspected.adapted.outputDigest,
220
+ target: clone(target),
221
+ stage: "candidate",
222
+ previousStateDigest: expectedStateDigest,
223
+ revoked: false,
224
+ };
225
+ return this._persist(state, expectedStateDigest, "marketplace.staged");
226
+ }
227
+
228
+ async rank({ listings, target, outcomeMetrics = {} } = {}) {
229
+ if (
230
+ !Array.isArray(listings) ||
231
+ listings.length < 1 ||
232
+ listings.length > 1000
233
+ )
234
+ throw new TypeError("marketplace ranking listings are invalid");
235
+ const ranked = [];
236
+ for (const listing of listings) {
237
+ record(listing, "marketplace listing");
238
+ const inspected = await this.inspect(listing.manifest, target);
239
+ if (inspected.cell.safetyPassed !== true)
240
+ throw new Error("marketplace ranking requires a passing safety gate");
241
+ const metric = outcomeMetrics[inspected.manifest.manifestDigest] ?? {
242
+ samples: 0,
243
+ successRate: 0,
244
+ correctionRate: 0,
245
+ };
246
+ if (
247
+ !Number.isSafeInteger(metric.samples) ||
248
+ metric.samples < 0 ||
249
+ !Number.isFinite(metric.successRate) ||
250
+ metric.successRate < 0 ||
251
+ metric.successRate > 1 ||
252
+ !Number.isFinite(metric.correctionRate) ||
253
+ metric.correctionRate < 0 ||
254
+ metric.correctionRate > 1
255
+ )
256
+ throw new TypeError("marketplace ranking outcome metric is invalid");
257
+ const outcomeScore =
258
+ metric.samples >= 20
259
+ ? metric.successRate * (1 - metric.correctionRate)
260
+ : 0.5;
261
+ const score = inspected.cell.qualityScore * 0.75 + outcomeScore * 0.25;
262
+ ranked.push({
263
+ skillName: inspected.manifest.skillName,
264
+ version: inspected.manifest.version,
265
+ manifestDigest: inspected.manifest.manifestDigest,
266
+ evalBadgeDigest: inspected.manifest.evalBadgeDigest,
267
+ evalReceiptDigest: inspected.cell.evalReceiptDigest,
268
+ target: clone(target),
269
+ score,
270
+ scores: {
271
+ targetEval: inspected.cell.qualityScore,
272
+ verifiedOutcome: outcomeScore,
273
+ },
274
+ outcomeSamples: metric.samples,
275
+ reason: `target-eval=${inspected.cell.qualityScore.toFixed(3)}, verified-outcome=${outcomeScore.toFixed(3)}`,
276
+ });
277
+ }
278
+ ranked.sort(
279
+ (left, right) =>
280
+ right.score - left.score ||
281
+ left.manifestDigest.localeCompare(right.manifestDigest),
282
+ );
283
+ const core = {
284
+ schema: GOVERNED_SKILL_MARKETPLACE_RANKING_SCHEMA,
285
+ tenantId: this.tenantId,
286
+ target: clone(target),
287
+ ranked,
288
+ };
289
+ return freeze({
290
+ ...core,
291
+ rankingDigest: hash(GOVERNED_SKILL_MARKETPLACE_RANKING_SCHEMA, core),
292
+ });
293
+ }
294
+
295
+ async advance({ skillName, expectedStateDigest, pilotReceipt } = {}) {
296
+ const current = await this._exact(skillName, expectedStateDigest);
297
+ const nextStage = STAGES.get(current.stage);
298
+ if (!nextStage || current.revoked)
299
+ throw new Error("marketplace update cannot advance");
300
+ const verified = await this._verifyPilot({
301
+ state: current,
302
+ nextStage,
303
+ pilotReceipt,
304
+ });
305
+ if (
306
+ verified?.authenticated !== true ||
307
+ verified.accepted !== true ||
308
+ verified.stateDigest !== current.stateDigest ||
309
+ verified.nextStage !== nextStage ||
310
+ !DIGEST.test(verified.receiptDigest || "")
311
+ )
312
+ throw new Error(
313
+ "marketplace rollout lacks an accepted exact-stage pilot receipt",
314
+ );
315
+ const transitionRequest = freeze({
316
+ stateDigest: current.stateDigest,
317
+ manifestDigest: current.manifestDigest,
318
+ nextStage,
319
+ authorityReceiptDigest: verified.receiptDigest,
320
+ });
321
+ const requestDigest = hash(
322
+ "chainlesschain.governed-skill-marketplace-transition/v1",
323
+ transitionRequest,
324
+ );
325
+ const transition = await this._transition({
326
+ request: transitionRequest,
327
+ requestDigest,
328
+ state: current,
329
+ receipt: verified,
330
+ });
331
+ if (
332
+ transition?.authenticated !== true ||
333
+ transition.durable !== true ||
334
+ transition.requestDigest !== requestDigest ||
335
+ transition.nextStage !== nextStage ||
336
+ !DIGEST.test(transition.receiptDigest || "")
337
+ )
338
+ throw new Error(
339
+ "marketplace transition authority did not durably apply the stage",
340
+ );
341
+ return this._persist(
342
+ {
343
+ ...current,
344
+ stage: nextStage,
345
+ transitionRequestDigest: requestDigest,
346
+ transitionReceiptDigest: transition.receiptDigest,
347
+ },
348
+ current.stateDigest,
349
+ "marketplace.advanced",
350
+ );
351
+ }
352
+
353
+ async revoke({ skillName, expectedStateDigest, revocationReceipt } = {}) {
354
+ const current = await this._exact(skillName, expectedStateDigest);
355
+ const verified = await this._verifyRevocation({
356
+ state: current,
357
+ revocationReceipt,
358
+ });
359
+ if (
360
+ verified?.authenticated !== true ||
361
+ verified.revoked !== true ||
362
+ verified.manifestDigest !== current.manifestDigest ||
363
+ !DIGEST.test(verified.receiptDigest || "")
364
+ )
365
+ throw new Error("marketplace revocation is invalid");
366
+ const transitionRequest = freeze({
367
+ stateDigest: current.stateDigest,
368
+ manifestDigest: current.manifestDigest,
369
+ nextStage: "rolled-back",
370
+ authorityReceiptDigest: verified.receiptDigest,
371
+ });
372
+ const requestDigest = hash(
373
+ "chainlesschain.governed-skill-marketplace-transition/v1",
374
+ transitionRequest,
375
+ );
376
+ const transition = await this._transition({
377
+ request: transitionRequest,
378
+ requestDigest,
379
+ state: current,
380
+ receipt: verified,
381
+ });
382
+ if (
383
+ transition?.authenticated !== true ||
384
+ transition.durable !== true ||
385
+ transition.requestDigest !== requestDigest ||
386
+ transition.nextStage !== "rolled-back" ||
387
+ !DIGEST.test(transition.receiptDigest || "")
388
+ )
389
+ throw new Error("marketplace rollback was not durably applied");
390
+ return this._persist(
391
+ {
392
+ ...current,
393
+ stage: "rolled-back",
394
+ revoked: true,
395
+ revocationReceiptDigest: verified.receiptDigest,
396
+ transitionRequestDigest: requestDigest,
397
+ transitionReceiptDigest: transition.receiptDigest,
398
+ },
399
+ current.stateDigest,
400
+ "marketplace.revoked",
401
+ );
402
+ }
403
+
404
+ async _exact(skillName, expectedStateDigest) {
405
+ id(skillName, "skillName");
406
+ digest(expectedStateDigest, "expectedStateDigest");
407
+ const current = await this._load({ skillName });
408
+ if (!current || current.stateDigest !== expectedStateDigest)
409
+ throw new Error("marketplace state changed or is missing");
410
+ return current;
411
+ }
412
+
413
+ async _persist(input, expectedStateDigest, event) {
414
+ const core = { ...clone(input) };
415
+ delete core.stateDigest;
416
+ const state = freeze({
417
+ ...core,
418
+ stateDigest: hash(GOVERNED_SKILL_MARKETPLACE_STATE_SCHEMA, core),
419
+ });
420
+ const result = await this._commit({ state, expectedStateDigest, event });
421
+ if (
422
+ result?.authenticated !== true ||
423
+ result.durable !== true ||
424
+ result.stateDigest !== state.stateDigest ||
425
+ result.expectedStateDigest !== expectedStateDigest
426
+ )
427
+ throw new Error("marketplace governance state was not durably committed");
428
+ return state;
429
+ }
430
+ }