chainlesschain 0.162.187 → 0.162.189
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/package.json +1 -1
- package/src/assets/web-panel/assets/{AIOps-CETaO3s8.js → AIOps-DbZft8w0.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-CAe7E9TW.js → ActionButton-DoOZpwfN.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-BGr2mzwO.js → Analytics-B0J0KLTW.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-BEoY-NcT.js → AppLayout-D9eIR0qq.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-DUZivCgt.js → Artifacts-BnZXEVeo.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-C3yBs68k.js → Audit-X1ce4Bjn.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-C9KwiY3O.js → BackgroundAgents-BvWR-y5v.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-BoSWD_C8.js → Backup-BublSGEd.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-Dp09GkxL.js → BaseInput-CR_77Hso.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-5t9d-Ja0.js → Chat-DixW52tq.js} +6 -6
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-DmVku4GH.js → ChatBubbleRenderer-DDHDpBBA.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-8QJFlkqI.js → Checkbox-CCv1C87K.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-BJVFQ3lL.js → Codegen-B03Cc3dd.js} +1 -1
- package/src/assets/web-panel/assets/{Col-6hdLD0oB.js → Col-CA06-6pU.js} +1 -1
- package/src/assets/web-panel/assets/{Community-B8opo0uY.js → Community-Bj881J52.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-Dv8HudiN.js → Compact-UZLTPoaL.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-DhxuCS5N.js → Compliance-kGwzRb_0.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-Dggy6VIL.js → Cowork-KundoYM8.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-DSmDqJTT.js → Cron-BYZyoqDe.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-7bZq0j5f.js → Crosschain-BhrrppBX.js} +1 -1
- package/src/assets/web-panel/assets/{DID-BWY4kh-H.js → DID-CdC6EguZ.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-bOzPZxlu.js → Dashboard-CcQx3J4y.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-BTFJHqQu.js → Dropdown-BpijtEzQ.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-BC3MOdtT.js → EmailListRenderer-DfZjeZTe.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-CFHAdTTY.js → FamilyGuardDashboard-BFYSf69C.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-DZ_4aF_n.js → Federation-Okdi3pJm.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-BZje6UTj.js → FormItemContext-mH-HebKW.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-D7QfCvjN.js → GenericCardRenderer-xivV69x7.js} +1 -1
- package/src/assets/web-panel/assets/{Git-DuG7qANG.js → Git-1rh_YBwg.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-BDmYAgTh.js → Governance-eAXkNxdY.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-DSXAfc1Q.js → Inference-CS6dMVTN.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-DusleniP.js → KnowledgeGraph-Bq_TnkvD.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-CpImmA8p.js → Logs-KchHtiHt.js} +2 -2
- package/src/assets/web-panel/assets/{MarkdownRenderer-BZ6LJBkk.js → MarkdownRenderer-TabqHW9B.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-DXS8CXkE.js → Marketplace-CsmGcX5X.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-D151UfUI.js → McpTools-BaPFnnyz.js} +5 -5
- package/src/assets/web-panel/assets/{Memory-DKDxnoA1.js → Memory-2m-sUUf7.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-BFZ95iKM.js → MobileBridge-D5nVZBRu.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-CDAR-grF.js → MobileProjects-Bo8MLZvT.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-OGJ95xJs.js → Mtc-3GDvamGa.js} +6 -6
- package/src/assets/web-panel/assets/{MtcAudit-BmGTo1XC.js → MtcAudit-D2zGuZCH.js} +4 -4
- package/src/assets/web-panel/assets/{Multisig-XumJRqOa.js → Multisig-BBVQ4t6t.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-DHhhRZed.js → NLProgramming-BIOCyOGp.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-B9rGxNNr.js → Notes-DVwBGpzc.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-DClLbMYV.js → NotificationSettings-BDnHfIfX.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-I8OohT7N.js → OrderTableRenderer-C7Ek20ag.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-M6WzaYVa.js → Organization-D3SRKaa7.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-Cb3B5KtM.js → Overflow-C2B8ahyn.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-BGk57kya.js → P2P-2iwQzG65.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-CXcKyPqK.js → PdhVaultBrowser-CoPiWqMN.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-hsfJ-Y0e.js → Permissions-yV5XNXo5.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-BSBii4js.js → PersonalDataHub-uCDJhMUF.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-BNw52rey.js → Pipeline-hN7ucMOA.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-DUpfue4E.js → Privacy-CgU0ptN4.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-C68NsP3h.js → ProjectInit-CfYPiT6j.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-BJ2It9v4.js → ProjectSettings-B0A2C4nw.js} +2 -2
- package/src/assets/web-panel/assets/Projects-BE5C0ajn.js +1 -0
- package/src/assets/web-panel/assets/{Providers-EnU4VWwS.js → Providers-CstQPf8W.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-BRt5-B_I.js → QrScannerModal-Co3z_ynk.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-Jd5L9UL2.js → QuickAsk-DMTS6pQ6.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-BNDhoVIu.js → Recommend-ETw4odUa.js} +1 -1
- package/src/assets/web-panel/assets/RemoteSession-B0rkE09d.js +5 -0
- package/src/assets/web-panel/assets/{Reputation-D1wQPUNv.js → Reputation-BTVqQgKq.js} +1 -1
- package/src/assets/web-panel/assets/{Row-DnjRegul.js → Row-CBKKwwtO.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-C_T4I-nF.js → RssFeed-BHUQ438I.js} +2 -2
- package/src/assets/web-panel/assets/{Search-C4lrxlLh.js → Search-B4NqeUsF.js} +1 -1
- package/src/assets/web-panel/assets/{Security-ByYT-VzP.js → Security-BRjoYG5_.js} +4 -4
- package/src/assets/web-panel/assets/{Services-BHpyEqB5.js → Services-CxQzu3p3.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-C0I23vG-.js → Skeleton-BKzwwmWO.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-DGZXz22K.js → Skills-DrsFcgth.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-DL_urP9A.js → Sla-D21tmXCH.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-6x-hUNQ_.js → SpeechSettings-CjyjLfp8.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-Crk5TCXq.js → SyncSettings-Cu45-tnx.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-rZGq5PZs.js → Tasks-oMcILYOj.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-DT5el8Q8.js → Templates-Bh-Zcr5R.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-mlgeyMK8.js → Tenant-68ns63aI.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-C8HEA-lM.js → Terminal-BLJkFykE.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-DvlqBayB.js → TimelineRenderer-xcrJLq-O.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-C7lDcNmT.js → Tokens-C6PpFJtf.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-CM8nCnIJ.js → Trigger-BaKA7tdM.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-BQDLUQ9x.js → Trust-BzhA57Jc.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-CVqM0OFE.js → UkeySign-4_U3JkIR.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-BvAcQpzT.js → VideoEditing-162AANxX.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-zFVFaAZ2.js → Wallet-B1viuql_.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-Cc522ums.js → WebAuthn-ZVWazhCy.js} +4 -4
- package/src/assets/web-panel/assets/{WorkflowEditor-Bg_wxpDo.js → WorkflowEditor-tzdyUk-1.js} +1 -1
- package/src/assets/web-panel/assets/{chat-jg0QwC8K.js → chat-DmrHNuwq.js} +1 -1
- package/src/assets/web-panel/assets/{colors-ALzYz1gO.js → colors-DAJ_M-PK.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-DXHYUoqi.js → compact-item-uIzmYwLs.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-BsGsBM5m.js → createContext-D_ZmuLwb.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-DIrncrV1.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-BccMLzxA.js → hasIn-CDt_shTL.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cg9cOVe9.js → index-BAvSmJXW.js} +1 -1
- package/src/assets/web-panel/assets/{index-BTTeAiOP.js → index-BDF6EQBs.js} +1 -1
- package/src/assets/web-panel/assets/{index-C3k3ZwkQ.js → index-BHvlm0In.js} +1 -1
- package/src/assets/web-panel/assets/{index-CQ1ORdp-.js → index-BRa4kJ_S.js} +1 -1
- package/src/assets/web-panel/assets/{index-BcJzphrP.js → index-BTCXf1t-.js} +1 -1
- package/src/assets/web-panel/assets/{index-rIy96PeM.js → index-Bbxjfstq.js} +1 -1
- package/src/assets/web-panel/assets/{index-CSFESurl.js → index-Bx4d6c1k.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cmg_Npx5.js → index-ByzGvpR9.js} +1 -1
- package/src/assets/web-panel/assets/{index-CahDve8M.js → index-C16fYKFD.js} +1 -1
- package/src/assets/web-panel/assets/{index-2VstcImq.js → index-C5WcdJH2.js} +3 -3
- package/src/assets/web-panel/assets/{index-C3Rf8wIM.js → index-CG0lY4h3.js} +1 -1
- package/src/assets/web-panel/assets/{index-uzykuL_R.js → index-CKyd472S.js} +1 -1
- package/src/assets/web-panel/assets/{index-CBVIFX-x.js → index-CaelyMgF.js} +1 -1
- package/src/assets/web-panel/assets/{index-TeCof1s3.js → index-CbD_WW_6.js} +1 -1
- package/src/assets/web-panel/assets/{index-BfF0OGKU.js → index-CcZ9xJI9.js} +1 -1
- package/src/assets/web-panel/assets/{index-oWltafBn.js → index-CeUpKjvi.js} +1 -1
- package/src/assets/web-panel/assets/{index-CWLWBgfe.js → index-Cvak6Oe2.js} +1 -1
- package/src/assets/web-panel/assets/{index-C0AbXsDy.js → index-CzXqvMuP.js} +1 -1
- package/src/assets/web-panel/assets/index-D-Swwqld.js +1 -0
- package/src/assets/web-panel/assets/{index-BfV8RDlg.js → index-D4n1lGTB.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dxqiu9-F.js → index-D9OE8B3d.js} +1 -1
- package/src/assets/web-panel/assets/{index-BdCmJ_bG.js → index-DBFmcaCQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-DgjQ-kdT.js → index-DdUMcwRB.js} +1 -1
- package/src/assets/web-panel/assets/{index-BBbbr1YB.js → index-DeGBoLQA.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dmk7dD-T.js → index-DfSSy9uy.js} +1 -1
- package/src/assets/web-panel/assets/{index-JS2LXdd0.js → index-DqDSF2RW.js} +1 -1
- package/src/assets/web-panel/assets/{index-D9oV2iRR.js → index-DvFhhe6r.js} +1 -1
- package/src/assets/web-panel/assets/{index-BvsII10i.js → index-DwfvPe-j.js} +1 -1
- package/src/assets/web-panel/assets/index-FMZAMKy8.js +1 -0
- package/src/assets/web-panel/assets/{index-CrZHUsOZ.js → index-FyplHuNt.js} +1 -1
- package/src/assets/web-panel/assets/{index-CLzPzN75.js → index-GcKOHD_c.js} +1 -1
- package/src/assets/web-panel/assets/{index-koT8Q86Z.js → index-OzTxFIJP.js} +1 -1
- package/src/assets/web-panel/assets/{index-08diKcTm.js → index-QsgfSZrV.js} +1 -1
- package/src/assets/web-panel/assets/{index-CJg6Wsjc.js → index-Z8P4BexE.js} +1 -1
- package/src/assets/web-panel/assets/{index-srqW5_-X.js → index-clSX4PEc.js} +1 -1
- package/src/assets/web-panel/assets/{index-mIQUoUx1.js → index-ifxmu8SY.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cz_s25m3.js → index-rS3gl_68.js} +1 -1
- package/src/assets/web-panel/assets/{index-UQXedWQz.js → index-rXdwUeE3.js} +1 -1
- package/src/assets/web-panel/assets/{index-rcwgNMc0.js → index-saf3VNeP.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-xafkqrW3.js → initDefaultProps-pmfaD-aK.js} +1 -1
- package/src/assets/web-panel/assets/{motion-BrtyQXLk.js → motion-CaQ2CpYF.js} +1 -1
- package/src/assets/web-panel/assets/{move-BunUyg59.js → move-CkKTqNbI.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-BPwjBeuE.js → mtc-parser-Dd4xsgRI.js} +1 -1
- package/src/assets/web-panel/assets/{omit-BpyqZlNO.js → omit-BFuA5YEs.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-DDrV0XjE.js → pickAttrs-DDfxOAJc.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-1A18Pcl2.js → placementArrow-Be595JCp.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-B8Fnlmso.js → responsiveObserve-7byljUM3.js} +1 -1
- package/src/assets/web-panel/assets/{slide-x-Fwb2Zm.js → slide-CTWfOTaY.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-aAG5yJl_.js → statusUtils-CNZOuIxM.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-BRQSTMRL.js → styleChecker-DwOcBV78.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-D5X_KozY.js → useFlexGapSupport-B6MNwAO9.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-DN_YIjP-.js → useFs-CzyQjH9r.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-BizxAvjw.js → usePersonalDataHub-Dxh3KiVA.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-B5oAxN93.js → vnode-DVfZiS5N.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-DJhvyzKv.js → zoom-BYme7fbY.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/agent.js +22 -0
- package/src/commands/auto-mode.js +47 -0
- package/src/commands/checkpoint-managed.js +1059 -0
- package/src/commands/checkpoint.js +3 -0
- package/src/commands/team-distributed.js +3324 -0
- package/src/commands/team.js +1130 -74
- package/src/data/auto-mode-safety-eval-v1.json +3294 -0
- package/src/data/changelog.json +26 -0
- package/src/lib/agent-core.js +1 -0
- package/src/lib/agent-team/task-lease.js +271 -3
- package/src/lib/agent-team/team-adjudication.js +1501 -0
- package/src/lib/agent-team/team-budget.js +4 -1
- package/src/lib/agent-team/team-control-store.js +582 -0
- package/src/lib/agent-team/team-distributed-queue.js +5246 -0
- package/src/lib/agent-team/team-process-checkpoint.js +211 -0
- package/src/lib/agent-team/team-runner.js +319 -22
- package/src/lib/agent-team/team-worktree.js +1403 -95
- package/src/lib/auto-mode-safety-classifier.js +2034 -0
- package/src/lib/auto-mode-safety-eval.js +1022 -0
- package/src/lib/managed-checkpoint-render.js +60 -0
- package/src/lib/managed-tool-checkpoint.js +194 -0
- package/src/lib/process-execution-broker/index.js +438 -5
- package/src/lib/process-execution-broker/linux-generic-bwrap-runtime.js +28 -1
- package/src/lib/process-execution-broker/linux-generic-bwrap.js +28 -4
- package/src/lib/process-execution-broker/platform-sandbox.js +92 -70
- 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 +284 -19
- package/src/lib/process-execution-broker/workspace-transaction.js +3556 -0
- package/src/lib/secure-file-identity.js +433 -0
- package/src/lib/turn-binding.js +160 -2
- package/src/lib/with-file-lock.js +140 -23
- package/src/repl/agent-repl.js +19 -1
- package/src/runtime/agent-core.js +366 -122
- package/src/runtime/headless-runner.js +12 -0
- package/src/runtime/headless-stream.js +3 -0
- package/src/runtime/policies/agent-policy.js +14 -0
- package/src/assets/web-panel/assets/Projects-D2FHLUa-.js +0 -1
- package/src/assets/web-panel/assets/RemoteSession-BII41Mel.js +0 -5
- package/src/assets/web-panel/assets/devWarning-Dy1GJA4S.js +0 -1
- package/src/assets/web-panel/assets/index-8zbMbbuf.js +0 -1
- package/src/assets/web-panel/assets/index-C97f71oi.js +0 -1
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thin Agent Team adapter over ProcessExecutionBroker workspace transactions.
|
|
3
|
+
*
|
|
4
|
+
* TeamRunner/CLI integration can either hold the returned guard explicitly or
|
|
5
|
+
* use executeTask(). No team scheduler state is mutated here.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import executionBroker from "../process-execution-broker/index.js";
|
|
9
|
+
import {
|
|
10
|
+
WORKSPACE_TRANSACTION_COVERAGE,
|
|
11
|
+
WORKSPACE_TRANSACTION_ERROR,
|
|
12
|
+
} from "../process-execution-broker/workspace-transaction.js";
|
|
13
|
+
|
|
14
|
+
export const TEAM_PROCESS_CHECKPOINT_ERROR = Object.freeze({
|
|
15
|
+
INVALID_RUNNER: "TEAM_PROCESS_CHECKPOINT_INVALID_RUNNER",
|
|
16
|
+
ROLLBACK_FAILED: "TEAM_PROCESS_CHECKPOINT_ROLLBACK_FAILED",
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
function checkpointError(code, message, details = {}, cause = null) {
|
|
20
|
+
const error = new Error(message, cause ? { cause } : undefined);
|
|
21
|
+
error.name = "TeamProcessCheckpointError";
|
|
22
|
+
error.code = code;
|
|
23
|
+
Object.assign(error, details);
|
|
24
|
+
return error;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export class TeamTaskCheckpointGuard {
|
|
28
|
+
constructor(transaction) {
|
|
29
|
+
this.transaction = transaction;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
get id() {
|
|
33
|
+
return this.transaction.id;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
get checkpointId() {
|
|
37
|
+
return this.transaction.checkpointId;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
snapshot() {
|
|
41
|
+
return this.transaction.snapshot();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
markRunning() {
|
|
45
|
+
return this.transaction.markRunning();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
accept() {
|
|
49
|
+
return this.transaction.accept();
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
rollback(options = {}) {
|
|
53
|
+
return this.transaction.rollback(options);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
restore(options = {}) {
|
|
57
|
+
return this.transaction.restore(options);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Run one task under the prepared checkpoint. A thrown/aborted task is
|
|
62
|
+
* rolled back before the original error is rethrown. If rollback itself
|
|
63
|
+
* fails, both errors and the durable failure evidence are retained.
|
|
64
|
+
*/
|
|
65
|
+
async execute(runTask) {
|
|
66
|
+
if (typeof runTask !== "function") {
|
|
67
|
+
throw checkpointError(
|
|
68
|
+
TEAM_PROCESS_CHECKPOINT_ERROR.INVALID_RUNNER,
|
|
69
|
+
"team checkpoint execute requires a runTask function",
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
this.markRunning();
|
|
73
|
+
try {
|
|
74
|
+
const result = await runTask({
|
|
75
|
+
transactionId: this.id,
|
|
76
|
+
checkpointId: this.checkpointId,
|
|
77
|
+
workspaceRoot: this.transaction.workspaceRoot,
|
|
78
|
+
});
|
|
79
|
+
const checkpoint = this.accept();
|
|
80
|
+
return { result, checkpoint };
|
|
81
|
+
} catch (taskError) {
|
|
82
|
+
try {
|
|
83
|
+
const checkpoint = this.rollback({
|
|
84
|
+
reason:
|
|
85
|
+
taskError?.code === "ABORT_ERR" || taskError?.name === "AbortError"
|
|
86
|
+
? "task interrupted"
|
|
87
|
+
: "task failed",
|
|
88
|
+
});
|
|
89
|
+
if (
|
|
90
|
+
taskError &&
|
|
91
|
+
(typeof taskError === "object" || typeof taskError === "function")
|
|
92
|
+
) {
|
|
93
|
+
try {
|
|
94
|
+
taskError.workspaceCheckpoint = checkpoint;
|
|
95
|
+
} catch {
|
|
96
|
+
// Frozen/non-extensible errors still retain the durable checkpoint
|
|
97
|
+
// evidence in the transaction store; do not misreport a successful
|
|
98
|
+
// rollback as a rollback failure merely because decoration failed.
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
throw taskError;
|
|
102
|
+
} catch (rollbackError) {
|
|
103
|
+
if (rollbackError === taskError) throw taskError;
|
|
104
|
+
throw checkpointError(
|
|
105
|
+
TEAM_PROCESS_CHECKPOINT_ERROR.ROLLBACK_FAILED,
|
|
106
|
+
`team task failed and checkpoint rollback also failed: ${rollbackError.message}`,
|
|
107
|
+
{
|
|
108
|
+
taskError,
|
|
109
|
+
rollbackError,
|
|
110
|
+
transactionId: this.id,
|
|
111
|
+
failureEvidence:
|
|
112
|
+
rollbackError.failureEvidence ||
|
|
113
|
+
this.transaction.snapshot().failureEvidence ||
|
|
114
|
+
[],
|
|
115
|
+
},
|
|
116
|
+
rollbackError,
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export class TeamProcessCheckpointBroker {
|
|
124
|
+
constructor(options = {}) {
|
|
125
|
+
this.broker = options.broker || executionBroker;
|
|
126
|
+
this.stateDir = options.stateDir;
|
|
127
|
+
this.lockDir = options.lockDir;
|
|
128
|
+
this.limits = options.limits || {};
|
|
129
|
+
this.externalSideEffects = options.externalSideEffects !== false;
|
|
130
|
+
this.coverageTarget =
|
|
131
|
+
options.coverageTarget || WORKSPACE_TRANSACTION_COVERAGE.PARTIAL;
|
|
132
|
+
this.writerIsolation = options.writerIsolation || "unknown";
|
|
133
|
+
this.exclusions = Array.isArray(options.exclusions)
|
|
134
|
+
? [...options.exclusions]
|
|
135
|
+
: [];
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
beginTask(options = {}) {
|
|
139
|
+
const transaction = this.broker.beginWorkspaceTransaction({
|
|
140
|
+
stateDir: options.stateDir || this.stateDir,
|
|
141
|
+
lockDir: options.lockDir || this.lockDir,
|
|
142
|
+
runId: options.runId,
|
|
143
|
+
taskKey: options.taskKey,
|
|
144
|
+
workspaceRoot: options.workspaceRoot,
|
|
145
|
+
limits: { ...this.limits, ...(options.limits || {}) },
|
|
146
|
+
// A process task may touch network/database/message/deployment state.
|
|
147
|
+
// Callers may set false only for a proven file-only execution contract.
|
|
148
|
+
externalSideEffects:
|
|
149
|
+
options.externalSideEffects === undefined
|
|
150
|
+
? this.externalSideEffects
|
|
151
|
+
: options.externalSideEffects !== false,
|
|
152
|
+
coverageTarget: options.coverageTarget || this.coverageTarget,
|
|
153
|
+
writerIsolation: options.writerIsolation || this.writerIsolation,
|
|
154
|
+
exclusions: Array.isArray(options.exclusions)
|
|
155
|
+
? options.exclusions
|
|
156
|
+
: this.exclusions,
|
|
157
|
+
...(options.id ? { id: options.id } : {}),
|
|
158
|
+
});
|
|
159
|
+
return new TeamTaskCheckpointGuard(transaction);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
async executeTask(options, runTask) {
|
|
163
|
+
return this.beginTask(options).execute(runTask);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
recoverPending(options = {}) {
|
|
167
|
+
return this.broker.recoverWorkspaceTransactions({
|
|
168
|
+
stateDir: options.stateDir || this.stateDir,
|
|
169
|
+
lockDir: options.lockDir || this.lockDir,
|
|
170
|
+
workspaceRoot: options.workspaceRoot,
|
|
171
|
+
reason: options.reason || "agent team crash recovery",
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
inspectCheckpoint(id, options = {}) {
|
|
176
|
+
return this.broker.inspectWorkspaceTransaction(id, {
|
|
177
|
+
stateDir: options.stateDir || this.stateDir,
|
|
178
|
+
lockDir: options.lockDir || this.lockDir,
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
listCheckpoints(options = {}) {
|
|
183
|
+
return this.broker.listWorkspaceTransactions({
|
|
184
|
+
stateDir: options.stateDir || this.stateDir,
|
|
185
|
+
lockDir: options.lockDir || this.lockDir,
|
|
186
|
+
workspaceRoot: options.workspaceRoot,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
restoreCheckpoint(id, options = {}) {
|
|
191
|
+
return this.broker.restoreWorkspaceTransaction(id, {
|
|
192
|
+
stateDir: options.stateDir || this.stateDir,
|
|
193
|
+
lockDir: options.lockDir || this.lockDir,
|
|
194
|
+
expectedEvidenceDigest: options.expectedEvidenceDigest,
|
|
195
|
+
force: options.force === true,
|
|
196
|
+
reason: options.reason || "agent team checkpoint restore",
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
undoRestore(id, options = {}) {
|
|
201
|
+
return this.broker.undoWorkspaceTransactionRestore(id, {
|
|
202
|
+
stateDir: options.stateDir || this.stateDir,
|
|
203
|
+
lockDir: options.lockDir || this.lockDir,
|
|
204
|
+
expectedRestoreEvidenceDigest: options.expectedRestoreEvidenceDigest,
|
|
205
|
+
force: options.force === true,
|
|
206
|
+
reason: options.reason || "undo agent team checkpoint restore",
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
export { WORKSPACE_TRANSACTION_COVERAGE, WORKSPACE_TRANSACTION_ERROR };
|