chainlesschain 0.166.90 → 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 (222) hide show
  1. package/README.md +15 -13
  2. package/package.json +4 -4
  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-CZzXRe1-.js → AIOps-C74YzqwJ.js} +1 -1
  6. package/src/assets/web-panel/assets/{ActionButton-_AZfbW1Q.js → ActionButton-TFef1hOE.js} +1 -1
  7. package/src/assets/web-panel/assets/{Analytics-CzaUx_wv.js → Analytics-CYsWpkkU.js} +3 -3
  8. package/src/assets/web-panel/assets/{AppLayout-xHEeeD-m.js → AppLayout-CFf9kjwu.js} +4 -4
  9. package/src/assets/web-panel/assets/{Artifacts-DmTbtudE.js → Artifacts-TQqa94YO.js} +1 -1
  10. package/src/assets/web-panel/assets/{Audit-Cn4ng4fo.js → Audit-B79ayqfS.js} +1 -1
  11. package/src/assets/web-panel/assets/{BackgroundAgents-DLUY1VD2.js → BackgroundAgents-pjkHfLP9.js} +1 -1
  12. package/src/assets/web-panel/assets/{Backup-B2v--wB6.js → Backup-CE6A-t_r.js} +1 -1
  13. package/src/assets/web-panel/assets/{BaseInput-Bgih7yAv.js → BaseInput-CwcgWMBY.js} +1 -1
  14. package/src/assets/web-panel/assets/{Chat-1MiiA3yA.js → Chat-BIkDNesY.js} +6 -6
  15. package/src/assets/web-panel/assets/{ChatBubbleRenderer-CPLynmbb.js → ChatBubbleRenderer-DgaokYts.js} +1 -1
  16. package/src/assets/web-panel/assets/{Checkbox-DsyBa_NO.js → Checkbox-MbypIy5V.js} +1 -1
  17. package/src/assets/web-panel/assets/{Codegen-B7WCFx9H.js → Codegen-DiFHWDnt.js} +1 -1
  18. package/src/assets/web-panel/assets/{Col-D2x4GBGm.js → Col-BNMlYMso.js} +1 -1
  19. package/src/assets/web-panel/assets/{Community-Rnwg9nea.js → Community-B3HVyHOX.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compact-BPczlrRh.js → Compact-C7hlAubb.js} +1 -1
  21. package/src/assets/web-panel/assets/{Compliance-Br1L_wGU.js → Compliance-PaXZu6sE.js} +1 -1
  22. package/src/assets/web-panel/assets/{Cowork-DlsWB_oS.js → Cowork-BGiojbm-.js} +2 -2
  23. package/src/assets/web-panel/assets/{Cron-BWo_KGpG.js → Cron-Bmr-1QAx.js} +2 -2
  24. package/src/assets/web-panel/assets/{Crosschain-Cug7N8ge.js → Crosschain-BwUvWCVd.js} +1 -1
  25. package/src/assets/web-panel/assets/{DID-CMbyOZJN.js → DID-k_4QZocW.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dashboard-C4dl_UaE.js → Dashboard-_ieRo2C5.js} +2 -2
  27. package/src/assets/web-panel/assets/{Dropdown-CBrC7M-9.js → Dropdown-DYHh6T27.js} +1 -1
  28. package/src/assets/web-panel/assets/{EmailListRenderer-DTq7tU4b.js → EmailListRenderer-BNlQcWQX.js} +1 -1
  29. package/src/assets/web-panel/assets/{EvolutionSettings-DWP3csxS.js → EvolutionSettings-DIkZ6U2D.js} +1 -1
  30. package/src/assets/web-panel/assets/{FamilyGuardDashboard-DZl7zuv_.js → FamilyGuardDashboard-Dq7qSr0P.js} +1 -1
  31. package/src/assets/web-panel/assets/{Federation-W-GSlVK5.js → Federation-C64e3Cbx.js} +1 -1
  32. package/src/assets/web-panel/assets/{FormItemContext-DMB7xYFV.js → FormItemContext-D-GE2vUa.js} +1 -1
  33. package/src/assets/web-panel/assets/{GenericCardRenderer-DNv8GEoq.js → GenericCardRenderer-DO3B2gis.js} +1 -1
  34. package/src/assets/web-panel/assets/{Git-BZ0Bbzw6.js → Git-0ETirIQH.js} +2 -2
  35. package/src/assets/web-panel/assets/{Governance-BNEdcOM5.js → Governance-C9fnRygX.js} +1 -1
  36. package/src/assets/web-panel/assets/{Inference-C8249gIz.js → Inference-CLJ9RTsK.js} +1 -1
  37. package/src/assets/web-panel/assets/{KnowledgeGraph-ngzebU3e.js → KnowledgeGraph-D3C_GxrN.js} +1 -1
  38. package/src/assets/web-panel/assets/{Logs-CP15th-f.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-CaH59OsY.js → Marketplace-GF_t6hJ_.js} +1 -1
  41. package/src/assets/web-panel/assets/{McpTools-C07vnJev.js → McpTools-BGsGzgQs.js} +3 -3
  42. package/src/assets/web-panel/assets/{Memory-CqAOkVAS.js → Memory-CcrY2A0j.js} +2 -2
  43. package/src/assets/web-panel/assets/{MobileBridge-qp7mZimq.js → MobileBridge-Bi4T0RlS.js} +1 -1
  44. package/src/assets/web-panel/assets/{MobileProjects-DKhbqvTw.js → MobileProjects-DvjEGyvf.js} +1 -1
  45. package/src/assets/web-panel/assets/{Mtc-CRYCnWXv.js → Mtc-DL77Vf-k.js} +4 -4
  46. package/src/assets/web-panel/assets/{MtcAudit-Z08IrKws.js → MtcAudit-CDy_Uswb.js} +4 -4
  47. package/src/assets/web-panel/assets/{Multisig-BWdatUnH.js → Multisig-DL0BAO_c.js} +3 -3
  48. package/src/assets/web-panel/assets/{NLProgramming-BKWiCZ_m.js → NLProgramming-B-woh5IR.js} +1 -1
  49. package/src/assets/web-panel/assets/{Notes-Bgpzk3sm.js → Notes-CEFVCxk7.js} +3 -3
  50. package/src/assets/web-panel/assets/{NotificationSettings-DvtZEktR.js → NotificationSettings-BqPPMuAP.js} +1 -1
  51. package/src/assets/web-panel/assets/{OrderTableRenderer-CBcy0szc.js → OrderTableRenderer-GUKQ1xwp.js} +1 -1
  52. package/src/assets/web-panel/assets/{Organization-DRRL6vW1.js → Organization-B1gX8jlr.js} +4 -4
  53. package/src/assets/web-panel/assets/{Overflow-COmfB8Ns.js → Overflow-CeMxuUZy.js} +1 -1
  54. package/src/assets/web-panel/assets/{P2P-BqMq_DSa.js → P2P-B5aIRWwJ.js} +2 -2
  55. package/src/assets/web-panel/assets/{PdhVaultBrowser-BX7iNvle.js → PdhVaultBrowser-6rYgejd4.js} +4 -4
  56. package/src/assets/web-panel/assets/{Permissions-DzYkjmV_.js → Permissions-CqCp2SIl.js} +4 -4
  57. package/src/assets/web-panel/assets/{PersonalDataHub-BBTcxBbN.js → PersonalDataHub-BsA7DJWW.js} +4 -4
  58. package/src/assets/web-panel/assets/{Pipeline-eRkYFSbO.js → Pipeline-CiW6HeZh.js} +1 -1
  59. package/src/assets/web-panel/assets/{Privacy-Ch7IFKBh.js → Privacy-DckUOLYq.js} +1 -1
  60. package/src/assets/web-panel/assets/{ProjectInit-Ci8EcBYg.js → ProjectInit-CZppOOYR.js} +2 -2
  61. package/src/assets/web-panel/assets/{ProjectSettings-B4lYHFbI.js → ProjectSettings-B9QPzhDU.js} +2 -2
  62. package/src/assets/web-panel/assets/{Projects-zkE5cCo_.js → Projects-BErjjGha.js} +1 -1
  63. package/src/assets/web-panel/assets/{Providers-BKDVD3_e.js → Providers-DehU6Qiz.js} +1 -1
  64. package/src/assets/web-panel/assets/{QrScannerModal-BromrHlf.js → QrScannerModal-E1SUvv1m.js} +1 -1
  65. package/src/assets/web-panel/assets/{QuickAsk-CCgoY1gR.js → QuickAsk-COWFxyH3.js} +1 -1
  66. package/src/assets/web-panel/assets/{Recommend-DCPZvpq7.js → Recommend-D26pWKxX.js} +1 -1
  67. package/src/assets/web-panel/assets/{RemoteSession-DPnFP8HU.js → RemoteSession-DCOIaId3.js} +3 -3
  68. package/src/assets/web-panel/assets/{Reputation-l6r8ytAs.js → Reputation-DT_AHGAR.js} +1 -1
  69. package/src/assets/web-panel/assets/{Row-ke9Mk1cx.js → Row-B50S-1nl.js} +1 -1
  70. package/src/assets/web-panel/assets/{RssFeed-DQOEzUEn.js → RssFeed-BaBnHg3Q.js} +2 -2
  71. package/src/assets/web-panel/assets/{Search-BqgA0aUz.js → Search-BVdnLuuS.js} +1 -1
  72. package/src/assets/web-panel/assets/{Security-FeGD_jqV.js → Security-BnacH74J.js} +3 -3
  73. package/src/assets/web-panel/assets/{Services-4kiYYAjZ.js → Services-CxM08Zch.js} +2 -2
  74. package/src/assets/web-panel/assets/{Skeleton-BbU8Xegs.js → Skeleton-DE7CIc1N.js} +1 -1
  75. package/src/assets/web-panel/assets/{Skills-Dl2bUMUL.js → Skills-CGI0SJmf.js} +1 -1
  76. package/src/assets/web-panel/assets/{Sla-xRGALeaZ.js → Sla-DpEzPcqc.js} +1 -1
  77. package/src/assets/web-panel/assets/{SpeechSettings-DZfd4RDm.js → SpeechSettings-CTmnmMHn.js} +1 -1
  78. package/src/assets/web-panel/assets/{SyncSettings-BRtCV9Ga.js → SyncSettings-Dxgrd9hd.js} +2 -2
  79. package/src/assets/web-panel/assets/{Tasks-DVRQklfG.js → Tasks-CW4slS0A.js} +1 -1
  80. package/src/assets/web-panel/assets/{Templates-BbhE5jt5.js → Templates-DxvGWDgB.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tenant-qXPDNKbK.js → Tenant-_Q0o2tNK.js} +1 -1
  82. package/src/assets/web-panel/assets/{Terminal-CV48Ks7E.js → Terminal-BTZn8pow.js} +2 -2
  83. package/src/assets/web-panel/assets/{TimelineRenderer-BLGfJIDr.js → TimelineRenderer-CauL0KFe.js} +1 -1
  84. package/src/assets/web-panel/assets/{Tokens-7G9H6Hrt.js → Tokens-CDoM2qeT.js} +1 -1
  85. package/src/assets/web-panel/assets/{Trigger--F64N11F.js → Trigger-B-QYGEU7.js} +1 -1
  86. package/src/assets/web-panel/assets/{Trust-Cq1r-D_y.js → Trust-BD6XJHT-.js} +1 -1
  87. package/src/assets/web-panel/assets/{UkeySign-Dqyu4RVh.js → UkeySign-x4TFwCy0.js} +1 -1
  88. package/src/assets/web-panel/assets/{VideoEditing-DuFmWH_B.js → VideoEditing-t3imBK_0.js} +1 -1
  89. package/src/assets/web-panel/assets/{Wallet-C3mg7EWP.js → Wallet-BCfkWwNC.js} +4 -4
  90. package/src/assets/web-panel/assets/{WebAuthn-CDK-Aj_X.js → WebAuthn-WH314Mdm.js} +5 -5
  91. package/src/assets/web-panel/assets/{WorkflowEditor--K7K-T1F.js → WorkflowEditor-jUlcjrUg.js} +1 -1
  92. package/src/assets/web-panel/assets/{chat-BQDcS6VP.js → chat-Dg3VASTL.js} +1 -1
  93. package/src/assets/web-panel/assets/{colors-BKxJL2-T.js → colors-BNvmBRKE.js} +1 -1
  94. package/src/assets/web-panel/assets/{compact-item-CFjQAMbY.js → compact-item-BGOfoqf4.js} +1 -1
  95. package/src/assets/web-panel/assets/{createContext-DbgCsdQd.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-BhkaOBNv.js → hasIn-Bg3AjCrq.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-DvWWFJHJ.js → index--I3UF5t1.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-DJ2OiRvh.js → index-2D04Zltx.js} +3 -3
  100. package/src/assets/web-panel/assets/{index-BuWPqSGT.js → index-60AnjUTX.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-D2Zb-Kd1.js → index-7QJUWemf.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-C0DzhUOX.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-COGy6wXn.js → index-B0mgngoB.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-bMX8BBLE.js → index-BBCMulQ-.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-CE506mgj.js → index-BSNhW95G.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-CoOu7sdP.js → index-B_JmInC0.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-B4LlAJqc.js → index-BaPvEvB4.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-CRtUDiXx.js → index-Bkz1tgFR.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-Du_SxxBY.js → index-BmTacaQV.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-CSUDlsIr.js → index-CCFZN66A.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-3uR0ThJO.js → index-COol3xfA.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-DmYK9Tqt.js → index-CY8cRKHR.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-T9ka3Xj3.js → index-Cbp-wp-U.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-CB4oHynY.js → index-Co_LnCWD.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-DEwHywz9.js → index-Cx2EXRfr.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-CUs7XpUO.js → index-D-mSvCQK.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-BRqlCTrz.js → index-D072oLjp.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-sKfUUldY.js → index-D6UqK83L.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-Dhfa_BIl.js → index-DF_FKSVH.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-D9sVcw6v.js → index-DLwEXRrb.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-3djsY75k.js → index-DO0VlNtc.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-BfGGsAU7.js → index-DS04wRll.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-Dn2QSsuI.js → index-DYn5DnDk.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-D-Yh3-1z.js → index-D_O2ZjPk.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-BNjYPJNU.js → index-DcCnO0RU.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-DP1NrM9J.js → index-Dkp-okWa.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DdcrixaQ.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-7BY44UEv.js → index-Wo0f2iqb.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-DjmVlpap.js → index-ZD5Kd8tx.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-3YutaXnp.js → index-fOwii3LP.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-aPdVzagA.js → index-hG7jXGEW.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-De7daEnc.js → index-pVdQieac.js} +1 -1
  135. package/src/assets/web-panel/assets/{index-CJoXgJ2N.js → index-uH2LnAs_.js} +1 -1
  136. package/src/assets/web-panel/assets/{index-DFt48Z-x.js → index-xzaUx19r.js} +1 -1
  137. package/src/assets/web-panel/assets/{initDefaultProps-wrqabmui.js → initDefaultProps-B8PN9AxJ.js} +1 -1
  138. package/src/assets/web-panel/assets/{motion-BoyB3ilP.js → motion-BHivfw5Q.js} +1 -1
  139. package/src/assets/web-panel/assets/{move-Cq31cSFE.js → move-B0QU5nDd.js} +1 -1
  140. package/src/assets/web-panel/assets/{mtc-parser-BkxNt-8H.js → mtc-parser-DRwRM3PE.js} +1 -1
  141. package/src/assets/web-panel/assets/{omit-DofGni53.js → omit-SHt2rV2p.js} +1 -1
  142. package/src/assets/web-panel/assets/{pickAttrs-BnluLL16.js → pickAttrs-CcmDlEb2.js} +1 -1
  143. package/src/assets/web-panel/assets/{placementArrow-C-yegJSP.js → placementArrow-DYatmXDS.js} +1 -1
  144. package/src/assets/web-panel/assets/{responsiveObserve-CD3ziNhu.js → responsiveObserve-B7qrsXq5.js} +1 -1
  145. package/src/assets/web-panel/assets/{slide-ToZO4gQ1.js → slide-BRGhlOWd.js} +1 -1
  146. package/src/assets/web-panel/assets/{statusUtils-DFVmDmVl.js → statusUtils-CT-7NXsQ.js} +1 -1
  147. package/src/assets/web-panel/assets/{styleChecker-De0Y8g1O.js → styleChecker-rZdw_Yyp.js} +1 -1
  148. package/src/assets/web-panel/assets/{useFlexGapSupport-wBKIYFKX.js → useFlexGapSupport-D8YNIP4P.js} +1 -1
  149. package/src/assets/web-panel/assets/{useFs-CP9nmUMJ.js → useFs-B8pt0Gu-.js} +1 -1
  150. package/src/assets/web-panel/assets/{usePersonalDataHub-vFGrVDyp.js → usePersonalDataHub-VMmYM1tt.js} +1 -1
  151. package/src/assets/web-panel/assets/{vnode-BcBIjvjH.js → vnode-UNDuoPoq.js} +1 -1
  152. package/src/assets/web-panel/assets/{zoom-DnXDAQxA.js → zoom-dN-u667S.js} +1 -1
  153. package/src/assets/web-panel/index.html +1 -1
  154. package/src/command-help-index.json +1 -1
  155. package/src/commands/agent-process-ownership.js +121 -0
  156. package/src/commands/agent.js +2 -0
  157. package/src/commands/hub.js +86 -9
  158. package/src/data/changelog.json +54 -2
  159. package/src/lib/audit-logger.js +46 -20
  160. package/src/lib/checkpoint-restore-saga.js +11 -1
  161. package/src/lib/eval/verify01-host-evidence.js +36 -3
  162. package/src/lib/evolution/evolution-artifact-ports.js +26 -0
  163. package/src/lib/evolution/evolution-eval-cohort-enrollment.js +713 -47
  164. package/src/lib/evolution/evolution-eval-gate.js +146 -0
  165. package/src/lib/evolution/evolution-eval-launch-admission.js +168 -90
  166. package/src/lib/evolution/evolution-eval-ledger-capture.js +50 -0
  167. package/src/lib/evolution/evolution-eval-readonly-audit.js +106 -0
  168. package/src/lib/evolution/evolution-ledger-file-backend.js +20 -0
  169. package/src/lib/evolution/evolution-ledger-ports.js +59 -27
  170. package/src/lib/evolution/evolution-ledger-v2-journal.js +55 -18
  171. package/src/lib/evolution/evolution-workbench-file-resources.js +19 -1
  172. package/src/lib/evolution/rrsi-cohort-registration.js +275 -0
  173. package/src/lib/evolution/rrsi-contracts.js +742 -0
  174. package/src/lib/evolution/rrsi-data.js +196 -0
  175. package/src/lib/evolution/rrsi-evaluation-adapter.js +275 -0
  176. package/src/lib/evolution/rrsi-evaluation-variants.js +267 -0
  177. package/src/lib/evolution/rrsi-group-statistics.js +553 -0
  178. package/src/lib/evolution/rrsi-history-ledger-adapter.js +3261 -0
  179. package/src/lib/evolution/rrsi-native-batch-evidence.js +520 -0
  180. package/src/lib/evolution/rrsi-native-eval-row-collector.js +538 -0
  181. package/src/lib/evolution/rrsi-native-evaluation-batch.js +547 -0
  182. package/src/lib/evolution/rrsi-native-evaluation-plan.js +431 -0
  183. package/src/lib/evolution/rrsi-native-group-statistics-plan.js +121 -0
  184. package/src/lib/evolution/rrsi-native-group-statistics.js +482 -0
  185. package/src/lib/evolution/rrsi-native-quality-receipt-contracts.js +321 -0
  186. package/src/lib/evolution/rrsi-native-quality-receipt.js +256 -0
  187. package/src/lib/evolution/rrsi-native-statistics-protocol.js +330 -0
  188. package/src/lib/evolution/rrsi-parent-binding.js +290 -0
  189. package/src/lib/evolution/rrsi-pm-execution-bridge.js +500 -0
  190. package/src/lib/evolution/rrsi-pm-training-mapping.js +134 -0
  191. package/src/lib/evolution/rrsi-preparation-contracts.js +213 -0
  192. package/src/lib/evolution/rrsi-registry-history-binding.js +193 -0
  193. package/src/lib/evolution/rrsi-registry-store-policy.js +1191 -0
  194. package/src/lib/evolution/rrsi-runtime-composition.js +79 -0
  195. package/src/lib/evolution/rrsi-selector.js +434 -0
  196. package/src/lib/evolution/rrsi-statistics-simulation.js +354 -0
  197. package/src/lib/evolution/skill-candidate-registry.js +216 -29
  198. package/src/lib/evolution/skill-registry-maintenance.js +80 -0
  199. package/src/lib/evolution/skill-registry-writer-control.js +138 -0
  200. package/src/lib/evolution/skill-release-registry.js +399 -169
  201. package/src/lib/formal-quality-eval-runtime.js +2 -14
  202. package/src/lib/goal-store.js +225 -16
  203. package/src/lib/process-execution-broker/index.js +91 -1
  204. package/src/lib/process-execution-broker/platform-sandbox.js +42 -0
  205. package/src/lib/process-execution-broker/windows-native-evaluator-capabilities.js +757 -0
  206. package/src/lib/process-execution-broker/windows-native-evaluator.js +316 -0
  207. package/src/lib/process-execution-broker/windows-sandbox-helper.dll +0 -0
  208. package/src/lib/process-execution-broker/windows-sandbox-helper.exe +0 -0
  209. package/src/lib/process-execution-broker/windows-sandbox.cs +383 -11
  210. package/src/lib/record-replay/skill-recorder.js +38 -3
  211. package/src/lib/scheduler-kernel/authority-resolver.js +12 -163
  212. package/src/lib/scheduler-kernel/contract.js +27 -414
  213. package/src/lib/scheduler-kernel/runtime.js +21 -823
  214. package/src/lib/scheduler-kernel/service.js +11 -328
  215. package/src/lib/scheduler-kernel/source-locator-path.js +7 -142
  216. package/src/lib/scheduler-kernel/store.js +67 -5931
  217. package/src/lib/secure-fs.js +16 -1314
  218. package/src/lib/with-file-lock.js +122 -20
  219. package/src/assets/web-panel/assets/MarkdownRenderer-CW3B3JDq.js +0 -1
  220. package/src/assets/web-panel/assets/devWarning-DlIv9Mbc.js +0 -1
  221. package/src/assets/web-panel/assets/index-BC972Grv.js +0 -1
  222. package/src/assets/web-panel/assets/index-CVifyQqL.js +0 -1
