chainlesschain 0.165.1 → 0.165.2
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 +248 -2
- package/package.json +4 -1
- package/src/assets/web-panel/assets/{AIOps-CYxFDrcm.js → AIOps-lS1R0Cza.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-CPBtdiU2.js → ActionButton-BmlgBPsj.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-Dayq7Dp7.js → Analytics-CNKczv1S.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-6U7bPb2s.js → AppLayout-BuZGJARQ.js} +4 -4
- package/src/assets/web-panel/assets/{Artifacts-D2Iqg_3D.js → Artifacts-Dm73Sl-O.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-CdoOB7WV.js → Audit-BGMW7A5e.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-DrnAVB8w.js → BackgroundAgents-BQ6M54JR.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-CesMi5cy.js → Backup-DBzGP0bR.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-DaX9ptax.js → BaseInput-D1mLCoOV.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-OrwOPxDS.js → Chat-BUfcN7p8.js} +4 -4
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-CvPZFRxM.js → ChatBubbleRenderer-CY5m8ZHg.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-DiHbcysC.js → Checkbox-Du0Yg5Pi.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-CbgCkaBJ.js → Codegen-B2RXziHW.js} +1 -1
- package/src/assets/web-panel/assets/{Col-Du5hgrh4.js → Col-DWhekOrR.js} +1 -1
- package/src/assets/web-panel/assets/{Community-DsPOBW-p.js → Community-HQhrkon4.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-BwHIFkNC.js → Compact-izHNb4uz.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-BvrDQSgd.js → Compliance-BDwLy41-.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-gwAE6arx.js → Cowork-DFJhLa7K.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-DW-0l4uF.js → Cron-DYY9RG7-.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-j-NsLesB.js → Crosschain-rr7tJTtv.js} +1 -1
- package/src/assets/web-panel/assets/{DID-CibVEBOI.js → DID-D2sfHRLi.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-W4z9vSfe.js → Dashboard-q_eGdhha.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-DAcrkKxG.js → Dropdown-Cufrh2Bz.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-6GXah-89.js → EmailListRenderer-B-kdv10f.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-TKDCq8Ku.js → FamilyGuardDashboard-D21XjgfG.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-BXBLlcNm.js → Federation-CAwRTLZH.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-BoJJBkG3.js → FormItemContext-vx3daNDF.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-okjsl46v.js → GenericCardRenderer-CRWY2wU4.js} +1 -1
- package/src/assets/web-panel/assets/{Git-Rvs7i6nn.js → Git-Q6SwauyD.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-CHSUxXXS.js → Governance-BJ1q4IQZ.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-V3BlfxsB.js → Inference-CSWjROgD.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-C_NlD4aR.js → KnowledgeGraph-fzuQsWuY.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-Nn4LNxhA.js → Logs-DVF8Mnns.js} +2 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-BLif4QSg.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-DEmjFcg-.js → Marketplace-BQP7LOA4.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-DlopXipI.js → McpTools-BNlJCmNc.js} +4 -4
- package/src/assets/web-panel/assets/{Memory-BG3ynX60.js → Memory-DLLg5WQ4.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-DeRzWOfT.js → MobileBridge-CR2skNAF.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-Tyd3o2A0.js → MobileProjects-BxVavObl.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-BoPbOv1C.js → Mtc-B17pgqMI.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-un-rTHp7.js → MtcAudit-4UmV5cIL.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-Ds0oveEB.js → Multisig-DoMEXEcU.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-D09JI-yY.js → NLProgramming-h9DMXFX4.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-DTRhiKJn.js → Notes-Cihn-xX8.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-BAnnNCim.js → NotificationSettings-BE6ZGa3R.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-Yr-1fSYi.js → OrderTableRenderer-CnwojoSI.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-S9EAolpj.js → Organization-B2vpwmjb.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-CqcLKqJ8.js → Overflow-C4z28R0-.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-Dw0F9EcU.js → P2P-BVlFkwhW.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-BDRwUevN.js → PdhVaultBrowser-BXbEdL5B.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-D3_c3nKB.js → Permissions-C28xs4lp.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-CxdMV98x.js → PersonalDataHub-Dgl_rBjM.js} +3 -3
- package/src/assets/web-panel/assets/{Pipeline-CgjNQFLI.js → Pipeline-3QUIhrKI.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-BHghIIht.js → Privacy-8Gh33OZ5.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-De6pqaKM.js → ProjectInit-BNmg4tZi.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-Bg4ZkNYQ.js → ProjectSettings-vgMfeCf9.js} +2 -2
- package/src/assets/web-panel/assets/Projects-BhtAVilc.js +1 -0
- package/src/assets/web-panel/assets/{Providers-CUnHbNf-.js → Providers-CXoOa8eX.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-DA2f3Wts.js → QrScannerModal-BhfTF0oS.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-C1FeHDqp.js → QuickAsk-C746HEAj.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-B5guaUMN.js → Recommend-BSej8Eo0.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-PDADSds3.js → RemoteSession-f3gmnlG3.js} +3 -3
- package/src/assets/web-panel/assets/{Reputation-eTlRhgvK.js → Reputation-CyvybpkN.js} +1 -1
- package/src/assets/web-panel/assets/{Row-D7AqSGY0.js → Row-DwV2PeYn.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-JiuLm4Ja.js → RssFeed-11GrzjZy.js} +3 -3
- package/src/assets/web-panel/assets/{Search-CwruahW3.js → Search-BjKXkrAY.js} +1 -1
- package/src/assets/web-panel/assets/{Security-CdhqaR0b.js → Security-eWiFb9Yk.js} +4 -4
- package/src/assets/web-panel/assets/{Services-CU0ZIlcT.js → Services-CdCsMAtt.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-CtduPfAb.js → Skeleton-4Q2UTKQ5.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-CROXm6AY.js → Skills-v4rtYrRj.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-DiZiABFD.js → Sla-CRhsFvd_.js} +1 -1
- package/src/assets/web-panel/assets/SpeechSettings-DLjKsDVu.js +1 -0
- package/src/assets/web-panel/assets/{SyncSettings-DBX6J1Oe.js → SyncSettings-D16zonl7.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-BLyRJd3-.js → Tasks-Xxozz0i_.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-BKa5qzmk.js → Templates-CXJpPtCT.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-DnD3a4M6.js → Tenant-XRV0L1ZF.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-DEitQeTb.js → Terminal-CYuO1i_w.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-CjHggTDq.js → TimelineRenderer-BXqitWsu.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-CsGT7sfl.js → Tokens-BvPrDHIy.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-yr4rFDrW.js → Trigger-DhCrSTf5.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-CLvu1Sjp.js → Trust-DmsuZD6K.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-B0m7yUP8.js → UkeySign-D_yrts5C.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-C0VvP4lc.js → VideoEditing-B01ihPrm.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-kllBAG1M.js → Wallet-DpUjKa-N.js} +3 -3
- package/src/assets/web-panel/assets/{WebAuthn-C54UQNLx.js → WebAuthn-CL07yON6.js} +3 -3
- package/src/assets/web-panel/assets/{WorkflowEditor-B7y8qSvU.js → WorkflowEditor-CLMflnRr.js} +1 -1
- package/src/assets/web-panel/assets/{chat-DRzTh8CJ.js → chat-DtUqe8h_.js} +1 -1
- package/src/assets/web-panel/assets/{colors-BSMwSnCx.js → colors-DPKrgVfy.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-BTg602H5.js → compact-item-BTt2GtOm.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-B6EGsdvp.js → createContext-D_VeUc1J.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-Bj5nUW2v.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-DDKqJ8RD.js → hasIn-1kndiylj.js} +1 -1
- package/src/assets/web-panel/assets/{index-CUEU48o1.js → index-2eyAXE3d.js} +1 -1
- package/src/assets/web-panel/assets/{index-rjzk9z1Q.js → index-4bna2_SR.js} +1 -1
- package/src/assets/web-panel/assets/{index-CmAubjDi.js → index-8nz_fmlj.js} +1 -1
- package/src/assets/web-panel/assets/{index-Co7oM1qr.js → index-B9KvcS7R.js} +1 -1
- package/src/assets/web-panel/assets/{index-BMuGd2--.js → index-BAXfRKfG.js} +1 -1
- package/src/assets/web-panel/assets/{index-BVTAl5N2.js → index-BHpBMWCh.js} +1 -1
- package/src/assets/web-panel/assets/{index-DpTHIRfZ.js → index-BaZAbw9A.js} +1 -1
- package/src/assets/web-panel/assets/{index-CWGax2QW.js → index-BepLZwgB.js} +1 -1
- package/src/assets/web-panel/assets/{index-DiW0sDkz.js → index-Bhudc_Ez.js} +1 -1
- package/src/assets/web-panel/assets/{index-CGNklbP6.js → index-BlDNVgBt.js} +1 -1
- package/src/assets/web-panel/assets/{index-u2YVld9W.js → index-By5n8up9.js} +1 -1
- package/src/assets/web-panel/assets/{index-pqfux8vZ.js → index-CHG-KcS4.js} +1 -1
- package/src/assets/web-panel/assets/index-CPcM-eqo.js +1 -0
- package/src/assets/web-panel/assets/{index-BRqt4fO-.js → index-CX81qSM4.js} +1 -1
- package/src/assets/web-panel/assets/{index-BsR7Y2NG.js → index-CauoBQkH.js} +1 -1
- package/src/assets/web-panel/assets/{index-C_JzIXUq.js → index-CcO04eDn.js} +1 -1
- package/src/assets/web-panel/assets/{index-CQlHFN_g.js → index-CtF7EN49.js} +1 -1
- package/src/assets/web-panel/assets/{index-CwPUZbMI.js → index-CzjkKUmR.js} +1 -1
- package/src/assets/web-panel/assets/{index-th2ihDc0.js → index-D95OFht7.js} +1 -1
- package/src/assets/web-panel/assets/{index-CHfLYwcW.js → index-DFIZ_1Sf.js} +1 -1
- package/src/assets/web-panel/assets/{index-C1GFfuqN.js → index-DG2MZQ3f.js} +1 -1
- package/src/assets/web-panel/assets/{index-D1naNj4U.js → index-DJ8vXGOa.js} +1 -1
- package/src/assets/web-panel/assets/{index-DLdrHhML.js → index-Dbbymxpj.js} +1 -1
- package/src/assets/web-panel/assets/{index-DBT3YeQ9.js → index-DdkplL9R.js} +1 -1
- package/src/assets/web-panel/assets/{index-BICn3Qh1.js → index-DfGl8CqG.js} +1 -1
- package/src/assets/web-panel/assets/{index-DqFXGzzC.js → index-DfKBRdSS.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bx044qDj.js → index-DsJCDUJG.js} +1 -1
- package/src/assets/web-panel/assets/{index-XFe-1twF.js → index-Dwqmtk65.js} +1 -1
- package/src/assets/web-panel/assets/{index-C66NpWy5.js → index-DxdTdBix.js} +1 -1
- package/src/assets/web-panel/assets/{index-CmAInUkX.js → index-FzdwcSy2.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cf23wVMs.js → index-GsoUQ2M7.js} +1 -1
- package/src/assets/web-panel/assets/{index-D5CsBShd.js → index-brCInrzq.js} +1 -1
- package/src/assets/web-panel/assets/{index-323Hhxxt.js → index-dVc-CXY4.js} +1 -1
- package/src/assets/web-panel/assets/{index-p2HYn89m.js → index-fk2Rjacw.js} +3 -3
- package/src/assets/web-panel/assets/{index-Dfv2lKu3.js → index-l1BETrDb.js} +1 -1
- package/src/assets/web-panel/assets/{index-CNxg61YP.js → index-m31Ka8hZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CDTvsX8t.js → index-ocf06EVQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dc77VR3H.js → index-sDoMHTNA.js} +1 -1
- package/src/assets/web-panel/assets/index-xeSyVoRe.js +1 -0
- package/src/assets/web-panel/assets/{initDefaultProps-C3Djh9fa.js → initDefaultProps-CvyYJd7z.js} +1 -1
- package/src/assets/web-panel/assets/{motion-BzqFmbSe.js → motion-DYZkhUdz.js} +1 -1
- package/src/assets/web-panel/assets/{move-DJo_FFaW.js → move-slnJRVT1.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-_tlTiBvk.js → mtc-parser-DVc0CKmy.js} +1 -1
- package/src/assets/web-panel/assets/{omit-CB2ZyxUg.js → omit-BCXAtHCq.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-DZwIFD4u.js → pickAttrs-DBsemz_K.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-DxZY0dgk.js → placementArrow-BRtkJ-nv.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-CzzGt7GL.js → responsiveObserve-Cebq7EZn.js} +1 -1
- package/src/assets/web-panel/assets/{slide-BaIK52yz.js → slide-DT7qvId2.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-3-FHu9_M.js → statusUtils-pQiITLkG.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-BkRT68fK.js → styleChecker-c-19BVKQ.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-DHYwKS-s.js → useFlexGapSupport-DsS5-0bE.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-DVVUhV8p.js → useFs-CxGiMe5n.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-CkrFKAzQ.js → usePersonalDataHub-D9btVID5.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-BuBLFz0c.js → vnode-CUYFsFEN.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-kpm6LtXU.js → zoom-CXmn_35j.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/command-help-index.json +1 -1
- package/src/commands/cowork.js +280 -5
- package/src/commands/plugin.js +819 -64
- package/src/commands/session-location.js +318 -7
- package/src/constants.js +2 -2
- package/src/data/changelog.json +14 -1
- package/src/gateways/ws/action-protocol.js +1 -1
- package/src/harness/jsonl-session-store.js +638 -2
- package/src/harness/prompt-compressor.js +4 -0
- package/src/lib/background-agent-keeper-client.js +29 -0
- package/src/lib/background-agent-keeper-protocol.js +4 -0
- package/src/lib/background-agent-supervisor.js +59 -29
- package/src/lib/cowork-task-runner.js +70 -0
- package/src/lib/cowork-workflow.js +42 -9
- package/src/lib/doctor-checkup.js +34 -10
- package/src/lib/dynamic-workflow-draft.js +535 -0
- package/src/lib/dynamic-workflow-facade.js +11 -11
- package/src/lib/dynamic-workflow-runtime.js +2974 -0
- package/src/lib/execution-location-contract.js +111 -7
- package/src/lib/execution-location-runtime.js +3 -1
- package/src/lib/execution-location-target.js +910 -0
- package/src/lib/llm-providers.js +1 -0
- package/src/lib/mcp-call-ledger-store.js +35 -0
- package/src/lib/mcp-call-ledger.js +30 -0
- package/src/lib/plugin-runtime/__tests__/remote-source.test.js +34 -16
- package/src/lib/plugin-runtime/install.js +4956 -657
- package/src/lib/plugin-runtime/manifest.js +3 -1
- package/src/lib/plugin-runtime/marketplace-artifact-readback.js +671 -31
- package/src/lib/plugin-runtime/marketplace-catalog.js +68 -2
- package/src/lib/plugin-runtime/marketplace-impact.js +208 -15
- package/src/lib/plugin-runtime/marketplace-network.js +317 -0
- package/src/lib/plugin-runtime/marketplace-pac-worker.js +15 -0
- package/src/lib/plugin-runtime/marketplace-remote-artifacts.js +25 -2
- package/src/lib/plugin-runtime/marketplace-source-cache.js +359 -0
- package/src/lib/plugin-runtime/policy.js +21 -6
- package/src/lib/plugin-runtime/publisher-trust.js +332 -0
- package/src/lib/plugin-runtime/remote-source.js +323 -27
- package/src/lib/plugin-runtime/scopes.js +317 -41
- package/src/lib/plugin-runtime/transaction-journal.js +806 -0
- package/src/lib/public-ide-capability-manifest.js +1 -1
- package/src/lib/remote-membership-coordinator.js +8 -6
- package/src/lib/sub-agent-context.js +268 -2
- package/src/lib/task-model-selector.js +1 -1
- package/src/lib/with-file-lock.js +95 -5
- package/src/runtime/agent-core.js +595 -41
- package/src/workers/background-agent-keeper.js +40 -10
- package/src/assets/web-panel/assets/MarkdownRenderer-SVAgNnkt.js +0 -1
- package/src/assets/web-panel/assets/Projects-CP8vPvzs.js +0 -1
- package/src/assets/web-panel/assets/SpeechSettings-B5pLcXUw.js +0 -1
- package/src/assets/web-panel/assets/devWarning-Dol8jLEP.js +0 -1
- package/src/assets/web-panel/assets/index-C3QX5tOl.js +0 -1
- package/src/assets/web-panel/assets/index-xYybvEic.js +0 -1
|
@@ -4,9 +4,24 @@ import { TextDecoder } from "node:util";
|
|
|
4
4
|
import {
|
|
5
5
|
buildExecutionLocationCatalog,
|
|
6
6
|
buildExecutionLocationHandoffPreview,
|
|
7
|
+
computeExecutionLocationTargetFactsDigest,
|
|
7
8
|
} from "../lib/execution-location-contract.js";
|
|
8
9
|
import { captureAmbientExecutionLocation } from "../lib/execution-location-runtime.js";
|
|
9
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
EXECUTION_LOCATION_TARGET_ATTESTATION_SCHEMA,
|
|
12
|
+
EXECUTION_LOCATION_TARGET_RESUME_SCHEMA,
|
|
13
|
+
attestExecutionLocationTarget,
|
|
14
|
+
readExecutionLocationProfile,
|
|
15
|
+
resumeExecutionLocationTarget,
|
|
16
|
+
} from "../lib/execution-location-target.js";
|
|
17
|
+
import {
|
|
18
|
+
MAX_SESSION_REPLICA_BYTES,
|
|
19
|
+
SESSION_EXECUTION_LOCATION_HANDOFF_INSTALL_SCHEMA,
|
|
20
|
+
getVerifiedSessionExecutionLocationAuthority,
|
|
21
|
+
installSessionReplica,
|
|
22
|
+
installSessionReplicaWithLocationHandoff,
|
|
23
|
+
readVerifiedTranscriptBytes,
|
|
24
|
+
} from "../harness/jsonl-session-store.js";
|
|
10
25
|
import {
|
|
11
26
|
sameFileStatIdentity,
|
|
12
27
|
samePathHandleFileIdentity,
|
|
@@ -112,10 +127,13 @@ export function projectSessionExecutionLocation(sessionId, deps = {}) {
|
|
|
112
127
|
)(sessionId);
|
|
113
128
|
return {
|
|
114
129
|
schema: SESSION_EXECUTION_LOCATION_AUTHORITY_SCHEMA,
|
|
115
|
-
authority: "verified-session-start",
|
|
130
|
+
authority: authority.authority || "verified-session-start",
|
|
116
131
|
sessionId: authority.sessionId,
|
|
117
132
|
headHash: authority.headHash,
|
|
118
133
|
eventCount: authority.eventCount,
|
|
134
|
+
bindingEventHash: authority.bindingEventHash ?? null,
|
|
135
|
+
bindingEventCount: authority.bindingEventCount ?? null,
|
|
136
|
+
locationHandoff: authority.locationHandoff ?? null,
|
|
119
137
|
binding: authority.binding,
|
|
120
138
|
};
|
|
121
139
|
}
|
|
@@ -156,6 +174,146 @@ export function projectExecutionLocationHandoff(
|
|
|
156
174
|
};
|
|
157
175
|
}
|
|
158
176
|
|
|
177
|
+
export function projectExecutionLocationTargetAttestation(
|
|
178
|
+
sessionId,
|
|
179
|
+
target,
|
|
180
|
+
factsPath,
|
|
181
|
+
profilePath,
|
|
182
|
+
deps = {},
|
|
183
|
+
) {
|
|
184
|
+
const handoff = projectExecutionLocationHandoff(
|
|
185
|
+
sessionId,
|
|
186
|
+
target,
|
|
187
|
+
factsPath,
|
|
188
|
+
deps,
|
|
189
|
+
);
|
|
190
|
+
const profile = (
|
|
191
|
+
deps.readExecutionLocationProfile || readExecutionLocationProfile
|
|
192
|
+
)(profilePath, deps);
|
|
193
|
+
return (deps.attestExecutionLocationTarget || attestExecutionLocationTarget)(
|
|
194
|
+
{ handoff, profile },
|
|
195
|
+
deps,
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
export function resumeSessionAtExecutionLocation(
|
|
200
|
+
sessionId,
|
|
201
|
+
target,
|
|
202
|
+
factsPath,
|
|
203
|
+
profilePath,
|
|
204
|
+
expectedTargetFactsDigest,
|
|
205
|
+
deps = {},
|
|
206
|
+
) {
|
|
207
|
+
const handoff = projectExecutionLocationHandoff(
|
|
208
|
+
sessionId,
|
|
209
|
+
target,
|
|
210
|
+
factsPath,
|
|
211
|
+
deps,
|
|
212
|
+
);
|
|
213
|
+
const profile = (
|
|
214
|
+
deps.readExecutionLocationProfile || readExecutionLocationProfile
|
|
215
|
+
)(profilePath, deps);
|
|
216
|
+
const transcriptBytes =
|
|
217
|
+
profile.sessionStore?.mode === "replicated"
|
|
218
|
+
? (deps.readVerifiedTranscriptBytes || readVerifiedTranscriptBytes)(
|
|
219
|
+
sessionId,
|
|
220
|
+
)
|
|
221
|
+
: null;
|
|
222
|
+
const readSourceAuthority = () => {
|
|
223
|
+
const authority = (
|
|
224
|
+
deps.getVerifiedSessionExecutionLocationAuthority ||
|
|
225
|
+
getVerifiedSessionExecutionLocationAuthority
|
|
226
|
+
)(sessionId);
|
|
227
|
+
return {
|
|
228
|
+
sessionId: authority.sessionId,
|
|
229
|
+
headHash: authority.headHash,
|
|
230
|
+
eventCount: authority.eventCount,
|
|
231
|
+
};
|
|
232
|
+
};
|
|
233
|
+
return (deps.resumeExecutionLocationTarget || resumeExecutionLocationTarget)(
|
|
234
|
+
{
|
|
235
|
+
handoff,
|
|
236
|
+
profile,
|
|
237
|
+
expectedTargetFactsDigest,
|
|
238
|
+
transcriptBytes,
|
|
239
|
+
readSourceAuthority,
|
|
240
|
+
},
|
|
241
|
+
deps,
|
|
242
|
+
);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
function readBoundedReplicaInput(deps = {}) {
|
|
246
|
+
if (process.stdin.isTTY) {
|
|
247
|
+
throw new Error("session replica bytes must be provided on stdin");
|
|
248
|
+
}
|
|
249
|
+
const runtimeFs = deps.fs || fs;
|
|
250
|
+
const chunks = [];
|
|
251
|
+
let total = 0;
|
|
252
|
+
while (true) {
|
|
253
|
+
const chunk = Buffer.allocUnsafe(
|
|
254
|
+
Math.min(64 * 1024, MAX_SESSION_REPLICA_BYTES + 1 - total),
|
|
255
|
+
);
|
|
256
|
+
const count = runtimeFs.readSync(0, chunk, 0, chunk.length, null);
|
|
257
|
+
if (count === 0) break;
|
|
258
|
+
total += count;
|
|
259
|
+
if (total > MAX_SESSION_REPLICA_BYTES) {
|
|
260
|
+
throw new Error(
|
|
261
|
+
`session replica exceeds ${MAX_SESSION_REPLICA_BYTES} bytes`,
|
|
262
|
+
);
|
|
263
|
+
}
|
|
264
|
+
chunks.push(chunk.subarray(0, count));
|
|
265
|
+
}
|
|
266
|
+
if (total === 0) throw new Error("session replica stdin is empty");
|
|
267
|
+
return Buffer.concat(chunks, total);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
export function receiveSessionReplica(
|
|
271
|
+
sessionId,
|
|
272
|
+
expectedHeadHash,
|
|
273
|
+
expectedEventCount,
|
|
274
|
+
expectedTranscriptDigest,
|
|
275
|
+
deps = {},
|
|
276
|
+
) {
|
|
277
|
+
const bytes = (deps.readSessionReplicaInput || readBoundedReplicaInput)(deps);
|
|
278
|
+
return (deps.installSessionReplica || installSessionReplica)(
|
|
279
|
+
sessionId,
|
|
280
|
+
bytes,
|
|
281
|
+
{
|
|
282
|
+
headHash: expectedHeadHash,
|
|
283
|
+
eventCount: Number(expectedEventCount),
|
|
284
|
+
transcriptDigest: expectedTranscriptDigest,
|
|
285
|
+
},
|
|
286
|
+
);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
export function prepareSessionReplicaHandoff(sessionId, options, deps = {}) {
|
|
290
|
+
const bytes = (deps.readSessionReplicaInput || readBoundedReplicaInput)(deps);
|
|
291
|
+
const binding = projectCurrentExecutionLocation({}, deps).binding;
|
|
292
|
+
const targetFactsDigest = computeExecutionLocationTargetFactsDigest(binding);
|
|
293
|
+
if (targetFactsDigest !== String(options.expectedTargetFactsDigest || "")) {
|
|
294
|
+
throw new Error("target facts changed before location handoff append");
|
|
295
|
+
}
|
|
296
|
+
return (
|
|
297
|
+
deps.installSessionReplicaWithLocationHandoff ||
|
|
298
|
+
installSessionReplicaWithLocationHandoff
|
|
299
|
+
)(
|
|
300
|
+
sessionId,
|
|
301
|
+
bytes,
|
|
302
|
+
{
|
|
303
|
+
headHash: options.expectedHeadHash,
|
|
304
|
+
eventCount: Number(options.expectedEventCount),
|
|
305
|
+
transcriptDigest: options.expectedTranscriptDigest,
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
profileDigest: options.profileDigest,
|
|
309
|
+
targetEvidenceId: options.targetEvidenceId,
|
|
310
|
+
targetFactsDigest,
|
|
311
|
+
attestationDigest: options.attestationDigest,
|
|
312
|
+
binding,
|
|
313
|
+
},
|
|
314
|
+
);
|
|
315
|
+
}
|
|
316
|
+
|
|
159
317
|
function renderBinding(binding) {
|
|
160
318
|
const git = binding.source.git;
|
|
161
319
|
return [
|
|
@@ -180,6 +338,30 @@ function writeProjection(projection, options = {}) {
|
|
|
180
338
|
process.stdout.write(`${JSON.stringify(projection, null, 2)}\n`);
|
|
181
339
|
return;
|
|
182
340
|
}
|
|
341
|
+
if (projection.schema === EXECUTION_LOCATION_TARGET_ATTESTATION_SCHEMA) {
|
|
342
|
+
process.stdout.write(
|
|
343
|
+
`ATTESTED ${projection.binding.location}\nFacts: ${projection.targetFactsDigest}\nAttestation: ${projection.attestationDigest}\nGaps: ${projection.gaps.join(", ")}\n`,
|
|
344
|
+
);
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
if (projection.schema === EXECUTION_LOCATION_TARGET_RESUME_SCHEMA) {
|
|
348
|
+
process.stdout.write(
|
|
349
|
+
`RESUME EXITED ${projection.target}\nReceipt: ${projection.receiptDigest}\nGaps: ${projection.gaps.join(", ")}\n`,
|
|
350
|
+
);
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
if (projection.schema === "chainlesschain.session-replica-install/v1") {
|
|
354
|
+
process.stdout.write(
|
|
355
|
+
`${projection.installed ? "INSTALLED" : "ALREADY PRESENT"} ${projection.sessionId}\nReceipt: ${projection.receiptDigest}\n`,
|
|
356
|
+
);
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
359
|
+
if (projection.schema === SESSION_EXECUTION_LOCATION_HANDOFF_INSTALL_SCHEMA) {
|
|
360
|
+
process.stdout.write(
|
|
361
|
+
`HANDOFF ANCHORED ${projection.sessionId}\nTarget head: ${projection.targetHeadHash}\nReceipt: ${projection.receiptDigest}\n`,
|
|
362
|
+
);
|
|
363
|
+
return;
|
|
364
|
+
}
|
|
183
365
|
if (projection.binding) {
|
|
184
366
|
process.stdout.write(`${renderBinding(projection.binding)}\n`);
|
|
185
367
|
return;
|
|
@@ -217,7 +399,7 @@ function runAction(action, options = {}) {
|
|
|
217
399
|
}
|
|
218
400
|
}
|
|
219
401
|
|
|
220
|
-
export function registerSessionLocationSubcommands(session) {
|
|
402
|
+
export function registerSessionLocationSubcommands(session, deps = {}) {
|
|
221
403
|
const location = session
|
|
222
404
|
.command("location")
|
|
223
405
|
.description(
|
|
@@ -230,7 +412,7 @@ export function registerSessionLocationSubcommands(session) {
|
|
|
230
412
|
.option("--json", "Machine-readable JSON output")
|
|
231
413
|
.action((options) => {
|
|
232
414
|
process.exitCode = runAction(
|
|
233
|
-
() => projectCurrentExecutionLocation({},
|
|
415
|
+
() => projectCurrentExecutionLocation({}, deps),
|
|
234
416
|
options,
|
|
235
417
|
);
|
|
236
418
|
});
|
|
@@ -241,7 +423,7 @@ export function registerSessionLocationSubcommands(session) {
|
|
|
241
423
|
.option("--json", "Machine-readable JSON output")
|
|
242
424
|
.action((id, options) => {
|
|
243
425
|
process.exitCode = runAction(
|
|
244
|
-
() => projectSessionExecutionLocation(id),
|
|
426
|
+
() => projectSessionExecutionLocation(id, deps),
|
|
245
427
|
options,
|
|
246
428
|
);
|
|
247
429
|
});
|
|
@@ -254,7 +436,7 @@ export function registerSessionLocationSubcommands(session) {
|
|
|
254
436
|
.option("--json", "Machine-readable JSON output")
|
|
255
437
|
.action((options) => {
|
|
256
438
|
process.exitCode = runAction(
|
|
257
|
-
() => projectExecutionLocationComparison({},
|
|
439
|
+
() => projectExecutionLocationComparison({}, deps),
|
|
258
440
|
options,
|
|
259
441
|
);
|
|
260
442
|
});
|
|
@@ -269,7 +451,136 @@ export function registerSessionLocationSubcommands(session) {
|
|
|
269
451
|
.option("--json", "Machine-readable JSON output")
|
|
270
452
|
.action((id, target, options) => {
|
|
271
453
|
process.exitCode = runAction(
|
|
272
|
-
() => projectExecutionLocationHandoff(id, target, options.facts),
|
|
454
|
+
() => projectExecutionLocationHandoff(id, target, options.facts, deps),
|
|
455
|
+
options,
|
|
456
|
+
);
|
|
457
|
+
});
|
|
458
|
+
|
|
459
|
+
location
|
|
460
|
+
.command("attest <id> <target>")
|
|
461
|
+
.description(
|
|
462
|
+
"Invoke a fixed target-side probe and bind observed host facts to a handoff",
|
|
463
|
+
)
|
|
464
|
+
.requiredOption(
|
|
465
|
+
"--facts <path>",
|
|
466
|
+
"Versioned Git/summary/artifact/permission/target evidence JSON",
|
|
467
|
+
)
|
|
468
|
+
.requiredOption(
|
|
469
|
+
"--profile <path>",
|
|
470
|
+
"Secret-free WSL/SSH/Container target profile JSON",
|
|
471
|
+
)
|
|
472
|
+
.option("--json", "Machine-readable JSON output")
|
|
473
|
+
.action((id, target, options) => {
|
|
474
|
+
process.exitCode = runAction(
|
|
475
|
+
() =>
|
|
476
|
+
projectExecutionLocationTargetAttestation(
|
|
477
|
+
id,
|
|
478
|
+
target,
|
|
479
|
+
options.facts,
|
|
480
|
+
options.profile,
|
|
481
|
+
deps,
|
|
482
|
+
),
|
|
483
|
+
options,
|
|
484
|
+
);
|
|
485
|
+
});
|
|
486
|
+
|
|
487
|
+
location
|
|
488
|
+
.command("receive <id>")
|
|
489
|
+
.description("Install an exact verified session replica from bounded stdin")
|
|
490
|
+
.requiredOption(
|
|
491
|
+
"--expected-head-hash <sha256>",
|
|
492
|
+
"Exact unprefixed transcript head hash",
|
|
493
|
+
)
|
|
494
|
+
.requiredOption(
|
|
495
|
+
"--expected-event-count <count>",
|
|
496
|
+
"Exact transcript event count",
|
|
497
|
+
)
|
|
498
|
+
.requiredOption(
|
|
499
|
+
"--expected-transcript-digest <sha256>",
|
|
500
|
+
"Exact SHA-256 digest of stdin bytes",
|
|
501
|
+
)
|
|
502
|
+
.option("--json", "Machine-readable JSON receipt")
|
|
503
|
+
.action((id, options) => {
|
|
504
|
+
process.exitCode = runAction(
|
|
505
|
+
() =>
|
|
506
|
+
receiveSessionReplica(
|
|
507
|
+
id,
|
|
508
|
+
options.expectedHeadHash,
|
|
509
|
+
options.expectedEventCount,
|
|
510
|
+
options.expectedTranscriptDigest,
|
|
511
|
+
deps,
|
|
512
|
+
),
|
|
513
|
+
options,
|
|
514
|
+
);
|
|
515
|
+
});
|
|
516
|
+
|
|
517
|
+
location
|
|
518
|
+
.command("prepare <id>")
|
|
519
|
+
.description(
|
|
520
|
+
"Install an exact replica and append a canonical target-location handoff",
|
|
521
|
+
)
|
|
522
|
+
.requiredOption(
|
|
523
|
+
"--expected-head-hash <sha256>",
|
|
524
|
+
"Exact unprefixed source transcript head hash",
|
|
525
|
+
)
|
|
526
|
+
.requiredOption(
|
|
527
|
+
"--expected-event-count <count>",
|
|
528
|
+
"Exact source transcript event count",
|
|
529
|
+
)
|
|
530
|
+
.requiredOption(
|
|
531
|
+
"--expected-transcript-digest <sha256>",
|
|
532
|
+
"Exact SHA-256 digest of stdin bytes",
|
|
533
|
+
)
|
|
534
|
+
.requiredOption(
|
|
535
|
+
"--expected-target-facts-digest <sha256>",
|
|
536
|
+
"Stable target facts digest from target attestation",
|
|
537
|
+
)
|
|
538
|
+
.requiredOption("--profile-digest <sha256>", "Exact target profile digest")
|
|
539
|
+
.requiredOption(
|
|
540
|
+
"--target-evidence-id <id>",
|
|
541
|
+
"Exact handoff target evidence id",
|
|
542
|
+
)
|
|
543
|
+
.requiredOption(
|
|
544
|
+
"--attestation-digest <sha256>",
|
|
545
|
+
"Exact target attestation digest",
|
|
546
|
+
)
|
|
547
|
+
.option("--json", "Machine-readable JSON receipt")
|
|
548
|
+
.action((id, options) => {
|
|
549
|
+
process.exitCode = runAction(
|
|
550
|
+
() => prepareSessionReplicaHandoff(id, options, deps),
|
|
551
|
+
options,
|
|
552
|
+
);
|
|
553
|
+
});
|
|
554
|
+
|
|
555
|
+
location
|
|
556
|
+
.command("resume <id> <target>")
|
|
557
|
+
.description(
|
|
558
|
+
"Re-attest a target, verify its canonical session replica, and resume there",
|
|
559
|
+
)
|
|
560
|
+
.requiredOption(
|
|
561
|
+
"--facts <path>",
|
|
562
|
+
"Versioned Git/summary/artifact/permission/target evidence JSON",
|
|
563
|
+
)
|
|
564
|
+
.requiredOption(
|
|
565
|
+
"--profile <path>",
|
|
566
|
+
"Secret-free WSL/SSH/Container target profile JSON",
|
|
567
|
+
)
|
|
568
|
+
.requiredOption(
|
|
569
|
+
"--expected-target-facts-digest <sha256>",
|
|
570
|
+
"Exact stable target facts digest from session location attest",
|
|
571
|
+
)
|
|
572
|
+
.option("--json", "Machine-readable JSON receipt after target exit")
|
|
573
|
+
.action((id, target, options) => {
|
|
574
|
+
process.exitCode = runAction(
|
|
575
|
+
() =>
|
|
576
|
+
resumeSessionAtExecutionLocation(
|
|
577
|
+
id,
|
|
578
|
+
target,
|
|
579
|
+
options.facts,
|
|
580
|
+
options.profile,
|
|
581
|
+
options.expectedTargetFactsDigest,
|
|
582
|
+
deps,
|
|
583
|
+
),
|
|
273
584
|
options,
|
|
274
585
|
);
|
|
275
586
|
});
|
package/src/constants.js
CHANGED
|
@@ -30,7 +30,7 @@ export const LLM_PROVIDERS = {
|
|
|
30
30
|
volcengine: {
|
|
31
31
|
name: "Volcengine (火山引擎/豆包)",
|
|
32
32
|
defaultBaseUrl: "https://ark.cn-beijing.volces.com/api/v3",
|
|
33
|
-
defaultModel: "
|
|
33
|
+
defaultModel: "deepseek-v4-flash-260425",
|
|
34
34
|
requiresApiKey: true,
|
|
35
35
|
},
|
|
36
36
|
openai: {
|
|
@@ -144,7 +144,7 @@ export const DEFAULT_CONFIG = {
|
|
|
144
144
|
provider: "volcengine",
|
|
145
145
|
apiKey: null,
|
|
146
146
|
baseUrl: "https://ark.cn-beijing.volces.com/api/v3",
|
|
147
|
-
model: "
|
|
147
|
+
model: "deepseek-v4-flash-260425",
|
|
148
148
|
// When true, `cc ask` (provider=ollama only) overrides baseUrl to point at
|
|
149
149
|
// the Android LocalLlmServer (127.0.0.1:18484). User opt-in toggle:
|
|
150
150
|
// cc config set llm.preferAndroidLocal true
|
package/src/data/changelog.json
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"source": "CHANGELOG.md",
|
|
3
3
|
"releases": [
|
|
4
|
+
{
|
|
5
|
+
"productVersion": null,
|
|
6
|
+
"cliVersion": "0.165.2",
|
|
7
|
+
"cliVersions": ["0.165.1", "0.165.2"],
|
|
8
|
+
"date": "2026-08-18",
|
|
9
|
+
"title": "",
|
|
10
|
+
"sections": [
|
|
11
|
+
{
|
|
12
|
+
"heading": "Fixed — cc CLI 0.165.2: governed plugins and keeper handoff reliability",
|
|
13
|
+
"body": "> `chainlesschain` **0.165.1 → 0.165.2** (candidate; not yet published,\n> 2026-08-18).\n> CLI-only candidate; `@chainlesschain/personal-data-hub` remains **0.4.58**\n> and `@chainlesschain/agent-sdk` remains **0.1.7**.\n\n- **Governed plugin transactions and provenance**: marketplace payload,\n activation, install, update, transaction recovery, and provenance decisions\n bind immutable source identities and digests. Registry cache entries are\n content-addressed, while corrupt, stale, or mismatched recovery evidence\n continues to fail closed.\n- **Strict plugin execution boundaries**: the remaining live plugin fixtures\n now execute in the strict Linux sandbox, MCP security soak provisions its\n required Bubblewrap boundary explicitly, and release fixtures exercise the\n production activation path instead of accepting inactive coverage.\n- **Durable workflow authority**: provider requests and settlements, nested and\n parallel tool effects, child and descendant calls, and timeout outcomes gain\n durable identity-bound receipts so retries cannot silently reuse ambiguous\n execution authority.\n- **Background keeper lock handoff**: an owner that durably publishes its exact\n release marker treats the marker as the logical handoff even when another\n contender wins physical cleanup. Wrong, corrupt, or active foreign claimants\n remain rejected, and POSIX/Windows process identity and cleanup races retain\n bounded fail-closed handling.\n- **Scheduler campaign continuity**: scheduled long-soak dispatches use a pinned\n campaign identity, refuse overlapping segments, and can auto-finalize only\n after the required cross-platform evidence window is complete.\n- **Cross-platform release stability**: generated command help stays in sync;\n POSIX fsync-failure fixtures match the actual read mode; registry cache tests\n follow immutable URL-plus-digest semantics; and macOS marketplace replay uses\n isolated local scope instead of leaking state through the runner user home.\n- **Release status**: immutable tag, final source SHA, workflow run IDs, npm\n provenance, package digests, and registry readback remain intentionally\n absent until the final `0.165.2` merge SHA passes complete `CLI CI` and\n `CLI Strict Sandbox` matrices on Linux, Windows, and macOS, followed by the\n dedicated npm release and independent public readback workflows. The active\n two-hour Keeper/reliability runs and the 72-hour scheduler campaign are not\n claimed as completed release evidence here."
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
},
|
|
4
17
|
{
|
|
5
18
|
"productVersion": null,
|
|
6
19
|
"cliVersion": "0.165.1",
|
|
@@ -10,7 +23,7 @@
|
|
|
10
23
|
"sections": [
|
|
11
24
|
{
|
|
12
25
|
"heading": "Added — cc CLI 0.165.1: runtime admission, remote authority, and background containment",
|
|
13
|
-
"body": "> `chainlesschain` **0.164.0 → 0.165.1** (
|
|
26
|
+
"body": "> `chainlesschain` **0.164.0 → 0.165.1** (published from exact SHA\n> `1a10ed7c8fd14d12f7760e948ff8efe36c766602`, 2026-08-17).\n> CLI release includes `@chainlesschain/personal-data-hub` **0.4.58**;\n> `@chainlesschain/agent-sdk` remains **0.1.7**.\n\n- **Dynamic workflow run admission**: Cowork workflow execution revalidates the\n immutable definition digest, execution-authority session, permissions,\n sandbox, scale, and cost gates when a run starts instead of treating an\n earlier preflight as continuing authority.\n- **Durable remote authority**: CLI-hosted approval, relay membership, and\n reconnect reconciliation bind responses and commits to durable membership\n epochs. Stale, revoked, mismatched, or unavailable authority fails closed.\n- **Canonical execution boundaries**: background `run_shell`, plugin-bin, and\n delivery paths validate canonical workspace and configured repository\n authority before executing or pushing. Linux child descriptors not declared\n by the execution contract are closed before launch.\n- **Background keeper containment**: supervisor state locks publish ownership\n atomically, distinguish zombies and reused PIDs, preserve POSIX process-group\n cleanup, contain released turns after Worker loss, and require durable cleanup\n evidence before retiring worktrees. POSIX socket namespaces and Windows exit\n settlement are bounded for hosted and local environments.\n- **Cross-platform release evidence**: CLI workflows install the candidate's\n dependency closure, bind reusable jobs to the exact source SHA, keep each\n platform's evidence isolated, and retain bounded diagnostics for transient\n process-identity and cleanup races.\n- **Dependency security closure**: the CLI requires the patched `js-yaml`\n 3.15.1 line, while Personal Data Hub 0.4.58 advances its bounded ZIP adapter\n to `adm-zip` 0.6.0 so a crafted archive cannot trigger the disclosed 4 GB\n allocation path before adapter-level entry validation.\n- **Release boundary**: the separate plugin marketplace payload/activation\n hardening later passed its own exact-head gates at `89c498cc46` and merged\n through PR #215 (`089336992d`). It remains intentionally excluded from this\n immutable tarball and is tracked as a post-`0.165.1` source increment.\n- **Release packaging recovery**: immutable tag `v-npm-0-165-0` stopped before\n any registry write because its SBOM resolver tried to fetch the coordinated\n PDH 0.4.58 candidate before that package could be published. The 0.165.1\n workflow resolves the SBOM from exact-SHA internal package tarballs instead.\n- **Published release evidence**: immutable tag `v-npm-0-165-1` resolves to\n exact source commit `1a10ed7c8fd14d12f7760e948ff8efe36c766602`.\n Its Linux, Windows, and macOS `CLI CI` (`32038591204`) and\n `CLI Strict Sandbox` (`32038590960`) matrices passed; the dedicated npm\n release (`32038590940`) and independent public readback (`32039659372`)\n succeeded. npm reports `latest=0.165.1`; the public tarball SHA-1 is\n `51ce645bebbe63ae168386cb8b6122a67c7d0813` and SHA-256 is\n `5806d34b6659dcc632dad31db3acdc2f4fa07fb924b7d93de1d22637a3186241`."
|
|
14
27
|
}
|
|
15
28
|
]
|
|
16
29
|
},
|
|
@@ -417,7 +417,7 @@ async function _resolveWorkflowExecutionAuthority(server, sessionId) {
|
|
|
417
417
|
}
|
|
418
418
|
return Object.freeze({
|
|
419
419
|
schema: WORKFLOW_EXECUTION_AUTHORITY_SCHEMA,
|
|
420
|
-
authority: "verified-session-start",
|
|
420
|
+
authority: proof.authority || "verified-session-start",
|
|
421
421
|
sessionId: proof.sessionId,
|
|
422
422
|
headHash: proof.headHash,
|
|
423
423
|
eventCount: proof.eventCount,
|