chainlesschain 0.166.58 → 0.166.62

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 (177) hide show
  1. package/package.json +3 -2
  2. package/src/assets/web-panel/assets/{AIOps-DoyI29Aw.js → AIOps-BqoRiuXE.js} +1 -1
  3. package/src/assets/web-panel/assets/{ActionButton-eZKcEoxc.js → ActionButton-BwBhyFIm.js} +1 -1
  4. package/src/assets/web-panel/assets/{Analytics-B2C2e9A7.js → Analytics-DTW03Emb.js} +3 -3
  5. package/src/assets/web-panel/assets/{AppLayout-DkZJiu4X.js → AppLayout-CI-wxMLQ.js} +5 -5
  6. package/src/assets/web-panel/assets/{Artifacts-8PD3BXVa.js → Artifacts-DVqbM3iE.js} +1 -1
  7. package/src/assets/web-panel/assets/{Audit-Cv6sRlFu.js → Audit-DulhOs16.js} +1 -1
  8. package/src/assets/web-panel/assets/{BackgroundAgents-D-V84Qpm.js → BackgroundAgents-DnRs67e8.js} +1 -1
  9. package/src/assets/web-panel/assets/{Backup-DYJQcxj1.js → Backup-BFEZo0vX.js} +1 -1
  10. package/src/assets/web-panel/assets/{BaseInput-KL2IeywH.js → BaseInput-D185sBnp.js} +1 -1
  11. package/src/assets/web-panel/assets/{Chat-Bt9wy_Yn.js → Chat-DUvP-2SK.js} +6 -6
  12. package/src/assets/web-panel/assets/{ChatBubbleRenderer-ChB6fH-W.js → ChatBubbleRenderer-u9WKQbZb.js} +1 -1
  13. package/src/assets/web-panel/assets/{Checkbox-Dm-nfdnd.js → Checkbox-D8Zh_18b.js} +1 -1
  14. package/src/assets/web-panel/assets/{Codegen-CYi3yDzv.js → Codegen-WdiWRdfC.js} +1 -1
  15. package/src/assets/web-panel/assets/{Col-C7sQywfG.js → Col-CnSoVpw6.js} +1 -1
  16. package/src/assets/web-panel/assets/{Community-DjxuqAM4.js → Community-BJDHgBkw.js} +1 -1
  17. package/src/assets/web-panel/assets/{Compact-CD_4lbxr.js → Compact-uNRdmBaq.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compliance-BtDpNJrS.js → Compliance-_6jRTJa3.js} +1 -1
  19. package/src/assets/web-panel/assets/{Cowork-l19ANH6Q.js → Cowork-D5lnbXR6.js} +3 -3
  20. package/src/assets/web-panel/assets/{Cron-Br-rBoEK.js → Cron-D6tuGBVg.js} +2 -2
  21. package/src/assets/web-panel/assets/{Crosschain-60UVvKET.js → Crosschain-Ce5e9Lbm.js} +1 -1
  22. package/src/assets/web-panel/assets/{DID-B9dqar51.js → DID-1VVKZ_c1.js} +2 -2
  23. package/src/assets/web-panel/assets/{Dashboard-B39hhdHb.js → Dashboard-DuHcZ13w.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dropdown-Bm5rCfvF.js → Dropdown-BC3EK0wN.js} +1 -1
  25. package/src/assets/web-panel/assets/{EmailListRenderer-BI9HANDl.js → EmailListRenderer-DzLpGs5E.js} +1 -1
  26. package/src/assets/web-panel/assets/{EvolutionSettings-Cfqn_yCq.js → EvolutionSettings-x2XZHG0Z.js} +1 -1
  27. package/src/assets/web-panel/assets/{FamilyGuardDashboard-9Y4_zyhT.js → FamilyGuardDashboard-nAavV50Y.js} +1 -1
  28. package/src/assets/web-panel/assets/{Federation-vnbbmMdF.js → Federation-CCHWVS5J.js} +1 -1
  29. package/src/assets/web-panel/assets/{FormItemContext-BEKNtNF9.js → FormItemContext-CGod_3Ni.js} +1 -1
  30. package/src/assets/web-panel/assets/{GenericCardRenderer-BmWr16IL.js → GenericCardRenderer-DIFYQa2f.js} +1 -1
  31. package/src/assets/web-panel/assets/{Git-CUUwAXdn.js → Git-DikM1Nc5.js} +2 -2
  32. package/src/assets/web-panel/assets/{Governance-Bw8XZmH9.js → Governance-SzzBXCDX.js} +1 -1
  33. package/src/assets/web-panel/assets/{Inference-CNrml6dn.js → Inference-wVsu9QzM.js} +1 -1
  34. package/src/assets/web-panel/assets/{KnowledgeGraph-BhxOwpW_.js → KnowledgeGraph-DDpVxfO-.js} +1 -1
  35. package/src/assets/web-panel/assets/{Logs-BV8WViUG.js → Logs-BnIjS-2Z.js} +2 -2
  36. package/src/assets/web-panel/assets/MarkdownRenderer-3AsRzie6.js +1 -0
  37. package/src/assets/web-panel/assets/{Marketplace-ztcu4mg4.js → Marketplace-Cj3PLhXV.js} +1 -1
  38. package/src/assets/web-panel/assets/{McpTools-D-wzRO7z.js → McpTools-DMKO55Kz.js} +3 -3
  39. package/src/assets/web-panel/assets/{Memory-ChdjWC1R.js → Memory-wWJl5yJL.js} +2 -2
  40. package/src/assets/web-panel/assets/{MobileBridge-B1QHzIjE.js → MobileBridge-CJ_VIPgJ.js} +1 -1
  41. package/src/assets/web-panel/assets/{MobileProjects-DmaRtaMw.js → MobileProjects-CiJT5cF8.js} +1 -1
  42. package/src/assets/web-panel/assets/{Mtc-DRQMr4WP.js → Mtc-BXmndm9a.js} +4 -4
  43. package/src/assets/web-panel/assets/{MtcAudit-Cwo0on-u.js → MtcAudit-C3hWIAnz.js} +2 -2
  44. package/src/assets/web-panel/assets/{Multisig-QplgySFt.js → Multisig-DU4OUQ7u.js} +3 -3
  45. package/src/assets/web-panel/assets/{NLProgramming-BWkMyuAy.js → NLProgramming-CyAwOeU5.js} +1 -1
  46. package/src/assets/web-panel/assets/{Notes-BI_pSEM0.js → Notes--YvcAg13.js} +3 -3
  47. package/src/assets/web-panel/assets/{NotificationSettings-DiuFo6Xe.js → NotificationSettings-Dyu6dC0D.js} +1 -1
  48. package/src/assets/web-panel/assets/{OrderTableRenderer-DZzQhujZ.js → OrderTableRenderer-Df-0iTO2.js} +1 -1
  49. package/src/assets/web-panel/assets/{Organization-DqEdqWB0.js → Organization-a9Em4Sgu.js} +4 -4
  50. package/src/assets/web-panel/assets/{Overflow-CO7_2YLN.js → Overflow-CCQtvcsw.js} +1 -1
  51. package/src/assets/web-panel/assets/{P2P-BN5RiNst.js → P2P--CaB5e38.js} +2 -2
  52. package/src/assets/web-panel/assets/{PdhVaultBrowser-CapfG4bl.js → PdhVaultBrowser-CmfHjoJG.js} +3 -3
  53. package/src/assets/web-panel/assets/{Permissions-B24c5fWW.js → Permissions-BCDjNsXi.js} +4 -4
  54. package/src/assets/web-panel/assets/{PersonalDataHub-D7Mb3_vh.js → PersonalDataHub-ByprqCJd.js} +4 -4
  55. package/src/assets/web-panel/assets/{Pipeline-BsfxlbOQ.js → Pipeline-CZRZq-P0.js} +1 -1
  56. package/src/assets/web-panel/assets/{Privacy-Bq7c7IYy.js → Privacy-CeDay_dV.js} +1 -1
  57. package/src/assets/web-panel/assets/{ProjectInit-Clse2DPl.js → ProjectInit-CgpIfRAZ.js} +2 -2
  58. package/src/assets/web-panel/assets/{ProjectSettings-CHAEdjri.js → ProjectSettings-CU8iakEs.js} +2 -2
  59. package/src/assets/web-panel/assets/Projects-pPM0KRfQ.js +1 -0
  60. package/src/assets/web-panel/assets/{Providers-DQyH3PXU.js → Providers-BfpxsZh1.js} +1 -1
  61. package/src/assets/web-panel/assets/{QrScannerModal-t2Z-N49o.js → QrScannerModal-Dmv3rax1.js} +1 -1
  62. package/src/assets/web-panel/assets/{QuickAsk-BacR7PlI.js → QuickAsk-DBOtB5wd.js} +1 -1
  63. package/src/assets/web-panel/assets/{Recommend-D-NAy0CQ.js → Recommend-C_KnHRvS.js} +1 -1
  64. package/src/assets/web-panel/assets/{RemoteSession-CjI3GeVQ.js → RemoteSession-OIO9kT7D.js} +2 -2
  65. package/src/assets/web-panel/assets/{Reputation-HoQ3i2oW.js → Reputation-BCfNIBt3.js} +1 -1
  66. package/src/assets/web-panel/assets/{Row-CY2jczWa.js → Row-pnhw7dyj.js} +1 -1
  67. package/src/assets/web-panel/assets/{RssFeed-Bd3o20IY.js → RssFeed-CLJ1A3FF.js} +3 -3
  68. package/src/assets/web-panel/assets/{Search-C88KjgTv.js → Search-CSQzJ3gj.js} +1 -1
  69. package/src/assets/web-panel/assets/{Security-yfmfvujK.js → Security-CS_mvkaE.js} +4 -4
  70. package/src/assets/web-panel/assets/{Services-DLPBWoxT.js → Services-DBqA2Csq.js} +2 -2
  71. package/src/assets/web-panel/assets/{Skeleton-DzDjvVQi.js → Skeleton-BjR3_iWH.js} +1 -1
  72. package/src/assets/web-panel/assets/{Skills-DqfrJIyP.js → Skills-DwGIXRJS.js} +1 -1
  73. package/src/assets/web-panel/assets/{Sla-BXhsGzkm.js → Sla-DwiHHJtJ.js} +1 -1
  74. package/src/assets/web-panel/assets/{SpeechSettings-jxSl2JDo.js → SpeechSettings-QYN_t0CS.js} +1 -1
  75. package/src/assets/web-panel/assets/{SyncSettings-BX2xKtI3.js → SyncSettings-DcXA1Jp3.js} +2 -2
  76. package/src/assets/web-panel/assets/Tasks-DwWqvoyB.js +1 -0
  77. package/src/assets/web-panel/assets/{Templates-CTpj9f62.js → Templates-C6MTuLXU.js} +1 -1
  78. package/src/assets/web-panel/assets/{Tenant-nnQuhdPg.js → Tenant-DmbdMB2D.js} +1 -1
  79. package/src/assets/web-panel/assets/{Terminal-cJ0vbuTe.js → Terminal-DYeXnE4A.js} +2 -2
  80. package/src/assets/web-panel/assets/{TimelineRenderer-DN08D0SD.js → TimelineRenderer-BrwLhsSE.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tokens-C8BWWBUD.js → Tokens-C5kKpRWj.js} +1 -1
  82. package/src/assets/web-panel/assets/{Trigger-DhD-LUoe.js → Trigger-C4Zyg1jj.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trust-D0nFyc_Z.js → Trust-D0mrY3kY.js} +1 -1
  84. package/src/assets/web-panel/assets/{UkeySign-B59G57LP.js → UkeySign-Bq5NMLLb.js} +1 -1
  85. package/src/assets/web-panel/assets/{VideoEditing-BpYACxVC.js → VideoEditing-OObS6euz.js} +1 -1
  86. package/src/assets/web-panel/assets/{Wallet-DlZ3rKGD.js → Wallet-Die77ZAO.js} +3 -3
  87. package/src/assets/web-panel/assets/{WebAuthn-De4dNyig.js → WebAuthn-DFpqn0WO.js} +5 -5
  88. package/src/assets/web-panel/assets/{WorkflowEditor-C2Tewnhp.js → WorkflowEditor-BgKZiece.js} +1 -1
  89. package/src/assets/web-panel/assets/{chat-CDBn4JLE.js → chat-CbWtbRmr.js} +1 -1
  90. package/src/assets/web-panel/assets/{colors-BNawl0d_.js → colors-Zu_TgmpG.js} +1 -1
  91. package/src/assets/web-panel/assets/{compact-item-n65WDhze.js → compact-item-BqABAwA_.js} +1 -1
  92. package/src/assets/web-panel/assets/{createContext-DAKgOdIy.js → createContext-DR6r1ykz.js} +1 -1
  93. package/src/assets/web-panel/assets/devWarning-CmMzSuk5.js +1 -0
  94. package/src/assets/web-panel/assets/{hasIn-DhxFG46W.js → hasIn-BNnYbjOt.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-DeTlqus4.js → index--1t0mcMh.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-DV6iHrUO.js → index--vigBXnN.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-ByDs4cW4.js → index-55eCb40A.js} +3 -3
  98. package/src/assets/web-panel/assets/{index-KT94nMha.js → index-B9qA3lcI.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-PlOBwfR1.js → index-BCyrVLzm.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-BBFjMjmp.js → index-BQ1WFS4G.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-BDTrf8WH.js → index-BQHn6m4S.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-DFkamspD.js → index-BbHnxChr.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-DkW0HGr-.js → index-BtQDpNFU.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-Cv7LqHwv.js → index-BvQB-LK5.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-By-zGgUp.js → index-C912Wlyi.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-DLFRz0_7.js → index-CO9hQ7ri.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-DleKcclQ.js → index-CR4uB9Mt.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-BAogaHa9.js → index-CSNMSJAt.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-pzEYIGNA.js → index-CVgcq0cJ.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-Ds290C06.js → index-CYgH1j85.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-CW_OUdP8.js → index-CbJgVaoQ.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-BzONk4rW.js → index-CkBDWART.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-BRyzRluv.js → index-CmGll9ri.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-D34AXxN9.js → index-CpmSx_mp.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-0Y-ncsVy.js → index-Ct4xnx2r.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-CE6OcLof.js → index-CuYLjMxX.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-BZI8xwwt.js → index-D08ytPR_.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-5oJjovnA.js → index-DEdqCQKQ.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-BQFAuU1c.js → index-DaKziwj_.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-L1QnA0gW.js → index-DiaPl_6F.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-D_-6qQf0.js → index-DuCixW1o.js} +1 -1
  122. package/src/assets/web-panel/assets/index-Dw-oPGSM.js +1 -0
  123. package/src/assets/web-panel/assets/{index-CSOgoyqx.js → index-DxloCIDQ.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-BudfMkBy.js → index-GrGT2dft.js} +1 -1
  125. package/src/assets/web-panel/assets/index-OXemaG8f.js +1 -0
  126. package/src/assets/web-panel/assets/{index-BfXdTvku.js → index-P-0rrwu0.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-CZJrAg98.js → index-fvl4dSWm.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DCujBaFg.js → index-hWckjvz-.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-KZkt4e9N.js → index-hZ41pakD.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-hA9VUXGr.js → index-n62j7dTt.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-gG1WJBpa.js → index-rS1lj7A9.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-D6sWUgN6.js → index-uwS83tsv.js} +1 -1
  133. package/src/assets/web-panel/assets/{index--76HBS1k.js → index-ys7--3Ab.js} +1 -1
  134. package/src/assets/web-panel/assets/{initDefaultProps-B3bCivrt.js → initDefaultProps-BEtGYjIT.js} +1 -1
  135. package/src/assets/web-panel/assets/{motion-CF5pGsxz.js → motion-Cvnft4fL.js} +1 -1
  136. package/src/assets/web-panel/assets/{move-CaOFtFLU.js → move-CdxE_5Yl.js} +1 -1
  137. package/src/assets/web-panel/assets/{mtc-parser-Z4-50Y1c.js → mtc-parser-CS0l6IJn.js} +1 -1
  138. package/src/assets/web-panel/assets/{omit-AK4WqVTT.js → omit-Bnji87sb.js} +1 -1
  139. package/src/assets/web-panel/assets/{pickAttrs-Dbye0px4.js → pickAttrs-BYdnEgN3.js} +1 -1
  140. package/src/assets/web-panel/assets/{placementArrow-DCmr-Dks.js → placementArrow-DYYd524z.js} +1 -1
  141. package/src/assets/web-panel/assets/{responsiveObserve-CJ3Zm_-H.js → responsiveObserve-BbIJIkXp.js} +1 -1
  142. package/src/assets/web-panel/assets/{slide-BuSk5-ue.js → slide-BSvuvfUS.js} +1 -1
  143. package/src/assets/web-panel/assets/{statusUtils-8u_lKSFJ.js → statusUtils-DeLSt3js.js} +1 -1
  144. package/src/assets/web-panel/assets/{styleChecker-sy6_m42F.js → styleChecker-DpJTPfyI.js} +1 -1
  145. package/src/assets/web-panel/assets/{useFlexGapSupport-Di5EfYGo.js → useFlexGapSupport-S7WdFQMU.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFs-BTfX_Ri1.js → useFs-CkfCBy52.js} +1 -1
  147. package/src/assets/web-panel/assets/{usePersonalDataHub-kqurO26X.js → usePersonalDataHub-CA48p8Gt.js} +1 -1
  148. package/src/assets/web-panel/assets/{vnode-DRkH4mPV.js → vnode-C9D1tq_L.js} +1 -1
  149. package/src/assets/web-panel/assets/{zoom-ON_-UuD_.js → zoom-B0TG7YQI.js} +1 -1
  150. package/src/assets/web-panel/index.html +1 -1
  151. package/src/data/changelog.json +65 -0
  152. package/src/generated/cc-agent-protocol.schema.json +65 -1
  153. package/src/lib/background-agent-supervisor.js +10 -1
  154. package/src/lib/context-memory-kernel/jsonl-session-context-port.js +33 -0
  155. package/src/lib/context-memory-kernel/task-worklog-port.js +388 -0
  156. package/src/lib/evolution/evidence-backed-wiki-maintainer.js +119 -12
  157. package/src/lib/evolution/evolution-artifact-ports.js +3 -0
  158. package/src/lib/evolution/evolution-deployment-loader.js +23 -0
  159. package/src/lib/evolution/evolution-eval-gate.js +5 -0
  160. package/src/lib/evolution/evolution-ledger-ports.js +41 -17
  161. package/src/lib/evolution/pm-exploration-benchmark.js +253 -0
  162. package/src/lib/evolution/pm-exploration-ledger-adapter.js +672 -0
  163. package/src/lib/evolution/pm-exploration-rounds.js +832 -0
  164. package/src/lib/evolution/pm-result-grader.cjs +287 -0
  165. package/src/lib/public-ide-capability-manifest.js +1 -0
  166. package/src/lib/read-file-loop-guard.js +36 -5
  167. package/src/lib/secure-fs.js +51 -4
  168. package/src/lib/task-progress-tracker.js +29 -7
  169. package/src/lib/text-file-search.js +1 -0
  170. package/src/runtime/agent-core.js +48 -4
  171. package/src/runtime/headless-stream.js +121 -4
  172. package/src/assets/web-panel/assets/MarkdownRenderer-CO1qbiOY.js +0 -1
  173. package/src/assets/web-panel/assets/Projects-C1UHvBEK.js +0 -1
  174. package/src/assets/web-panel/assets/Tasks-P9MmRYt4.js +0 -1
  175. package/src/assets/web-panel/assets/devWarning-sBSSW127.js +0 -1
  176. package/src/assets/web-panel/assets/index-BIJTDSLY.js +0 -1
  177. package/src/assets/web-panel/assets/index-CrBauOkp.js +0 -1