@@ -1,16 +1,68 @@
1
1
  {
2
2
  "source": "CHANGELOG.md",
3
3
  "releases": [
4
+ {
5
+ "productVersion": null,
6
+ "cliVersion": "0.166.92",
7
+ "cliVersions": ["0.166.92"],
8
+ "date": null,
9
+ "title": "",
10
+ "sections": [
11
+ {
12
+ "heading": "Fixed - cc CLI 0.166.92: private storage and release regression repairs",
13
+ "body": "- Publish Session Core `0.3.17` and Context Memory Kernel `0.1.7` before CLI\n `0.166.92`, with exact CLI dependency pins and public package readback.\n- Stage the actual Session Core package in isolated CLI and desktop fixtures;\n missing private-storage code fails the fixture checks. Extract the complete\n packed library when validating new transitive authorization dependencies.\n- Compare temporary fixture paths by their physical identity on Windows and\n macOS while retaining production symlink and path-admission checks.\n- Preserve full 64-bit RRSI directory and marker identities on Windows so\n distinct objects cannot collide after numeric rounding. Existing identity\n mismatches still hold the store without rewriting authenticated records.\n- Create SQLite WAL/SHM files before applying final private-storage protection,\n including owner-only Windows ACLs when goal schedulers reopen their stores.\n- Exclude validated browser digest metadata from Record & Replay content scans;\n malformed metadata and sensitive values in user content still fail review.\n- Avoid repeating the same authenticated journal read for each signed sibling\n in the cohort enrollment regression test; keep every admission assertion.\n- Stop canceled execution-location workflows from reporting missing producer\n artifacts as a new aggregate failure; failed producers still fail the gate.\n- Await main-process logout in desktop tests and preserve the UI session until\n revocation succeeds. Failed or unavailable revocation still rejects logout.\n- Require the parent to acknowledge RRSI process-test results before workers\n disconnect, retaining both the competing-process assertions and exit checks.\n- Pair VS Code `0.37.137` and JetBrains `0.4.155` with CLI `0.166.92`. Disable\n development plugin hot reload in the JetBrains test host so restart validation\n retains both the packaged plugin and its UI driver.\n- Require the authorized CLI and downloadable OIDC-published child packages\n before desktop and mobile builds; remove the product workflow's npm token\n fallback so dependency failures cannot trigger a separate npm publication."
14
+ }
15
+ ]
16
+ },
17
+ {
18
+ "productVersion": null,
19
+ "cliVersion": "0.166.92",
20
+ "cliVersions": ["0.166.92"],
21
+ "date": null,
22
+ "title": "",
23
+ "sections": [
24
+ {
25
+ "heading": "Added - CLI 0.166.92: organization workflows and authenticated registry reads",
26
+ "body": "- Carry the committed organization project workbench into the desktop product\n candidate, with project setup, saved proposals and governed task actions.\n Session Core `0.3.17` includes the proposal store used by those host services.\n- Bind RRSI Registry read-only construction to authenticated backend evidence.\n Read-only queries require that construction authority and retain checks for\n replacement and mutation instead of creating a fresh writable registry."
27
+ }
28
+ ]
29
+ },
30
+ {
31
+ "productVersion": null,
32
+ "cliVersion": "0.166.92",
33
+ "cliVersions": ["0.166.92"],
34
+ "date": "2026-10-07",
35
+ "title": "",
36
+ "sections": [
37
+ {
38
+ "heading": "Upgrade - CLI 0.166.92 and product v5.0.3.139 candidates (2026-10-07)",
39
+ "body": "- These versions are release candidates until the final versioned commit passes\n its complete GitHub Actions gates and public release verification.\n- After CLI publication, run `npm install -g chainlesschain@0.166.92`, then\n `chainlesschain --version`. `cc changelog` includes these bundled release notes.\n Keep the existing configuration and data directories when replacing binaries.\n- Upgrade IDE plugins after the CLI: VS Code `0.37.137` and JetBrains `0.4.155`.\n Restart the editor and verify its CLI path. If `cc` resolves to a C compiler,\n configure the full path to the installed ChainlessChain executable.\n- The final product stage uses desktop `5.0.3-alpha.139`, Android\n `5.0.3.139` / code `503139`, and iOS `5.0.3` / build `139`. Install the\n matching platform artifact after the CLI and IDE release stages finish.\n- Back up existing application data before upgrading persistent stores. Close\n desktop clients before copying SQLite stores, and retain their WAL/SHM files\n when present so the backup includes committed data."
40
+ }
41
+ ]
42
+ },
43
+ {
44
+ "productVersion": null,
45
+ "cliVersion": "0.166.91",
46
+ "cliVersions": ["0.166.91"],
47
+ "date": null,
48
+ "title": "",
49
+ "sections": [
50
+ {
51
+ "heading": "Fixed - cc CLI 0.166.91: cross-platform release validation",
52
+ "body": "- Accept verified directory identities through the Windows Server 2025 native\n file-information API, while retaining handle binding and reparse-point checks.\n- Preserve Windows native evaluator failure and cleanup evidence when the helper\n cannot publish a settlement. Compare journal identities within their pathname\n and descriptor domains on supported Node versions.\n- Keep literal audit search assertions independent of redacted operation text;\n verify that unsafe legacy text remains omitted from query results.\n- Give the receipt signer deadline test enough admission time on hosted runners\n and verify that the signer is actually invoked before its bounded timeout.\n- Regenerate the bundled CLI changelog from its canonical source.\n- Capture JetBrains transcript snapshots on the event dispatch thread during\n cross-platform host validation, retaining the full transcript assertions.\n- Preserve equivalent protected Windows evaluator ACLs across .NET Framework\n and PowerShell's .NET runtime through the native security API.\n- Retry cooperative lock release during nested safe owner reads without treating\n it as corruption; losing a held lock still fails closed.\n- Pin the patched `shell-quote` dependency in both workspace and standalone\n desktop installs to reject command injection after shell comment tokens.\n- Publish Session Core `0.3.16` and Personal Data Hub `0.4.64` before CLI\n `0.166.91`, with exact dependency pins and public package verification.\n- Pair VS Code `0.37.136` and JetBrains `0.4.154` with CLI `0.166.91` after\n the full exact-commit CLI and IDE validation workflows pass."
53
+ }
54
+ ]
55
+ },
4
56
  {
5
57
  "productVersion": null,
6
58
  "cliVersion": "0.166.90",
7
59
  "cliVersions": ["0.166.90"],
8
- "date": null,
60
+ "date": "2026-10-06",
9
61
  "title": "",
10
62
  "sections": [
11
63
  {
12
64
  "heading": "Added - cc CLI 0.166.90: recoverable projections and project risk evidence",
13
- "body": "- Publish Personal Data Hub `0.4.63` and Session Core `0.3.15` before the CLI,\n with exact dependency pins and public tarball verification. Require the full\n PDH suite with its declared native SQLCipher driver on Linux, Windows and macOS.\n- Publish Agent SDK `0.2.13` with Vitest `4.1.11` test tooling to remove the\n vulnerable Tinypool dependency, and upgrade the workspace proxy-addr to\n `2.0.8`. Require SDK build and tests on the exact Linux, Windows and macOS\n release commit before OIDC publication.\n- Persist PDH projection receipts, recover incomplete derivations and support\n bounded receipt retention. Harden RAG updates, audit redaction and capability\n reporting so unavailable sources do not appear as successful live collection.\n- Add offline project risk evaluation and version-bound task description\n previews. Session Core also supplies native SQLite action/read services and\n saved rule/source reviews for the desktop project workbench; CLI previews\n carry unverified snapshot authority and do not execute those desktop actions.\n- Pair VS Code `0.37.135` and JetBrains `0.4.153` with CLI `0.166.90` after\n exact-commit release checks and public npm readback."
65
+ "body": "- Verified on 2026-10-06: exact release commit `28cff6adc8` passed complete\n CLI CI, Strict Sandbox, IDE host and security gates. Session Core `0.3.15`,\n Agent SDK `0.2.13`, PDH `0.4.63` and CLI `0.166.90` were published through\n GitHub Actions OIDC with independent public archive verification. Open VSX\n `0.37.135` and JetBrains `0.4.153` are public; both publication workflows\n succeeded, and JetBrains approval/listing was independently read back.\n Desktop workbench changes are outside the separate v5.0.3.138 installer.\n- Publish Personal Data Hub `0.4.63` and Session Core `0.3.15` before the CLI,\n with exact dependency pins and public tarball verification. Require the full\n PDH suite with its declared native SQLCipher driver on Linux, Windows and macOS.\n- Publish Agent SDK `0.2.13` with Vitest `4.1.11` test tooling to remove the\n vulnerable Tinypool dependency, and upgrade the workspace proxy-addr to\n `2.0.8`. Require SDK build and tests on the exact Linux, Windows and macOS\n release commit before OIDC publication.\n- Persist PDH projection receipts, recover incomplete derivations and support\n bounded receipt retention. Harden RAG updates, audit redaction and capability\n reporting so unavailable sources do not appear as successful live collection.\n- Add offline project risk evaluation and version-bound task description\n previews. Session Core also supplies native SQLite action/read services and\n saved rule/source reviews for the desktop project workbench; CLI previews\n carry unverified snapshot authority and do not execute those desktop actions.\n- Pair VS Code `0.37.135` and JetBrains `0.4.153` with CLI `0.166.90` after\n exact-commit release checks and public npm readback."
14
66
  }
15
67
  ]
16
68
  },
@@ -7,6 +7,17 @@ import crypto from "crypto";
7
7
  import { safeJsonParse } from "./safe-json.js";
8
8
  import { escapeLike } from "./sql-like.js";
9
9
  import { sanitizeAuditDetails } from "./audit-sanitizer.js";
10
+ import auditDataPolicy from "@chainlesschain/session-core/audit-data-policy";
11
+ import restrictedAudit from "@chainlesschain/session-core/restricted-audit-store";
12
+
13
+ const { projectAuditMetadata, projectAuditField, validateRetentionDays } =
14
+ auditDataPolicy;
15
+
16
+ // Host API: authorization must come from the invoking host, never event details.
17
+ // No general audit query/export includes this separate store.
18
+ export function createAuditDiagnostics(db, options) {
19
+ return new restrictedAudit.RestrictedAuditStore(db, options);
20
+ }
10
21
 
11
22
  /**
12
23
  * Event types for audit logging.
@@ -117,7 +128,7 @@ export function sanitizeDetails(details) {
117
128
  }
118
129
 
119
130
  function sanitizeErrorMessage(value) {
120
- const sanitized = sanitizeDetails(value);
131
+ const sanitized = projectAuditMetadata(value);
121
132
  if (sanitized == null) return null;
122
133
  return typeof sanitized === "object"
123
134
  ? JSON.stringify(sanitized)
@@ -131,23 +142,24 @@ export function logEvent(db, event) {
131
142
  ensureAuditTables(db);
132
143
 
133
144
  const id = crypto.randomUUID();
134
- const sanitized = sanitizeDetails(event.details);
135
- const risk =
136
- event.riskLevel || assessRisk(event.eventType, event.operation, sanitized);
145
+ const sanitized = projectAuditMetadata(event.details);
146
+ const risk = Object.values(RISK_LEVELS).includes(event.riskLevel)
147
+ ? event.riskLevel
148
+ : assessRisk(event.eventType, event.operation || "unknown", sanitized);
137
149
 
138
150
  db.prepare(
139
151
  `INSERT INTO audit_log (id, event_type, operation, actor, target, details, risk_level, ip_address, user_agent, success, error_message)
140
152
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
141
153
  ).run(
142
154
  id,
143
- event.eventType || EVENT_TYPES.SYSTEM,
144
- event.operation || "unknown",
145
- event.actor || null,
146
- event.target || null,
155
+ projectAuditField("eventType", event.eventType || EVENT_TYPES.SYSTEM),
156
+ projectAuditField("operation", event.operation || "unknown"),
157
+ projectAuditField("actor", event.actor || null),
158
+ projectAuditField("target", event.target || null),
147
159
  sanitized == null ? null : JSON.stringify(sanitized),
148
160
  risk,
149
- event.ipAddress || null,
150
- event.userAgent || null,
161
+ event.ipAddress ? projectAuditField("ipAddress", event.ipAddress) : null,
162
+ event.userAgent ? projectAuditField("userAgent", event.userAgent) : null,
151
163
  event.success !== false ? 1 : 0,
152
164
  sanitizeErrorMessage(event.errorMessage),
153
165
  );
@@ -220,8 +232,21 @@ export function queryLogs(db, filters = {}) {
220
232
  const rows = db.prepare(sql).all(...params);
221
233
  return rows.map((r) => ({
222
234
  ...r,
235
+ event_type: projectAuditField("eventType", r.event_type),
236
+ operation: projectAuditField("operation", r.operation),
223
237
  // One corrupt details cell must not throw out of the whole query.
224
- details: safeJsonParse(r.details, null),
238
+ details: projectAuditMetadata(safeJsonParse(r.details, null)),
239
+ error_message: sanitizeErrorMessage(
240
+ safeJsonParse(r.error_message, r.error_message),
241
+ ),
242
+ actor: projectAuditField("actor", r.actor),
243
+ target: projectAuditField("target", r.target),
244
+ ip_address: r.ip_address
245
+ ? projectAuditField("ipAddress", r.ip_address)
246
+ : null,
247
+ user_agent: r.user_agent
248
+ ? projectAuditField("userAgent", r.user_agent)
249
+ : null,
225
250
  success: r.success === 1,
226
251
  }));
227
252
  }
@@ -333,6 +358,7 @@ export function exportLogs(db, format = "json", filters = {}) {
333
358
  * Delete old audit logs.
334
359
  */
335
360
  export function purgeLogs(db, daysToKeep = 90) {
361
+ validateRetentionDays(daysToKeep);
336
362
  ensureAuditTables(db);
337
363
 
338
364
  const cutoff = new Date();
@@ -502,7 +528,7 @@ export function logEventV2(
502
528
  if (_logStatesV2.has(logId)) {
503
529
  throw new Error(`Log already registered: ${logId}`);
504
530
  }
505
- const sanitized = sanitizeDetails(details);
531
+ const sanitized = projectAuditMetadata(details);
506
532
  const risk = riskLevel || assessRisk(eventType, operation, sanitized);
507
533
  if (!RISK_LEVELS_V2.includes(risk)) {
508
534
  throw new Error(`Invalid riskLevel: ${risk}`);
@@ -510,14 +536,14 @@ export function logEventV2(
510
536
  const now = Date.now();
511
537
  const entry = {
512
538
  logId,
513
- eventType,
514
- operation,
515
- actor: actor || null,
516
- target: target || null,
539
+ eventType: projectAuditField("eventType", eventType),
540
+ operation: projectAuditField("operation", operation),
541
+ actor: projectAuditField("actor", actor || null),
542
+ target: projectAuditField("target", target || null),
517
543
  details: sanitized ?? null,
518
544
  riskLevel: risk,
519
- ipAddress: ipAddress || null,
520
- userAgent: userAgent || null,
545
+ ipAddress: ipAddress ? projectAuditField("ipAddress", ipAddress) : null,
546
+ userAgent: userAgent ? projectAuditField("userAgent", userAgent) : null,
521
547
  success: success !== false,
522
548
  errorMessage: sanitizeErrorMessage(errorMessage),
523
549
  status: LOG_STATUS_V2.ACTIVE,
@@ -539,8 +565,8 @@ export function logEventV2(
539
565
  _alertStatesV2.set(alertId, {
540
566
  alertId,
541
567
  logId,
542
- actor,
543
- operation,
568
+ actor: entry.actor,
569
+ operation: entry.operation,
544
570
  riskLevel: risk,
545
571
  status: ALERT_STATUS_V2.OPEN,
546
572
  reason: null,
@@ -464,6 +464,16 @@ function isMissingPathError(error) {
464
464
  return error?.code === "ENOENT" || error?.cause?.code === "ENOENT";
465
465
  }
466
466
 
467
+ function hasMissingLockPathCause(error) {
468
+ // A bounded owner read wraps secure-parent errors, which themselves wrap
469
+ // ENOENT when a cooperating process detaches its released lock directory.
470
+ // Only unlocked lock inspection uses this; losing our held owner still fails.
471
+ for (let depth = 0; error && depth < 8; depth++, error = error.cause) {
472
+ if (error.code === "ENOENT") return true;
473
+ }
474
+ return false;
475
+ }
476
+
467
477
  function attachCommitState(error, details) {
468
478
  if (!error || typeof error !== "object") return error;
469
479
  for (const [key, value] of Object.entries(details)) {
@@ -1887,7 +1897,7 @@ export class CheckpointRestoreSagaStore {
1887
1897
  // The same valid release can happen after readdir observed owner.json
1888
1898
  // but before its lstat/read. Only tolerate absence during the unlocked
1889
1899
  // pre/postflight inspection; losing our own owner still fails closed.
1890
- if (isMissingPathError(cause) && !requireOwner) return null;
1900
+ if (hasMissingLockPathCause(cause) && !requireOwner) return null;
1891
1901
  throw sagaError(
1892
1902
  CHECKPOINT_RESTORE_SAGA_ERROR_CODES.LOCK_FAILED,
1893
1903
  "Saga state lock owner is corrupt or unbounded",
@@ -149,13 +149,46 @@ export function inspectIdeProtocol(records, { prompt, comparison } = {}) {
149
149
  resultRecords[0].event.session_id === sessionId,
150
150
  "IDE terminal is missing or ambiguous",
151
151
  );
152
+ const terminal = resultRecords[0].event;
153
+ // Persistent headless streams emit one lifecycle end after stdin closes.
154
+ // Accept only that exact, same-session one-turn trailer; task output after
155
+ // the result stays ambiguous. Keep the complete capture intact.
156
+ const trailing = outputs.slice(outputs.indexOf(resultRecords[0]) + 1);
157
+ const end = trailing[0]?.event;
158
+ const lifecycleFrames = outputs.filter(
159
+ (record) =>
160
+ record.event.type === "system" && record.event.subtype === "end",
161
+ );
162
+ const lifecycleEnded =
163
+ trailing.length === 1 &&
164
+ lifecycleFrames.length === 1 &&
165
+ end.type === "system" &&
166
+ end.subtype === "end" &&
167
+ end.session_id === sessionId &&
168
+ end.turns === 1 &&
169
+ terminal.turn === 1 &&
170
+ Object.keys(end).every((key) =>
171
+ ["type", "subtype", "session_id", "turns", "trace_id", "seq"].includes(
172
+ key,
173
+ ),
174
+ ) &&
175
+ (end.trace_id === undefined ||
176
+ (typeof end.trace_id === "string" &&
177
+ end.trace_id === terminal.trace_id)) &&
178
+ (end.seq === undefined ||
179
+ (Number.isSafeInteger(end.seq) &&
180
+ Number.isSafeInteger(terminal.seq) &&
181
+ end.seq === terminal.seq + 1));
182
+ const taskOutputs = lifecycleEnded ? outputs.slice(0, -1) : outputs;
152
183
  const parsed = verifyAgentTerminal(
153
- outputs.map((record) => JSON.stringify(record.event)).join("\n"),
184
+ taskOutputs.map((record) => JSON.stringify(record.event)).join("\n"),
154
185
  );
155
- const terminal = resultRecords[0].event;
186
+ if (lifecycleFrames.length > 0 && !lifecycleEnded)
187
+ parsed.terminalVerified = false;
156
188
  // A complete explicit failure is an observation. It never becomes success.
157
189
  const knownFailure =
158
- outputs.at(-1) === resultRecords[0] &&
190
+ taskOutputs.at(-1) === resultRecords[0] &&
191
+ (lifecycleFrames.length === 0 || lifecycleEnded) &&
159
192
  terminal.is_error === true &&
160
193
  typeof terminal.subtype === "string" &&
161
194
  terminal.subtype.length > 0 &&
@@ -82,6 +82,8 @@ export const EVOLUTION_ARTIFACT_LEDGER_RETENTION_TYPES = Object.freeze([
82
82
  "skill-runtime-revalidation-state",
83
83
  "evolution-ledger-v2-journal",
84
84
  "evolution-run-event",
85
+ "rrsi-history-event",
86
+ "skill-registry-store-policy",
85
87
  "pm-exploration-recovery-snapshot",
86
88
  "pm-exploration-provider-settlement",
87
89
  "evolution-eval-child-evidence",
@@ -140,6 +142,8 @@ export const EVOLUTION_ARTIFACT_TYPES = Object.freeze([
140
142
  "evaluation",
141
143
  "evaluation-result",
142
144
  "evolution-run-event",
145
+ "rrsi-history-event",
146
+ "skill-registry-store-policy",
143
147
  "pm-exploration-recovery-snapshot",
144
148
  "pm-exploration-provider-settlement",
145
149
  "evolution-eval-child-evidence",
@@ -357,6 +361,7 @@ const CONSTRUCTOR_REQUIRED_KEYS = new Set([
357
361
  const LEDGER_RESOLVER_OPTION_KEYS = new Set(["purpose"]);
358
362
  const EVOLUTION_LEDGER_ARTIFACT_RESOLVERS = new WeakSet();
359
363
  const EVOLUTION_LEDGER_BATCH_RESOLVERS = new WeakMap();
364
+ const EVOLUTION_LEDGER_RESOLVER_BINDINGS = new WeakMap();
360
365
  const isProxy = Object.freeze(utilTypes.isProxy.bind(utilTypes));
361
366
  const isDate = Object.freeze(utilTypes.isDate.bind(utilTypes));
362
367
  const dateGetTime = Object.freeze(
@@ -395,6 +400,8 @@ const LEDGER_RETENTION_PURPOSES_BY_TYPE = new Map([
395
400
  ["wiki-pruning-journal", new Set(["evolution-ledger"])],
396
401
  ["wiki-pruning-retrieval-projection", new Set(["evolution-ledger"])],
397
402
  ["evolution-run-event", new Set(["evolution-ledger"])],
403
+ ["rrsi-history-event", new Set(["evolution-ledger"])],
404
+ ["skill-registry-store-policy", new Set(["evolution-ledger"])],
398
405
  ["pm-exploration-recovery-snapshot", new Set(["evolution-ledger"])],
399
406
  ["pm-exploration-provider-settlement", new Set(["evolution-ledger"])],
400
407
  ["evolution-eval-child-evidence", new Set(["evolution-ledger"])],
@@ -3557,6 +3564,15 @@ export class EvolutionArtifactPorts {
3557
3564
  EVOLUTION_LEDGER_BATCH_RESOLVERS.set(resolveReadOnly, (requests) =>
3558
3565
  this.#resolveLedgerBatch(requests, normalizedPurpose),
3559
3566
  );
3567
+ EVOLUTION_LEDGER_RESOLVER_BINDINGS.set(
3568
+ resolveReadOnly,
3569
+ Object.freeze({
3570
+ purpose: normalizedPurpose,
3571
+ tenantId: this.#tenantId,
3572
+ audience: this.#audience,
3573
+ matchesArtifactPorts: Object.freeze((value) => value === this),
3574
+ }),
3575
+ );
3560
3576
  return Object.freeze(resolveReadOnly);
3561
3577
  }
3562
3578
  }
@@ -3591,4 +3607,14 @@ export function captureEvolutionLedgerBatchResolver(value) {
3591
3607
  return resolve;
3592
3608
  }
3593
3609
 
3610
+ /** Private construction identity, independent of matching resolver descriptors. */
3611
+ export function captureEvolutionLedgerArtifactResolverBinding(value) {
3612
+ const binding = EVOLUTION_LEDGER_RESOLVER_BINDINGS.get(value);
3613
+ if (!binding)
3614
+ throw new TypeError(
3615
+ "a branded ledger artifact resolver binding is required",
3616
+ );
3617
+ return binding;
3618
+ }
3619
+
3594
3620
  Object.freeze(EvolutionArtifactPorts.prototype);