chainlesschain 0.165.3 → 0.165.5
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 +151 -29
- package/package.json +2 -2
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{AIOps-BiHNUlbU.js → AIOps-CEeYTeDB.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-D-UFjDRQ.js → ActionButton-BeRUQ3V2.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-DazVsDgW.js → Analytics-DrV718XF.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-DXh9UfNJ.js → AppLayout-Cd2Frt7Q.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-CZ6tsceY.js → Artifacts-CUJMlORU.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-RyxnBr_h.js → Audit-CXJcfT6p.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-BWS51Q6X.js → BackgroundAgents-DOv6Z7H9.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-BRtPcUul.js → Backup-BwdDyBI0.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-CGd4vZYY.js → BaseInput-BmLn4kYH.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-h8ijVwCg.js → Chat-COg8pAW2.js} +4 -4
- package/src/assets/web-panel/assets/ChatBubbleRenderer-4gGkdGgA.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-NyF6dPl8.js → Checkbox-BCP4uoU8.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-Ci4OOxr5.js → Codegen-pRt6Y9JI.js} +1 -1
- package/src/assets/web-panel/assets/{Col-CwTkc9BM.js → Col-DLaprKhS.js} +1 -1
- package/src/assets/web-panel/assets/{Community-DW_tM82m.js → Community-DyATsz5f.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-DEvHRV4S.js → Compact-BXAaupZK.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-BbjBEEfD.js → Compliance-DpcJBELr.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-10IXBaBa.js → Cowork-DG4EFWyd.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-BZkbpd5I.js → Cron-F6Oy5n2P.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-CFQ8L_6v.js → Crosschain-BOdgtalX.js} +1 -1
- package/src/assets/web-panel/assets/{DID-BDF6AkXe.js → DID-DT1dSkjH.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-CoOdWMi4.js → Dashboard-NBUIqWzC.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-DEsGmu8Y.js → Dropdown-CSpHeMYB.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-BS89SWlK.js → EmailListRenderer-CEG0xISr.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-C1FpCHiI.js → FamilyGuardDashboard-BTZ0BZna.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-BzvpVmLA.js → Federation-BuuCTn2V.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-BeC259PQ.js → FormItemContext-KAVceevk.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-azgG3bmV.js → GenericCardRenderer-DnHpcQvW.js} +1 -1
- package/src/assets/web-panel/assets/{Git-BmSSowc5.js → Git-C_B_0HwB.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-CTBCSyQZ.js → Governance-DPSZuzuu.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-DA5xyk4a.js → Inference-BV-06V7q.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-D1gPHNig.js → KnowledgeGraph-wpDuupn6.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-BPmLf1AR.js → Logs-Bseca1_I.js} +2 -2
- package/src/assets/web-panel/assets/{MarkdownRenderer-SVLOg49H.js → MarkdownRenderer-B4RLp2zs.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-DtUFcR0E.js → Marketplace-d3kM4DDL.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-DS_kqBv-.js → McpTools-DQ_xZ23i.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-Fvh7XL7V.js → Memory-CRIeYO4L.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-C7itAP45.js → MobileBridge-BsllIa9l.js} +1 -1
- package/src/assets/web-panel/assets/MobileProjects-BUuQy30X.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-B57MiNLK.js → Mtc-BOFDIzrC.js} +6 -6
- package/src/assets/web-panel/assets/{MtcAudit-BXfCUcM7.js → MtcAudit-BQg-vyvG.js} +5 -5
- package/src/assets/web-panel/assets/{Multisig-yaJ-ZcF6.js → Multisig-Bo1jrPdN.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-CoaUCKrO.js → NLProgramming-Bmod8alw.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-BKLM_65R.js → Notes-CGGFL8w-.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-DoDtK9uZ.js → NotificationSettings-BsZvCJxC.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-BJ28TGr-.js → OrderTableRenderer-C1-Quo_h.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-MuGsdoIb.js → Organization-BjOeDYOi.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-BLUN9J4R.js → Overflow-DwVV3l5A.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-DWuoBUPd.js → P2P-Cu3DQT9W.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-CUi37YPj.js → PdhVaultBrowser-Cg0gR7dH.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-BYQg2pcr.js → Permissions-CsAXxRN5.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-CAxoV2xu.js → PersonalDataHub-C-nNmnYp.js} +6 -6
- package/src/assets/web-panel/assets/{Pipeline-B33wGvIO.js → Pipeline-BOnW7nNc.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-A8yXTORP.js → Privacy-ClLSyGKt.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-D49I2I1O.js → ProjectInit-DuLvjjq7.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-Ci73jJDw.js → ProjectSettings-DQYYbDD9.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-CF-yD6Cn.js → Projects-Drw8MBGK.js} +1 -1
- package/src/assets/web-panel/assets/Providers-ckqHQe6K.js +1 -0
- package/src/assets/web-panel/assets/{QrScannerModal-Brza0ykJ.js → QrScannerModal-DW5BXk-G.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-DFydhjxL.js → QuickAsk-DDLnhNTp.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-DLF8_NhA.js → Recommend-PJQ2C91U.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-dyuStW3x.js → RemoteSession-s6wmda34.js} +3 -3
- package/src/assets/web-panel/assets/{Reputation-5F3tA6yw.js → Reputation-DC2sb-I3.js} +1 -1
- package/src/assets/web-panel/assets/{Row-Ca2A57S5.js → Row-hPGk1eGj.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-B0bxBkq_.js → RssFeed-RIvfZql0.js} +3 -3
- package/src/assets/web-panel/assets/{Search-CFNvHalZ.js → Search-DFg1G1eR.js} +1 -1
- package/src/assets/web-panel/assets/{Security-DSoH3Hav.js → Security-D6H5p8Dp.js} +4 -4
- package/src/assets/web-panel/assets/{Services-BHpfEmBQ.js → Services-nxYiFV_w.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-Dsh-QNmn.js → Skeleton-BmgFNAdB.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-BhT1NkSU.js → Skills-CsaaD2av.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-DY9snPeJ.js → Sla-yM5y9yvK.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-CWaX0_Cx.js → SpeechSettings-DPy1XMYh.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-B690y_TC.js → SyncSettings-CFVhEyyr.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-2N-w3zWd.js → Tasks-DdO02Inn.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-BjwQOQYC.js → Templates-Eo2d8Llu.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-CUqHErxY.js → Tenant-ChESOXgy.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-C13rXvNy.js → Terminal-BJ7oDxTI.js} +2 -2
- package/src/assets/web-panel/assets/TimelineRenderer-hWX0fUvz.js +1 -0
- package/src/assets/web-panel/assets/{Tokens-BXHLGXYC.js → Tokens-DVBZQnd-.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-1e5i65o3.js → Trigger-D89cQfVq.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-FLGqNHs5.js → Trust-BIVSb4-V.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-BbaR_LJB.js → UkeySign-B58gWopl.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-NOp4RIov.js → VideoEditing-DhHI7bmG.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-B7DW7bG4.js → Wallet-C4FheWS_.js} +3 -3
- package/src/assets/web-panel/assets/{WebAuthn-BptSUWix.js → WebAuthn-DnPRq-Bx.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-CAJnDOXS.js → WorkflowEditor-BerRPjpJ.js} +1 -1
- package/src/assets/web-panel/assets/{chat-I8LgG1-Z.js → chat-BzZ52iKr.js} +1 -1
- package/src/assets/web-panel/assets/{colors-CWe7SOVD.js → colors-BI_E4BAn.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-Cx3u3CA3.js → compact-item-d50mr3yk.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-CgD5ArwY.js → createContext-C6FsQ1IH.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-CagEcIex.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-BfQWiXN8.js → hasIn-DLZEMgLP.js} +1 -1
- package/src/assets/web-panel/assets/{index-BuEQSorC.js → index-9H_M2jju.js} +1 -1
- package/src/assets/web-panel/assets/{index-BiI-xPRH.js → index-A5CDWP7y.js} +1 -1
- package/src/assets/web-panel/assets/{index-DAVy98u7.js → index-AHr7ryWf.js} +1 -1
- package/src/assets/web-panel/assets/{index-BUAR7RY-.js → index-B81mo1Et.js} +1 -1
- package/src/assets/web-panel/assets/{index-DlIyt1qF.js → index-BAE3hwev.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dcdm_Z2c.js → index-BB9SqVSt.js} +1 -1
- package/src/assets/web-panel/assets/{index-CWZ3REg6.js → index-BRGx3w6T.js} +3 -3
- package/src/assets/web-panel/assets/{index-B6yChzt1.js → index-BTpIOTfR.js} +1 -1
- package/src/assets/web-panel/assets/{index-DeizoQVZ.js → index-BZjjdQ62.js} +1 -1
- package/src/assets/web-panel/assets/{index-e8BM1yY1.js → index-BcSUl9fA.js} +1 -1
- package/src/assets/web-panel/assets/{index-CNYFQxAW.js → index-BeM4hfht.js} +1 -1
- package/src/assets/web-panel/assets/{index-DGMYTN5W.js → index-Bmr_vxXD.js} +1 -1
- package/src/assets/web-panel/assets/{index-BREnPKGo.js → index-BoNZlzhQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-B1cX4Rxu.js → index-C3k8kevG.js} +1 -1
- package/src/assets/web-panel/assets/{index-3iKP9OTJ.js → index-CLoTQr0W.js} +1 -1
- package/src/assets/web-panel/assets/{index-C1UjHdgZ.js → index-CO8DAF7U.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cy_cCJlr.js → index-CRN5TRTQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-C0nDKhWv.js → index-CUaEHfQ0.js} +1 -1
- package/src/assets/web-panel/assets/{index-DslTuqro.js → index-CVzuawCX.js} +1 -1
- package/src/assets/web-panel/assets/{index-CAUnl4Jv.js → index-CdKt9fOd.js} +1 -1
- package/src/assets/web-panel/assets/{index-CMu16vPC.js → index-CgkoH3_g.js} +1 -1
- package/src/assets/web-panel/assets/{index-C-rIKccl.js → index-CjuKZBqJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bx7BNIRH.js → index-Co7s9LsB.js} +1 -1
- package/src/assets/web-panel/assets/{index-Doc0Ftpd.js → index-D-aBumtY.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cd79NQAx.js → index-DE0V6cp-.js} +1 -1
- package/src/assets/web-panel/assets/{index-V-kIHzAV.js → index-DY4j5zkF.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bi24S7Dw.js → index-Dec0Kf_Z.js} +1 -1
- package/src/assets/web-panel/assets/{index-DCJEY2T0.js → index-DoFtCVZ7.js} +1 -1
- package/src/assets/web-panel/assets/{index-C0ztiqtB.js → index-DqkbHHg8.js} +1 -1
- package/src/assets/web-panel/assets/{index-CcX4FSPf.js → index-DsscwxPE.js} +1 -1
- package/src/assets/web-panel/assets/{index-CdRkCwm4.js → index-GXE0D8Nx.js} +1 -1
- package/src/assets/web-panel/assets/{index-DmgtY58H.js → index-IPkwSAW_.js} +1 -1
- package/src/assets/web-panel/assets/{index-CQDKYbnv.js → index-KNGgO4Wm.js} +1 -1
- package/src/assets/web-panel/assets/{index-87gMxqhN.js → index-Pvf30m8Q.js} +1 -1
- package/src/assets/web-panel/assets/{index-DmrdUwzU.js → index-Q5Tn735s.js} +1 -1
- package/src/assets/web-panel/assets/{index-DFb-XIKy.js → index-TWG-_D1M.js} +1 -1
- package/src/assets/web-panel/assets/{index-DsQcURkA.js → index-Y2-q7QLm.js} +1 -1
- package/src/assets/web-panel/assets/index-pzT9PpOU.js +1 -0
- package/src/assets/web-panel/assets/index-z1kFadaX.js +1 -0
- package/src/assets/web-panel/assets/{initDefaultProps-DiBszVdG.js → initDefaultProps-D-4Hzgej.js} +1 -1
- package/src/assets/web-panel/assets/{motion-BGIFFozv.js → motion-D4Wl4xU7.js} +1 -1
- package/src/assets/web-panel/assets/{move-D5W7mp7B.js → move-Cd5eQvL0.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-JFIlxJ7F.js → mtc-parser-B4ilslCW.js} +1 -1
- package/src/assets/web-panel/assets/{omit-CQ3o6LIU.js → omit-Ckarx-tf.js} +1 -1
- package/src/assets/web-panel/assets/parsers-YNLm7sQ0.js +4 -0
- package/src/assets/web-panel/assets/{pickAttrs-R8MIlXo3.js → pickAttrs-QJ0bpCmc.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-sW7ylSky.js → placementArrow-CKHm-tq8.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-Cnl39Vbz.js → responsiveObserve-CV6a_w_Y.js} +1 -1
- package/src/assets/web-panel/assets/{slide-sn8tFd14.js → slide-mHpeQFgk.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-IKKY_QxZ.js → statusUtils-DIaQNQWA.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-BNpV4Nqs.js → styleChecker-PJpzavV8.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-BWyT_eoU.js → useFlexGapSupport-BH7zTw8S.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-D09p6_U9.js → useFs-BDNG3JDd.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-CzW3TkJZ.js → usePersonalDataHub-CY2VWdUg.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-3s3WoAKB.js → vnode-D0kw9jhz.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-Cjy_673s.js → zoom-B5g7TN7r.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/command-help-index.json +3 -3
- package/src/commands/agent.js +105 -35
- package/src/commands/artifacts.js +598 -33
- package/src/commands/cowork.js +200 -5
- package/src/commands/session-budget.js +155 -0
- package/src/commands/session-location.js +968 -1
- package/src/commands/session.js +23 -2
- package/src/data/changelog.json +28 -2
- package/src/gateways/ws/artifact-protocol.js +77 -13
- package/src/gateways/ws/message-dispatcher.js +57 -0
- package/src/gateways/ws/session-protocol.js +391 -24
- package/src/gateways/ws/ws-agent-handler.js +191 -14
- package/src/gateways/ws/ws-server.js +14 -3
- package/src/gateways/ws/ws-session-gateway.js +101 -5
- package/src/harness/jsonl-session-store.js +1210 -0
- package/src/lib/agent-team/team-runner.js +43 -13
- package/src/lib/artifact-access-ledger.js +462 -0
- package/src/lib/artifact-cleanup-ledger.js +861 -0
- package/src/lib/artifact-deletion-ledger.js +678 -0
- package/src/lib/artifact-recovery.js +970 -0
- package/src/lib/artifact-store.js +256 -51
- package/src/lib/artifact-workbench-projection.js +171 -0
- package/src/lib/command-lifecycle-report.js +8 -4
- package/src/lib/cowork-adapter.js +9 -5
- package/src/lib/cowork-task-runner.js +20 -0
- package/src/lib/cowork-workflow.js +178 -20
- package/src/lib/direct-model-usage.js +62 -22
- package/src/lib/dynamic-workflow-runtime.js +3592 -112
- package/src/lib/execution-location-result-apply.js +339 -0
- package/src/lib/execution-location-result-artifact.js +271 -0
- package/src/lib/execution-location-result-review.js +253 -0
- package/src/lib/execution-location-result-store.js +331 -0
- package/src/lib/execution-location-result.js +617 -0
- package/src/lib/execution-location-target.js +240 -3
- package/src/lib/managed-tool-checkpoint.js +47 -4
- package/src/lib/mcp-stdio-executable-identity.js +16 -0
- package/src/lib/mcp-stdio-native-code-policy.js +74 -0
- package/src/lib/mcp-stdio-package-materialization.js +12 -3
- package/src/lib/process-execution-broker/index.js +112 -0
- package/src/lib/process-execution-broker/platform-sandbox.js +57 -3
- package/src/lib/process-execution-broker/workspace-transaction.js +29 -0
- package/src/lib/session-budget-production-root.js +376 -0
- package/src/lib/session-budget-runtime.js +109 -18
- package/src/lib/session-budget-usage.js +63 -0
- package/src/lib/session-host-snapshot.js +19 -2
- package/src/lib/session-projection.js +126 -10
- package/src/lib/session-resource-budget.js +766 -105
- package/src/lib/sub-agent-context.js +69 -22
- package/src/lib/web-ui-server.js +12 -1
- package/src/repl/agent-repl.js +237 -16
- package/src/runtime/agent-core.js +135 -0
- package/src/runtime/headless-runner.js +135 -46
- package/src/runtime/headless-stream.js +133 -25
- package/src/runtime/policies/agent-policy.js +10 -0
- package/src/assets/web-panel/assets/ChatBubbleRenderer-D7tcdDS9.js +0 -1
- package/src/assets/web-panel/assets/MobileProjects-DGbP36-3.js +0 -1
- package/src/assets/web-panel/assets/Providers-D-etEhg5.js +0 -1
- package/src/assets/web-panel/assets/TimelineRenderer-CpbWcya_.js +0 -1
- package/src/assets/web-panel/assets/devWarning-DLv_872g.js +0 -1
- package/src/assets/web-panel/assets/index-CdiGCibe.js +0 -1
- package/src/assets/web-panel/assets/index-D_0z-gyz.js +0 -1
- package/src/assets/web-panel/assets/parsers-UEvh_ShA.js +0 -4
|
@@ -14,8 +14,8 @@ import {
|
|
|
14
14
|
SESSION_STATES,
|
|
15
15
|
} from "./session-lifecycle.js";
|
|
16
16
|
|
|
17
|
-
export const SESSION_PROJECTION_SCHEMA = "chainlesschain.session-projection/
|
|
18
|
-
export const SESSION_PROJECTION_VERSION =
|
|
17
|
+
export const SESSION_PROJECTION_SCHEMA = "chainlesschain.session-projection/v2";
|
|
18
|
+
export const SESSION_PROJECTION_VERSION = 2;
|
|
19
19
|
|
|
20
20
|
export const PROJECTION_KINDS = Object.freeze([
|
|
21
21
|
"local",
|
|
@@ -23,6 +23,7 @@ export const PROJECTION_KINDS = Object.freeze([
|
|
|
23
23
|
"remote",
|
|
24
24
|
"team",
|
|
25
25
|
"workflow",
|
|
26
|
+
"dynamic_workflow",
|
|
26
27
|
]);
|
|
27
28
|
|
|
28
29
|
export const PROJECTION_STATES = Object.freeze([
|
|
@@ -43,6 +44,9 @@ export const PROJECTION_ACTIONS = Object.freeze([
|
|
|
43
44
|
"stop",
|
|
44
45
|
"checkpoint",
|
|
45
46
|
"archive",
|
|
47
|
+
"pause",
|
|
48
|
+
"resume",
|
|
49
|
+
"recover",
|
|
46
50
|
]);
|
|
47
51
|
|
|
48
52
|
export const PROJECTION_ACTION_EXECUTORS = Object.freeze([
|
|
@@ -115,6 +119,7 @@ function sourceSessionId(source, fallback = null) {
|
|
|
115
119
|
asText(source?.sessionId) ||
|
|
116
120
|
asText(source?.agentSessionId) ||
|
|
117
121
|
asText(source?.remoteSessionId) ||
|
|
122
|
+
asText(source?.executionAuthoritySessionId) ||
|
|
118
123
|
fallback
|
|
119
124
|
);
|
|
120
125
|
}
|
|
@@ -214,6 +219,22 @@ function mapWorkflowState(source) {
|
|
|
214
219
|
return "working";
|
|
215
220
|
}
|
|
216
221
|
|
|
222
|
+
function mapDynamicWorkflowState(source) {
|
|
223
|
+
const status = String(source?.status || "")
|
|
224
|
+
.trim()
|
|
225
|
+
.toLowerCase();
|
|
226
|
+
if (status === "completed") return "done";
|
|
227
|
+
if (status === "stopped") return "stopped";
|
|
228
|
+
if (status === "failed") return "failed";
|
|
229
|
+
if (["input_requested", "needs_input"].includes(status)) {
|
|
230
|
+
return "needs_input";
|
|
231
|
+
}
|
|
232
|
+
if (["pause_requested", "paused", "blocked"].includes(status)) {
|
|
233
|
+
return "blocked";
|
|
234
|
+
}
|
|
235
|
+
return ["ready", "running"].includes(status) ? "working" : "failed";
|
|
236
|
+
}
|
|
237
|
+
|
|
217
238
|
function preview(executor, argv, { mutates = false, input = null } = {}) {
|
|
218
239
|
return {
|
|
219
240
|
executor,
|
|
@@ -290,6 +311,49 @@ function actionPreviews(kind, state, source, sourceId, linkedSessionId) {
|
|
|
290
311
|
"--cwd",
|
|
291
312
|
cwd,
|
|
292
313
|
]);
|
|
314
|
+
} else if (kind === "dynamic_workflow" && cwd) {
|
|
315
|
+
const expectedRevision = String(source?.revision || "");
|
|
316
|
+
const runtimeArgs = (action) => [
|
|
317
|
+
"cowork",
|
|
318
|
+
"workflow",
|
|
319
|
+
`runtime-${action}`,
|
|
320
|
+
sourceId,
|
|
321
|
+
"--expected-revision",
|
|
322
|
+
expectedRevision,
|
|
323
|
+
"--cwd",
|
|
324
|
+
cwd,
|
|
325
|
+
"--json",
|
|
326
|
+
];
|
|
327
|
+
routes.peek = preview("cli", [
|
|
328
|
+
"cowork",
|
|
329
|
+
"workflow",
|
|
330
|
+
"runtime-status",
|
|
331
|
+
sourceId,
|
|
332
|
+
"--cwd",
|
|
333
|
+
cwd,
|
|
334
|
+
"--json",
|
|
335
|
+
]);
|
|
336
|
+
if (
|
|
337
|
+
!TERMINAL_PROJECTION_STATES.has(state) &&
|
|
338
|
+
!["paused", "input_requested", "needs_input"].includes(source?.status)
|
|
339
|
+
) {
|
|
340
|
+
routes.pause = preview("cli", runtimeArgs("pause"), { mutates: true });
|
|
341
|
+
}
|
|
342
|
+
if (
|
|
343
|
+
["paused", "failed", "blocked"].includes(source?.status) &&
|
|
344
|
+
Number(source?.agents?.pending || 0) === 0 &&
|
|
345
|
+
Number(source?.input?.pending || 0) === 0
|
|
346
|
+
) {
|
|
347
|
+
routes.resume = preview("cli", runtimeArgs("resume"), { mutates: true });
|
|
348
|
+
}
|
|
349
|
+
if (!["completed", "stopped"].includes(source?.status)) {
|
|
350
|
+
routes.stop = preview("cli", runtimeArgs("stop"), { mutates: true });
|
|
351
|
+
}
|
|
352
|
+
if (Number(source?.recovery?.terminal || 0) > 0) {
|
|
353
|
+
routes.recover = preview("cli", runtimeArgs("recover-checkpoints"), {
|
|
354
|
+
mutates: true,
|
|
355
|
+
});
|
|
356
|
+
}
|
|
293
357
|
}
|
|
294
358
|
|
|
295
359
|
if (checkpointAvailable) {
|
|
@@ -356,6 +420,18 @@ function actionAvailability(kind, state, source, sourceId, linkedSessionId) {
|
|
|
356
420
|
: kind === "workflow"
|
|
357
421
|
? "coding workflow state has no non-destructive archive route"
|
|
358
422
|
: "no non-destructive session archive capability is available",
|
|
423
|
+
pause:
|
|
424
|
+
kind === "dynamic_workflow"
|
|
425
|
+
? "workflow run cannot be paused in its current state"
|
|
426
|
+
: "pause is only supported by durable dynamic workflow runs",
|
|
427
|
+
resume:
|
|
428
|
+
kind === "dynamic_workflow"
|
|
429
|
+
? "workflow run has pending input/effects or is not resumable"
|
|
430
|
+
: "resume is only supported by durable dynamic workflow runs",
|
|
431
|
+
recover:
|
|
432
|
+
kind === "dynamic_workflow"
|
|
433
|
+
? "no terminal checkpoint recovery is currently available"
|
|
434
|
+
: "recovery is only supported by durable dynamic workflow runs",
|
|
359
435
|
};
|
|
360
436
|
|
|
361
437
|
return PROJECTION_ACTIONS.map((id) => {
|
|
@@ -464,6 +540,24 @@ function artifactSummary(sessionIds, artifacts) {
|
|
|
464
540
|
};
|
|
465
541
|
}
|
|
466
542
|
|
|
543
|
+
function dynamicWorkflowSummary(source) {
|
|
544
|
+
if (source?.schema !== "cc-dynamic-workflow-workbench-state/v1") return null;
|
|
545
|
+
return {
|
|
546
|
+
runtimeRevision: source.revision,
|
|
547
|
+
phase: source.phase,
|
|
548
|
+
agents: source.agents,
|
|
549
|
+
budget: source.budget,
|
|
550
|
+
artifacts: source.artifacts,
|
|
551
|
+
checkpoints: source.checkpoints,
|
|
552
|
+
recovery: source.recovery,
|
|
553
|
+
recoveryPolicy: source.recoveryPolicy,
|
|
554
|
+
recent: source.recent,
|
|
555
|
+
definitionDigest: source.definitionDigest,
|
|
556
|
+
admissionDigest: source.admissionDigest,
|
|
557
|
+
stateDigest: source.stateDigest,
|
|
558
|
+
};
|
|
559
|
+
}
|
|
560
|
+
|
|
467
561
|
function prSummary(sessionIds, prLinks) {
|
|
468
562
|
const linked = [];
|
|
469
563
|
for (const sessionId of Array.isArray(sessionIds)
|
|
@@ -501,16 +595,22 @@ function approvalSummary(source, state) {
|
|
|
501
595
|
0,
|
|
502
596
|
);
|
|
503
597
|
}
|
|
598
|
+
if (source?.schema === "cc-dynamic-workflow-workbench-state/v1") {
|
|
599
|
+
count +=
|
|
600
|
+
asCount(source?.input?.pending) + asCount(source?.recovery?.terminal);
|
|
601
|
+
}
|
|
504
602
|
const needsInput = state === "needs_input";
|
|
505
603
|
return {
|
|
506
604
|
pending: needsInput || state === "blocked" || count > 0,
|
|
507
605
|
type: needsInput
|
|
508
606
|
? "input"
|
|
509
|
-
:
|
|
510
|
-
? "
|
|
511
|
-
: count > 0
|
|
512
|
-
? "
|
|
513
|
-
:
|
|
607
|
+
: source?.schema === "cc-dynamic-workflow-workbench-state/v1" && count > 0
|
|
608
|
+
? "recovery"
|
|
609
|
+
: Array.isArray(source?.units) && count > 0
|
|
610
|
+
? "adjudication"
|
|
611
|
+
: count > 0
|
|
612
|
+
? "approval"
|
|
613
|
+
: null,
|
|
514
614
|
count,
|
|
515
615
|
};
|
|
516
616
|
}
|
|
@@ -552,7 +652,9 @@ function projectOne(kind, source, { artifacts, prLinks }) {
|
|
|
552
652
|
if (kind === "local") state = "stopped";
|
|
553
653
|
else if (kind === "team") state = mapTeamState(source);
|
|
554
654
|
else if (kind === "workflow") state = mapWorkflowState(source);
|
|
555
|
-
else if (kind === "
|
|
655
|
+
else if (kind === "dynamic_workflow") {
|
|
656
|
+
state = mapDynamicWorkflowState(source);
|
|
657
|
+
} else if (kind === "remote") {
|
|
556
658
|
state = source?.invalid ? "failed" : source?.alive ? "working" : "stopped";
|
|
557
659
|
} else state = mapLifecycleState(source);
|
|
558
660
|
|
|
@@ -583,7 +685,9 @@ function projectOne(kind, source, { artifacts, prLinks }) {
|
|
|
583
685
|
? `Team run ${sourceId}`
|
|
584
686
|
: kind === "workflow"
|
|
585
687
|
? `Workflow ${sourceId}`
|
|
586
|
-
:
|
|
688
|
+
: kind === "dynamic_workflow"
|
|
689
|
+
? `Dynamic workflow ${source?.workflowId || sourceId}`
|
|
690
|
+
: `${kind} ${sourceId}`),
|
|
587
691
|
capabilities: actions
|
|
588
692
|
.filter((action) => action.available)
|
|
589
693
|
.map((action) => action.id),
|
|
@@ -592,9 +696,13 @@ function projectOne(kind, source, { artifacts, prLinks }) {
|
|
|
592
696
|
owner: ownerSummary(source, kind),
|
|
593
697
|
environment: environmentSummary(source, kind),
|
|
594
698
|
worktree: worktreeSummary(source),
|
|
595
|
-
artifact:
|
|
699
|
+
artifact:
|
|
700
|
+
kind === "dynamic_workflow"
|
|
701
|
+
? { count: asCount(source?.artifacts?.count), latest: null }
|
|
702
|
+
: artifactSummary(linkedSessionIds, artifacts),
|
|
596
703
|
approval: approvalSummary(source, state),
|
|
597
704
|
pr: prSummary(linkedSessionIds, prLinks),
|
|
705
|
+
workflow: dynamicWorkflowSummary(source),
|
|
598
706
|
lastEvent: lastEventFor(source, state),
|
|
599
707
|
};
|
|
600
708
|
return { ...projected, revision: projectionRevision(projected) };
|
|
@@ -615,6 +723,7 @@ export function buildSessionProjection({
|
|
|
615
723
|
remote = [],
|
|
616
724
|
team = [],
|
|
617
725
|
workflow = [],
|
|
726
|
+
dynamicWorkflow = [],
|
|
618
727
|
artifacts = [],
|
|
619
728
|
prLinks = {},
|
|
620
729
|
sourceErrors = {},
|
|
@@ -637,6 +746,9 @@ export function buildSessionProjection({
|
|
|
637
746
|
...(Array.isArray(workflow) ? workflow : []).map((source) =>
|
|
638
747
|
projectOne("workflow", source, context),
|
|
639
748
|
),
|
|
749
|
+
...(Array.isArray(dynamicWorkflow) ? dynamicWorkflow : []).map((source) =>
|
|
750
|
+
projectOne("dynamic_workflow", source, context),
|
|
751
|
+
),
|
|
640
752
|
].sort((left, right) => {
|
|
641
753
|
const priority = { needs_input: 0, blocked: 1, working: 2 };
|
|
642
754
|
const rank = (item) => priority[item.state] ?? 3;
|
|
@@ -669,6 +781,10 @@ export function buildSessionProjection({
|
|
|
669
781
|
Array.isArray(workflow) ? workflow.length : 0,
|
|
670
782
|
sourceErrors.workflow,
|
|
671
783
|
),
|
|
784
|
+
dynamicWorkflow: sourceStatus(
|
|
785
|
+
Array.isArray(dynamicWorkflow) ? dynamicWorkflow.length : 0,
|
|
786
|
+
sourceErrors.dynamicWorkflow,
|
|
787
|
+
),
|
|
672
788
|
};
|
|
673
789
|
const revision = projectionRevision({
|
|
674
790
|
schema: SESSION_PROJECTION_SCHEMA,
|