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.
- package/README.md +15 -13
- package/package.json +4 -4
- 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-CZzXRe1-.js → AIOps-C74YzqwJ.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-_AZfbW1Q.js → ActionButton-TFef1hOE.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-CzaUx_wv.js → Analytics-CYsWpkkU.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-xHEeeD-m.js → AppLayout-CFf9kjwu.js} +4 -4
- package/src/assets/web-panel/assets/{Artifacts-DmTbtudE.js → Artifacts-TQqa94YO.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-Cn4ng4fo.js → Audit-B79ayqfS.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-DLUY1VD2.js → BackgroundAgents-pjkHfLP9.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-B2v--wB6.js → Backup-CE6A-t_r.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-Bgih7yAv.js → BaseInput-CwcgWMBY.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-1MiiA3yA.js → Chat-BIkDNesY.js} +6 -6
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-CPLynmbb.js → ChatBubbleRenderer-DgaokYts.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-DsyBa_NO.js → Checkbox-MbypIy5V.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-B7WCFx9H.js → Codegen-DiFHWDnt.js} +1 -1
- package/src/assets/web-panel/assets/{Col-D2x4GBGm.js → Col-BNMlYMso.js} +1 -1
- package/src/assets/web-panel/assets/{Community-Rnwg9nea.js → Community-B3HVyHOX.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-BPczlrRh.js → Compact-C7hlAubb.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-Br1L_wGU.js → Compliance-PaXZu6sE.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-DlsWB_oS.js → Cowork-BGiojbm-.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-BWo_KGpG.js → Cron-Bmr-1QAx.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-Cug7N8ge.js → Crosschain-BwUvWCVd.js} +1 -1
- package/src/assets/web-panel/assets/{DID-CMbyOZJN.js → DID-k_4QZocW.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-C4dl_UaE.js → Dashboard-_ieRo2C5.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-CBrC7M-9.js → Dropdown-DYHh6T27.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-DTq7tU4b.js → EmailListRenderer-BNlQcWQX.js} +1 -1
- package/src/assets/web-panel/assets/{EvolutionSettings-DWP3csxS.js → EvolutionSettings-DIkZ6U2D.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-DZl7zuv_.js → FamilyGuardDashboard-Dq7qSr0P.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-W-GSlVK5.js → Federation-C64e3Cbx.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-DMB7xYFV.js → FormItemContext-D-GE2vUa.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-DNv8GEoq.js → GenericCardRenderer-DO3B2gis.js} +1 -1
- package/src/assets/web-panel/assets/{Git-BZ0Bbzw6.js → Git-0ETirIQH.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-BNEdcOM5.js → Governance-C9fnRygX.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-C8249gIz.js → Inference-CLJ9RTsK.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-ngzebU3e.js → KnowledgeGraph-D3C_GxrN.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-CP15th-f.js → Logs-C5ctGbkN.js} +2 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-Ce-eWK3j.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-CaH59OsY.js → Marketplace-GF_t6hJ_.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-C07vnJev.js → McpTools-BGsGzgQs.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-CqAOkVAS.js → Memory-CcrY2A0j.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-qp7mZimq.js → MobileBridge-Bi4T0RlS.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-DKhbqvTw.js → MobileProjects-DvjEGyvf.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-CRYCnWXv.js → Mtc-DL77Vf-k.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-Z08IrKws.js → MtcAudit-CDy_Uswb.js} +4 -4
- package/src/assets/web-panel/assets/{Multisig-BWdatUnH.js → Multisig-DL0BAO_c.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-BKWiCZ_m.js → NLProgramming-B-woh5IR.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-Bgpzk3sm.js → Notes-CEFVCxk7.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-DvtZEktR.js → NotificationSettings-BqPPMuAP.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-CBcy0szc.js → OrderTableRenderer-GUKQ1xwp.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-DRRL6vW1.js → Organization-B1gX8jlr.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-COmfB8Ns.js → Overflow-CeMxuUZy.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-BqMq_DSa.js → P2P-B5aIRWwJ.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-BX7iNvle.js → PdhVaultBrowser-6rYgejd4.js} +4 -4
- package/src/assets/web-panel/assets/{Permissions-DzYkjmV_.js → Permissions-CqCp2SIl.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-BBTcxBbN.js → PersonalDataHub-BsA7DJWW.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-eRkYFSbO.js → Pipeline-CiW6HeZh.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-Ch7IFKBh.js → Privacy-DckUOLYq.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-Ci8EcBYg.js → ProjectInit-CZppOOYR.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-B4lYHFbI.js → ProjectSettings-B9QPzhDU.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-zkE5cCo_.js → Projects-BErjjGha.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-BKDVD3_e.js → Providers-DehU6Qiz.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-BromrHlf.js → QrScannerModal-E1SUvv1m.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-CCgoY1gR.js → QuickAsk-COWFxyH3.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-DCPZvpq7.js → Recommend-D26pWKxX.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-DPnFP8HU.js → RemoteSession-DCOIaId3.js} +3 -3
- package/src/assets/web-panel/assets/{Reputation-l6r8ytAs.js → Reputation-DT_AHGAR.js} +1 -1
- package/src/assets/web-panel/assets/{Row-ke9Mk1cx.js → Row-B50S-1nl.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-DQOEzUEn.js → RssFeed-BaBnHg3Q.js} +2 -2
- package/src/assets/web-panel/assets/{Search-BqgA0aUz.js → Search-BVdnLuuS.js} +1 -1
- package/src/assets/web-panel/assets/{Security-FeGD_jqV.js → Security-BnacH74J.js} +3 -3
- package/src/assets/web-panel/assets/{Services-4kiYYAjZ.js → Services-CxM08Zch.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-BbU8Xegs.js → Skeleton-DE7CIc1N.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-Dl2bUMUL.js → Skills-CGI0SJmf.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-xRGALeaZ.js → Sla-DpEzPcqc.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-DZfd4RDm.js → SpeechSettings-CTmnmMHn.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-BRtCV9Ga.js → SyncSettings-Dxgrd9hd.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-DVRQklfG.js → Tasks-CW4slS0A.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-BbhE5jt5.js → Templates-DxvGWDgB.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-qXPDNKbK.js → Tenant-_Q0o2tNK.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-CV48Ks7E.js → Terminal-BTZn8pow.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-BLGfJIDr.js → TimelineRenderer-CauL0KFe.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-7G9H6Hrt.js → Tokens-CDoM2qeT.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger--F64N11F.js → Trigger-B-QYGEU7.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-Cq1r-D_y.js → Trust-BD6XJHT-.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-Dqyu4RVh.js → UkeySign-x4TFwCy0.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-DuFmWH_B.js → VideoEditing-t3imBK_0.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-C3mg7EWP.js → Wallet-BCfkWwNC.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-CDK-Aj_X.js → WebAuthn-WH314Mdm.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor--K7K-T1F.js → WorkflowEditor-jUlcjrUg.js} +1 -1
- package/src/assets/web-panel/assets/{chat-BQDcS6VP.js → chat-Dg3VASTL.js} +1 -1
- package/src/assets/web-panel/assets/{colors-BKxJL2-T.js → colors-BNvmBRKE.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-CFjQAMbY.js → compact-item-BGOfoqf4.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-DbgCsdQd.js → createContext-BNQeqKAs.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-B7_ypN1G.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-BhkaOBNv.js → hasIn-Bg3AjCrq.js} +1 -1
- package/src/assets/web-panel/assets/{index-DvWWFJHJ.js → index--I3UF5t1.js} +1 -1
- package/src/assets/web-panel/assets/{index-DJ2OiRvh.js → index-2D04Zltx.js} +3 -3
- package/src/assets/web-panel/assets/{index-BuWPqSGT.js → index-60AnjUTX.js} +1 -1
- package/src/assets/web-panel/assets/{index-D2Zb-Kd1.js → index-7QJUWemf.js} +1 -1
- package/src/assets/web-panel/assets/{index-C0DzhUOX.js → index-B--0QM0S.js} +1 -1
- package/src/assets/web-panel/assets/index-B-jSKJK6.js +1 -0
- package/src/assets/web-panel/assets/{index-COGy6wXn.js → index-B0mgngoB.js} +1 -1
- package/src/assets/web-panel/assets/{index-bMX8BBLE.js → index-BBCMulQ-.js} +1 -1
- package/src/assets/web-panel/assets/{index-CE506mgj.js → index-BSNhW95G.js} +1 -1
- package/src/assets/web-panel/assets/{index-CoOu7sdP.js → index-B_JmInC0.js} +1 -1
- package/src/assets/web-panel/assets/{index-B4LlAJqc.js → index-BaPvEvB4.js} +1 -1
- package/src/assets/web-panel/assets/{index-CRtUDiXx.js → index-Bkz1tgFR.js} +1 -1
- package/src/assets/web-panel/assets/{index-Du_SxxBY.js → index-BmTacaQV.js} +1 -1
- package/src/assets/web-panel/assets/{index-CSUDlsIr.js → index-CCFZN66A.js} +1 -1
- package/src/assets/web-panel/assets/{index-3uR0ThJO.js → index-COol3xfA.js} +1 -1
- package/src/assets/web-panel/assets/{index-DmYK9Tqt.js → index-CY8cRKHR.js} +1 -1
- package/src/assets/web-panel/assets/{index-T9ka3Xj3.js → index-Cbp-wp-U.js} +1 -1
- package/src/assets/web-panel/assets/{index-CB4oHynY.js → index-Co_LnCWD.js} +1 -1
- package/src/assets/web-panel/assets/{index-DEwHywz9.js → index-Cx2EXRfr.js} +1 -1
- package/src/assets/web-panel/assets/{index-CUs7XpUO.js → index-D-mSvCQK.js} +1 -1
- package/src/assets/web-panel/assets/{index-BRqlCTrz.js → index-D072oLjp.js} +1 -1
- package/src/assets/web-panel/assets/{index-sKfUUldY.js → index-D6UqK83L.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dhfa_BIl.js → index-DF_FKSVH.js} +1 -1
- package/src/assets/web-panel/assets/{index-D9sVcw6v.js → index-DLwEXRrb.js} +1 -1
- package/src/assets/web-panel/assets/{index-3djsY75k.js → index-DO0VlNtc.js} +1 -1
- package/src/assets/web-panel/assets/{index-BfGGsAU7.js → index-DS04wRll.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dn2QSsuI.js → index-DYn5DnDk.js} +1 -1
- package/src/assets/web-panel/assets/{index-D-Yh3-1z.js → index-D_O2ZjPk.js} +1 -1
- package/src/assets/web-panel/assets/{index-BNjYPJNU.js → index-DcCnO0RU.js} +1 -1
- package/src/assets/web-panel/assets/{index-DP1NrM9J.js → index-Dkp-okWa.js} +1 -1
- package/src/assets/web-panel/assets/{index-DdcrixaQ.js → index-OUFoxUgH.js} +1 -1
- package/src/assets/web-panel/assets/index-P4FXZJqI.js +1 -0
- package/src/assets/web-panel/assets/{index-7BY44UEv.js → index-Wo0f2iqb.js} +1 -1
- package/src/assets/web-panel/assets/{index-DjmVlpap.js → index-ZD5Kd8tx.js} +1 -1
- package/src/assets/web-panel/assets/{index-3YutaXnp.js → index-fOwii3LP.js} +1 -1
- package/src/assets/web-panel/assets/{index-aPdVzagA.js → index-hG7jXGEW.js} +1 -1
- package/src/assets/web-panel/assets/{index-De7daEnc.js → index-pVdQieac.js} +1 -1
- package/src/assets/web-panel/assets/{index-CJoXgJ2N.js → index-uH2LnAs_.js} +1 -1
- package/src/assets/web-panel/assets/{index-DFt48Z-x.js → index-xzaUx19r.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-wrqabmui.js → initDefaultProps-B8PN9AxJ.js} +1 -1
- package/src/assets/web-panel/assets/{motion-BoyB3ilP.js → motion-BHivfw5Q.js} +1 -1
- package/src/assets/web-panel/assets/{move-Cq31cSFE.js → move-B0QU5nDd.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-BkxNt-8H.js → mtc-parser-DRwRM3PE.js} +1 -1
- package/src/assets/web-panel/assets/{omit-DofGni53.js → omit-SHt2rV2p.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-BnluLL16.js → pickAttrs-CcmDlEb2.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-C-yegJSP.js → placementArrow-DYatmXDS.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-CD3ziNhu.js → responsiveObserve-B7qrsXq5.js} +1 -1
- package/src/assets/web-panel/assets/{slide-ToZO4gQ1.js → slide-BRGhlOWd.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-DFVmDmVl.js → statusUtils-CT-7NXsQ.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-De0Y8g1O.js → styleChecker-rZdw_Yyp.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-wBKIYFKX.js → useFlexGapSupport-D8YNIP4P.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-CP9nmUMJ.js → useFs-B8pt0Gu-.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-vFGrVDyp.js → usePersonalDataHub-VMmYM1tt.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-BcBIjvjH.js → vnode-UNDuoPoq.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-DnXDAQxA.js → zoom-dN-u667S.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/command-help-index.json +1 -1
- package/src/commands/agent-process-ownership.js +121 -0
- package/src/commands/agent.js +2 -0
- package/src/commands/hub.js +86 -9
- package/src/data/changelog.json +54 -2
- package/src/lib/audit-logger.js +46 -20
- package/src/lib/checkpoint-restore-saga.js +11 -1
- package/src/lib/eval/verify01-host-evidence.js +36 -3
- package/src/lib/evolution/evolution-artifact-ports.js +26 -0
- 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 +3261 -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-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-store-policy.js +1191 -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/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 +399 -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/index.js +91 -1
- package/src/lib/process-execution-broker/platform-sandbox.js +42 -0
- package/src/lib/process-execution-broker/windows-native-evaluator-capabilities.js +757 -0
- package/src/lib/process-execution-broker/windows-native-evaluator.js +316 -0
- package/src/lib/process-execution-broker/windows-sandbox-helper.dll +0 -0
- package/src/lib/process-execution-broker/windows-sandbox-helper.exe +0 -0
- package/src/lib/process-execution-broker/windows-sandbox.cs +383 -11
- package/src/lib/record-replay/skill-recorder.js +38 -3
- 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/with-file-lock.js +122 -20
- package/src/assets/web-panel/assets/MarkdownRenderer-CW3B3JDq.js +0 -1
- package/src/assets/web-panel/assets/devWarning-DlIv9Mbc.js +0 -1
- package/src/assets/web-panel/assets/index-BC972Grv.js +0 -1
- package/src/assets/web-panel/assets/index-CVifyQqL.js +0 -1
|
@@ -22,13 +22,54 @@
|
|
|
22
22
|
* lock convoys.
|
|
23
23
|
*
|
|
24
24
|
* @param {string} targetPath the file being guarded (lock is `${targetPath}.lock`)
|
|
25
|
-
* @param {(ctx:{locked:boolean,waitMs:number,attempts:number,publishReleaseAfterPathRemoved:(pendingPath:string)=>boolean})=>T} fn
|
|
25
|
+
* @param {(ctx:{locked:boolean,waitMs:number,attempts:number,assertOwnership:()=>true,publishReleaseAfterPathRemoved:(pendingPath:string)=>boolean})=>T} fn
|
|
26
26
|
* critical section; `publishReleaseAfterPathRemoved` lets a transaction
|
|
27
27
|
* publish an exact, contender-completable handoff before its final atomic
|
|
28
28
|
* rename removes a uniquely named staging path
|
|
29
29
|
* @returns {T} whatever `fn` returns
|
|
30
30
|
*/
|
|
31
31
|
export function withFileLock(targetPath, fn, opts = {}) {
|
|
32
|
+
const operation = runLocked(targetPath, fn, opts, false);
|
|
33
|
+
const sleep = opts._sleep ?? sleepSync;
|
|
34
|
+
let step = operation.next();
|
|
35
|
+
while (!step.done) {
|
|
36
|
+
try {
|
|
37
|
+
sleep(step.value.waitMs);
|
|
38
|
+
} catch (error) {
|
|
39
|
+
step = operation.throw(error);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
step = operation.next();
|
|
43
|
+
}
|
|
44
|
+
return step.value;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Hold the same lock through asynchronous callback settlement and cleanup.
|
|
49
|
+
* Early publishReleaseAfterPathRemoved handoffs are unavailable (return false)
|
|
50
|
+
* because no contender may enter while the asynchronous body is still active.
|
|
51
|
+
*/
|
|
52
|
+
export async function withFileLockAsync(targetPath, fn, opts = {}) {
|
|
53
|
+
const operation = runLocked(targetPath, fn, opts, true);
|
|
54
|
+
const sleep = opts._sleep ?? sleepAsync;
|
|
55
|
+
let step = operation.next();
|
|
56
|
+
while (!step.done) {
|
|
57
|
+
let value;
|
|
58
|
+
try {
|
|
59
|
+
value = Object.hasOwn(step.value, "callbackResult")
|
|
60
|
+
? await step.value.callbackResult
|
|
61
|
+
: await sleep(step.value.waitMs);
|
|
62
|
+
} catch (error) {
|
|
63
|
+
step = operation.throw(error);
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
step = operation.next(value);
|
|
67
|
+
}
|
|
68
|
+
return step.value;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// One acquire/reclaim/release state machine; only waiting differs by API.
|
|
72
|
+
function* runLocked(targetPath, fn, opts, asynchronous) {
|
|
32
73
|
const {
|
|
33
74
|
timeoutMs = 2000,
|
|
34
75
|
staleMs = 30000,
|
|
@@ -38,7 +79,6 @@ export function withFileLock(targetPath, fn, opts = {}) {
|
|
|
38
79
|
yieldAfterReleaseMs = 0,
|
|
39
80
|
_fs = defaultFs,
|
|
40
81
|
_now = () => Date.now(),
|
|
41
|
-
_sleep = sleepSync,
|
|
42
82
|
_random = Math.random,
|
|
43
83
|
_isProcessAlive = isProcessAlive,
|
|
44
84
|
_ownerToken = () => randomUUID(),
|
|
@@ -61,6 +101,9 @@ export function withFileLock(targetPath, fn, opts = {}) {
|
|
|
61
101
|
let lastOwnerObservation = null;
|
|
62
102
|
let retryAttempt = 0;
|
|
63
103
|
let releasePublished = false;
|
|
104
|
+
let bodyActive = false;
|
|
105
|
+
let ownershipLost = false;
|
|
106
|
+
let directoryIdentity = null;
|
|
64
107
|
const deadline = _now() + timeoutMs;
|
|
65
108
|
|
|
66
109
|
for (;;) {
|
|
@@ -74,16 +117,15 @@ export function withFileLock(targetPath, fn, opts = {}) {
|
|
|
74
117
|
if (
|
|
75
118
|
failIfUnavailable &&
|
|
76
119
|
isTransientLockError(error) &&
|
|
77
|
-
waitForRetry({
|
|
120
|
+
(yield* waitForRetry({
|
|
78
121
|
_now,
|
|
79
|
-
_sleep,
|
|
80
122
|
_random,
|
|
81
123
|
deadline,
|
|
82
124
|
retryAttempt: retryAttempt++,
|
|
83
125
|
retryMs,
|
|
84
126
|
maxRetryMs,
|
|
85
127
|
retryJitterMs,
|
|
86
|
-
})
|
|
128
|
+
}))
|
|
87
129
|
) {
|
|
88
130
|
continue;
|
|
89
131
|
}
|
|
@@ -147,16 +189,15 @@ export function withFileLock(targetPath, fn, opts = {}) {
|
|
|
147
189
|
}
|
|
148
190
|
}
|
|
149
191
|
if (
|
|
150
|
-
!waitForRetry({
|
|
192
|
+
!(yield* waitForRetry({
|
|
151
193
|
_now,
|
|
152
|
-
_sleep,
|
|
153
194
|
_random,
|
|
154
195
|
deadline,
|
|
155
196
|
retryAttempt: retryAttempt++,
|
|
156
197
|
retryMs,
|
|
157
198
|
maxRetryMs,
|
|
158
199
|
retryJitterMs,
|
|
159
|
-
})
|
|
200
|
+
}))
|
|
160
201
|
) {
|
|
161
202
|
break;
|
|
162
203
|
}
|
|
@@ -186,12 +227,48 @@ export function withFileLock(targetPath, fn, opts = {}) {
|
|
|
186
227
|
let bodyThrew = false;
|
|
187
228
|
let result;
|
|
188
229
|
try {
|
|
230
|
+
if (held) directoryIdentity = readLockDirectoryIdentity(_fs, lockDir);
|
|
231
|
+
bodyActive = true;
|
|
189
232
|
result = fn({
|
|
190
233
|
locked: held,
|
|
191
234
|
waitMs: Math.max(0, _now() - owner.startedAt),
|
|
192
235
|
attempts: retryAttempt + 1,
|
|
236
|
+
assertOwnership() {
|
|
237
|
+
let cause = null;
|
|
238
|
+
try {
|
|
239
|
+
if (
|
|
240
|
+
held &&
|
|
241
|
+
bodyActive &&
|
|
242
|
+
!ownershipLost &&
|
|
243
|
+
!releasePublished &&
|
|
244
|
+
sameLockDirectoryIdentity(
|
|
245
|
+
directoryIdentity,
|
|
246
|
+
readLockDirectoryIdentity(_fs, lockDir),
|
|
247
|
+
) &&
|
|
248
|
+
sameOwner(readOwner(_fs, ownerPath), owner) &&
|
|
249
|
+
pathStatus(_fs, path.join(lockDir, `.release-${owner.token}`)) ===
|
|
250
|
+
"absent"
|
|
251
|
+
)
|
|
252
|
+
return true;
|
|
253
|
+
} catch (error) {
|
|
254
|
+
cause = error;
|
|
255
|
+
}
|
|
256
|
+
ownershipLost = true;
|
|
257
|
+
const error = new Error(
|
|
258
|
+
`State lock ownership is no longer current: ${targetPath}`,
|
|
259
|
+
cause ? { cause } : undefined,
|
|
260
|
+
);
|
|
261
|
+
error.code = "STATE_LOCK_OWNERSHIP_LOST";
|
|
262
|
+
throw error;
|
|
263
|
+
},
|
|
193
264
|
publishReleaseAfterPathRemoved(pendingPath) {
|
|
194
|
-
if (
|
|
265
|
+
if (
|
|
266
|
+
asynchronous ||
|
|
267
|
+
!bodyActive ||
|
|
268
|
+
!held ||
|
|
269
|
+
typeof pendingPath !== "string" ||
|
|
270
|
+
!pendingPath
|
|
271
|
+
) {
|
|
195
272
|
return false;
|
|
196
273
|
}
|
|
197
274
|
const current = readOwner(_fs, ownerPath);
|
|
@@ -214,21 +291,31 @@ export function withFileLock(targetPath, fn, opts = {}) {
|
|
|
214
291
|
return true;
|
|
215
292
|
},
|
|
216
293
|
});
|
|
294
|
+
if (asynchronous) result = yield { callbackResult: result };
|
|
217
295
|
} catch (error) {
|
|
218
296
|
bodyThrew = true;
|
|
219
297
|
bodyError = error;
|
|
220
298
|
}
|
|
299
|
+
bodyActive = false;
|
|
221
300
|
let released = !held;
|
|
222
301
|
let releaseError = null;
|
|
223
302
|
if (held) {
|
|
224
303
|
try {
|
|
225
|
-
released =
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
304
|
+
released =
|
|
305
|
+
ownershipLost &&
|
|
306
|
+
!releasePublished &&
|
|
307
|
+
!sameLockDirectoryIdentity(
|
|
308
|
+
directoryIdentity,
|
|
309
|
+
readLockDirectoryIdentity(_fs, lockDir),
|
|
310
|
+
)
|
|
311
|
+
? false
|
|
312
|
+
: releaseOwnedDirectory(
|
|
313
|
+
_fs,
|
|
314
|
+
lockDir,
|
|
315
|
+
owner,
|
|
316
|
+
isOwnerAlive,
|
|
317
|
+
releasePublished,
|
|
318
|
+
);
|
|
232
319
|
} catch (error) {
|
|
233
320
|
releaseError = error;
|
|
234
321
|
}
|
|
@@ -245,7 +332,7 @@ export function withFileLock(targetPath, fn, opts = {}) {
|
|
|
245
332
|
// The lock is gone or its exact release marker has transferred cleanup to
|
|
246
333
|
// contenders. Let an existing waiter run before a process performing many
|
|
247
334
|
// tiny transactions can immediately reacquire it.
|
|
248
|
-
|
|
335
|
+
yield { waitMs: yieldAfterReleaseMs };
|
|
249
336
|
}
|
|
250
337
|
return result;
|
|
251
338
|
}
|
|
@@ -256,6 +343,7 @@ import { randomUUID } from "node:crypto";
|
|
|
256
343
|
|
|
257
344
|
const defaultFs = {
|
|
258
345
|
mkdirSync: (p) => fs.mkdirSync(p),
|
|
346
|
+
lstatSync: (p) => fs.lstatSync(p, { bigint: true }),
|
|
259
347
|
statSync: (p) => fs.statSync(p),
|
|
260
348
|
readFileSync: (p, o) => fs.readFileSync(p, o),
|
|
261
349
|
writeFileSync: (p, value, o) => fs.writeFileSync(p, value, o),
|
|
@@ -263,6 +351,17 @@ const defaultFs = {
|
|
|
263
351
|
rmSync: (p, o) => fs.rmSync(p, o),
|
|
264
352
|
};
|
|
265
353
|
|
|
354
|
+
function readLockDirectoryIdentity(io, lockDir) {
|
|
355
|
+
const value = io.lstatSync ? io.lstatSync(lockDir) : io.statSync(lockDir);
|
|
356
|
+
if (value.isSymbolicLink?.() || value.isDirectory?.() === false)
|
|
357
|
+
throw new Error("State lock is not a regular directory");
|
|
358
|
+
return { dev: value.dev, ino: value.ino };
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
function sameLockDirectoryIdentity(left, right) {
|
|
362
|
+
return !!left && left.dev === right.dev && left.ino === right.ino;
|
|
363
|
+
}
|
|
364
|
+
|
|
266
365
|
function acquireOwnedDirectory(_fs, lockDir, owner) {
|
|
267
366
|
const serializedOwner = JSON.stringify(owner);
|
|
268
367
|
// Injected legacy filesystems used by a few consumers may not implement
|
|
@@ -350,9 +449,8 @@ function isTransientLockError(error) {
|
|
|
350
449
|
return !!error && TRANSIENT_LOCK_ERROR_CODES.has(error.code);
|
|
351
450
|
}
|
|
352
451
|
|
|
353
|
-
function waitForRetry({
|
|
452
|
+
function* waitForRetry({
|
|
354
453
|
_now,
|
|
355
|
-
_sleep,
|
|
356
454
|
_random,
|
|
357
455
|
deadline,
|
|
358
456
|
retryAttempt,
|
|
@@ -373,7 +471,7 @@ function waitForRetry({
|
|
|
373
471
|
jitterLimit > 0 && Number.isFinite(sample)
|
|
374
472
|
? Math.floor(Math.min(1, Math.max(0, sample)) * jitterLimit)
|
|
375
473
|
: 0;
|
|
376
|
-
|
|
474
|
+
yield { waitMs: Math.min(remaining, exponential + jitter) };
|
|
377
475
|
return true;
|
|
378
476
|
}
|
|
379
477
|
|
|
@@ -730,6 +828,10 @@ function releaseOwnedDirectory(
|
|
|
730
828
|
}
|
|
731
829
|
|
|
732
830
|
/** Synchronous sleep that doesn't busy-spin the CPU when possible. */
|
|
831
|
+
function sleepAsync(ms) {
|
|
832
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
833
|
+
}
|
|
834
|
+
|
|
733
835
|
function sleepSync(ms) {
|
|
734
836
|
try {
|
|
735
837
|
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{P as c,J as p,b as s}from"./vendor-Bn1JzzAn.js";import{r as a}from"./markdown-Yo_c6Krv.js";import{_ as d}from"./index-DJ2OiRvh.js";const _={__name:"MarkdownRenderer",props:{content:{type:String,default:""}},setup(t,{expose:o}){o();const e=t,r=s(()=>a(e.content||"")),n={props:e,rendered:r,computed:s,get renderMarkdown(){return a}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}},i=["innerHTML"];function l(t,o,e,r,n,m){return c(),p("div",{class:"markdown-content",innerHTML:r.rendered},null,8,i)}const w=d(_,[["render",l],["__scopeId","data-v-0b0b9f63"],["__file","/tmp/cc-web-panel-lNX50L/repo/packages/web-panel/src/components/MarkdownRenderer.vue"]]);export{w as M};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Q as r}from"./index-DJ2OiRvh.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as o}from"./Col-D2x4GBGm.js";import{a0 as t}from"./index-DJ2OiRvh.js";import"./vendor-Bn1JzzAn.js";import"./index-D2Zb-Kd1.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as o}from"./Row-ke9Mk1cx.js";import{a0 as t}from"./index-DJ2OiRvh.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-CD3ziNhu.js";import"./useFlexGapSupport-wBKIYFKX.js";import"./styleChecker-De0Y8g1O.js";import"./index-D2Zb-Kd1.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};
|