chainlesschain 0.165.4 → 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/package.json +1 -1
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{AIOps-C__nnraW.js → AIOps-CEeYTeDB.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-CsKWHEZ-.js → ActionButton-BeRUQ3V2.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-BhIjfjWO.js → Analytics-DrV718XF.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-BjuXFzWZ.js → AppLayout-Cd2Frt7Q.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-k6whDkZJ.js → Artifacts-CUJMlORU.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-C4FBMYRh.js → Audit-CXJcfT6p.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-C_vRrSXk.js → BackgroundAgents-DOv6Z7H9.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-CngFZeVp.js → Backup-BwdDyBI0.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-B_H9EBRm.js → BaseInput-BmLn4kYH.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-DLEC5kt7.js → Chat-COg8pAW2.js} +4 -4
- package/src/assets/web-panel/assets/ChatBubbleRenderer-4gGkdGgA.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-m3ClR4xh.js → Checkbox-BCP4uoU8.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-CmLSFrgp.js → Codegen-pRt6Y9JI.js} +1 -1
- package/src/assets/web-panel/assets/{Col-DFGQteHN.js → Col-DLaprKhS.js} +1 -1
- package/src/assets/web-panel/assets/{Community-EUUVORHE.js → Community-DyATsz5f.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-2PSg0Yr7.js → Compact-BXAaupZK.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-CcKur7gB.js → Compliance-DpcJBELr.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-DK_Fezfa.js → Cowork-DG4EFWyd.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-Dbw89xl7.js → Cron-F6Oy5n2P.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-CH66h_Ec.js → Crosschain-BOdgtalX.js} +1 -1
- package/src/assets/web-panel/assets/{DID-D1igRb17.js → DID-DT1dSkjH.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-DVAsrobk.js → Dashboard-NBUIqWzC.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-Dl7W8AQs.js → Dropdown-CSpHeMYB.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-D5tpaEQC.js → EmailListRenderer-CEG0xISr.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-O_VQf8gq.js → FamilyGuardDashboard-BTZ0BZna.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-BTVcgS9n.js → Federation-BuuCTn2V.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-BRnkJAIz.js → FormItemContext-KAVceevk.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-8OWSCkDj.js → GenericCardRenderer-DnHpcQvW.js} +1 -1
- package/src/assets/web-panel/assets/{Git-WXLYTQj2.js → Git-C_B_0HwB.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-BezaUhtc.js → Governance-DPSZuzuu.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-CuRay3Gu.js → Inference-BV-06V7q.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-DfWLDW1m.js → KnowledgeGraph-wpDuupn6.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-C55y2pPY.js → Logs-Bseca1_I.js} +2 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-B4RLp2zs.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-Dk08Uycg.js → Marketplace-d3kM4DDL.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-C11fSB5V.js → McpTools-DQ_xZ23i.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-mr0eZc97.js → Memory-CRIeYO4L.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-C0iCSRbb.js → MobileBridge-BsllIa9l.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-CY-xMG8Z.js → MobileProjects-BUuQy30X.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-Bplqc_Wc.js → Mtc-BOFDIzrC.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-BlzwsoSM.js → MtcAudit-BQg-vyvG.js} +5 -5
- package/src/assets/web-panel/assets/{Multisig-BBLmTty6.js → Multisig-Bo1jrPdN.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-DtT1uf1W.js → NLProgramming-Bmod8alw.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-DcqQAxTK.js → Notes-CGGFL8w-.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-cb0kWoZe.js → NotificationSettings-BsZvCJxC.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-kw9HZQNN.js → OrderTableRenderer-C1-Quo_h.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-DlTlbkUN.js → Organization-BjOeDYOi.js} +2 -2
- package/src/assets/web-panel/assets/{Overflow-pp1qs-oY.js → Overflow-DwVV3l5A.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-BESLnyYz.js → P2P-Cu3DQT9W.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-B-J1mGuf.js → PdhVaultBrowser-Cg0gR7dH.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-B36PeT1_.js → Permissions-CsAXxRN5.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-CTK2ad-3.js → PersonalDataHub-C-nNmnYp.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-zJNGXsac.js → Pipeline-BOnW7nNc.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-b9fz0Qf0.js → Privacy-ClLSyGKt.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-DjZbZgiB.js → ProjectInit-DuLvjjq7.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-C-hHJXlD.js → ProjectSettings-DQYYbDD9.js} +2 -2
- package/src/assets/web-panel/assets/Projects-Drw8MBGK.js +1 -0
- package/src/assets/web-panel/assets/Providers-ckqHQe6K.js +1 -0
- package/src/assets/web-panel/assets/{QrScannerModal-A0yoQ3-3.js → QrScannerModal-DW5BXk-G.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-DrFgFJNC.js → QuickAsk-DDLnhNTp.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-KC8hF1g4.js → Recommend-PJQ2C91U.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-DGTPIk6u.js → RemoteSession-s6wmda34.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-QmbwM7Yk.js → Reputation-DC2sb-I3.js} +1 -1
- package/src/assets/web-panel/assets/{Row-BxjJylia.js → Row-hPGk1eGj.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-B7Wda1J6.js → RssFeed-RIvfZql0.js} +3 -3
- package/src/assets/web-panel/assets/{Search-_plQ_YSA.js → Search-DFg1G1eR.js} +1 -1
- package/src/assets/web-panel/assets/{Security-CD2YJZfx.js → Security-D6H5p8Dp.js} +4 -4
- package/src/assets/web-panel/assets/{Services-qQE7NmwE.js → Services-nxYiFV_w.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-DgQqkFf7.js → Skeleton-BmgFNAdB.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-C4C0oFFt.js → Skills-CsaaD2av.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-Px2N2B5c.js → Sla-yM5y9yvK.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-DN6C3lQd.js → SpeechSettings-DPy1XMYh.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-jm5aH_m7.js → SyncSettings-CFVhEyyr.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-DlkJcv67.js → Tasks-DdO02Inn.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-DyrTHUBs.js → Templates-Eo2d8Llu.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-mC434PtL.js → Tenant-ChESOXgy.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-o0_s3NgK.js → Terminal-BJ7oDxTI.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-DAGlAXOw.js → TimelineRenderer-hWX0fUvz.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-BnulS_bs.js → Tokens-DVBZQnd-.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-suQbVXYM.js → Trigger-D89cQfVq.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-DbIJAPo5.js → Trust-BIVSb4-V.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-CQNpbIHi.js → UkeySign-B58gWopl.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-D8aWCERk.js → VideoEditing-DhHI7bmG.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-CuLpYfZc.js → Wallet-C4FheWS_.js} +3 -3
- package/src/assets/web-panel/assets/{WebAuthn-CsfG8ZMc.js → WebAuthn-DnPRq-Bx.js} +3 -3
- package/src/assets/web-panel/assets/{WorkflowEditor-BYsEAZbd.js → WorkflowEditor-BerRPjpJ.js} +1 -1
- package/src/assets/web-panel/assets/{chat-FT4Um3-I.js → chat-BzZ52iKr.js} +1 -1
- package/src/assets/web-panel/assets/{colors-CKbS_Wlt.js → colors-BI_E4BAn.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-CFJtzuJM.js → compact-item-d50mr3yk.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-B9kSRW6K.js → createContext-C6FsQ1IH.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-CagEcIex.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-DR-x0Xpi.js → hasIn-DLZEMgLP.js} +1 -1
- package/src/assets/web-panel/assets/{index-DdkIhfi-.js → index-9H_M2jju.js} +1 -1
- package/src/assets/web-panel/assets/{index-BfFCQHL3.js → index-A5CDWP7y.js} +1 -1
- package/src/assets/web-panel/assets/{index-7jHr_A_k.js → index-AHr7ryWf.js} +1 -1
- package/src/assets/web-panel/assets/{index-BVPU43b1.js → index-B81mo1Et.js} +1 -1
- package/src/assets/web-panel/assets/{index-B3ZX81mK.js → index-BAE3hwev.js} +1 -1
- package/src/assets/web-panel/assets/{index-DMGmg497.js → index-BB9SqVSt.js} +1 -1
- package/src/assets/web-panel/assets/{index-B7osrXqy.js → index-BRGx3w6T.js} +3 -3
- package/src/assets/web-panel/assets/{index-Bt4fS2eL.js → index-BTpIOTfR.js} +1 -1
- package/src/assets/web-panel/assets/{index-WE08gMJP.js → index-BZjjdQ62.js} +1 -1
- package/src/assets/web-panel/assets/{index-BwR7yc2h.js → index-BcSUl9fA.js} +1 -1
- package/src/assets/web-panel/assets/{index-DtkFqPVA.js → index-BeM4hfht.js} +1 -1
- package/src/assets/web-panel/assets/{index-BGbPnC5x.js → index-Bmr_vxXD.js} +1 -1
- package/src/assets/web-panel/assets/{index-DjEP7WkH.js → index-BoNZlzhQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-r2VI1Ikk.js → index-C3k8kevG.js} +1 -1
- package/src/assets/web-panel/assets/{index-DeSgw-WV.js → index-CLoTQr0W.js} +1 -1
- package/src/assets/web-panel/assets/{index-C_enk9I_.js → index-CO8DAF7U.js} +1 -1
- package/src/assets/web-panel/assets/{index-CJmIQ9XR.js → index-CRN5TRTQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dap9c3eD.js → index-CUaEHfQ0.js} +1 -1
- package/src/assets/web-panel/assets/{index-KqDaCApw.js → index-CVzuawCX.js} +1 -1
- package/src/assets/web-panel/assets/{index-BK3TiKVq.js → index-CdKt9fOd.js} +1 -1
- package/src/assets/web-panel/assets/{index-OSzjTzGM.js → index-CgkoH3_g.js} +1 -1
- package/src/assets/web-panel/assets/{index-DW4BWjTk.js → index-CjuKZBqJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-C2JvmYRc.js → index-Co7s9LsB.js} +1 -1
- package/src/assets/web-panel/assets/{index-DiNUEpSQ.js → index-D-aBumtY.js} +1 -1
- package/src/assets/web-panel/assets/{index-BW-t9n-q.js → index-DE0V6cp-.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bzz0C1BZ.js → index-DY4j5zkF.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cr2FLUsD.js → index-Dec0Kf_Z.js} +1 -1
- package/src/assets/web-panel/assets/{index-DShSkww-.js → index-DoFtCVZ7.js} +1 -1
- package/src/assets/web-panel/assets/{index-DTxNy0ZU.js → index-DqkbHHg8.js} +1 -1
- package/src/assets/web-panel/assets/{index-CvrCCqJt.js → index-DsscwxPE.js} +1 -1
- package/src/assets/web-panel/assets/{index-DWdqx7zI.js → index-GXE0D8Nx.js} +1 -1
- package/src/assets/web-panel/assets/{index-tqSEHPRT.js → index-IPkwSAW_.js} +1 -1
- package/src/assets/web-panel/assets/{index-DcfxhKXR.js → index-KNGgO4Wm.js} +1 -1
- package/src/assets/web-panel/assets/{index-CGaXUsIs.js → index-Pvf30m8Q.js} +1 -1
- package/src/assets/web-panel/assets/{index-D4LfPvWA.js → index-Q5Tn735s.js} +1 -1
- package/src/assets/web-panel/assets/{index-BI5hP_qy.js → index-TWG-_D1M.js} +1 -1
- package/src/assets/web-panel/assets/{index-QBSeNVO3.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-Dd7n7VgI.js → initDefaultProps-D-4Hzgej.js} +1 -1
- package/src/assets/web-panel/assets/{motion-BwxouRw1.js → motion-D4Wl4xU7.js} +1 -1
- package/src/assets/web-panel/assets/{move-DObN0PG9.js → move-Cd5eQvL0.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-B3nOUQc7.js → mtc-parser-B4ilslCW.js} +1 -1
- package/src/assets/web-panel/assets/{omit-o9WU2Nbl.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-CL_vvfQ_.js → pickAttrs-QJ0bpCmc.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-CYrM2tyK.js → placementArrow-CKHm-tq8.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-k_06cQ96.js → responsiveObserve-CV6a_w_Y.js} +1 -1
- package/src/assets/web-panel/assets/{slide-CPKG0pxS.js → slide-mHpeQFgk.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-BDDEeLTw.js → statusUtils-DIaQNQWA.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-Cmb7RTh7.js → styleChecker-PJpzavV8.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-e2IedC4N.js → useFlexGapSupport-BH7zTw8S.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-CE_gxVnm.js → useFs-BDNG3JDd.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-BkMIIKMz.js → usePersonalDataHub-CY2VWdUg.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-DW886XV1.js → vnode-D0kw9jhz.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-Dwo_adaf.js → zoom-B5g7TN7r.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/command-help-index.json +1 -1
- package/src/commands/artifacts.js +235 -0
- package/src/commands/cowork.js +86 -57
- package/src/commands/session-location.js +20 -1
- package/src/commands/session.js +64 -69
- package/src/data/changelog.json +16 -3
- package/src/gateways/ws/message-dispatcher.js +57 -0
- package/src/lib/artifact-access-ledger.js +1 -0
- package/src/lib/artifact-deletion-ledger.js +1 -0
- package/src/lib/artifact-recovery.js +970 -0
- package/src/lib/artifact-workbench-projection.js +171 -0
- package/src/lib/dynamic-workflow-runtime.js +408 -1
- package/src/lib/execution-location-target.js +4 -2
- 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 +26 -0
- package/src/lib/session-projection.js +126 -10
- package/src/runtime/agent-core.js +12 -0
- package/src/assets/web-panel/assets/ChatBubbleRenderer-xijcWkJe.js +0 -1
- package/src/assets/web-panel/assets/MarkdownRenderer-hDpWdiBc.js +0 -1
- package/src/assets/web-panel/assets/Projects-BC9KSDM6.js +0 -1
- package/src/assets/web-panel/assets/Providers-Dz-CAYYU.js +0 -1
- package/src/assets/web-panel/assets/devWarning-DJZ0gAMu.js +0 -1
- package/src/assets/web-panel/assets/index-Bizb4hkw.js +0 -1
- package/src/assets/web-panel/assets/index-OHSl-xCh.js +0 -1
- package/src/assets/web-panel/assets/parsers-UEvh_ShA.js +0 -4
package/src/commands/cowork.js
CHANGED
|
@@ -75,9 +75,8 @@ function renderWorkflowPreflight(preflight) {
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
async function loadCoworkWorkflowRecord(cwd, id, definitionDigest) {
|
|
78
|
-
const { getWorkflowRecord, getWorkflowVersion } =
|
|
79
|
-
"../lib/cowork-workflow.js"
|
|
80
|
-
);
|
|
78
|
+
const { getWorkflowRecord, getWorkflowVersion } =
|
|
79
|
+
await import("../lib/cowork-workflow.js");
|
|
81
80
|
return definitionDigest
|
|
82
81
|
? getWorkflowVersion(cwd, id, definitionDigest)
|
|
83
82
|
: getWorkflowRecord(cwd, id);
|
|
@@ -135,9 +134,8 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
135
134
|
.option("--model <name>", "LLM model to use")
|
|
136
135
|
.option("--json", "Output as JSON")
|
|
137
136
|
.action(async (target, options) => {
|
|
138
|
-
const { startDebate, DEFAULT_PERSPECTIVES } =
|
|
139
|
-
"../lib/cowork/debate-review-cli.js"
|
|
140
|
-
);
|
|
137
|
+
const { startDebate, DEFAULT_PERSPECTIVES } =
|
|
138
|
+
await import("../lib/cowork/debate-review-cli.js");
|
|
141
139
|
|
|
142
140
|
const perspectives = options.perspectives
|
|
143
141
|
.split(",")
|
|
@@ -346,9 +344,8 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
346
344
|
let result;
|
|
347
345
|
|
|
348
346
|
if (options.type === "style") {
|
|
349
|
-
const { analyzeProjectStyle } =
|
|
350
|
-
"../lib/cowork/project-style-analyzer-cli.js"
|
|
351
|
-
);
|
|
347
|
+
const { analyzeProjectStyle } =
|
|
348
|
+
await import("../lib/cowork/project-style-analyzer-cli.js");
|
|
352
349
|
const llmOptions = {};
|
|
353
350
|
if (options.provider) llmOptions.provider = options.provider;
|
|
354
351
|
if (options.model) llmOptions.model = options.model;
|
|
@@ -357,14 +354,12 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
357
354
|
llmOptions,
|
|
358
355
|
});
|
|
359
356
|
} else if (options.type === "knowledge-graph") {
|
|
360
|
-
const { buildKnowledgeGraph } =
|
|
361
|
-
"../lib/cowork/code-knowledge-graph-cli.js"
|
|
362
|
-
);
|
|
357
|
+
const { buildKnowledgeGraph } =
|
|
358
|
+
await import("../lib/cowork/code-knowledge-graph-cli.js");
|
|
363
359
|
result = await buildKnowledgeGraph({ targetPath: resolved });
|
|
364
360
|
} else if (options.type === "decisions") {
|
|
365
|
-
const { extractDecisions } =
|
|
366
|
-
"../lib/cowork/decision-kb-cli.js"
|
|
367
|
-
);
|
|
361
|
+
const { extractDecisions } =
|
|
362
|
+
await import("../lib/cowork/decision-kb-cli.js");
|
|
368
363
|
const llmOptions = {};
|
|
369
364
|
if (options.provider) llmOptions.provider = options.provider;
|
|
370
365
|
if (options.model) llmOptions.model = options.model;
|
|
@@ -413,9 +408,8 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
413
408
|
.option("--limit <n>", "Max results", "20")
|
|
414
409
|
.option("--json", "Output as JSON")
|
|
415
410
|
.action(async (query, options) => {
|
|
416
|
-
const { searchTemplatesInHub } =
|
|
417
|
-
"../lib/cowork-evomap-adapter.js"
|
|
418
|
-
);
|
|
411
|
+
const { searchTemplatesInHub } =
|
|
412
|
+
await import("../lib/cowork-evomap-adapter.js");
|
|
419
413
|
try {
|
|
420
414
|
const results = await searchTemplatesInHub(query || "", {
|
|
421
415
|
hubUrl: options.hub,
|
|
@@ -461,9 +455,8 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
461
455
|
(value, prev) => (prev ? [...prev, value] : [value]),
|
|
462
456
|
)
|
|
463
457
|
.action(async (geneId, options) => {
|
|
464
|
-
const { installTemplateFromHub } =
|
|
465
|
-
"../lib/cowork-evomap-adapter.js"
|
|
466
|
-
);
|
|
458
|
+
const { installTemplateFromHub } =
|
|
459
|
+
await import("../lib/cowork-evomap-adapter.js");
|
|
467
460
|
try {
|
|
468
461
|
const template = await installTemplateFromHub(process.cwd(), geneId, {
|
|
469
462
|
hubUrl: options.hub,
|
|
@@ -486,9 +479,8 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
486
479
|
.description("List locally installed Cowork templates")
|
|
487
480
|
.option("--json", "Output as JSON")
|
|
488
481
|
.action(async (options) => {
|
|
489
|
-
const { listUserTemplates } =
|
|
490
|
-
"../lib/cowork-template-marketplace.js"
|
|
491
|
-
);
|
|
482
|
+
const { listUserTemplates } =
|
|
483
|
+
await import("../lib/cowork-template-marketplace.js");
|
|
492
484
|
const templates = listUserTemplates(process.cwd());
|
|
493
485
|
if (options.json) {
|
|
494
486
|
console.log(JSON.stringify(templates, null, 2));
|
|
@@ -511,9 +503,8 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
511
503
|
.command("remove <id>")
|
|
512
504
|
.description("Remove an installed Cowork template")
|
|
513
505
|
.action(async (id) => {
|
|
514
|
-
const { removeUserTemplate } =
|
|
515
|
-
"../lib/cowork-template-marketplace.js"
|
|
516
|
-
);
|
|
506
|
+
const { removeUserTemplate } =
|
|
507
|
+
await import("../lib/cowork-template-marketplace.js");
|
|
517
508
|
if (removeUserTemplate(process.cwd(), id)) {
|
|
518
509
|
logger.log(chalk.green(`✓ Removed '${id}'`));
|
|
519
510
|
} else {
|
|
@@ -937,9 +928,8 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
937
928
|
: {}),
|
|
938
929
|
});
|
|
939
930
|
}
|
|
940
|
-
const { generateDynamicWorkflowDraft } =
|
|
941
|
-
"../lib/dynamic-workflow-draft.js"
|
|
942
|
-
);
|
|
931
|
+
const { generateDynamicWorkflowDraft } =
|
|
932
|
+
await import("../lib/dynamic-workflow-draft.js");
|
|
943
933
|
const draft = await generateDynamicWorkflowDraft(
|
|
944
934
|
{ prompt, provider, model },
|
|
945
935
|
{ chat },
|
|
@@ -1019,12 +1009,13 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
1019
1009
|
workflow
|
|
1020
1010
|
.command("runtime-status <run-id>")
|
|
1021
1011
|
.description("Read a durable workflow run without invoking a task provider")
|
|
1012
|
+
.option("--cwd <path>", "Project root containing the durable run")
|
|
1022
1013
|
.option("--json", "Machine-readable JSON output")
|
|
1023
1014
|
.action(async (runId, options) => {
|
|
1024
1015
|
try {
|
|
1025
1016
|
const runtime = await import("../lib/dynamic-workflow-runtime.js");
|
|
1026
1017
|
const statePath = runtime.dynamicWorkflowRunStatePath(
|
|
1027
|
-
process.cwd(),
|
|
1018
|
+
options.cwd || process.cwd(),
|
|
1028
1019
|
runId,
|
|
1029
1020
|
);
|
|
1030
1021
|
const projection = runtime.projectDynamicWorkflowRuntime(statePath, {
|
|
@@ -1068,6 +1059,46 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
1068
1059
|
}
|
|
1069
1060
|
});
|
|
1070
1061
|
|
|
1062
|
+
workflow
|
|
1063
|
+
.command("runtime-recovery-plan")
|
|
1064
|
+
.description(
|
|
1065
|
+
"Dry-run the bounded startup/periodic recovery policy for this project",
|
|
1066
|
+
)
|
|
1067
|
+
.option("--cwd <path>", "Project root containing durable runs")
|
|
1068
|
+
.option("-n, --limit <n>", "Maximum durable runs to inspect", "100")
|
|
1069
|
+
.option("--json", "Machine-readable JSON output")
|
|
1070
|
+
.action(async (options) => {
|
|
1071
|
+
try {
|
|
1072
|
+
const runtime = await import("../lib/dynamic-workflow-runtime.js");
|
|
1073
|
+
const plan = runtime.buildDynamicWorkflowRecoveryPlan(
|
|
1074
|
+
options.cwd || process.cwd(),
|
|
1075
|
+
{
|
|
1076
|
+
limit: Math.max(1, parseInt(options.limit) || 100),
|
|
1077
|
+
...(Object.hasOwn(commandDeps, "workflowCheckpointStore")
|
|
1078
|
+
? { checkpointStore: commandDeps.workflowCheckpointStore }
|
|
1079
|
+
: {}),
|
|
1080
|
+
},
|
|
1081
|
+
);
|
|
1082
|
+
if (options.json) {
|
|
1083
|
+
console.log(JSON.stringify(plan, null, 2));
|
|
1084
|
+
return;
|
|
1085
|
+
}
|
|
1086
|
+
logger.log(
|
|
1087
|
+
`${plan.summary.attention}/${plan.summary.total} durable runs need attention; plan ${plan.planDigest}`,
|
|
1088
|
+
);
|
|
1089
|
+
for (const item of plan.items.filter(
|
|
1090
|
+
(entry) => entry.risk !== "none",
|
|
1091
|
+
)) {
|
|
1092
|
+
logger.log(
|
|
1093
|
+
` ${item.runId} ${item.risk} action=${item.recommendedAction} revision=${item.revision}`,
|
|
1094
|
+
);
|
|
1095
|
+
}
|
|
1096
|
+
} catch (err) {
|
|
1097
|
+
logger.error(`WORKFLOW_RUNTIME_RECOVERY_PLAN_FAILED: ${err.message}`);
|
|
1098
|
+
process.exitCode = 2;
|
|
1099
|
+
}
|
|
1100
|
+
});
|
|
1101
|
+
|
|
1071
1102
|
for (const action of ["pause", "stop", "resume"]) {
|
|
1072
1103
|
workflow
|
|
1073
1104
|
.command(`runtime-${action} <run-id>`)
|
|
@@ -1078,12 +1109,13 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
1078
1109
|
"--expected-revision <n>",
|
|
1079
1110
|
"Exact runtime revision shown by runtime-status",
|
|
1080
1111
|
)
|
|
1112
|
+
.option("--cwd <path>", "Project root containing the durable run")
|
|
1081
1113
|
.option("--json", "Machine-readable JSON output")
|
|
1082
1114
|
.action(async (runId, options) => {
|
|
1083
1115
|
try {
|
|
1084
1116
|
const runtime = await import("../lib/dynamic-workflow-runtime.js");
|
|
1085
1117
|
const statePath = runtime.dynamicWorkflowRunStatePath(
|
|
1086
|
-
process.cwd(),
|
|
1118
|
+
options.cwd || process.cwd(),
|
|
1087
1119
|
runId,
|
|
1088
1120
|
);
|
|
1089
1121
|
const operation =
|
|
@@ -1119,12 +1151,13 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
1119
1151
|
"--expected-revision <n>",
|
|
1120
1152
|
"Exact runtime revision shown by runtime-status",
|
|
1121
1153
|
)
|
|
1154
|
+
.option("--cwd <path>", "Project root containing the durable run")
|
|
1122
1155
|
.option("--json", "Machine-readable JSON output")
|
|
1123
1156
|
.action(async (runId, callRecordId, options) => {
|
|
1124
1157
|
try {
|
|
1125
1158
|
const runtime = await import("../lib/dynamic-workflow-runtime.js");
|
|
1126
1159
|
const statePath = runtime.dynamicWorkflowRunStatePath(
|
|
1127
|
-
process.cwd(),
|
|
1160
|
+
options.cwd || process.cwd(),
|
|
1128
1161
|
runId,
|
|
1129
1162
|
);
|
|
1130
1163
|
const state = runtime.recoverDurableWorkflowCheckpointCall(
|
|
@@ -1162,12 +1195,13 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
1162
1195
|
"--expected-revision <n>",
|
|
1163
1196
|
"Exact runtime revision shown by runtime-status",
|
|
1164
1197
|
)
|
|
1198
|
+
.option("--cwd <path>", "Project root containing the durable run")
|
|
1165
1199
|
.option("--json", "Machine-readable JSON output")
|
|
1166
1200
|
.action(async (runId, options) => {
|
|
1167
1201
|
try {
|
|
1168
1202
|
const runtime = await import("../lib/dynamic-workflow-runtime.js");
|
|
1169
1203
|
const statePath = runtime.dynamicWorkflowRunStatePath(
|
|
1170
|
-
process.cwd(),
|
|
1204
|
+
options.cwd || process.cwd(),
|
|
1171
1205
|
runId,
|
|
1172
1206
|
);
|
|
1173
1207
|
const state = runtime.recoverDurableWorkflowCheckpointCalls(
|
|
@@ -1202,12 +1236,13 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
1202
1236
|
"--expected-revision <n>",
|
|
1203
1237
|
"Exact runtime revision shown by runtime-status",
|
|
1204
1238
|
)
|
|
1239
|
+
.option("--cwd <path>", "Project root containing the durable run")
|
|
1205
1240
|
.option("--json", "Machine-readable JSON output")
|
|
1206
1241
|
.action(async (runId, requestId, responseFile, options) => {
|
|
1207
1242
|
try {
|
|
1208
1243
|
const runtime = await import("../lib/dynamic-workflow-runtime.js");
|
|
1209
1244
|
const statePath = runtime.dynamicWorkflowRunStatePath(
|
|
1210
|
-
process.cwd(),
|
|
1245
|
+
options.cwd || process.cwd(),
|
|
1211
1246
|
runId,
|
|
1212
1247
|
);
|
|
1213
1248
|
const answer =
|
|
@@ -1240,12 +1275,13 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
1240
1275
|
"--expected-revision <n>",
|
|
1241
1276
|
"Exact runtime revision shown by runtime-status",
|
|
1242
1277
|
)
|
|
1278
|
+
.option("--cwd <path>", "Project root containing the durable run")
|
|
1243
1279
|
.option("--json", "Machine-readable JSON output")
|
|
1244
1280
|
.action(async (runId, effectId, resultFile, options) => {
|
|
1245
1281
|
try {
|
|
1246
1282
|
const runtime = await import("../lib/dynamic-workflow-runtime.js");
|
|
1247
1283
|
const statePath = runtime.dynamicWorkflowRunStatePath(
|
|
1248
|
-
process.cwd(),
|
|
1284
|
+
options.cwd || process.cwd(),
|
|
1249
1285
|
runId,
|
|
1250
1286
|
);
|
|
1251
1287
|
const result = runtime.readDynamicWorkflowEffectResultFile(resultFile);
|
|
@@ -1311,9 +1347,8 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
1311
1347
|
.option("--json", "Machine-readable JSON output")
|
|
1312
1348
|
.action(async (id, options) => {
|
|
1313
1349
|
try {
|
|
1314
|
-
const { listWorkflowVersions } =
|
|
1315
|
-
"../lib/cowork-workflow.js"
|
|
1316
|
-
);
|
|
1350
|
+
const { listWorkflowVersions } =
|
|
1351
|
+
await import("../lib/cowork-workflow.js");
|
|
1317
1352
|
const versions = listWorkflowVersions(process.cwd(), id);
|
|
1318
1353
|
if (options.json) {
|
|
1319
1354
|
console.log(JSON.stringify(versions, null, 2));
|
|
@@ -1558,9 +1593,8 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
1558
1593
|
getVerifiedSessionExecutionLocationAuthority: descriptor.value,
|
|
1559
1594
|
});
|
|
1560
1595
|
} else {
|
|
1561
|
-
workflowExecutionAuthorityModule =
|
|
1562
|
-
"../harness/jsonl-session-store.js"
|
|
1563
|
-
);
|
|
1596
|
+
workflowExecutionAuthorityModule =
|
|
1597
|
+
import("../harness/jsonl-session-store.js");
|
|
1564
1598
|
}
|
|
1565
1599
|
let workflowRunTaskModule;
|
|
1566
1600
|
if (Object.hasOwn(commandDeps, "workflowRunTask")) {
|
|
@@ -1662,9 +1696,8 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
1662
1696
|
runTask: runCoworkTask,
|
|
1663
1697
|
});
|
|
1664
1698
|
}
|
|
1665
|
-
const runtime =
|
|
1666
|
-
"../lib/dynamic-workflow-runtime.js"
|
|
1667
|
-
);
|
|
1699
|
+
const runtime =
|
|
1700
|
+
await import("../lib/dynamic-workflow-runtime.js");
|
|
1668
1701
|
return runtime.executeDurableDynamicWorkflow(
|
|
1669
1702
|
{
|
|
1670
1703
|
statePath: runtime.dynamicWorkflowRunStatePath(
|
|
@@ -1829,9 +1862,8 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
1829
1862
|
.description("Per-template aggregate stats across all runs")
|
|
1830
1863
|
.option("--json", "Output as JSON")
|
|
1831
1864
|
.action(async (options) => {
|
|
1832
|
-
const { loadHistory, computeTemplateStats } =
|
|
1833
|
-
"../lib/cowork-learning.js"
|
|
1834
|
-
);
|
|
1865
|
+
const { loadHistory, computeTemplateStats } =
|
|
1866
|
+
await import("../lib/cowork-learning.js");
|
|
1835
1867
|
const stats = computeTemplateStats(loadHistory(process.cwd()));
|
|
1836
1868
|
if (options.json) {
|
|
1837
1869
|
console.log(JSON.stringify(stats, null, 2));
|
|
@@ -1864,9 +1896,8 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
1864
1896
|
.option("--min-runs <n>", "Only consider templates with ≥N past runs", "1")
|
|
1865
1897
|
.option("--json", "Output as JSON")
|
|
1866
1898
|
.action(async (messageParts, options) => {
|
|
1867
|
-
const { loadHistory, recommendTemplate } =
|
|
1868
|
-
"../lib/cowork-learning.js"
|
|
1869
|
-
);
|
|
1899
|
+
const { loadHistory, recommendTemplate } =
|
|
1900
|
+
await import("../lib/cowork-learning.js");
|
|
1870
1901
|
const message = messageParts.join(" ");
|
|
1871
1902
|
const rec = recommendTemplate(message, loadHistory(process.cwd()), {
|
|
1872
1903
|
minRuns: parseInt(options.minRuns, 10) || 1,
|
|
@@ -1895,9 +1926,8 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
1895
1926
|
.option("--limit <n>", "Max examples per template", "3")
|
|
1896
1927
|
.option("--json", "Output as JSON")
|
|
1897
1928
|
.action(async (options) => {
|
|
1898
|
-
const { loadHistory, summarizeFailures } =
|
|
1899
|
-
"../lib/cowork-learning.js"
|
|
1900
|
-
);
|
|
1929
|
+
const { loadHistory, summarizeFailures } =
|
|
1930
|
+
await import("../lib/cowork-learning.js");
|
|
1901
1931
|
const out = summarizeFailures(loadHistory(process.cwd()), {
|
|
1902
1932
|
limit: parseInt(options.limit, 10) || 3,
|
|
1903
1933
|
});
|
|
@@ -1924,9 +1954,8 @@ export function registerCoworkCommand(program, commandDeps = {}) {
|
|
|
1924
1954
|
.description("Suggest systemPromptExtension patches from failure history")
|
|
1925
1955
|
.option("--json", "Output as JSON")
|
|
1926
1956
|
.action(async (options) => {
|
|
1927
|
-
const { loadHistory, suggestPromptPatch } =
|
|
1928
|
-
"../lib/cowork-learning.js"
|
|
1929
|
-
);
|
|
1957
|
+
const { loadHistory, suggestPromptPatch } =
|
|
1958
|
+
await import("../lib/cowork-learning.js");
|
|
1930
1959
|
const patches = suggestPromptPatch(loadHistory(process.cwd()));
|
|
1931
1960
|
if (options.json) {
|
|
1932
1961
|
console.log(JSON.stringify(patches, null, 2));
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
buildExecutionLocationCatalog,
|
|
6
6
|
buildExecutionLocationHandoffPreview,
|
|
7
7
|
computeExecutionLocationTargetFactsDigest,
|
|
8
|
+
createExecutionLocationTargetAttestation,
|
|
8
9
|
} from "../lib/execution-location-contract.js";
|
|
9
10
|
import { captureAmbientExecutionLocation } from "../lib/execution-location-runtime.js";
|
|
10
11
|
import {
|
|
@@ -333,6 +334,24 @@ export function prepareSessionReplicaHandoff(sessionId, options, deps = {}) {
|
|
|
333
334
|
if (targetFactsDigest !== String(options.expectedTargetFactsDigest || "")) {
|
|
334
335
|
throw new Error("target facts changed before location handoff append");
|
|
335
336
|
}
|
|
337
|
+
if (!/^sha256:[a-f0-9]{64}$/u.test(String(options.attestationDigest || ""))) {
|
|
338
|
+
throw new Error("source target attestation digest is invalid");
|
|
339
|
+
}
|
|
340
|
+
// observedAt is intentionally excluded from targetFactsDigest but included
|
|
341
|
+
// in attestationDigest. The source-side probe and this target-side prepare
|
|
342
|
+
// are separate process invocations, so a real target can never reproduce
|
|
343
|
+
// the source probe's timestamp. Bind the handoff event to this fresh target
|
|
344
|
+
// observation; the source rehashes its receipt and immediately verifies the
|
|
345
|
+
// canonical target projection before it is allowed to resume.
|
|
346
|
+
const targetAttestation = createExecutionLocationTargetAttestation({
|
|
347
|
+
profileDigest: options.profileDigest,
|
|
348
|
+
sourceSessionId: sessionId,
|
|
349
|
+
sourceHeadHash: options.expectedHeadHash,
|
|
350
|
+
sourceEventCount: Number(options.expectedEventCount),
|
|
351
|
+
targetEvidenceId: options.targetEvidenceId,
|
|
352
|
+
baseCommit: binding.source.git.commit,
|
|
353
|
+
binding,
|
|
354
|
+
});
|
|
336
355
|
return (
|
|
337
356
|
deps.installSessionReplicaWithLocationHandoff ||
|
|
338
357
|
installSessionReplicaWithLocationHandoff
|
|
@@ -348,7 +367,7 @@ export function prepareSessionReplicaHandoff(sessionId, options, deps = {}) {
|
|
|
348
367
|
profileDigest: options.profileDigest,
|
|
349
368
|
targetEvidenceId: options.targetEvidenceId,
|
|
350
369
|
targetFactsDigest,
|
|
351
|
-
attestationDigest:
|
|
370
|
+
attestationDigest: targetAttestation.attestationDigest,
|
|
352
371
|
binding,
|
|
353
372
|
},
|
|
354
373
|
);
|
package/src/commands/session.js
CHANGED
|
@@ -104,9 +104,8 @@ function _sessionEpoch(ts) {
|
|
|
104
104
|
* @returns {{statusBar:string, autoMerge:{allow:boolean,reason:string,unmet:string[]}, lines:string[]}}
|
|
105
105
|
*/
|
|
106
106
|
export async function renderPrStatus(signals = {}, opts = {}) {
|
|
107
|
-
const { strictAutoMergeDecision, describePrStatusBar } =
|
|
108
|
-
"../lib/pr-automation-policy.js"
|
|
109
|
-
);
|
|
107
|
+
const { strictAutoMergeDecision, describePrStatusBar } =
|
|
108
|
+
await import("../lib/pr-automation-policy.js");
|
|
110
109
|
const autoMerge = strictAutoMergeDecision({
|
|
111
110
|
enabled: opts.enabled === true,
|
|
112
111
|
hasOpenPr: signals.hasOpenPr,
|
|
@@ -321,6 +320,7 @@ export function registerSessionCommand(program) {
|
|
|
321
320
|
let remote = [];
|
|
322
321
|
let team = [];
|
|
323
322
|
let workflow = [];
|
|
323
|
+
let dynamicWorkflow = [];
|
|
324
324
|
let artifacts = [];
|
|
325
325
|
let prLinks = {};
|
|
326
326
|
|
|
@@ -350,25 +350,22 @@ export function registerSessionCommand(program) {
|
|
|
350
350
|
sourceErrors.local = error?.message || String(error);
|
|
351
351
|
}
|
|
352
352
|
try {
|
|
353
|
-
const { listBackgroundAgents } =
|
|
354
|
-
"../lib/background-agent-supervisor.js"
|
|
355
|
-
);
|
|
353
|
+
const { listBackgroundAgents } =
|
|
354
|
+
await import("../lib/background-agent-supervisor.js");
|
|
356
355
|
background = listBackgroundAgents({ all: true });
|
|
357
356
|
} catch (error) {
|
|
358
357
|
sourceErrors.background = error?.message || String(error);
|
|
359
358
|
}
|
|
360
359
|
try {
|
|
361
|
-
const { readRemoteControlStates } =
|
|
362
|
-
"../lib/remote-control.js"
|
|
363
|
-
);
|
|
360
|
+
const { readRemoteControlStates } =
|
|
361
|
+
await import("../lib/remote-control.js");
|
|
364
362
|
remote = readRemoteControlStates();
|
|
365
363
|
} catch (error) {
|
|
366
364
|
sourceErrors.remote = error?.message || String(error);
|
|
367
365
|
}
|
|
368
366
|
try {
|
|
369
|
-
const { listCollaborationRuns } =
|
|
370
|
-
"../lib/collaboration-run-store.js"
|
|
371
|
-
);
|
|
367
|
+
const { listCollaborationRuns } =
|
|
368
|
+
await import("../lib/collaboration-run-store.js");
|
|
372
369
|
team = listCollaborationRuns({ limit }).filter(
|
|
373
370
|
(run) => run?.kind === "team",
|
|
374
371
|
);
|
|
@@ -388,14 +385,29 @@ export function registerSessionCommand(program) {
|
|
|
388
385
|
} catch (error) {
|
|
389
386
|
sourceErrors.workflow = error?.message || String(error);
|
|
390
387
|
}
|
|
388
|
+
try {
|
|
389
|
+
const { listDynamicWorkflowWorkbenchStates } =
|
|
390
|
+
await import("../lib/dynamic-workflow-runtime.js");
|
|
391
|
+
const discovered = listDynamicWorkflowWorkbenchStates(projectRoot, {
|
|
392
|
+
limit,
|
|
393
|
+
});
|
|
394
|
+
dynamicWorkflow = discovered.runs.map((item) => ({
|
|
395
|
+
...item,
|
|
396
|
+
cwd: projectRoot,
|
|
397
|
+
}));
|
|
398
|
+
if (discovered.invalidCount > 0) {
|
|
399
|
+
sourceErrors.dynamicWorkflow = `${discovered.invalidCount} durable workflow state file(s) failed validation`;
|
|
400
|
+
}
|
|
401
|
+
} catch (error) {
|
|
402
|
+
sourceErrors.dynamicWorkflow = error?.message || String(error);
|
|
403
|
+
}
|
|
391
404
|
try {
|
|
392
405
|
// A file checkpoint is advertised only after the existing CLI git
|
|
393
406
|
// engine proves that the exact worktree is supported. Copy-mode
|
|
394
407
|
// checkpoints need explicit paths and therefore cannot truthfully be
|
|
395
408
|
// offered as a one-click session action.
|
|
396
|
-
const { isCheckpointAvailable } =
|
|
397
|
-
"../lib/checkpoint-store.js"
|
|
398
|
-
);
|
|
409
|
+
const { isCheckpointAvailable } =
|
|
410
|
+
await import("../lib/checkpoint-store.js");
|
|
399
411
|
const capability = new Map();
|
|
400
412
|
const decorate = (items, pathFor, sessionFor) =>
|
|
401
413
|
items.map((item) => {
|
|
@@ -438,9 +450,8 @@ export function registerSessionCommand(program) {
|
|
|
438
450
|
// checkpoint action unavailable with its explicit reason.
|
|
439
451
|
}
|
|
440
452
|
try {
|
|
441
|
-
const { ArtifactStore, publicArtifactMetadata } =
|
|
442
|
-
"../lib/artifact-store.js"
|
|
443
|
-
);
|
|
453
|
+
const { ArtifactStore, publicArtifactMetadata } =
|
|
454
|
+
await import("../lib/artifact-store.js");
|
|
444
455
|
artifacts = new ArtifactStore().list().map(publicArtifactMetadata);
|
|
445
456
|
} catch {
|
|
446
457
|
// Summaries are optional; absence never removes a session.
|
|
@@ -452,15 +463,15 @@ export function registerSessionCommand(program) {
|
|
|
452
463
|
// Summaries are optional; absence never removes a session.
|
|
453
464
|
}
|
|
454
465
|
|
|
455
|
-
const { buildSessionProjection } =
|
|
456
|
-
"../lib/session-projection.js"
|
|
457
|
-
);
|
|
466
|
+
const { buildSessionProjection } =
|
|
467
|
+
await import("../lib/session-projection.js");
|
|
458
468
|
const projection = buildSessionProjection({
|
|
459
469
|
local,
|
|
460
470
|
background,
|
|
461
471
|
remote,
|
|
462
472
|
team,
|
|
463
473
|
workflow,
|
|
474
|
+
dynamicWorkflow,
|
|
464
475
|
artifacts,
|
|
465
476
|
prLinks,
|
|
466
477
|
sourceErrors,
|
|
@@ -478,9 +489,8 @@ export function registerSessionCommand(program) {
|
|
|
478
489
|
}
|
|
479
490
|
}
|
|
480
491
|
} catch (error) {
|
|
481
|
-
const { disconnectedSessionProjection } =
|
|
482
|
-
"../lib/session-projection.js"
|
|
483
|
-
);
|
|
492
|
+
const { disconnectedSessionProjection } =
|
|
493
|
+
await import("../lib/session-projection.js");
|
|
484
494
|
if (options.json) {
|
|
485
495
|
jsonPayload = JSON.stringify(
|
|
486
496
|
disconnectedSessionProjection(error?.message || String(error)),
|
|
@@ -530,9 +540,8 @@ export function registerSessionCommand(program) {
|
|
|
530
540
|
} else {
|
|
531
541
|
// Live path: resolve the session's linked PR and fetch via gh.
|
|
532
542
|
const { getPrLinks } = await import("../lib/pr-link-ledger.js");
|
|
533
|
-
const { getLastSessionId } =
|
|
534
|
-
"../harness/jsonl-session-store.js"
|
|
535
|
-
);
|
|
543
|
+
const { getLastSessionId } =
|
|
544
|
+
await import("../harness/jsonl-session-store.js");
|
|
536
545
|
const sid = !id || id === "last" ? getLastSessionId() : id;
|
|
537
546
|
const links = sid ? getPrLinks(sid) : [];
|
|
538
547
|
if (links.length === 0) {
|
|
@@ -610,9 +619,8 @@ export function registerSessionCommand(program) {
|
|
|
610
619
|
// (single / non-TTY / Ctrl-C). Same helper as `cc agent --resume`.
|
|
611
620
|
if (!id) {
|
|
612
621
|
ctx = await bootstrap({ verbose: program.opts().verbose });
|
|
613
|
-
const { pickRecentSession } =
|
|
614
|
-
"../lib/session-picker.js"
|
|
615
|
-
);
|
|
622
|
+
const { pickRecentSession } =
|
|
623
|
+
await import("../lib/session-picker.js");
|
|
616
624
|
const picked = await pickRecentSession(ctx);
|
|
617
625
|
if (!picked.id) {
|
|
618
626
|
logger.error(
|
|
@@ -642,9 +650,8 @@ export function registerSessionCommand(program) {
|
|
|
642
650
|
if (jsonlId) {
|
|
643
651
|
// Tamper gate: a broken hash chain means the transcript was edited
|
|
644
652
|
// outside the store — never silently rebuild it as trusted context.
|
|
645
|
-
const { verifySession } =
|
|
646
|
-
"../harness/jsonl-session-store.js"
|
|
647
|
-
);
|
|
653
|
+
const { verifySession } =
|
|
654
|
+
await import("../harness/jsonl-session-store.js");
|
|
648
655
|
const trust = verifySession(jsonlId);
|
|
649
656
|
if (["missing", "conflict"].includes(trust.status)) {
|
|
650
657
|
logger.error(
|
|
@@ -757,9 +764,8 @@ export function registerSessionCommand(program) {
|
|
|
757
764
|
);
|
|
758
765
|
}
|
|
759
766
|
if (sid) {
|
|
760
|
-
const { renderAgentSessionMarkdown } =
|
|
761
|
-
"../lib/agent-session-export.js"
|
|
762
|
-
);
|
|
767
|
+
const { renderAgentSessionMarkdown } =
|
|
768
|
+
await import("../lib/agent-session-export.js");
|
|
763
769
|
markdown = renderAgentSessionMarkdown(sid, store.readEvents(sid), {
|
|
764
770
|
exportedAt: new Date().toISOString(),
|
|
765
771
|
});
|
|
@@ -1012,9 +1018,8 @@ export function registerSessionCommand(program) {
|
|
|
1012
1018
|
}
|
|
1013
1019
|
let result;
|
|
1014
1020
|
if (jsonlId) {
|
|
1015
|
-
const { renameSession } =
|
|
1016
|
-
"../harness/jsonl-session-store.js"
|
|
1017
|
-
);
|
|
1021
|
+
const { renameSession } =
|
|
1022
|
+
await import("../harness/jsonl-session-store.js");
|
|
1018
1023
|
result = renameSession(jsonlId, normalized);
|
|
1019
1024
|
} else {
|
|
1020
1025
|
ctx = await bootstrap({ verbose: program.opts().verbose });
|
|
@@ -1053,9 +1058,8 @@ export function registerSessionCommand(program) {
|
|
|
1053
1058
|
.option("--json", "Output as JSON")
|
|
1054
1059
|
.action(async (options) => {
|
|
1055
1060
|
try {
|
|
1056
|
-
const { pruneJsonlSessions } =
|
|
1057
|
-
"../harness/jsonl-session-store.js"
|
|
1058
|
-
);
|
|
1061
|
+
const { pruneJsonlSessions } =
|
|
1062
|
+
await import("../harness/jsonl-session-store.js");
|
|
1059
1063
|
const result = pruneJsonlSessions({
|
|
1060
1064
|
olderThanDays: Number(options.olderThan),
|
|
1061
1065
|
keep: options.keep != null ? Number(options.keep) : undefined,
|
|
@@ -1433,9 +1437,8 @@ export function registerSessionCommand(program) {
|
|
|
1433
1437
|
.option("--json", "Output as JSON")
|
|
1434
1438
|
.action(async (id, options) => {
|
|
1435
1439
|
try {
|
|
1436
|
-
const { getApprovalGate } =
|
|
1437
|
-
"../lib/session-core-singletons.js"
|
|
1438
|
-
);
|
|
1440
|
+
const { getApprovalGate } =
|
|
1441
|
+
await import("../lib/session-core-singletons.js");
|
|
1439
1442
|
const gate = await getApprovalGate();
|
|
1440
1443
|
if (options.set) {
|
|
1441
1444
|
gate.setSessionPolicy(id, options.set);
|
|
@@ -1471,9 +1474,8 @@ export function registerSessionCommand(program) {
|
|
|
1471
1474
|
.option("--json", "Output as JSON")
|
|
1472
1475
|
.action(async (options) => {
|
|
1473
1476
|
try {
|
|
1474
|
-
const { getSessionManager } =
|
|
1475
|
-
"../lib/session-core-singletons.js"
|
|
1476
|
-
);
|
|
1477
|
+
const { getSessionManager } =
|
|
1478
|
+
await import("../lib/session-core-singletons.js");
|
|
1477
1479
|
const mgr = getSessionManager();
|
|
1478
1480
|
const live = mgr.list({
|
|
1479
1481
|
agentId: options.agent,
|
|
@@ -1517,9 +1519,8 @@ export function registerSessionCommand(program) {
|
|
|
1517
1519
|
.argument("<id>", "Session ID")
|
|
1518
1520
|
.action(async (id) => {
|
|
1519
1521
|
try {
|
|
1520
|
-
const { getSessionManager } =
|
|
1521
|
-
"../lib/session-core-singletons.js"
|
|
1522
|
-
);
|
|
1522
|
+
const { getSessionManager } =
|
|
1523
|
+
await import("../lib/session-core-singletons.js");
|
|
1523
1524
|
const mgr = getSessionManager();
|
|
1524
1525
|
if (!mgr.has(id)) {
|
|
1525
1526
|
logger.error(`Session ${id} is not active in this process`);
|
|
@@ -1544,9 +1545,8 @@ export function registerSessionCommand(program) {
|
|
|
1544
1545
|
.argument("<id>", "Session ID")
|
|
1545
1546
|
.action(async (id) => {
|
|
1546
1547
|
try {
|
|
1547
|
-
const { getSessionManager } =
|
|
1548
|
-
"../lib/session-core-singletons.js"
|
|
1549
|
-
);
|
|
1548
|
+
const { getSessionManager } =
|
|
1549
|
+
await import("../lib/session-core-singletons.js");
|
|
1550
1550
|
const mgr = getSessionManager();
|
|
1551
1551
|
const ok = await mgr.resume(id);
|
|
1552
1552
|
if (!ok) {
|
|
@@ -1575,14 +1575,12 @@ export function registerSessionCommand(program) {
|
|
|
1575
1575
|
.option("--agent-id <id>", "Agent id for scope=agent")
|
|
1576
1576
|
.action(async (id, options) => {
|
|
1577
1577
|
try {
|
|
1578
|
-
const { getSessionManager } =
|
|
1579
|
-
"../lib/session-core-singletons.js"
|
|
1580
|
-
);
|
|
1578
|
+
const { getSessionManager } =
|
|
1579
|
+
await import("../lib/session-core-singletons.js");
|
|
1581
1580
|
if (options.consolidate) {
|
|
1582
1581
|
try {
|
|
1583
|
-
const { consolidateJsonlSession } =
|
|
1584
|
-
"../lib/session-consolidator.js"
|
|
1585
|
-
);
|
|
1582
|
+
const { consolidateJsonlSession } =
|
|
1583
|
+
await import("../lib/session-consolidator.js");
|
|
1586
1584
|
const res = await consolidateJsonlSession(id, {
|
|
1587
1585
|
scope: options.scope,
|
|
1588
1586
|
scopeId: options.scopeId || null,
|
|
@@ -1801,9 +1799,8 @@ export function registerSessionCommand(program) {
|
|
|
1801
1799
|
);
|
|
1802
1800
|
process.exit(1);
|
|
1803
1801
|
}
|
|
1804
|
-
const { sessionUsage, allSessionsUsage } =
|
|
1805
|
-
"../lib/session-usage.js"
|
|
1806
|
-
);
|
|
1802
|
+
const { sessionUsage, allSessionsUsage } =
|
|
1803
|
+
await import("../lib/session-usage.js");
|
|
1807
1804
|
const result = id
|
|
1808
1805
|
? sessionUsage(id)
|
|
1809
1806
|
: allSessionsUsage({ limit: parseInt(options.limit, 10) || 1000 });
|
|
@@ -1876,9 +1873,8 @@ export function registerSessionCommand(program) {
|
|
|
1876
1873
|
.option("--json", "Machine-readable JSON output")
|
|
1877
1874
|
.action(async (id) => {
|
|
1878
1875
|
try {
|
|
1879
|
-
const { getVerifiedSessionObservabilityAuthority } =
|
|
1880
|
-
"../harness/jsonl-session-store.js"
|
|
1881
|
-
);
|
|
1876
|
+
const { getVerifiedSessionObservabilityAuthority } =
|
|
1877
|
+
await import("../harness/jsonl-session-store.js");
|
|
1882
1878
|
const authority = getVerifiedSessionObservabilityAuthority(id);
|
|
1883
1879
|
console.log(
|
|
1884
1880
|
JSON.stringify(
|
|
@@ -2316,9 +2312,8 @@ async function mirrorPruneSessions() {
|
|
|
2316
2312
|
* (`session.mirror.encryption`). Requires both to be configured.
|
|
2317
2313
|
*/
|
|
2318
2314
|
async function mirrorRotateKey() {
|
|
2319
|
-
const { createMirror, createMirrorCipher, rotateMirrorKey } =
|
|
2320
|
-
"../harness/session-mirror.js"
|
|
2321
|
-
);
|
|
2315
|
+
const { createMirror, createMirrorCipher, rotateMirrorKey } =
|
|
2316
|
+
await import("../harness/session-mirror.js");
|
|
2322
2317
|
const { cfg } = await loadConfiguredMirror();
|
|
2323
2318
|
if (!cfg || !cfg.kind || cfg.kind === "none") {
|
|
2324
2319
|
return { target: null };
|