chainlesschain 0.166.91 → 0.166.93
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.
- package/README.md +17 -17
- package/package.json +3 -3
- package/src/assets/linux-subreaper/linux-arm64/manifest.json +1 -1
- package/src/assets/linux-subreaper/linux-x64/manifest.json +1 -1
- package/src/assets/web-panel/assets/{AIOps-DgV7xb8F.js → AIOps-oo9rE0gh.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-CgANpkKu.js → ActionButton-CVJVVv4i.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-DnvpX7RB.js → Analytics-CUXuwmia.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-C2bHccBM.js → AppLayout-iM4PvCuY.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-BIhijC9g.js → Artifacts-DKUIJbf9.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-CKRjWGdp.js → Audit-C4_SzFN2.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-CblYtgBE.js → BackgroundAgents-C3427uy-.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-Cq35b78a.js → Backup-BpEQQiog.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-DcB7NoRz.js → BaseInput-C_exQomZ.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-tc3b-s7i.js → Chat-DzpkLtWa.js} +5 -5
- package/src/assets/web-panel/assets/ChatBubbleRenderer-DX4XmTWm.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-BLD5bH5u.js → Checkbox-CxAC1CU8.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-BLOsoazN.js → Codegen-wDFAGCLp.js} +1 -1
- package/src/assets/web-panel/assets/{Col-Bdr7JwIx.js → Col-BvwirhMf.js} +1 -1
- package/src/assets/web-panel/assets/{Community-C84BsWE0.js → Community-BJuA7paY.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-Dzdwd04z.js → Compact-DzV35_u2.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-CCG-R0EV.js → Compliance-CIDPPvr9.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-BYj72SK0.js → Cowork-DyTMxP3N.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-B6iKAwOf.js → Cron-PcNLjMFx.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-BJ-oDC6u.js → Crosschain-B_O7ck6Z.js} +1 -1
- package/src/assets/web-panel/assets/{DID-BnMckGLr.js → DID-CII35Me1.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-Cyje-gCO.js → Dashboard-DU56fkNz.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-BpNlenjK.js → Dropdown-DHC8HVeJ.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-BhonO7Nv.js → EmailListRenderer-oUOHFNsD.js} +1 -1
- package/src/assets/web-panel/assets/{EvolutionSettings-DVoNU-Id.js → EvolutionSettings-D7RCAWNl.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-tdn-KC67.js → FamilyGuardDashboard-CGONPZxC.js} +1 -1
- package/src/assets/web-panel/assets/{Federation--EEVrHhz.js → Federation-BbDlPWcl.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-Cy8zr0-4.js → FormItemContext-BBJbFQQT.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-BuUhpgFi.js → GenericCardRenderer-iuxAero4.js} +1 -1
- package/src/assets/web-panel/assets/{Git-Ctd3E5Pe.js → Git-Dw0prdY5.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-Ce7dV6aU.js → Governance-DOGqi_uV.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-CD1vExIH.js → Inference-BY5oUGGj.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-Dn64OdQ7.js → KnowledgeGraph-CcE2EVYX.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-PmElVRrT.js → Logs-DyfN4R5w.js} +2 -2
- package/src/assets/web-panel/assets/{MarkdownRenderer-BFiVKf5t.js → MarkdownRenderer-Bj62Aq0M.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-OW4jTXwx.js → Marketplace-CuuuAXUh.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-BEq2Ib4x.js → McpTools-948Fithv.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-Can_P2oK.js → Memory-D4PINvyy.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-DJ8R-dn3.js → MobileBridge-ECKMaLzX.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-B7kV9GOt.js → MobileProjects-CB5MAcvD.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-BfxamolS.js → Mtc-BRzIM3HJ.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-DHtuv7av.js → MtcAudit-CGeAXJGn.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-DLkLpvxc.js → Multisig-C_qJ-8K-.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-u4XtJTIt.js → NLProgramming-DAEyCn7T.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-BwuuPJLS.js → Notes-DmD3MEec.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-HEeu-E9v.js → NotificationSettings-Cv4Q3VC9.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-BNlpaFjH.js +1 -0
- package/src/assets/web-panel/assets/{Organization-Yh-czs3b.js → Organization-DqAFdz6p.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-DmE8mYVM.js → Overflow-8Ye9cIcE.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-CWVck8WN.js → P2P-755SfHoJ.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-DgFqekod.js → PdhVaultBrowser-CgZLiucX.js} +4 -4
- package/src/assets/web-panel/assets/{Permissions-BtJBVOHV.js → Permissions-C-vFF_rL.js} +3 -3
- package/src/assets/web-panel/assets/{PersonalDataHub-6VBObXzd.js → PersonalDataHub-Diz1oXM3.js} +5 -5
- package/src/assets/web-panel/assets/{Pipeline-D222FmqY.js → Pipeline-D4kIzsZG.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-Bi9FMikp.js → Privacy-QKLkSAUH.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-Bo52H47H.js → ProjectInit-I0S9o_RT.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-BPkesfOc.js → ProjectSettings-DdgV3-Ho.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-GynohSFX.js → Projects-BJHHegtj.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-DVdMg04n.js → Providers-uVa1zfbS.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-DqJCb595.js → QrScannerModal-YLVpOChR.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-J7loQbXi.js → QuickAsk-535AYH61.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-BI5aURVc.js → Recommend-C_P6eNSw.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-BN2sqGvz.js → RemoteSession-EXH1SbNj.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-BGOND-Fi.js → Reputation-Cxc7d3eU.js} +1 -1
- package/src/assets/web-panel/assets/{Row-77dfwaUk.js → Row-EDqJy-wS.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-FtBAxS3g.js → RssFeed-C03Xeg9_.js} +2 -2
- package/src/assets/web-panel/assets/{Search-BaYVLFb7.js → Search-DsIga9DK.js} +1 -1
- package/src/assets/web-panel/assets/{Security-LE3Vv6ab.js → Security-DgArMFc-.js} +3 -3
- package/src/assets/web-panel/assets/{Services-C5pP-Whz.js → Services-MooDpHBP.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-CLqKUVsF.js → Skeleton-B10P1Dr6.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-BPjN0SX5.js → Skills-DHLHEkLl.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-14jD70kg.js → Sla-D4RT7d4g.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-Dr9ij42W.js → SpeechSettings-D8u6F-LV.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-BzLHP7B8.js → SyncSettings-4nvNzRq8.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-YqV9b0rV.js → Tasks-CmCb8zNO.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-CxxAE4PK.js → Templates-CzESIa21.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-CRb3PcKJ.js → Tenant-Ch_N3p4d.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-CTzPpBaP.js → Terminal-BZccUf_X.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-DjFUj_hy.js → TimelineRenderer-FrKcNy_3.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-Bbb8tPvx.js → Tokens-4xvLpXfD.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-CSeWGM0W.js → Trigger-84UjyxXd.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-JgESMBo3.js → Trust-M6UtHnji.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-CiObLk0T.js → UkeySign-L_xEgtCg.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-CFEZaQ2x.js → VideoEditing-BLJCX9ru.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-DR8ZGDNn.js → Wallet-DwL6uJCj.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-DxZukvu7.js → WebAuthn-Bmn9pdzz.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-CKgSZQwn.js → WorkflowEditor-DSsZ5xG1.js} +1 -1
- package/src/assets/web-panel/assets/{chat-CTxEQE66.js → chat--FGNUaa8.js} +1 -1
- package/src/assets/web-panel/assets/{colors-CAjKMUu3.js → colors-DeuwNdqX.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-BXuz49at.js → compact-item-I4XKxRFU.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-CFN_Hwr9.js → createContext-RoD2p5Ba.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-ctnml4IW.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-BwoSBSfP.js → hasIn-BsvyddUM.js} +1 -1
- package/src/assets/web-panel/assets/{index-CB3kVd9c.js → index-0tRU1Sv-.js} +1 -1
- package/src/assets/web-panel/assets/{index-o9DpkZKf.js → index-4xHc2WjT.js} +1 -1
- package/src/assets/web-panel/assets/{index-BmQITjMU.js → index-B8-eGLN9.js} +1 -1
- package/src/assets/web-panel/assets/{index-DY-gBSm8.js → index-BS_uqSTa.js} +1 -1
- package/src/assets/web-panel/assets/{index-F2E5RCwz.js → index-BYEVBlCl.js} +1 -1
- package/src/assets/web-panel/assets/{index-CF9lWi1o.js → index-BcBM065G.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bu2P6u8m.js → index-BnrL4s-3.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dv7V2kg6.js → index-BrZPb0On.js} +1 -1
- package/src/assets/web-panel/assets/index-C7PN8mh1.js +1 -0
- package/src/assets/web-panel/assets/{index-DViK2bkv.js → index-CBazK4-7.js} +1 -1
- package/src/assets/web-panel/assets/{index-BmXpdcHI.js → index-CPS3zv1c.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bqv_Cray.js → index-CSrZiiAs.js} +1 -1
- package/src/assets/web-panel/assets/{index-B7kp-zRE.js → index-CVwZMt9Z.js} +1 -1
- package/src/assets/web-panel/assets/{index-B0QbLlWn.js → index-CdgKZYgm.js} +1 -1
- package/src/assets/web-panel/assets/{index-DjF5BOZx.js → index-CesTu01s.js} +1 -1
- package/src/assets/web-panel/assets/{index-CSmFby3Q.js → index-CiHlSuMl.js} +1 -1
- package/src/assets/web-panel/assets/{index-B2o_BBjg.js → index-CsLVac9n.js} +1 -1
- package/src/assets/web-panel/assets/{index-CehdwJ_Q.js → index-D1ONyBTW.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bj4hIiLW.js → index-D4IZsKbF.js} +1 -1
- package/src/assets/web-panel/assets/{index-_ZtCyUdz.js → index-D4P4vpmv.js} +1 -1
- package/src/assets/web-panel/assets/{index-B9yR7zqr.js → index-D6J8dz7X.js} +1 -1
- package/src/assets/web-panel/assets/{index-u9_DM3ZC.js → index-DChy2sHE.js} +1 -1
- package/src/assets/web-panel/assets/{index-C8er4W9u.js → index-DKUCl_Lk.js} +1 -1
- package/src/assets/web-panel/assets/{index-BK4ftQ4d.js → index-DRluW3_r.js} +1 -1
- package/src/assets/web-panel/assets/{index-B2tEnBPx.js → index-DWUmhNO-.js} +1 -1
- package/src/assets/web-panel/assets/{index-IY9bd5az.js → index-DXnpVGG3.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cp5y7lX_.js → index-DYOpAS6-.js} +1 -1
- package/src/assets/web-panel/assets/{index-T3MTE6jB.js → index-DiH-3cR2.js} +1 -1
- package/src/assets/web-panel/assets/{index-DxunxaTw.js → index-DlEfwgzr.js} +1 -1
- package/src/assets/web-panel/assets/index-KnbBJAO-.js +1 -0
- package/src/assets/web-panel/assets/{index-DTX9CJPx.js → index-R4St_zjR.js} +1 -1
- package/src/assets/web-panel/assets/{index-Tz5dheZa.js → index-ScgoDU9V.js} +1 -1
- package/src/assets/web-panel/assets/{index-DmkbAADP.js → index-UWdT_lty.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bw9s2d3c.js → index-VAlor744.js} +1 -1
- package/src/assets/web-panel/assets/{index-CN53dE_u.js → index-Wco_uvRo.js} +1 -1
- package/src/assets/web-panel/assets/{index-DpdDnZX_.js → index-ZgFED_Zd.js} +1 -1
- package/src/assets/web-panel/assets/{index-IahILygB.js → index-jaHeti4i.js} +3 -3
- package/src/assets/web-panel/assets/{index-Cgk0YEiq.js → index-rJDabtw4.js} +1 -1
- package/src/assets/web-panel/assets/{index-t2Ch_JKn.js → index-vRiGKIP0.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-BoiGJDoO.js → initDefaultProps-BHT0PacY.js} +1 -1
- package/src/assets/web-panel/assets/{motion-5eL4E0pA.js → motion-CBYsMtsC.js} +1 -1
- package/src/assets/web-panel/assets/{move-DjggDi_1.js → move-DnHfFV4K.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-Ce8Vo2T3.js → mtc-parser-DfGkRYrx.js} +1 -1
- package/src/assets/web-panel/assets/{omit-D1yOBaO2.js → omit-SjLcPQA9.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-8NLceQe8.js → pickAttrs-CCZHF4ep.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-CsIdBRmQ.js → placementArrow-DjCGn2sJ.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-GM5NE8En.js → responsiveObserve-BCFCl2on.js} +1 -1
- package/src/assets/web-panel/assets/{slide-44yj3u49.js → slide-DsfmuIZu.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-B8tqtWcX.js → statusUtils-hPKuJUia.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-NhDPBbyB.js → styleChecker-DOXKH7Kf.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-C8Qz1GtN.js → useFlexGapSupport-B_G7yqio.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-ClUv4kih.js → useFs-BXOTOm2l.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-BwkOVEh6.js → usePersonalDataHub-CRvie3g7.js} +1 -1
- package/src/assets/web-panel/assets/{vnode--gMF33R0.js → vnode-D9_zMmww.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-DXg3TqOP.js → zoom-C4tW03qI.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/data/changelog.json +52 -0
- package/src/lib/artifact-store.js +51 -3
- package/src/lib/bounded-artifact-file-read.js +131 -0
- package/src/lib/evolution/evolution-artifact-ports.js +235 -129
- package/src/lib/evolution/evolution-eval-cohort-enrollment.js +713 -47
- package/src/lib/evolution/evolution-eval-gate.js +146 -0
- package/src/lib/evolution/evolution-eval-launch-admission.js +168 -90
- package/src/lib/evolution/evolution-eval-ledger-capture.js +50 -0
- package/src/lib/evolution/evolution-eval-readonly-audit.js +106 -0
- package/src/lib/evolution/evolution-ledger-file-backend.js +20 -0
- package/src/lib/evolution/evolution-ledger-ports.js +59 -27
- package/src/lib/evolution/evolution-ledger-v2-journal.js +55 -18
- package/src/lib/evolution/evolution-workbench-file-resources.js +19 -1
- package/src/lib/evolution/rrsi-cohort-registration.js +275 -0
- package/src/lib/evolution/rrsi-contracts.js +742 -0
- package/src/lib/evolution/rrsi-data.js +196 -0
- package/src/lib/evolution/rrsi-evaluation-adapter.js +275 -0
- package/src/lib/evolution/rrsi-evaluation-variants.js +267 -0
- package/src/lib/evolution/rrsi-group-statistics.js +553 -0
- package/src/lib/evolution/rrsi-history-ledger-adapter.js +3286 -0
- package/src/lib/evolution/rrsi-installation-route-contracts.js +275 -0
- package/src/lib/evolution/rrsi-installation-route-reader.js +282 -0
- package/src/lib/evolution/rrsi-native-batch-evidence.js +520 -0
- package/src/lib/evolution/rrsi-native-eval-row-collector.js +538 -0
- package/src/lib/evolution/rrsi-native-evaluation-batch.js +547 -0
- package/src/lib/evolution/rrsi-native-evaluation-plan.js +431 -0
- package/src/lib/evolution/rrsi-native-group-statistics-plan.js +121 -0
- package/src/lib/evolution/rrsi-native-group-statistics.js +482 -0
- package/src/lib/evolution/rrsi-native-quality-receipt-contracts.js +321 -0
- package/src/lib/evolution/rrsi-native-quality-receipt.js +256 -0
- package/src/lib/evolution/rrsi-native-statistics-protocol.js +330 -0
- package/src/lib/evolution/rrsi-observed-text-index.js +978 -0
- package/src/lib/evolution/rrsi-parent-binding.js +290 -0
- package/src/lib/evolution/rrsi-pm-execution-bridge.js +500 -0
- package/src/lib/evolution/rrsi-pm-training-mapping.js +134 -0
- package/src/lib/evolution/rrsi-preparation-contracts.js +213 -0
- package/src/lib/evolution/rrsi-registry-history-binding.js +193 -0
- package/src/lib/evolution/rrsi-registry-runtime-policy.js +648 -0
- package/src/lib/evolution/rrsi-registry-store-policy.js +1271 -0
- package/src/lib/evolution/rrsi-runtime-composition.js +79 -0
- package/src/lib/evolution/rrsi-selector.js +434 -0
- package/src/lib/evolution/rrsi-statistics-simulation.js +354 -0
- package/src/lib/evolution/rrsi-tenant-index-anchor-contracts.js +223 -0
- package/src/lib/evolution/rrsi-tenant-index-anchor-history.js +157 -0
- package/src/lib/evolution/skill-candidate-registry.js +216 -29
- package/src/lib/evolution/skill-registry-maintenance.js +80 -0
- package/src/lib/evolution/skill-registry-writer-control.js +138 -0
- package/src/lib/evolution/skill-release-registry.js +414 -169
- package/src/lib/formal-quality-eval-runtime.js +2 -14
- package/src/lib/goal-store.js +225 -16
- package/src/lib/process-execution-broker/windows-native-evaluator-capabilities.js +291 -30
- package/src/lib/record-replay/skill-recorder.js +38 -3
- package/src/lib/remote-read-loop-guard.js +227 -24
- package/src/lib/scheduler-kernel/authority-resolver.js +12 -163
- package/src/lib/scheduler-kernel/contract.js +27 -414
- package/src/lib/scheduler-kernel/runtime.js +21 -823
- package/src/lib/scheduler-kernel/service.js +11 -328
- package/src/lib/scheduler-kernel/source-locator-path.js +7 -142
- package/src/lib/scheduler-kernel/store.js +67 -5931
- package/src/lib/secure-fs.js +16 -1314
- package/src/lib/task-progress-tracker.js +6 -1
- package/src/lib/with-file-lock.js +122 -20
- package/src/runtime/agent-core.js +71 -23
- package/src/assets/web-panel/assets/ChatBubbleRenderer-fcc_Tvqu.js +0 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-BtvN-Qwh.js +0 -1
- package/src/assets/web-panel/assets/devWarning-CfB8DxT2.js +0 -1
- package/src/assets/web-panel/assets/index-CCsRfd0k.js +0 -1
- package/src/assets/web-panel/assets/index-CsmiZIQ4.js +0 -1
package/src/data/changelog.json
CHANGED
|
@@ -1,6 +1,58 @@
|
|
|
1
1
|
{
|
|
2
2
|
"source": "CHANGELOG.md",
|
|
3
3
|
"releases": [
|
|
4
|
+
{
|
|
5
|
+
"productVersion": null,
|
|
6
|
+
"cliVersion": "0.166.93",
|
|
7
|
+
"cliVersions": ["0.166.93"],
|
|
8
|
+
"date": null,
|
|
9
|
+
"title": "",
|
|
10
|
+
"sections": [
|
|
11
|
+
{
|
|
12
|
+
"heading": "Fixed - cc CLI 0.166.93: bounded investigations and release evidence",
|
|
13
|
+
"body": "- Bound repeated IDE evidence inspections and all phases of authenticated\n artifact byte reads, including directory, index, identity, and history checks.\n- Publish Session Core `0.3.18` and Context Memory Kernel `0.1.8` before CLI\n `0.166.93`, with exact dependency\n pins and registry-only readback of the published child package.\n- Include organization goal acceptance, periodic monitoring, memory, risk\n review, transfer, workflow, and notification services in Session Core.\n- Register the organization goal memory adapter as a Kernel capability client,\n preserving the single canonical memory writer in the published inventory.\n- Support immediate transactions and nested savepoints in desktop SQLite\n compatibility adapters, and verify notification reads after login and denial\n after logout with a real Electron session.\n- Correct browser timer and synchronous subscription types in goal memory\n panels and retain their disposal behavior.\n- Install exact-checkout dependencies in the accessibility/performance\n aggregate job before verifying Linux, Windows, and macOS evidence.\n- Pair VS Code `0.37.138` and JetBrains `0.4.156` after CLI publication;\n release desktop/mobile `v5.0.3.140` after both IDE release stages."
|
|
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": "Fixed - cc CLI 0.166.92: private storage and release regression repairs",
|
|
26
|
+
"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."
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"productVersion": null,
|
|
32
|
+
"cliVersion": "0.166.92",
|
|
33
|
+
"cliVersions": ["0.166.92"],
|
|
34
|
+
"date": null,
|
|
35
|
+
"title": "",
|
|
36
|
+
"sections": [
|
|
37
|
+
{
|
|
38
|
+
"heading": "Added - CLI 0.166.92: organization workflows and authenticated registry reads",
|
|
39
|
+
"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."
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"productVersion": null,
|
|
45
|
+
"cliVersion": "0.166.92",
|
|
46
|
+
"cliVersions": ["0.166.92"],
|
|
47
|
+
"date": "2026-10-07",
|
|
48
|
+
"title": "",
|
|
49
|
+
"sections": [
|
|
50
|
+
{
|
|
51
|
+
"heading": "Upgrade - CLI 0.166.92 and product v5.0.3.139 candidates (2026-10-07)",
|
|
52
|
+
"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."
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
},
|
|
4
56
|
{
|
|
5
57
|
"productVersion": null,
|
|
6
58
|
"cliVersion": "0.166.91",
|
|
@@ -24,7 +24,9 @@ import fs from "fs";
|
|
|
24
24
|
import os from "os";
|
|
25
25
|
import path from "path";
|
|
26
26
|
import crypto from "crypto";
|
|
27
|
+
import { types as utilTypes } from "node:util";
|
|
27
28
|
import { withFileLock } from "./with-file-lock.js";
|
|
29
|
+
import { readBoundedArtifactFile } from "./bounded-artifact-file-read.js";
|
|
28
30
|
|
|
29
31
|
export const ARTIFACT_KINDS = Object.freeze([
|
|
30
32
|
"report",
|
|
@@ -144,6 +146,39 @@ function normalizeLineage(lineage) {
|
|
|
144
146
|
return normalized;
|
|
145
147
|
}
|
|
146
148
|
|
|
149
|
+
function integrityReadBounds(value) {
|
|
150
|
+
if (
|
|
151
|
+
!value ||
|
|
152
|
+
typeof value !== "object" ||
|
|
153
|
+
utilTypes.isProxy(value) ||
|
|
154
|
+
Object.getPrototypeOf(value) !== Object.prototype ||
|
|
155
|
+
Reflect.ownKeys(value).length !== 2
|
|
156
|
+
)
|
|
157
|
+
throw new TypeError(
|
|
158
|
+
"artifact integrity bounds require exact own data fields",
|
|
159
|
+
);
|
|
160
|
+
const values = Object.fromEntries(
|
|
161
|
+
["expectedSize", "maximumBytes"].map((name) => {
|
|
162
|
+
const field = Object.getOwnPropertyDescriptor(value, name);
|
|
163
|
+
if (!field?.enumerable || !("value" in field))
|
|
164
|
+
throw new TypeError("artifact integrity bounds cannot use accessors");
|
|
165
|
+
return [name, field.value];
|
|
166
|
+
}),
|
|
167
|
+
);
|
|
168
|
+
if (
|
|
169
|
+
!Number.isSafeInteger(values.expectedSize) ||
|
|
170
|
+
!Number.isSafeInteger(values.maximumBytes) ||
|
|
171
|
+
values.expectedSize < 0 ||
|
|
172
|
+
values.maximumBytes < 1 ||
|
|
173
|
+
values.expectedSize > values.maximumBytes ||
|
|
174
|
+
values.maximumBytes > MAX_ARTIFACT_BYTES
|
|
175
|
+
)
|
|
176
|
+
throw new TypeError(
|
|
177
|
+
"artifact integrity bounds exceed finite deliverable limits",
|
|
178
|
+
);
|
|
179
|
+
return Object.freeze(values);
|
|
180
|
+
}
|
|
181
|
+
|
|
147
182
|
export class ArtifactStore {
|
|
148
183
|
constructor({
|
|
149
184
|
dir = null,
|
|
@@ -449,8 +484,14 @@ export class ArtifactStore {
|
|
|
449
484
|
return path.join(this._filesDir(), entry.file);
|
|
450
485
|
}
|
|
451
486
|
|
|
452
|
-
/**
|
|
453
|
-
verifyIntegrity(idOrEntry) {
|
|
487
|
+
/** Explicit bounds constrain artifact bytes only; id lookup may still read the index. */
|
|
488
|
+
verifyIntegrity(idOrEntry, bounds) {
|
|
489
|
+
if (arguments.length > 2)
|
|
490
|
+
throw new TypeError(
|
|
491
|
+
"artifact integrity accepts at most one bounds object",
|
|
492
|
+
);
|
|
493
|
+
// An explicitly supplied invalid value must never select the legacy raw read.
|
|
494
|
+
const bounded = arguments.length > 1 ? integrityReadBounds(bounds) : null;
|
|
454
495
|
const entry =
|
|
455
496
|
typeof idOrEntry === "object" && idOrEntry
|
|
456
497
|
? idOrEntry
|
|
@@ -465,7 +506,14 @@ export class ArtifactStore {
|
|
|
465
506
|
}
|
|
466
507
|
let body;
|
|
467
508
|
try {
|
|
468
|
-
|
|
509
|
+
const target = this.storedPath(entry);
|
|
510
|
+
body = bounded
|
|
511
|
+
? readBoundedArtifactFile(
|
|
512
|
+
path.resolve(target),
|
|
513
|
+
bounded.expectedSize,
|
|
514
|
+
bounded.maximumBytes,
|
|
515
|
+
)
|
|
516
|
+
: fs.readFileSync(target);
|
|
469
517
|
} catch {
|
|
470
518
|
return {
|
|
471
519
|
ok: false,
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/** A bounded canonical-path read, not a persistent identity or authority grant. */
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { readBoundedDescriptor } from "./evolution/bounded-descriptor-read.js";
|
|
5
|
+
import { withEvolutionFileIdentity } from "./evolution/evolution-file-identity.js";
|
|
6
|
+
import { artifactPhysicalIdentity } from "./evolution/evolution-artifact-identity.js";
|
|
7
|
+
|
|
8
|
+
export const ARTIFACT_BOUNDED_READ_FAILED_CODE =
|
|
9
|
+
"CC_ARTIFACT_BOUNDED_READ_FAILED";
|
|
10
|
+
const FIELDS = Object.freeze([
|
|
11
|
+
"dev",
|
|
12
|
+
"ino",
|
|
13
|
+
"mode",
|
|
14
|
+
"uid",
|
|
15
|
+
"gid",
|
|
16
|
+
"nlink",
|
|
17
|
+
"size",
|
|
18
|
+
"mtimeNs",
|
|
19
|
+
"ctimeNs",
|
|
20
|
+
]);
|
|
21
|
+
const MUTATION_FIELDS = Object.freeze(
|
|
22
|
+
FIELDS.filter((name) => name !== "dev" && name !== "ino"),
|
|
23
|
+
);
|
|
24
|
+
const DIRECTORY_FS = Object.freeze({
|
|
25
|
+
constants: fs.constants,
|
|
26
|
+
realpathSync: fs.realpathSync,
|
|
27
|
+
lstatSync: (...args) => fs.lstatSync(...args),
|
|
28
|
+
fstatSync: (...args) => fs.fstatSync(...args),
|
|
29
|
+
closeSync: (...args) => fs.closeSync(...args),
|
|
30
|
+
openSync: (target, flags) =>
|
|
31
|
+
fs.openSync(
|
|
32
|
+
target,
|
|
33
|
+
flags | (fs.constants.O_NONBLOCK || 0) | (fs.constants.O_DIRECTORY || 0),
|
|
34
|
+
),
|
|
35
|
+
});
|
|
36
|
+
const canonical = (value) =>
|
|
37
|
+
process.platform === "win32" ? value.toLowerCase() : value;
|
|
38
|
+
function fail(message, cause) {
|
|
39
|
+
const error = new Error(message, cause ? { cause } : undefined);
|
|
40
|
+
error.code = ARTIFACT_BOUNDED_READ_FAILED_CODE;
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
function safeStat(stat, expectedSize, maximumBytes, label) {
|
|
44
|
+
if (FIELDS.some((name) => typeof stat?.[name] !== "bigint"))
|
|
45
|
+
fail(`${label} requires full-precision stat fields`);
|
|
46
|
+
if (!stat.isFile() || stat.isSymbolicLink() || stat.nlink !== 1n)
|
|
47
|
+
fail(`${label} must be a regular, non-symlink, single-link file`);
|
|
48
|
+
if (
|
|
49
|
+
stat.size < 0n ||
|
|
50
|
+
stat.size > BigInt(maximumBytes) ||
|
|
51
|
+
stat.size !== BigInt(expectedSize)
|
|
52
|
+
)
|
|
53
|
+
fail(`${label} differs from its bounded expected size`);
|
|
54
|
+
}
|
|
55
|
+
function sameMetadata(left, right) {
|
|
56
|
+
return (
|
|
57
|
+
MUTATION_FIELDS.every((name) => left[name] === right[name]) &&
|
|
58
|
+
artifactPhysicalIdentity(left).birthtimeMs ===
|
|
59
|
+
artifactPhysicalIdentity(right).birthtimeMs
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
function sameStat(left, right) {
|
|
63
|
+
return (
|
|
64
|
+
left.dev === right.dev &&
|
|
65
|
+
left.ino === right.ino &&
|
|
66
|
+
sameMetadata(left, right)
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** Read one stable window only. Callers retain hash/signature and root checks. */
|
|
71
|
+
export function readBoundedArtifactFile(target, expectedSize, maximumBytes) {
|
|
72
|
+
if (
|
|
73
|
+
arguments.length !== 3 ||
|
|
74
|
+
typeof target !== "string" ||
|
|
75
|
+
!path.isAbsolute(target) ||
|
|
76
|
+
path.resolve(target) !== target ||
|
|
77
|
+
!Number.isSafeInteger(expectedSize) ||
|
|
78
|
+
!Number.isSafeInteger(maximumBytes) ||
|
|
79
|
+
expectedSize < 0 ||
|
|
80
|
+
maximumBytes < 1 ||
|
|
81
|
+
expectedSize > maximumBytes
|
|
82
|
+
)
|
|
83
|
+
throw new TypeError(
|
|
84
|
+
"bounded artifact read requires a canonical path and finite size bounds",
|
|
85
|
+
);
|
|
86
|
+
try {
|
|
87
|
+
return withEvolutionFileIdentity(DIRECTORY_FS, target, (samePathHandle) => {
|
|
88
|
+
const before = fs.lstatSync(target, { bigint: true });
|
|
89
|
+
safeStat(before, expectedSize, maximumBytes, "artifact path");
|
|
90
|
+
if (canonical(fs.realpathSync.native(target)) !== canonical(target))
|
|
91
|
+
fail("artifact path is not physically canonical");
|
|
92
|
+
const fd = fs.openSync(
|
|
93
|
+
target,
|
|
94
|
+
fs.constants.O_RDONLY |
|
|
95
|
+
(fs.constants.O_NOFOLLOW || 0) |
|
|
96
|
+
(fs.constants.O_NONBLOCK || 0),
|
|
97
|
+
);
|
|
98
|
+
try {
|
|
99
|
+
const opened = fs.fstatSync(fd, { bigint: true });
|
|
100
|
+
safeStat(opened, expectedSize, maximumBytes, "artifact descriptor");
|
|
101
|
+
if (!samePathHandle(before, opened) || !sameMetadata(before, opened))
|
|
102
|
+
fail("artifact path and descriptor identities differ");
|
|
103
|
+
const bytes = readBoundedDescriptor(
|
|
104
|
+
fs,
|
|
105
|
+
fd,
|
|
106
|
+
Number(opened.size),
|
|
107
|
+
maximumBytes,
|
|
108
|
+
);
|
|
109
|
+
const closed = fs.fstatSync(fd, { bigint: true });
|
|
110
|
+
const after = fs.lstatSync(target, { bigint: true });
|
|
111
|
+
safeStat(closed, expectedSize, maximumBytes, "artifact descriptor");
|
|
112
|
+
safeStat(after, expectedSize, maximumBytes, "artifact path");
|
|
113
|
+
if (!sameStat(opened, closed))
|
|
114
|
+
fail("artifact descriptor changed during bounded read");
|
|
115
|
+
if (
|
|
116
|
+
!sameStat(before, after) ||
|
|
117
|
+
!samePathHandle(after, closed) ||
|
|
118
|
+
!sameMetadata(after, closed) ||
|
|
119
|
+
canonical(fs.realpathSync.native(target)) !== canonical(target)
|
|
120
|
+
)
|
|
121
|
+
fail("artifact pathname changed during bounded read");
|
|
122
|
+
return bytes;
|
|
123
|
+
} finally {
|
|
124
|
+
fs.closeSync(fd);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
} catch (cause) {
|
|
128
|
+
if (cause?.code === ARTIFACT_BOUNDED_READ_FAILED_CODE) throw cause;
|
|
129
|
+
fail("artifact bounded descriptor read failed", cause);
|
|
130
|
+
}
|
|
131
|
+
}
|