chainlesschain 0.166.91 → 0.166.92

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 (209) hide show
  1. package/README.md +17 -17
  2. package/package.json +3 -3
  3. package/src/assets/linux-subreaper/linux-arm64/manifest.json +1 -1
  4. package/src/assets/linux-subreaper/linux-x64/manifest.json +1 -1
  5. package/src/assets/web-panel/assets/{AIOps-DgV7xb8F.js → AIOps-C74YzqwJ.js} +1 -1
  6. package/src/assets/web-panel/assets/{ActionButton-CgANpkKu.js → ActionButton-TFef1hOE.js} +1 -1
  7. package/src/assets/web-panel/assets/{Analytics-DnvpX7RB.js → Analytics-CYsWpkkU.js} +3 -3
  8. package/src/assets/web-panel/assets/{AppLayout-C2bHccBM.js → AppLayout-CFf9kjwu.js} +3 -3
  9. package/src/assets/web-panel/assets/{Artifacts-BIhijC9g.js → Artifacts-TQqa94YO.js} +1 -1
  10. package/src/assets/web-panel/assets/{Audit-CKRjWGdp.js → Audit-B79ayqfS.js} +1 -1
  11. package/src/assets/web-panel/assets/{BackgroundAgents-CblYtgBE.js → BackgroundAgents-pjkHfLP9.js} +1 -1
  12. package/src/assets/web-panel/assets/{Backup-Cq35b78a.js → Backup-CE6A-t_r.js} +1 -1
  13. package/src/assets/web-panel/assets/{BaseInput-DcB7NoRz.js → BaseInput-CwcgWMBY.js} +1 -1
  14. package/src/assets/web-panel/assets/{Chat-tc3b-s7i.js → Chat-BIkDNesY.js} +6 -6
  15. package/src/assets/web-panel/assets/ChatBubbleRenderer-DgaokYts.js +1 -0
  16. package/src/assets/web-panel/assets/{Checkbox-BLD5bH5u.js → Checkbox-MbypIy5V.js} +1 -1
  17. package/src/assets/web-panel/assets/{Codegen-BLOsoazN.js → Codegen-DiFHWDnt.js} +1 -1
  18. package/src/assets/web-panel/assets/{Col-Bdr7JwIx.js → Col-BNMlYMso.js} +1 -1
  19. package/src/assets/web-panel/assets/{Community-C84BsWE0.js → Community-B3HVyHOX.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compact-Dzdwd04z.js → Compact-C7hlAubb.js} +1 -1
  21. package/src/assets/web-panel/assets/{Compliance-CCG-R0EV.js → Compliance-PaXZu6sE.js} +1 -1
  22. package/src/assets/web-panel/assets/{Cowork-BYj72SK0.js → Cowork-BGiojbm-.js} +3 -3
  23. package/src/assets/web-panel/assets/{Cron-B6iKAwOf.js → Cron-Bmr-1QAx.js} +2 -2
  24. package/src/assets/web-panel/assets/{Crosschain-BJ-oDC6u.js → Crosschain-BwUvWCVd.js} +1 -1
  25. package/src/assets/web-panel/assets/{DID-BnMckGLr.js → DID-k_4QZocW.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dashboard-Cyje-gCO.js → Dashboard-_ieRo2C5.js} +2 -2
  27. package/src/assets/web-panel/assets/{Dropdown-BpNlenjK.js → Dropdown-DYHh6T27.js} +1 -1
  28. package/src/assets/web-panel/assets/{EmailListRenderer-BhonO7Nv.js → EmailListRenderer-BNlQcWQX.js} +1 -1
  29. package/src/assets/web-panel/assets/{EvolutionSettings-DVoNU-Id.js → EvolutionSettings-DIkZ6U2D.js} +1 -1
  30. package/src/assets/web-panel/assets/{FamilyGuardDashboard-tdn-KC67.js → FamilyGuardDashboard-Dq7qSr0P.js} +1 -1
  31. package/src/assets/web-panel/assets/{Federation--EEVrHhz.js → Federation-C64e3Cbx.js} +1 -1
  32. package/src/assets/web-panel/assets/{FormItemContext-Cy8zr0-4.js → FormItemContext-D-GE2vUa.js} +1 -1
  33. package/src/assets/web-panel/assets/{GenericCardRenderer-BuUhpgFi.js → GenericCardRenderer-DO3B2gis.js} +1 -1
  34. package/src/assets/web-panel/assets/{Git-Ctd3E5Pe.js → Git-0ETirIQH.js} +2 -2
  35. package/src/assets/web-panel/assets/{Governance-Ce7dV6aU.js → Governance-C9fnRygX.js} +1 -1
  36. package/src/assets/web-panel/assets/{Inference-CD1vExIH.js → Inference-CLJ9RTsK.js} +1 -1
  37. package/src/assets/web-panel/assets/{KnowledgeGraph-Dn64OdQ7.js → KnowledgeGraph-D3C_GxrN.js} +1 -1
  38. package/src/assets/web-panel/assets/{Logs-PmElVRrT.js → Logs-C5ctGbkN.js} +2 -2
  39. package/src/assets/web-panel/assets/MarkdownRenderer-Ce-eWK3j.js +1 -0
  40. package/src/assets/web-panel/assets/{Marketplace-OW4jTXwx.js → Marketplace-GF_t6hJ_.js} +1 -1
  41. package/src/assets/web-panel/assets/{McpTools-BEq2Ib4x.js → McpTools-BGsGzgQs.js} +3 -3
  42. package/src/assets/web-panel/assets/{Memory-Can_P2oK.js → Memory-CcrY2A0j.js} +2 -2
  43. package/src/assets/web-panel/assets/{MobileBridge-DJ8R-dn3.js → MobileBridge-Bi4T0RlS.js} +1 -1
  44. package/src/assets/web-panel/assets/{MobileProjects-B7kV9GOt.js → MobileProjects-DvjEGyvf.js} +1 -1
  45. package/src/assets/web-panel/assets/{Mtc-BfxamolS.js → Mtc-DL77Vf-k.js} +2 -2
  46. package/src/assets/web-panel/assets/{MtcAudit-DHtuv7av.js → MtcAudit-CDy_Uswb.js} +2 -2
  47. package/src/assets/web-panel/assets/{Multisig-DLkLpvxc.js → Multisig-DL0BAO_c.js} +3 -3
  48. package/src/assets/web-panel/assets/{NLProgramming-u4XtJTIt.js → NLProgramming-B-woh5IR.js} +1 -1
  49. package/src/assets/web-panel/assets/{Notes-BwuuPJLS.js → Notes-CEFVCxk7.js} +3 -3
  50. package/src/assets/web-panel/assets/{NotificationSettings-HEeu-E9v.js → NotificationSettings-BqPPMuAP.js} +1 -1
  51. package/src/assets/web-panel/assets/{OrderTableRenderer-BtvN-Qwh.js → OrderTableRenderer-GUKQ1xwp.js} +1 -1
  52. package/src/assets/web-panel/assets/{Organization-Yh-czs3b.js → Organization-B1gX8jlr.js} +4 -4
  53. package/src/assets/web-panel/assets/{Overflow-DmE8mYVM.js → Overflow-CeMxuUZy.js} +1 -1
  54. package/src/assets/web-panel/assets/{P2P-CWVck8WN.js → P2P-B5aIRWwJ.js} +2 -2
  55. package/src/assets/web-panel/assets/{PdhVaultBrowser-DgFqekod.js → PdhVaultBrowser-6rYgejd4.js} +3 -3
  56. package/src/assets/web-panel/assets/{Permissions-BtJBVOHV.js → Permissions-CqCp2SIl.js} +3 -3
  57. package/src/assets/web-panel/assets/{PersonalDataHub-6VBObXzd.js → PersonalDataHub-BsA7DJWW.js} +3 -3
  58. package/src/assets/web-panel/assets/{Pipeline-D222FmqY.js → Pipeline-CiW6HeZh.js} +1 -1
  59. package/src/assets/web-panel/assets/{Privacy-Bi9FMikp.js → Privacy-DckUOLYq.js} +1 -1
  60. package/src/assets/web-panel/assets/{ProjectInit-Bo52H47H.js → ProjectInit-CZppOOYR.js} +2 -2
  61. package/src/assets/web-panel/assets/{ProjectSettings-BPkesfOc.js → ProjectSettings-B9QPzhDU.js} +2 -2
  62. package/src/assets/web-panel/assets/{Projects-GynohSFX.js → Projects-BErjjGha.js} +1 -1
  63. package/src/assets/web-panel/assets/{Providers-DVdMg04n.js → Providers-DehU6Qiz.js} +1 -1
  64. package/src/assets/web-panel/assets/{QrScannerModal-DqJCb595.js → QrScannerModal-E1SUvv1m.js} +1 -1
  65. package/src/assets/web-panel/assets/{QuickAsk-J7loQbXi.js → QuickAsk-COWFxyH3.js} +1 -1
  66. package/src/assets/web-panel/assets/{Recommend-BI5aURVc.js → Recommend-D26pWKxX.js} +1 -1
  67. package/src/assets/web-panel/assets/{RemoteSession-BN2sqGvz.js → RemoteSession-DCOIaId3.js} +2 -2
  68. package/src/assets/web-panel/assets/{Reputation-BGOND-Fi.js → Reputation-DT_AHGAR.js} +1 -1
  69. package/src/assets/web-panel/assets/{Row-77dfwaUk.js → Row-B50S-1nl.js} +1 -1
  70. package/src/assets/web-panel/assets/{RssFeed-FtBAxS3g.js → RssFeed-BaBnHg3Q.js} +2 -2
  71. package/src/assets/web-panel/assets/{Search-BaYVLFb7.js → Search-BVdnLuuS.js} +1 -1
  72. package/src/assets/web-panel/assets/{Security-LE3Vv6ab.js → Security-BnacH74J.js} +3 -3
  73. package/src/assets/web-panel/assets/{Services-C5pP-Whz.js → Services-CxM08Zch.js} +2 -2
  74. package/src/assets/web-panel/assets/{Skeleton-CLqKUVsF.js → Skeleton-DE7CIc1N.js} +1 -1
  75. package/src/assets/web-panel/assets/{Skills-BPjN0SX5.js → Skills-CGI0SJmf.js} +1 -1
  76. package/src/assets/web-panel/assets/{Sla-14jD70kg.js → Sla-DpEzPcqc.js} +1 -1
  77. package/src/assets/web-panel/assets/{SpeechSettings-Dr9ij42W.js → SpeechSettings-CTmnmMHn.js} +1 -1
  78. package/src/assets/web-panel/assets/{SyncSettings-BzLHP7B8.js → SyncSettings-Dxgrd9hd.js} +2 -2
  79. package/src/assets/web-panel/assets/{Tasks-YqV9b0rV.js → Tasks-CW4slS0A.js} +1 -1
  80. package/src/assets/web-panel/assets/{Templates-CxxAE4PK.js → Templates-DxvGWDgB.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tenant-CRb3PcKJ.js → Tenant-_Q0o2tNK.js} +1 -1
  82. package/src/assets/web-panel/assets/{Terminal-CTzPpBaP.js → Terminal-BTZn8pow.js} +2 -2
  83. package/src/assets/web-panel/assets/{TimelineRenderer-DjFUj_hy.js → TimelineRenderer-CauL0KFe.js} +1 -1
  84. package/src/assets/web-panel/assets/{Tokens-Bbb8tPvx.js → Tokens-CDoM2qeT.js} +1 -1
  85. package/src/assets/web-panel/assets/{Trigger-CSeWGM0W.js → Trigger-B-QYGEU7.js} +1 -1
  86. package/src/assets/web-panel/assets/{Trust-JgESMBo3.js → Trust-BD6XJHT-.js} +1 -1
  87. package/src/assets/web-panel/assets/{UkeySign-CiObLk0T.js → UkeySign-x4TFwCy0.js} +1 -1
  88. package/src/assets/web-panel/assets/{VideoEditing-CFEZaQ2x.js → VideoEditing-t3imBK_0.js} +1 -1
  89. package/src/assets/web-panel/assets/{Wallet-DR8ZGDNn.js → Wallet-BCfkWwNC.js} +4 -4
  90. package/src/assets/web-panel/assets/{WebAuthn-DxZukvu7.js → WebAuthn-WH314Mdm.js} +4 -4
  91. package/src/assets/web-panel/assets/{WorkflowEditor-CKgSZQwn.js → WorkflowEditor-jUlcjrUg.js} +1 -1
  92. package/src/assets/web-panel/assets/{chat-CTxEQE66.js → chat-Dg3VASTL.js} +1 -1
  93. package/src/assets/web-panel/assets/{colors-CAjKMUu3.js → colors-BNvmBRKE.js} +1 -1
  94. package/src/assets/web-panel/assets/{compact-item-BXuz49at.js → compact-item-BGOfoqf4.js} +1 -1
  95. package/src/assets/web-panel/assets/{createContext-CFN_Hwr9.js → createContext-BNQeqKAs.js} +1 -1
  96. package/src/assets/web-panel/assets/devWarning-B7_ypN1G.js +1 -0
  97. package/src/assets/web-panel/assets/{hasIn-BwoSBSfP.js → hasIn-Bg3AjCrq.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-u9_DM3ZC.js → index--I3UF5t1.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-IahILygB.js → index-2D04Zltx.js} +3 -3
  100. package/src/assets/web-panel/assets/{index-Bqv_Cray.js → index-60AnjUTX.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-CSmFby3Q.js → index-7QJUWemf.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-DTX9CJPx.js → index-B--0QM0S.js} +1 -1
  103. package/src/assets/web-panel/assets/index-B-jSKJK6.js +1 -0
  104. package/src/assets/web-panel/assets/{index-C8er4W9u.js → index-B0mgngoB.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-DViK2bkv.js → index-BBCMulQ-.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-DmkbAADP.js → index-BSNhW95G.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-B2tEnBPx.js → index-B_JmInC0.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-_ZtCyUdz.js → index-BaPvEvB4.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-CN53dE_u.js → index-Bkz1tgFR.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-Bj4hIiLW.js → index-BmTacaQV.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-Tz5dheZa.js → index-CCFZN66A.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-Dv7V2kg6.js → index-COol3xfA.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-Bu2P6u8m.js → index-CY8cRKHR.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-Bw9s2d3c.js → index-Cbp-wp-U.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-B9yR7zqr.js → index-Co_LnCWD.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-BK4ftQ4d.js → index-Cx2EXRfr.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-DxunxaTw.js → index-D-mSvCQK.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-B7kp-zRE.js → index-D072oLjp.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-CB3kVd9c.js → index-D6UqK83L.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-CF9lWi1o.js → index-DF_FKSVH.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-IY9bd5az.js → index-DLwEXRrb.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-F2E5RCwz.js → index-DO0VlNtc.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-B2o_BBjg.js → index-DS04wRll.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-DY-gBSm8.js → index-DYn5DnDk.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-B0QbLlWn.js → index-D_O2ZjPk.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-DjF5BOZx.js → index-DcCnO0RU.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-CehdwJ_Q.js → index-Dkp-okWa.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-BmXpdcHI.js → index-OUFoxUgH.js} +1 -1
  129. package/src/assets/web-panel/assets/index-P4FXZJqI.js +1 -0
  130. package/src/assets/web-panel/assets/{index-t2Ch_JKn.js → index-Wo0f2iqb.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-T3MTE6jB.js → index-ZD5Kd8tx.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-Cp5y7lX_.js → index-fOwii3LP.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-Cgk0YEiq.js → index-hG7jXGEW.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-DpdDnZX_.js → index-pVdQieac.js} +1 -1
  135. package/src/assets/web-panel/assets/{index-o9DpkZKf.js → index-uH2LnAs_.js} +1 -1
  136. package/src/assets/web-panel/assets/{index-BmQITjMU.js → index-xzaUx19r.js} +1 -1
  137. package/src/assets/web-panel/assets/{initDefaultProps-BoiGJDoO.js → initDefaultProps-B8PN9AxJ.js} +1 -1
  138. package/src/assets/web-panel/assets/{motion-5eL4E0pA.js → motion-BHivfw5Q.js} +1 -1
  139. package/src/assets/web-panel/assets/{move-DjggDi_1.js → move-B0QU5nDd.js} +1 -1
  140. package/src/assets/web-panel/assets/{mtc-parser-Ce8Vo2T3.js → mtc-parser-DRwRM3PE.js} +1 -1
  141. package/src/assets/web-panel/assets/{omit-D1yOBaO2.js → omit-SHt2rV2p.js} +1 -1
  142. package/src/assets/web-panel/assets/{pickAttrs-8NLceQe8.js → pickAttrs-CcmDlEb2.js} +1 -1
  143. package/src/assets/web-panel/assets/{placementArrow-CsIdBRmQ.js → placementArrow-DYatmXDS.js} +1 -1
  144. package/src/assets/web-panel/assets/{responsiveObserve-GM5NE8En.js → responsiveObserve-B7qrsXq5.js} +1 -1
  145. package/src/assets/web-panel/assets/{slide-44yj3u49.js → slide-BRGhlOWd.js} +1 -1
  146. package/src/assets/web-panel/assets/{statusUtils-B8tqtWcX.js → statusUtils-CT-7NXsQ.js} +1 -1
  147. package/src/assets/web-panel/assets/{styleChecker-NhDPBbyB.js → styleChecker-rZdw_Yyp.js} +1 -1
  148. package/src/assets/web-panel/assets/{useFlexGapSupport-C8Qz1GtN.js → useFlexGapSupport-D8YNIP4P.js} +1 -1
  149. package/src/assets/web-panel/assets/{useFs-ClUv4kih.js → useFs-B8pt0Gu-.js} +1 -1
  150. package/src/assets/web-panel/assets/{usePersonalDataHub-BwkOVEh6.js → usePersonalDataHub-VMmYM1tt.js} +1 -1
  151. package/src/assets/web-panel/assets/{vnode--gMF33R0.js → vnode-UNDuoPoq.js} +1 -1
  152. package/src/assets/web-panel/assets/{zoom-DXg3TqOP.js → zoom-dN-u667S.js} +1 -1
  153. package/src/assets/web-panel/index.html +1 -1
  154. package/src/data/changelog.json +39 -0
  155. package/src/lib/evolution/evolution-artifact-ports.js +26 -0
  156. package/src/lib/evolution/evolution-eval-cohort-enrollment.js +713 -47
  157. package/src/lib/evolution/evolution-eval-gate.js +146 -0
  158. package/src/lib/evolution/evolution-eval-launch-admission.js +168 -90
  159. package/src/lib/evolution/evolution-eval-ledger-capture.js +50 -0
  160. package/src/lib/evolution/evolution-eval-readonly-audit.js +106 -0
  161. package/src/lib/evolution/evolution-ledger-file-backend.js +20 -0
  162. package/src/lib/evolution/evolution-ledger-ports.js +59 -27
  163. package/src/lib/evolution/evolution-ledger-v2-journal.js +55 -18
  164. package/src/lib/evolution/evolution-workbench-file-resources.js +19 -1
  165. package/src/lib/evolution/rrsi-cohort-registration.js +275 -0
  166. package/src/lib/evolution/rrsi-contracts.js +742 -0
  167. package/src/lib/evolution/rrsi-data.js +196 -0
  168. package/src/lib/evolution/rrsi-evaluation-adapter.js +275 -0
  169. package/src/lib/evolution/rrsi-evaluation-variants.js +267 -0
  170. package/src/lib/evolution/rrsi-group-statistics.js +553 -0
  171. package/src/lib/evolution/rrsi-history-ledger-adapter.js +3261 -0
  172. package/src/lib/evolution/rrsi-native-batch-evidence.js +520 -0
  173. package/src/lib/evolution/rrsi-native-eval-row-collector.js +538 -0
  174. package/src/lib/evolution/rrsi-native-evaluation-batch.js +547 -0
  175. package/src/lib/evolution/rrsi-native-evaluation-plan.js +431 -0
  176. package/src/lib/evolution/rrsi-native-group-statistics-plan.js +121 -0
  177. package/src/lib/evolution/rrsi-native-group-statistics.js +482 -0
  178. package/src/lib/evolution/rrsi-native-quality-receipt-contracts.js +321 -0
  179. package/src/lib/evolution/rrsi-native-quality-receipt.js +256 -0
  180. package/src/lib/evolution/rrsi-native-statistics-protocol.js +330 -0
  181. package/src/lib/evolution/rrsi-parent-binding.js +290 -0
  182. package/src/lib/evolution/rrsi-pm-execution-bridge.js +500 -0
  183. package/src/lib/evolution/rrsi-pm-training-mapping.js +134 -0
  184. package/src/lib/evolution/rrsi-preparation-contracts.js +213 -0
  185. package/src/lib/evolution/rrsi-registry-history-binding.js +193 -0
  186. package/src/lib/evolution/rrsi-registry-store-policy.js +1191 -0
  187. package/src/lib/evolution/rrsi-runtime-composition.js +79 -0
  188. package/src/lib/evolution/rrsi-selector.js +434 -0
  189. package/src/lib/evolution/rrsi-statistics-simulation.js +354 -0
  190. package/src/lib/evolution/skill-candidate-registry.js +216 -29
  191. package/src/lib/evolution/skill-registry-maintenance.js +80 -0
  192. package/src/lib/evolution/skill-registry-writer-control.js +138 -0
  193. package/src/lib/evolution/skill-release-registry.js +399 -169
  194. package/src/lib/formal-quality-eval-runtime.js +2 -14
  195. package/src/lib/goal-store.js +225 -16
  196. package/src/lib/record-replay/skill-recorder.js +38 -3
  197. package/src/lib/scheduler-kernel/authority-resolver.js +12 -163
  198. package/src/lib/scheduler-kernel/contract.js +27 -414
  199. package/src/lib/scheduler-kernel/runtime.js +21 -823
  200. package/src/lib/scheduler-kernel/service.js +11 -328
  201. package/src/lib/scheduler-kernel/source-locator-path.js +7 -142
  202. package/src/lib/scheduler-kernel/store.js +67 -5931
  203. package/src/lib/secure-fs.js +16 -1314
  204. package/src/lib/with-file-lock.js +122 -20
  205. package/src/assets/web-panel/assets/ChatBubbleRenderer-fcc_Tvqu.js +0 -1
  206. package/src/assets/web-panel/assets/MarkdownRenderer-BFiVKf5t.js +0 -1
  207. package/src/assets/web-panel/assets/devWarning-CfB8DxT2.js +0 -1
  208. package/src/assets/web-panel/assets/index-CCsRfd0k.js +0 -1
  209. package/src/assets/web-panel/assets/index-CsmiZIQ4.js +0 -1