@@ -57,6 +57,7 @@ import {
57
57
  export const EVOLUTION_LEDGER_PORTS_INVALID_CODE =
58
58
  "CC_EVOLUTION_LEDGER_PORTS_INVALID";
59
59
  const RELEASE_OPERATION_READERS = new WeakMap();
60
+ const DURABLE_ARTIFACT_RESOLVER_BINDINGS = new WeakMap();
60
61
 
61
62
  // This read-only recovery surface is minted only alongside real Ledger ports.
62
63
  // Matching JSON, inherited methods or a caller-supplied query function cannot
@@ -216,7 +217,6 @@ const LEDGER_ARTIFACT_REQUEST_KEYS = new Set([
216
217
  "ref",
217
218
  "tenantId",
218
219
  ]);
219
- const DURABLE_ARTIFACT_TYPE_SET = new Set(Object.values(ARTIFACT_TYPES));
220
220
  const QUERY_RESULT_KEYS = new Set([
221
221
  "anchor",
222
222
  "authenticated",
@@ -3859,24 +3859,24 @@ export function createEvolutionLedgerDurableArtifactResolver(options = {}) {
3859
3859
  DURABLE_RESOLVER_OPTION_KEYS,
3860
3860
  "durable ledger artifact resolver options",
3861
3861
  );
3862
+ const artifactPortsInput = ownData(
3863
+ options,
3864
+ "artifactPorts",
3865
+ "durable ledger artifact resolver options",
3866
+ EVOLUTION_LEDGER_PORTS_INVALID_CODE,
3867
+ );
3862
3868
  const artifactPorts = requireStableInstance(
3863
- ownData(
3864
- options,
3865
- "artifactPorts",
3866
- "durable ledger artifact resolver options",
3867
- EVOLUTION_LEDGER_PORTS_INVALID_CODE,
3868
- ),
3869
+ artifactPortsInput,
3869
3870
  EvolutionArtifactPorts.prototype,
3870
3871
  "EvolutionArtifactPorts",
3871
3872
  );
3872
- const authority = captureDurabilityAuthority(
3873
- ownData(
3874
- options,
3875
- "artifactDurabilityAuthority",
3876
- "durable ledger artifact resolver options",
3877
- EVOLUTION_LEDGER_PORTS_INVALID_CODE,
3878
- ),
3873
+ const durabilityAuthorityInput = ownData(
3874
+ options,
3875
+ "artifactDurabilityAuthority",
3876
+ "durable ledger artifact resolver options",
3877
+ EVOLUTION_LEDGER_PORTS_INVALID_CODE,
3879
3878
  );
3879
+ const authority = captureDurabilityAuthority(durabilityAuthorityInput);
3880
3880
  const artifactTenantId = identifier(
3881
3881
  ownData(
3882
3882
  options,
@@ -4005,8 +4005,7 @@ export function createEvolutionLedgerDurableArtifactResolver(options = {}) {
4005
4005
  record.schema === EVOLUTION_DURABLE_ARTIFACT_RECORD_SCHEMA &&
4006
4006
  record.tenantId === artifactTenantId &&
4007
4007
  record.purpose === purpose &&
4008
- record.retention === "ledger" &&
4009
- DURABLE_ARTIFACT_TYPE_SET.has(record.type);
4008
+ record.retention === "ledger";
4010
4009
  if (
4011
4010
  canonicalJson(record) !== json ||
4012
4011
  (durable !== null && durable.result.type !== record.type) ||
@@ -4044,7 +4043,32 @@ export function createEvolutionLedgerDurableArtifactResolver(options = {}) {
4044
4043
  schema: EVOLUTION_ARTIFACT_RESOLUTION_SCHEMA,
4045
4044
  });
4046
4045
  };
4047
- return Object.freeze(resolve);
4046
+ const resolver = Object.freeze(resolve);
4047
+ DURABLE_ARTIFACT_RESOLVER_BINDINGS.set(
4048
+ resolver,
4049
+ Object.freeze({
4050
+ artifactTenantId,
4051
+ authorityId: authority.id,
4052
+ purpose,
4053
+ matchesArtifactPorts: Object.freeze(
4054
+ (value) => value === artifactPortsInput,
4055
+ ),
4056
+ matchesDurabilityAuthority: Object.freeze(
4057
+ (value) => value === durabilityAuthorityInput,
4058
+ ),
4059
+ }),
4060
+ );
4061
+ return resolver;
4062
+ }
4063
+
4064
+ /** Read-only identity for a resolver constructed with the durability authority. */
4065
+ export function captureEvolutionLedgerDurableArtifactResolver(value) {
4066
+ const binding = DURABLE_ARTIFACT_RESOLVER_BINDINGS.get(value);
4067
+ if (!binding)
4068
+ throw new TypeError(
4069
+ "a branded durable EvolutionLedger artifact resolver is required",
4070
+ );
4071
+ return binding;
4048
4072
  }
4049
4073
 
4050
4074
  export function createEvolutionLedgerPorts(options = {}) {
@@ -0,0 +1,253 @@
1
+ /** PM dataset tooling and launch preflight. No runtime or promotion authority. */
2
+ import { createHash } from "node:crypto";
3
+ import { isProxy } from "node:util/types";
4
+ import {
5
+ buildEvolutionEvalSuite,
6
+ computeEvolutionEvalTrainingPartitionDigest,
7
+ verifyEvolutionEvalSuite,
8
+ } from "./evolution-eval-gate.js";
9
+ import { createPmExplorationPlan } from "./pm-exploration-rounds.js";
10
+ import grader from "./pm-result-grader.cjs";
11
+
12
+ const GROUPS = ["template", "project", "principal", "timeWindow"];
13
+ const PREFIXES = ["template", "project", "principal", "time-window"];
14
+ const GROUP_DIGEST = /^[a-f0-9]{64}$/u;
15
+ const REQUIRED_ENV = Object.freeze({
16
+ NODE_ENV: "production",
17
+ MOCK_LLM: "false",
18
+ MOCK_HARDWARE: "false",
19
+ SKIP_SLOW_INIT: "false",
20
+ CHAINLESSCHAIN_DISABLE_NATIVE_DB: "0",
21
+ CHAINLESSCHAIN_DISABLE_DB_PERSISTENCE: "0",
22
+ CC_IPC_ACTOR_GUARD: "enforce",
23
+ CC_IPC_RBAC_GUARD: "enforce",
24
+ });
25
+ const PM_GRADER = "pm-objective-outcome-v1";
26
+
27
+ function exact(value, keys, label) {
28
+ if (
29
+ !value ||
30
+ typeof value !== "object" ||
31
+ isProxy(value) ||
32
+ Object.getPrototypeOf(value) !== Object.prototype
33
+ )
34
+ throw new TypeError(`${label} must be plain data`);
35
+ const actual = Reflect.ownKeys(value);
36
+ if (
37
+ actual.length !== keys.length ||
38
+ actual.some((key) => {
39
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
40
+ return (
41
+ !keys.includes(key) ||
42
+ !descriptor.enumerable ||
43
+ !("value" in descriptor)
44
+ );
45
+ })
46
+ )
47
+ throw new TypeError(`${label} has unexpected or missing fields`);
48
+ }
49
+
50
+ function groupKey(kind, value) {
51
+ if (
52
+ typeof value !== "string" ||
53
+ value.trim() !== value ||
54
+ !value ||
55
+ value.length > 256
56
+ )
57
+ throw new TypeError(`invalid ${kind} group`);
58
+ return `${kind}-${createHash("sha256").update(value).digest("hex")}`;
59
+ }
60
+
61
+ /** Trusted dataset-author input; store the result outside the Actor workspace. */
62
+ export function buildPmExplorationSuite(input) {
63
+ exact(input, ["suiteId", "datasetVersion", "tasks"], "PM suite input");
64
+ if (
65
+ !Array.isArray(input.tasks) ||
66
+ input.tasks.length < 3 ||
67
+ input.tasks.length > 10_000
68
+ )
69
+ throw new TypeError(
70
+ "PM suite requires bounded training, validation and test tasks",
71
+ );
72
+ const tasks = input.tasks.map((task) => {
73
+ exact(task, ["id", "split", "groups", "prompt", "expected"], "PM task");
74
+ exact(task.groups, GROUPS, "PM task groups");
75
+ if (
76
+ typeof task.prompt !== "string" ||
77
+ !task.prompt.trim() ||
78
+ task.prompt.length > 16_384
79
+ )
80
+ throw new TypeError("PM task prompt is required and bounded");
81
+ const expected = grader.normalizePmExpectation(task.expected);
82
+ return {
83
+ id: task.id,
84
+ split: task.split,
85
+ groupKeys: GROUPS.map((key, i) =>
86
+ groupKey(PREFIXES[i], task.groups[key]),
87
+ ),
88
+ taskType: expected.kind === "file-export" ? "file" : "retrieval",
89
+ publicInput: { prompt: task.prompt },
90
+ graderId: PM_GRADER,
91
+ privateExpected: expected,
92
+ };
93
+ });
94
+ return verifyPmSuite(
95
+ buildEvolutionEvalSuite({
96
+ suiteId: input.suiteId,
97
+ datasetVersion: input.datasetVersion,
98
+ tasks,
99
+ }),
100
+ );
101
+ }
102
+
103
+ function verifyPmSuite(value) {
104
+ const suite = verifyEvolutionEvalSuite(value);
105
+ if (
106
+ !["training", "validation", "test"].every((split) =>
107
+ suite.tasks.some((task) => task.split === split),
108
+ )
109
+ )
110
+ throw new TypeError("PM suite must include all three partitions");
111
+ for (const task of suite.tasks) {
112
+ exact(task.publicInput, ["prompt"], "PM public input");
113
+ if (
114
+ typeof task.publicInput.prompt !== "string" ||
115
+ !task.publicInput.prompt.trim() ||
116
+ task.publicInput.prompt.length > 16_384
117
+ )
118
+ throw new TypeError("invalid PM public prompt");
119
+ const expected = grader.normalizePmExpectation(task.privateExpected);
120
+ if (
121
+ task.graderId !== PM_GRADER ||
122
+ task.taskType !==
123
+ (expected.kind === "file-export" ? "file" : "retrieval") ||
124
+ !task.groupKeys.every(
125
+ (key, index) =>
126
+ key.startsWith(`${PREFIXES[index]}-`) &&
127
+ GROUP_DIGEST.test(key.slice(PREFIXES[index].length + 1)),
128
+ )
129
+ )
130
+ throw new TypeError("suite is not a PM exploration dataset");
131
+ }
132
+ return suite;
133
+ }
134
+
135
+ /** Explicit projection: no validation/test tasks, expected answers or grader IDs. */
136
+ export function projectPmExplorationTrainingView(value) {
137
+ const suite = verifyPmSuite(value);
138
+ return Object.freeze({
139
+ suiteDigest: suite.suiteDigest,
140
+ trainingPartitionDigest: computeEvolutionEvalTrainingPartitionDigest(suite),
141
+ tasks: Object.freeze(
142
+ suite.tasks
143
+ .filter((task) => task.split === "training")
144
+ .map((task) =>
145
+ Object.freeze({ id: task.id, publicInput: task.publicInput }),
146
+ ),
147
+ ),
148
+ });
149
+ }
150
+
151
+ /** Structural check only; signed provenance is still verified by EvolutionEvalGate. */
152
+ export function assertPmExplorationTrainingSources(value, input) {
153
+ exact(
154
+ input,
155
+ ["trainingPartitionDigest", "sourceTaskIds"],
156
+ "PM memory sources",
157
+ );
158
+ const view = projectPmExplorationTrainingView(value);
159
+ if (input.trainingPartitionDigest !== view.trainingPartitionDigest)
160
+ throw new Error("PM training partition binding mismatch");
161
+ const ids = input.sourceTaskIds;
162
+ if (
163
+ !Array.isArray(ids) ||
164
+ ids.length === 0 ||
165
+ ids.length > view.tasks.length ||
166
+ new Set(ids).size !== ids.length
167
+ )
168
+ throw new TypeError("PM source task IDs must be nonempty and unique");
169
+ const allowed = new Set(view.tasks.map((task) => task.id));
170
+ if (ids.some((id) => !allowed.has(id)))
171
+ throw new Error("PM memory source is outside the training partition");
172
+ return Object.freeze({
173
+ trainingPartitionDigest: view.trainingPartitionDigest,
174
+ sourceTaskIds: Object.freeze([...ids]),
175
+ });
176
+ }
177
+
178
+ /** Builds the round protocol from the verified training-only projection. */
179
+ export function buildPmExplorationRoundPlan(value, input) {
180
+ exact(
181
+ input,
182
+ [
183
+ "planId",
184
+ "environmentDigest",
185
+ "initialMemoryDigest",
186
+ "broadBranchIds",
187
+ "maxRounds",
188
+ "maxTokens",
189
+ "maxToolCalls",
190
+ "maxWallClockMs",
191
+ "maxConsecutiveNoGain",
192
+ ],
193
+ "PM round plan input",
194
+ );
195
+ const training = projectPmExplorationTrainingView(value);
196
+ return createPmExplorationPlan({
197
+ ...input,
198
+ suiteDigest: training.suiteDigest,
199
+ trainingPartitionDigest: training.trainingPartitionDigest,
200
+ trainingTaskIds: training.tasks.map((task) => task.id),
201
+ });
202
+ }
203
+
204
+ export function buildPmExplorationLaunchProfile(budget) {
205
+ exact(budget, ["maxTokens", "maxToolCalls", "maxWallClockMs"], "PM budget");
206
+ for (const key of Object.keys(budget)) {
207
+ if (!Number.isSafeInteger(budget[key]) || budget[key] <= 0)
208
+ throw new TypeError(`${key} must be a positive safe integer`);
209
+ }
210
+ return Object.freeze({
211
+ schema: "chainlesschain.pm-exploration-launch-profile/v1",
212
+ environment: REQUIRED_ENV,
213
+ budget: Object.freeze({ ...budget }),
214
+ budgetEnforced: false,
215
+ runtimeVerified: false,
216
+ productionQualified: false,
217
+ });
218
+ }
219
+
220
+ /** No secrets or raw environment values are copied to diagnostics. */
221
+ export function inspectPmExplorationEnvironment(environment = process.env) {
222
+ if (!environment || typeof environment !== "object" || isProxy(environment))
223
+ throw new TypeError("environment must be a data object");
224
+ const issues = Object.entries(REQUIRED_ENV).flatMap(([key, required]) => {
225
+ const prop = Object.getOwnPropertyDescriptor(environment, key);
226
+ return prop && "value" in prop && prop.value === required
227
+ ? []
228
+ : [
229
+ Object.freeze({
230
+ code: "PM_RUNTIME_CONFIGURATION_MISMATCH",
231
+ variable: key,
232
+ required,
233
+ }),
234
+ ];
235
+ });
236
+ return Object.freeze({
237
+ schema: "chainlesschain.pm-exploration-preflight/v1",
238
+ status: issues.length ? "blocked" : "requires-host-verification",
239
+ configurationCompatible: issues.length === 0,
240
+ issues: Object.freeze(issues),
241
+ missingEvidence: Object.freeze([
242
+ "authenticated-model-ingress",
243
+ "unlocked-real-identity",
244
+ "enforced-tool-and-workspace-isolation",
245
+ "host-enforced-budget",
246
+ "independent-read-only-grader",
247
+ "reset-and-restart-persistence",
248
+ ]),
249
+ launchAllowed: false,
250
+ runtimeVerified: false,
251
+ productionQualified: false,
252
+ });
253
+ }