chainlesschain 0.162.188 → 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-Brr1LVcE.js → AIOps-DbZft8w0.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-DQU74DKG.js → ActionButton-DoOZpwfN.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-CYp9178y.js → Analytics-B0J0KLTW.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-DW4SCYsW.js → AppLayout-D9eIR0qq.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-CYlD_ed1.js → Artifacts-BnZXEVeo.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-CWl1rZOi.js → Audit-X1ce4Bjn.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-BOR-LPsa.js → BackgroundAgents-BvWR-y5v.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-DLpG7j1X.js → Backup-BublSGEd.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-B35K9wdr.js → BaseInput-CR_77Hso.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-CwUJb9gB.js → Chat-DixW52tq.js} +6 -6
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-1v6aMS1m.js → ChatBubbleRenderer-DDHDpBBA.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-pi3-tPNW.js → Checkbox-CCv1C87K.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-FyNF35eL.js → Codegen-B03Cc3dd.js} +1 -1
- package/src/assets/web-panel/assets/{Col-tGt_JDEr.js → Col-CA06-6pU.js} +1 -1
- package/src/assets/web-panel/assets/{Community-CC7LonQX.js → Community-Bj881J52.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-BGXrHHjE.js → Compact-UZLTPoaL.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-DSW0TBZ8.js → Compliance-kGwzRb_0.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-Bhk7rbvE.js → Cowork-KundoYM8.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-DxyiQ2NZ.js → Cron-BYZyoqDe.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-B2ZkxHok.js → Crosschain-BhrrppBX.js} +1 -1
- package/src/assets/web-panel/assets/{DID-yOJV99eJ.js → DID-CdC6EguZ.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-CKsttz7D.js → Dashboard-CcQx3J4y.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-CVFldXSL.js → Dropdown-BpijtEzQ.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-Bufv638J.js → EmailListRenderer-DfZjeZTe.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-4ncjoIjL.js → FamilyGuardDashboard-BFYSf69C.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-DsknEDoX.js → Federation-Okdi3pJm.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-Cqe5jWXA.js → FormItemContext-mH-HebKW.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-NAJaFKxc.js → GenericCardRenderer-xivV69x7.js} +1 -1
- package/src/assets/web-panel/assets/{Git-CszKQpnl.js → Git-1rh_YBwg.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-BXGodXi6.js → Governance-eAXkNxdY.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-CkoYuG2c.js → Inference-CS6dMVTN.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-DFlEr_T0.js → KnowledgeGraph-Bq_TnkvD.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-CVaENddA.js → Logs-KchHtiHt.js} +2 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-TabqHW9B.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-CDlLT0fw.js → Marketplace-CsmGcX5X.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-DdwOyszN.js → McpTools-BaPFnnyz.js} +5 -5
- package/src/assets/web-panel/assets/{Memory-DKQnkKuG.js → Memory-2m-sUUf7.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-DGseqlzJ.js → MobileBridge-D5nVZBRu.js} +1 -1
- package/src/assets/web-panel/assets/MobileProjects-Bo8MLZvT.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-O61Vwyli.js → Mtc-3GDvamGa.js} +6 -6
- package/src/assets/web-panel/assets/{MtcAudit-Dw2SyasS.js → MtcAudit-D2zGuZCH.js} +4 -4
- package/src/assets/web-panel/assets/{Multisig-hSu_l8kf.js → Multisig-BBVQ4t6t.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-CX1Epurr.js → NLProgramming-BIOCyOGp.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-R9xX8o8_.js → Notes-DVwBGpzc.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-jtSNLCuK.js → NotificationSettings-BDnHfIfX.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-BU2Yqq5H.js → OrderTableRenderer-C7Ek20ag.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-Pu2WO-U3.js → Organization-D3SRKaa7.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-BjnqUyFp.js → Overflow-C2B8ahyn.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-jjkvz44c.js → P2P-2iwQzG65.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-69ca_WeR.js → PdhVaultBrowser-CoPiWqMN.js} +4 -4
- package/src/assets/web-panel/assets/{Permissions-D4yDpivd.js → Permissions-yV5XNXo5.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-0qsL6iH1.js → PersonalDataHub-uCDJhMUF.js} +5 -5
- package/src/assets/web-panel/assets/{Pipeline-Cx7Ybrk2.js → Pipeline-hN7ucMOA.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-PbfR_M_V.js → Privacy-CgU0ptN4.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-CyV6Gsub.js → ProjectInit-CfYPiT6j.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-C7KZ2Wdk.js → ProjectSettings-B0A2C4nw.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-DQDjO-yK.js → Projects-BE5C0ajn.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-DyFVBBMX.js → Providers-CstQPf8W.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-CzB1BC9_.js → QrScannerModal-Co3z_ynk.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-Bk636mC1.js → QuickAsk-DMTS6pQ6.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-DoWxHIT3.js → Recommend-ETw4odUa.js} +1 -1
- package/src/assets/web-panel/assets/RemoteSession-B0rkE09d.js +5 -0
- package/src/assets/web-panel/assets/{Reputation-BucoReGG.js → Reputation-BTVqQgKq.js} +1 -1
- package/src/assets/web-panel/assets/{Row-DzmOdJU7.js → Row-CBKKwwtO.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-C1tK7KGU.js → RssFeed-BHUQ438I.js} +2 -2
- package/src/assets/web-panel/assets/{Search-CSnInOqk.js → Search-B4NqeUsF.js} +1 -1
- package/src/assets/web-panel/assets/{Security-dlejr15l.js → Security-BRjoYG5_.js} +4 -4
- package/src/assets/web-panel/assets/{Services-BioPZuNh.js → Services-CxQzu3p3.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-DWMibwpC.js → Skeleton-BKzwwmWO.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-BAAnx1B2.js → Skills-DrsFcgth.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-jWNp4hNO.js → Sla-D21tmXCH.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-y5kqKha-.js → SpeechSettings-CjyjLfp8.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-B9GNsc3e.js → SyncSettings-Cu45-tnx.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-BDBYKRen.js → Tasks-oMcILYOj.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-DRiE5eaN.js → Templates-Bh-Zcr5R.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-BGlAvExF.js → Tenant-68ns63aI.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-B8uzrbNY.js → Terminal-BLJkFykE.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-Df48iveY.js → TimelineRenderer-xcrJLq-O.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-CcmHndN6.js → Tokens-C6PpFJtf.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-DPkWxmQ2.js → Trigger-BaKA7tdM.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-DTb5a5AV.js → Trust-BzhA57Jc.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-CBmg5vch.js → UkeySign-4_U3JkIR.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-B0mZrz4O.js → VideoEditing-162AANxX.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-Bxs7_mpd.js → Wallet-B1viuql_.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-C8x3cMxU.js → WebAuthn-ZVWazhCy.js} +4 -4
- package/src/assets/web-panel/assets/{WorkflowEditor-DPrNznrP.js → WorkflowEditor-tzdyUk-1.js} +1 -1
- package/src/assets/web-panel/assets/{chat-D3bYWu7S.js → chat-DmrHNuwq.js} +1 -1
- package/src/assets/web-panel/assets/{colors-DY-PwMu4.js → colors-DAJ_M-PK.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-LDk10Kw6.js → compact-item-uIzmYwLs.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-C-2MZnFq.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-BQIBjcnB.js → hasIn-CDt_shTL.js} +1 -1
- package/src/assets/web-panel/assets/{index-8JC9BJa1.js → index-BAvSmJXW.js} +1 -1
- package/src/assets/web-panel/assets/{index-KFZO_lcx.js → index-BDF6EQBs.js} +1 -1
- package/src/assets/web-panel/assets/{index-CiTvBAr-.js → index-BHvlm0In.js} +1 -1
- package/src/assets/web-panel/assets/{index-COG61sRv.js → index-BRa4kJ_S.js} +1 -1
- package/src/assets/web-panel/assets/{index-lmm9p-jm.js → index-BTCXf1t-.js} +1 -1
- package/src/assets/web-panel/assets/{index-DTIZpPtG.js → index-Bbxjfstq.js} +1 -1
- package/src/assets/web-panel/assets/{index-_HRO_cIu.js → index-Bx4d6c1k.js} +1 -1
- package/src/assets/web-panel/assets/{index-BRI3ngNg.js → index-ByzGvpR9.js} +1 -1
- package/src/assets/web-panel/assets/{index-C3GNvExG.js → index-C16fYKFD.js} +1 -1
- package/src/assets/web-panel/assets/{index-D3Oq-DLL.js → index-C5WcdJH2.js} +3 -3
- package/src/assets/web-panel/assets/{index-L3smcoQX.js → index-CG0lY4h3.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dh-tkpKQ.js → index-CKyd472S.js} +1 -1
- package/src/assets/web-panel/assets/{index-CQVb2dWp.js → index-CaelyMgF.js} +1 -1
- package/src/assets/web-panel/assets/{index-DY2FIrmz.js → index-CbD_WW_6.js} +1 -1
- package/src/assets/web-panel/assets/{index-DYyLJPlF.js → index-CcZ9xJI9.js} +1 -1
- package/src/assets/web-panel/assets/{index-C7FC8cP2.js → index-CeUpKjvi.js} +1 -1
- package/src/assets/web-panel/assets/{index-BN-xdSWZ.js → index-Cvak6Oe2.js} +1 -1
- package/src/assets/web-panel/assets/{index-DSvo_bp0.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-BdXnYMCZ.js → index-D4n1lGTB.js} +1 -1
- package/src/assets/web-panel/assets/{index-L6qixyLc.js → index-D9OE8B3d.js} +1 -1
- package/src/assets/web-panel/assets/{index-VCh5zNJo.js → index-DBFmcaCQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-DlRYqt3S.js → index-DdUMcwRB.js} +1 -1
- package/src/assets/web-panel/assets/{index-k7C_oDCO.js → index-DeGBoLQA.js} +1 -1
- package/src/assets/web-panel/assets/{index-7xKu7Fns.js → index-DfSSy9uy.js} +1 -1
- package/src/assets/web-panel/assets/{index-CY4KnaO9.js → index-DqDSF2RW.js} +1 -1
- package/src/assets/web-panel/assets/{index-HasPt4-h.js → index-DvFhhe6r.js} +1 -1
- package/src/assets/web-panel/assets/{index-CaslYch6.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-B5pgtZnY.js → index-FyplHuNt.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cz4b6Z_7.js → index-GcKOHD_c.js} +1 -1
- package/src/assets/web-panel/assets/{index-BI4KgcYC.js → index-OzTxFIJP.js} +1 -1
- package/src/assets/web-panel/assets/{index-BX2b9Orc.js → index-QsgfSZrV.js} +1 -1
- package/src/assets/web-panel/assets/{index-CbR6ROOa.js → index-Z8P4BexE.js} +1 -1
- package/src/assets/web-panel/assets/{index-BrnRO9yE.js → index-clSX4PEc.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dd2Km97U.js → index-ifxmu8SY.js} +1 -1
- package/src/assets/web-panel/assets/{index-DhRt9cYJ.js → index-rS3gl_68.js} +1 -1
- package/src/assets/web-panel/assets/{index-D4K1weKc.js → index-rXdwUeE3.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cx6D_dx2.js → index-saf3VNeP.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-zQPSHf2C.js → initDefaultProps-pmfaD-aK.js} +1 -1
- package/src/assets/web-panel/assets/{motion-CKCStGVk.js → motion-CaQ2CpYF.js} +1 -1
- package/src/assets/web-panel/assets/{move-BufVDGYF.js → move-CkKTqNbI.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-DcaFxy5D.js → mtc-parser-Dd4xsgRI.js} +1 -1
- package/src/assets/web-panel/assets/{omit-EScpkGdo.js → omit-BFuA5YEs.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-72hG_qfT.js → pickAttrs-DDfxOAJc.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-CMFWiH20.js → placementArrow-Be595JCp.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-DKQHS41p.js → responsiveObserve-7byljUM3.js} +1 -1
- package/src/assets/web-panel/assets/{slide-QVAFHTIQ.js → slide-CTWfOTaY.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-DIz38e2G.js → statusUtils-CNZOuIxM.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-zK5cyLby.js → styleChecker-DwOcBV78.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-DhZngk62.js → useFlexGapSupport-B6MNwAO9.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-BvV2cvkg.js → useFs-CzyQjH9r.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-CRmxb9l3.js → usePersonalDataHub-Dxh3KiVA.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-CgQIbobP.js → vnode-DVfZiS5N.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-D4XrrO0R.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/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/changelog.json +13 -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/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/MarkdownRenderer-7iWGwZ-r.js +0 -1
- package/src/assets/web-panel/assets/MobileProjects-COBbEOlj.js +0 -1
- package/src/assets/web-panel/assets/RemoteSession-oOVIv9wq.js +0 -5
- package/src/assets/web-panel/assets/devWarning-B4dXIJqD.js +0 -1
- package/src/assets/web-panel/assets/index-C-C7DaG6.js +0 -1
- package/src/assets/web-panel/assets/index-DkfWzWtd.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 };
|