@@ -1,414 +1,27 @@
1
- import { createHash } from "node:crypto";
2
- import { Buffer } from "node:buffer";
3
-
4
- export const SCHEDULER_SCHEMA_VERSION = 1;
5
- export const AUTHORITY_ENVELOPE_VERSION = 1;
6
- export const RUNTIME_CONTROL_SCHEMA_VERSION = 1;
7
-
8
- export const RUNTIME_PAUSE_RESUME = Object.freeze({
9
- NONE: "none",
10
- CHECKPOINT_V1: "checkpoint_v1",
11
- });
12
-
13
- export const RUNTIME_CONTROL_SAFE_POINTS = Object.freeze({
14
- BEFORE_EXECUTE: "before_execute",
15
- ADAPTER_CHECKPOINT: "adapter_checkpoint",
16
- });
17
-
18
- const RUNTIME_CONTROL_FIELDS = new Set([
19
- "schemaVersion",
20
- "pauseResume",
21
- "safePoints",
22
- ]);
23
- const RUNTIME_CONTROL_SAFE_POINT_SET = new Set(
24
- Object.values(RUNTIME_CONTROL_SAFE_POINTS),
25
- );
26
-
27
- export const OCCURRENCE_STATUS = Object.freeze({
28
- QUEUED: "queued",
29
- RUNNING: "running",
30
- RETRY_WAIT: "retry_wait",
31
- SUCCEEDED: "succeeded",
32
- DEAD_LETTER: "dead_letter",
33
- });
34
-
35
- export const DEFAULT_MAX_ATTEMPTS = 3;
36
- export const MAX_JOB_ATTEMPTS = 32;
37
- export const DEFAULT_HISTORY_LIMIT = 50;
38
- export const MAX_HISTORY_LIMIT = 200;
39
- export const MAX_JSON_BYTES = 1024 * 1024;
40
-
41
- const AUTHORITY_FIELDS = new Set([
42
- "schemaVersion",
43
- "principal",
44
- "tenantId",
45
- "workspaceId",
46
- "requestedCapabilities",
47
- "authorizationRefs",
48
- ]);
49
- const PRINCIPAL_FIELDS = new Set(["type", "id"]);
50
- const AUTHORIZATION_REF_FIELDS = new Set([
51
- "decisionId",
52
- "policyRevision",
53
- "schedulerPolicyRevision",
54
- "grantIds",
55
- "approvalIds",
56
- "delegationIds",
57
- ]);
58
-
59
- export class SchedulerKernelError extends Error {
60
- constructor(code, message, details = undefined, options = undefined) {
61
- super(message, options);
62
- this.name = "SchedulerKernelError";
63
- this.code = code;
64
- if (details !== undefined) this.details = details;
65
- }
66
- }
67
-
68
- export function invalidArgument(message, details = undefined) {
69
- return new SchedulerKernelError(
70
- "SCHEDULER_INVALID_ARGUMENT",
71
- message,
72
- details,
73
- );
74
- }
75
-
76
- function assertPlainObject(value, field) {
77
- if (value === null || typeof value !== "object" || Array.isArray(value)) {
78
- throw invalidArgument(`${field} must be an object`);
79
- }
80
- const prototype = Object.getPrototypeOf(value);
81
- if (prototype !== Object.prototype && prototype !== null) {
82
- throw invalidArgument(`${field} must be a plain object`);
83
- }
84
- return value;
85
- }
86
-
87
- function assertKnownFields(value, fields, field) {
88
- const unknown = Object.keys(value).filter((key) => !fields.has(key));
89
- if (unknown.length > 0) {
90
- throw invalidArgument(`${field} contains unknown fields`, {
91
- fields: unknown.sort(),
92
- });
93
- }
94
- }
95
-
96
- export function normalizeIdentifier(value, field, { maxLength = 256 } = {}) {
97
- if (typeof value !== "string") {
98
- throw invalidArgument(`${field} must be a string`);
99
- }
100
- const normalized = value.trim();
101
- const hasControlCharacter = [...normalized].some((character) => {
102
- const codePoint = character.codePointAt(0);
103
- return codePoint <= 31 || codePoint === 127;
104
- });
105
- if (
106
- normalized.length === 0 ||
107
- normalized.length > maxLength ||
108
- hasControlCharacter
109
- ) {
110
- throw invalidArgument(`${field} is not a valid identifier`);
111
- }
112
- return normalized;
113
- }
114
-
115
- function normalizeOptionalIdentifier(value, field) {
116
- if (value === undefined || value === null) return null;
117
- return normalizeIdentifier(value, field);
118
- }
119
-
120
- function normalizeIdentifierList(value, field) {
121
- if (value === undefined) return [];
122
- if (!Array.isArray(value)) {
123
- throw invalidArgument(`${field} must be an array`);
124
- }
125
- if (value.length > 256) {
126
- throw invalidArgument(`${field} exceeds 256 entries`);
127
- }
128
- return [
129
- ...new Set(
130
- value.map((entry, index) =>
131
- normalizeIdentifier(entry, `${field}[${index}]`),
132
- ),
133
- ),
134
- ].sort();
135
- }
136
-
137
- /**
138
- * Normalize the authority evidence carried by a job and every occurrence.
139
- *
140
- * This envelope is deliberately descriptive. The scheduler stores the actor,
141
- * requested capabilities and immutable decision/grant references. The runtime
142
- * still has to resolve and enforce those references before doing work.
143
- */
144
- export function normalizeAuthorityEnvelope(input) {
145
- const authority = assertPlainObject(input, "authority");
146
- assertKnownFields(authority, AUTHORITY_FIELDS, "authority");
147
- if (
148
- authority.schemaVersion !== undefined &&
149
- authority.schemaVersion !== AUTHORITY_ENVELOPE_VERSION
150
- ) {
151
- throw invalidArgument(
152
- `authority.schemaVersion must be ${AUTHORITY_ENVELOPE_VERSION}`,
153
- );
154
- }
155
-
156
- const principal = assertPlainObject(
157
- authority.principal,
158
- "authority.principal",
159
- );
160
- assertKnownFields(principal, PRINCIPAL_FIELDS, "authority.principal");
161
- const refs = assertPlainObject(
162
- authority.authorizationRefs ?? {},
163
- "authority.authorizationRefs",
164
- );
165
- assertKnownFields(
166
- refs,
167
- AUTHORIZATION_REF_FIELDS,
168
- "authority.authorizationRefs",
169
- );
170
-
171
- return {
172
- schemaVersion: AUTHORITY_ENVELOPE_VERSION,
173
- principal: {
174
- type: normalizeIdentifier(principal.type, "authority.principal.type", {
175
- maxLength: 64,
176
- }),
177
- id: normalizeIdentifier(principal.id, "authority.principal.id"),
178
- },
179
- tenantId: normalizeOptionalIdentifier(
180
- authority.tenantId,
181
- "authority.tenantId",
182
- ),
183
- workspaceId: normalizeOptionalIdentifier(
184
- authority.workspaceId,
185
- "authority.workspaceId",
186
- ),
187
- requestedCapabilities: normalizeIdentifierList(
188
- authority.requestedCapabilities,
189
- "authority.requestedCapabilities",
190
- ),
191
- authorizationRefs: {
192
- decisionId: normalizeOptionalIdentifier(
193
- refs.decisionId,
194
- "authority.authorizationRefs.decisionId",
195
- ),
196
- policyRevision: normalizeOptionalIdentifier(
197
- refs.policyRevision,
198
- "authority.authorizationRefs.policyRevision",
199
- ),
200
- ...(refs.schedulerPolicyRevision === undefined
201
- ? {}
202
- : {
203
- schedulerPolicyRevision: normalizeOptionalIdentifier(
204
- refs.schedulerPolicyRevision,
205
- "authority.authorizationRefs.schedulerPolicyRevision",
206
- ),
207
- }),
208
- grantIds: normalizeIdentifierList(
209
- refs.grantIds,
210
- "authority.authorizationRefs.grantIds",
211
- ),
212
- approvalIds: normalizeIdentifierList(
213
- refs.approvalIds,
214
- "authority.authorizationRefs.approvalIds",
215
- ),
216
- delegationIds: normalizeIdentifierList(
217
- refs.delegationIds,
218
- "authority.authorizationRefs.delegationIds",
219
- ),
220
- },
221
- };
222
- }
223
-
224
- function normalizeJsonValue(value, field, state, depth) {
225
- if (depth > 64) throw invalidArgument(`${field} exceeds maximum JSON depth`);
226
- if (
227
- value === null ||
228
- typeof value === "string" ||
229
- typeof value === "boolean"
230
- ) {
231
- return value;
232
- }
233
- if (typeof value === "number") {
234
- if (!Number.isFinite(value)) {
235
- throw invalidArgument(`${field} contains a non-finite number`);
236
- }
237
- return Object.is(value, -0) ? 0 : value;
238
- }
239
- if (typeof value !== "object") {
240
- throw invalidArgument(`${field} contains a non-JSON value`);
241
- }
242
- if (state.seen.has(value)) {
243
- throw invalidArgument(`${field} contains a cycle`);
244
- }
245
- state.seen.add(value);
246
- try {
247
- if (Array.isArray(value)) {
248
- return value.map((entry, index) =>
249
- normalizeJsonValue(entry, `${field}[${index}]`, state, depth + 1),
250
- );
251
- }
252
- assertPlainObject(value, field);
253
- // A JSON object may legitimately contain an own `__proto__` key. A normal
254
- // object assignment would interpret that key as a prototype mutation and
255
- // silently drop it from the canonical bytes.
256
- const normalized = Object.create(null);
257
- for (const key of Object.keys(value).sort()) {
258
- normalized[key] = normalizeJsonValue(
259
- value[key],
260
- `${field}.${key}`,
261
- state,
262
- depth + 1,
263
- );
264
- }
265
- return normalized;
266
- } finally {
267
- state.seen.delete(value);
268
- }
269
- }
270
-
271
- export function normalizeJson(value, field = "value") {
272
- const normalized = normalizeJsonValue(value, field, { seen: new Set() }, 0);
273
- const encoded = JSON.stringify(normalized);
274
- if (Buffer.byteLength(encoded, "utf8") > MAX_JSON_BYTES) {
275
- throw invalidArgument(`${field} exceeds ${MAX_JSON_BYTES} encoded bytes`);
276
- }
277
- return normalized;
278
- }
279
-
280
- export function canonicalJson(value, field = "value") {
281
- return JSON.stringify(normalizeJson(value, field));
282
- }
283
-
284
- export function normalizeEpochMs(value, field) {
285
- if (!Number.isSafeInteger(value) || value < 0) {
286
- throw invalidArgument(
287
- `${field} must be a non-negative safe-integer epoch ms`,
288
- );
289
- }
290
- return value;
291
- }
292
-
293
- export function normalizeMaxAttempts(value = DEFAULT_MAX_ATTEMPTS) {
294
- if (!Number.isSafeInteger(value) || value < 1 || value > MAX_JOB_ATTEMPTS) {
295
- throw invalidArgument(
296
- `maxAttempts must be an integer between 1 and ${MAX_JOB_ATTEMPTS}`,
297
- );
298
- }
299
- return value;
300
- }
301
-
302
- export function normalizeHistoryLimit(value = DEFAULT_HISTORY_LIMIT) {
303
- if (!Number.isSafeInteger(value) || value < 1) {
304
- throw invalidArgument("history limit must be a positive integer");
305
- }
306
- return Math.min(value, MAX_HISTORY_LIMIT);
307
- }
308
-
309
- /**
310
- * Normalize the durable runtime-control capability advertised by an adapter.
311
- *
312
- * Missing declarations are deliberately treated as unsupported. A checkpoint
313
- * declaration is evidence, not a hint: only the two kernel-owned safe points
314
- * are accepted and every persisted pause request is bound to these canonical
315
- * bytes.
316
- */
317
- export function normalizeRuntimeControlCapability(input) {
318
- if (input === undefined || input === null) {
319
- return Object.freeze({
320
- schemaVersion: RUNTIME_CONTROL_SCHEMA_VERSION,
321
- pauseResume: RUNTIME_PAUSE_RESUME.NONE,
322
- safePoints: Object.freeze([]),
323
- });
324
- }
325
- const capability = assertPlainObject(input, "runtimeControl");
326
- assertKnownFields(capability, RUNTIME_CONTROL_FIELDS, "runtimeControl");
327
- if (
328
- capability.schemaVersion !== undefined &&
329
- capability.schemaVersion !== RUNTIME_CONTROL_SCHEMA_VERSION
330
- ) {
331
- throw invalidArgument(
332
- `runtimeControl.schemaVersion must be ${RUNTIME_CONTROL_SCHEMA_VERSION}`,
333
- );
334
- }
335
- const pauseResume = capability.pauseResume ?? RUNTIME_PAUSE_RESUME.NONE;
336
- if (!Object.values(RUNTIME_PAUSE_RESUME).includes(pauseResume)) {
337
- throw invalidArgument(
338
- "runtimeControl.pauseResume must be none or checkpoint_v1",
339
- );
340
- }
341
- const inputSafePoints = capability.safePoints ?? [];
342
- if (!Array.isArray(inputSafePoints)) {
343
- throw invalidArgument("runtimeControl.safePoints must be an array");
344
- }
345
- const safePoints = [
346
- ...new Set(
347
- inputSafePoints.map((safePoint, index) =>
348
- normalizeIdentifier(safePoint, `runtimeControl.safePoints[${index}]`, {
349
- maxLength: 64,
350
- }),
351
- ),
352
- ),
353
- ].sort();
354
- const unknownSafePoints = safePoints.filter(
355
- (safePoint) => !RUNTIME_CONTROL_SAFE_POINT_SET.has(safePoint),
356
- );
357
- if (unknownSafePoints.length > 0) {
358
- throw invalidArgument("runtimeControl.safePoints contains unknown values", {
359
- safePoints: unknownSafePoints,
360
- });
361
- }
362
- if (
363
- (pauseResume === RUNTIME_PAUSE_RESUME.NONE && safePoints.length !== 0) ||
364
- (pauseResume === RUNTIME_PAUSE_RESUME.CHECKPOINT_V1 &&
365
- safePoints.length === 0)
366
- ) {
367
- throw invalidArgument(
368
- pauseResume === RUNTIME_PAUSE_RESUME.NONE
369
- ? "runtimeControl.safePoints must be empty when pauseResume is none"
370
- : "runtimeControl.safePoints must declare at least one checkpoint",
371
- );
372
- }
373
- return Object.freeze({
374
- schemaVersion: RUNTIME_CONTROL_SCHEMA_VERSION,
375
- pauseResume,
376
- safePoints: Object.freeze(safePoints),
377
- });
378
- }
379
-
380
- /**
381
- * Stable identity for one logical firing. All adapters must supply the same
382
- * triggerKey for the same logical schedule. Including jobRevision prevents an
383
- * edited job from silently inheriting the old definition's idempotency slot.
384
- */
385
- export function deriveOccurrenceIdentity({
386
- jobId,
387
- jobRevision,
388
- scheduledFor,
389
- triggerKey,
390
- }) {
391
- const material = canonicalJson(
392
- {
393
- contractVersion: SCHEDULER_SCHEMA_VERSION,
394
- jobId: normalizeIdentifier(jobId, "jobId"),
395
- jobRevision:
396
- Number.isSafeInteger(jobRevision) && jobRevision >= 1
397
- ? jobRevision
398
- : (() => {
399
- throw invalidArgument("jobRevision must be a positive integer");
400
- })(),
401
- scheduledFor: normalizeEpochMs(scheduledFor, "scheduledFor"),
402
- triggerKey: normalizeIdentifier(triggerKey, "triggerKey"),
403
- },
404
- "occurrenceIdentity",
405
- );
406
- const digest = createHash("sha256")
407
- .update("chainlesschain.scheduler.occurrence.v1\0", "utf8")
408
- .update(material, "utf8")
409
- .digest("hex");
410
- return Object.freeze({
411
- occurrenceId: `occ_${digest}`,
412
- idempotencyKey: `scheduler:v1:${digest}`,
413
- });
414
- }
1
+ // Compatibility entry: both hosts share the same implementation and error type.
2
+ import schedulerContract from "@chainlesschain/session-core/scheduler-contract";
3
+
4
+ export const {
5
+ SCHEDULER_SCHEMA_VERSION,
6
+ AUTHORITY_ENVELOPE_VERSION,
7
+ RUNTIME_CONTROL_SCHEMA_VERSION,
8
+ RUNTIME_PAUSE_RESUME,
9
+ RUNTIME_CONTROL_SAFE_POINTS,
10
+ OCCURRENCE_STATUS,
11
+ DEFAULT_MAX_ATTEMPTS,
12
+ MAX_JOB_ATTEMPTS,
13
+ DEFAULT_HISTORY_LIMIT,
14
+ MAX_HISTORY_LIMIT,
15
+ MAX_JSON_BYTES,
16
+ SchedulerKernelError,
17
+ invalidArgument,
18
+ normalizeIdentifier,
19
+ normalizeAuthorityEnvelope,
20
+ normalizeJson,
21
+ canonicalJson,
22
+ normalizeEpochMs,
23
+ normalizeMaxAttempts,
24
+ normalizeHistoryLimit,
25
+ normalizeRuntimeControlCapability,
26
+ deriveOccurrenceIdentity,
27
+ } = schedulerContract;