chainlesschain 0.165.4 → 0.165.6

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.
Files changed (214) hide show
  1. package/package.json +1 -1
  2. package/src/assets/web-panel/.build-hash +1 -1
  3. package/src/assets/web-panel/assets/{AIOps-C__nnraW.js → AIOps-vfoDb6HZ.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-CsKWHEZ-.js → ActionButton-Cm5f7p93.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-BhIjfjWO.js → Analytics-yRuvgWxa.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-BjuXFzWZ.js → AppLayout-BROsC4h1.js} +4 -4
  7. package/src/assets/web-panel/assets/{Artifacts-k6whDkZJ.js → Artifacts-CimHApb1.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-C4FBMYRh.js → Audit-DI8kr8zI.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-C_vRrSXk.js → BackgroundAgents-DSLzKy-n.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-CngFZeVp.js → Backup-DkH_n2r1.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-B_H9EBRm.js → BaseInput-CKSrUoRA.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-DLEC5kt7.js → Chat-ClwfMXUS.js} +3 -3
  13. package/src/assets/web-panel/assets/ChatBubbleRenderer-CjMaqfL7.js +1 -0
  14. package/src/assets/web-panel/assets/{Checkbox-m3ClR4xh.js → Checkbox-BYTehcQG.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-CmLSFrgp.js → Codegen-B8AMcp6J.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-DFGQteHN.js → Col-BNSogPo3.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-EUUVORHE.js → Community-JxPvGb8O.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-2PSg0Yr7.js → Compact-DF7bFAgE.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-CcKur7gB.js → Compliance-Bvhqnwrq.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-DK_Fezfa.js → Cowork-BDS0CJvM.js} +3 -3
  21. package/src/assets/web-panel/assets/{Cron-Dbw89xl7.js → Cron-DqvRfxoQ.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-CH66h_Ec.js → Crosschain-CDcIvnqS.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-D1igRb17.js → DID-D7jaUxU3.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-DVAsrobk.js → Dashboard-B5A18wEV.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-Dl7W8AQs.js → Dropdown-_6IVkGag.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-D5tpaEQC.js → EmailListRenderer-C9PeiKCG.js} +1 -1
  27. package/src/assets/web-panel/assets/{FamilyGuardDashboard-O_VQf8gq.js → FamilyGuardDashboard-DXjuEHrX.js} +1 -1
  28. package/src/assets/web-panel/assets/{Federation-BTVcgS9n.js → Federation-B4IAR9zv.js} +1 -1
  29. package/src/assets/web-panel/assets/{FormItemContext-BRnkJAIz.js → FormItemContext-CxQeSNx1.js} +1 -1
  30. package/src/assets/web-panel/assets/{GenericCardRenderer-8OWSCkDj.js → GenericCardRenderer-B8GS-Y3N.js} +1 -1
  31. package/src/assets/web-panel/assets/{Git-WXLYTQj2.js → Git-BS8SouUX.js} +2 -2
  32. package/src/assets/web-panel/assets/{Governance-BezaUhtc.js → Governance-Dq9aYb5Q.js} +1 -1
  33. package/src/assets/web-panel/assets/{Inference-CuRay3Gu.js → Inference-BrCEe9AJ.js} +1 -1
  34. package/src/assets/web-panel/assets/{KnowledgeGraph-DfWLDW1m.js → KnowledgeGraph-DybOpiY2.js} +1 -1
  35. package/src/assets/web-panel/assets/{Logs-C55y2pPY.js → Logs-DBpzbRfx.js} +2 -2
  36. package/src/assets/web-panel/assets/MarkdownRenderer-CFyt8iUd.js +1 -0
  37. package/src/assets/web-panel/assets/{Marketplace-Dk08Uycg.js → Marketplace-Cc7CCSCu.js} +1 -1
  38. package/src/assets/web-panel/assets/{McpTools-C11fSB5V.js → McpTools-DFaIhOfu.js} +3 -3
  39. package/src/assets/web-panel/assets/{Memory-mr0eZc97.js → Memory-KCqlp9ol.js} +2 -2
  40. package/src/assets/web-panel/assets/{MobileBridge-C0iCSRbb.js → MobileBridge-Bys84ySN.js} +1 -1
  41. package/src/assets/web-panel/assets/{MobileProjects-CY-xMG8Z.js → MobileProjects-B-6qU-je.js} +1 -1
  42. package/src/assets/web-panel/assets/{Mtc-Bplqc_Wc.js → Mtc-BgY-fvCq.js} +4 -4
  43. package/src/assets/web-panel/assets/{MtcAudit-BlzwsoSM.js → MtcAudit-B8pCmqQJ.js} +4 -4
  44. package/src/assets/web-panel/assets/{Multisig-BBLmTty6.js → Multisig-BbOmYutA.js} +3 -3
  45. package/src/assets/web-panel/assets/{NLProgramming-DtT1uf1W.js → NLProgramming-BocLQz_M.js} +1 -1
  46. package/src/assets/web-panel/assets/{Notes-DcqQAxTK.js → Notes-CSwbxEop.js} +3 -3
  47. package/src/assets/web-panel/assets/{NotificationSettings-cb0kWoZe.js → NotificationSettings-CqFNSYG3.js} +1 -1
  48. package/src/assets/web-panel/assets/{OrderTableRenderer-kw9HZQNN.js → OrderTableRenderer-C6gMfAk7.js} +1 -1
  49. package/src/assets/web-panel/assets/{Organization-DlTlbkUN.js → Organization-QrDXVdMJ.js} +4 -4
  50. package/src/assets/web-panel/assets/{Overflow-pp1qs-oY.js → Overflow-Cxntotjt.js} +1 -1
  51. package/src/assets/web-panel/assets/{P2P-BESLnyYz.js → P2P-CIdBOwNq.js} +2 -2
  52. package/src/assets/web-panel/assets/{PdhVaultBrowser-B-J1mGuf.js → PdhVaultBrowser-CT5aP8rD.js} +3 -3
  53. package/src/assets/web-panel/assets/{Permissions-B36PeT1_.js → Permissions-DH7OM8XU.js} +4 -4
  54. package/src/assets/web-panel/assets/{PersonalDataHub-CTK2ad-3.js → PersonalDataHub-CnJqbWce.js} +3 -3
  55. package/src/assets/web-panel/assets/{Pipeline-zJNGXsac.js → Pipeline-5C3HG1kH.js} +1 -1
  56. package/src/assets/web-panel/assets/{Privacy-b9fz0Qf0.js → Privacy-B4yIp7xK.js} +1 -1
  57. package/src/assets/web-panel/assets/{ProjectInit-DjZbZgiB.js → ProjectInit-BMvt-2M0.js} +2 -2
  58. package/src/assets/web-panel/assets/{ProjectSettings-C-hHJXlD.js → ProjectSettings-CvSTEMRG.js} +2 -2
  59. package/src/assets/web-panel/assets/Projects-BKBJxEek.js +1 -0
  60. package/src/assets/web-panel/assets/Providers-BdwUqFWN.js +1 -0
  61. package/src/assets/web-panel/assets/{QrScannerModal-A0yoQ3-3.js → QrScannerModal-DtnCKlTm.js} +1 -1
  62. package/src/assets/web-panel/assets/{QuickAsk-DrFgFJNC.js → QuickAsk-sTbgwyNr.js} +1 -1
  63. package/src/assets/web-panel/assets/{Recommend-KC8hF1g4.js → Recommend-Bzr14gSb.js} +1 -1
  64. package/src/assets/web-panel/assets/{RemoteSession-DGTPIk6u.js → RemoteSession-C_TF5IaJ.js} +2 -2
  65. package/src/assets/web-panel/assets/{Reputation-QmbwM7Yk.js → Reputation-GCAM4H2K.js} +1 -1
  66. package/src/assets/web-panel/assets/{Row-BxjJylia.js → Row-Dir0r6OQ.js} +1 -1
  67. package/src/assets/web-panel/assets/{RssFeed-B7Wda1J6.js → RssFeed-CpGnlecX.js} +2 -2
  68. package/src/assets/web-panel/assets/{Search-_plQ_YSA.js → Search-DMMamC6u.js} +1 -1
  69. package/src/assets/web-panel/assets/{Security-CD2YJZfx.js → Security-yqay5yG-.js} +4 -4
  70. package/src/assets/web-panel/assets/{Services-qQE7NmwE.js → Services-C5i2wh9G.js} +2 -2
  71. package/src/assets/web-panel/assets/{Skeleton-DgQqkFf7.js → Skeleton-vUqk35yj.js} +1 -1
  72. package/src/assets/web-panel/assets/{Skills-C4C0oFFt.js → Skills-DzcSkhot.js} +1 -1
  73. package/src/assets/web-panel/assets/{Sla-Px2N2B5c.js → Sla-CB6qbYNr.js} +1 -1
  74. package/src/assets/web-panel/assets/{SpeechSettings-DN6C3lQd.js → SpeechSettings-BHUI7cox.js} +1 -1
  75. package/src/assets/web-panel/assets/{SyncSettings-jm5aH_m7.js → SyncSettings-D-RrsxTJ.js} +2 -2
  76. package/src/assets/web-panel/assets/{Tasks-DlkJcv67.js → Tasks-DFxdOJiq.js} +1 -1
  77. package/src/assets/web-panel/assets/{Templates-DyrTHUBs.js → Templates-SKAob_Aq.js} +1 -1
  78. package/src/assets/web-panel/assets/{Tenant-mC434PtL.js → Tenant-BPfsfHQ-.js} +1 -1
  79. package/src/assets/web-panel/assets/{Terminal-o0_s3NgK.js → Terminal-8iw7FpUf.js} +2 -2
  80. package/src/assets/web-panel/assets/{TimelineRenderer-DAGlAXOw.js → TimelineRenderer-C4Gjj5Su.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tokens-BnulS_bs.js → Tokens-COYhN18e.js} +1 -1
  82. package/src/assets/web-panel/assets/{Trigger-suQbVXYM.js → Trigger-B-JzXcf6.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trust-DbIJAPo5.js → Trust-BJ5bg0nI.js} +1 -1
  84. package/src/assets/web-panel/assets/{UkeySign-CQNpbIHi.js → UkeySign-BG_ByRMf.js} +1 -1
  85. package/src/assets/web-panel/assets/{VideoEditing-D8aWCERk.js → VideoEditing-B3kOnSiU.js} +1 -1
  86. package/src/assets/web-panel/assets/{Wallet-CuLpYfZc.js → Wallet-CcoGFnK7.js} +2 -2
  87. package/src/assets/web-panel/assets/{WebAuthn-CsfG8ZMc.js → WebAuthn-DdT8vRC_.js} +4 -4
  88. package/src/assets/web-panel/assets/{WorkflowEditor-BYsEAZbd.js → WorkflowEditor-CZu3M9N8.js} +1 -1
  89. package/src/assets/web-panel/assets/{chat-FT4Um3-I.js → chat-DxJt3Qba.js} +1 -1
  90. package/src/assets/web-panel/assets/{colors-CKbS_Wlt.js → colors-DdYfwJaB.js} +1 -1
  91. package/src/assets/web-panel/assets/{compact-item-CFJtzuJM.js → compact-item-BG3SUzwj.js} +1 -1
  92. package/src/assets/web-panel/assets/{createContext-B9kSRW6K.js → createContext-By51z2-1.js} +1 -1
  93. package/src/assets/web-panel/assets/devWarning-DorRZcI9.js +1 -0
  94. package/src/assets/web-panel/assets/{hasIn-DR-x0Xpi.js → hasIn-B0apZ3KJ.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-DjEP7WkH.js → index-3jWkIu5j.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-7jHr_A_k.js → index-B3rWuPMW.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-DcfxhKXR.js → index-B5rLiEo0.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-tqSEHPRT.js → index-BBPf3TpM.js} +1 -1
  99. package/src/assets/web-panel/assets/index-BETiL0a3.js +1 -0
  100. package/src/assets/web-panel/assets/{index-Cr2FLUsD.js → index-BIrJfqO4.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-Bt4fS2eL.js → index-BLIbGOLX.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-BwR7yc2h.js → index-BP94CrBV.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-BVPU43b1.js → index-BWF8_mkx.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-DShSkww-.js → index-BYINoRLK.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-Bzz0C1BZ.js → index-BZ_0qm4g.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-KqDaCApw.js → index-BewKYrX9.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-BW-t9n-q.js → index-BfWYsB9t.js} +1 -1
  108. package/src/assets/web-panel/assets/index-BhAVHuW8.js +1 -0
  109. package/src/assets/web-panel/assets/{index-B7osrXqy.js → index-Bissefox.js} +3 -3
  110. package/src/assets/web-panel/assets/{index-DW4BWjTk.js → index-BkvcEo4p.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-DdkIhfi-.js → index-Bos5_aMV.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-DTxNy0ZU.js → index-C1C9i79A.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-QBSeNVO3.js → index-CAhHirVH.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-D4LfPvWA.js → index-CNIxXMmN.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-C_enk9I_.js → index-CW93tZDv.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-WE08gMJP.js → index-CWEuZWCK.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-r2VI1Ikk.js → index-Cp6e-hGw.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-Dap9c3eD.js → index-CpjZhgNd.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-DWdqx7zI.js → index-CzmQElZy.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-BGbPnC5x.js → index-DCn8IcxV.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-DiNUEpSQ.js → index-DE76D-kA.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-DtkFqPVA.js → index-DaIz0NAW.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-CGaXUsIs.js → index-Da_WBdLX.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-B3ZX81mK.js → index-Dz49VOyQ.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-BK3TiKVq.js → index-Q2SCX-MI.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-CJmIQ9XR.js → index-RD6O-0C6.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-CvrCCqJt.js → index-SQqOlR3d.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-BI5hP_qy.js → index-ZFbps9po.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-DeSgw-WV.js → index-ZxtP8jG7.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-DMGmg497.js → index-bP_VlDb4.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-BfFCQHL3.js → index-kf57LJ93.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-OSzjTzGM.js → index-oxRrmFO9.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-C2JvmYRc.js → index-p1_8SbI1.js} +1 -1
  134. package/src/assets/web-panel/assets/{initDefaultProps-Dd7n7VgI.js → initDefaultProps-BWJktcg8.js} +1 -1
  135. package/src/assets/web-panel/assets/{motion-BwxouRw1.js → motion-BEXBzUFV.js} +1 -1
  136. package/src/assets/web-panel/assets/{move-DObN0PG9.js → move-BUKwn2sx.js} +1 -1
  137. package/src/assets/web-panel/assets/{mtc-parser-B3nOUQc7.js → mtc-parser-FTI7btqQ.js} +1 -1
  138. package/src/assets/web-panel/assets/{omit-o9WU2Nbl.js → omit-CsLtSPH3.js} +1 -1
  139. package/src/assets/web-panel/assets/parsers-YNLm7sQ0.js +4 -0
  140. package/src/assets/web-panel/assets/{pickAttrs-CL_vvfQ_.js → pickAttrs-DWZxsT_S.js} +1 -1
  141. package/src/assets/web-panel/assets/{placementArrow-CYrM2tyK.js → placementArrow-Bcfs43CX.js} +1 -1
  142. package/src/assets/web-panel/assets/{responsiveObserve-k_06cQ96.js → responsiveObserve-a9bcC1p-.js} +1 -1
  143. package/src/assets/web-panel/assets/{slide-CPKG0pxS.js → slide-BDTzgOXN.js} +1 -1
  144. package/src/assets/web-panel/assets/{statusUtils-BDDEeLTw.js → statusUtils-Iq1j_HUg.js} +1 -1
  145. package/src/assets/web-panel/assets/{styleChecker-Cmb7RTh7.js → styleChecker-DAZEYxeh.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFlexGapSupport-e2IedC4N.js → useFlexGapSupport-DVkjyDrh.js} +1 -1
  147. package/src/assets/web-panel/assets/{useFs-CE_gxVnm.js → useFs-wXTpNTHt.js} +1 -1
  148. package/src/assets/web-panel/assets/{usePersonalDataHub-BkMIIKMz.js → usePersonalDataHub-CtQM_aZr.js} +1 -1
  149. package/src/assets/web-panel/assets/{vnode-DW886XV1.js → vnode-hjEoG85v.js} +1 -1
  150. package/src/assets/web-panel/assets/{zoom-Dwo_adaf.js → zoom-BHVpyKg_.js} +1 -1
  151. package/src/assets/web-panel/index.html +1 -1
  152. package/src/command-help-index.json +3 -3
  153. package/src/commands/agent.js +14 -2
  154. package/src/commands/artifacts.js +235 -0
  155. package/src/commands/background-session.js +100 -10
  156. package/src/commands/cowork.js +86 -57
  157. package/src/commands/mcp.js +5 -0
  158. package/src/commands/plugin.js +145 -29
  159. package/src/commands/remote-control.js +295 -110
  160. package/src/commands/session-location.js +20 -1
  161. package/src/commands/session-message.js +171 -0
  162. package/src/commands/session.js +75 -69
  163. package/src/data/changelog.json +29 -3
  164. package/src/gateways/ws/message-dispatcher.js +57 -0
  165. package/src/harness/mcp-client.js +141 -10
  166. package/src/lib/artifact-access-ledger.js +1 -0
  167. package/src/lib/artifact-deletion-ledger.js +1 -0
  168. package/src/lib/artifact-recovery.js +970 -0
  169. package/src/lib/artifact-workbench-projection.js +171 -0
  170. package/src/lib/background-session-transport.js +153 -27
  171. package/src/lib/dynamic-workflow-runtime.js +408 -1
  172. package/src/lib/execution-location-target.js +4 -2
  173. package/src/lib/mcp-client.js +2 -0
  174. package/src/lib/mcp-headers-helper.js +47 -5
  175. package/src/lib/mcp-oauth.js +55 -6
  176. package/src/lib/mcp-stdio-executable-identity.js +16 -0
  177. package/src/lib/mcp-stdio-native-code-policy.js +74 -0
  178. package/src/lib/mcp-stdio-package-materialization.js +12 -3
  179. package/src/lib/mcp-tls.js +230 -0
  180. package/src/lib/output-styles.js +12 -0
  181. package/src/lib/plugin-runtime/install.js +614 -71
  182. package/src/lib/plugin-runtime/marketplace-archive-source.js +331 -0
  183. package/src/lib/plugin-runtime/marketplace-catalog.js +52 -6
  184. package/src/lib/plugin-runtime/marketplace-remote-artifacts.js +1 -0
  185. package/src/lib/plugin-runtime/marketplace-source-adapter.js +163 -0
  186. package/src/lib/plugin-runtime/marketplace-source-cache.js +11 -1
  187. package/src/lib/plugin-runtime/remote-source.js +435 -55
  188. package/src/lib/plugin-security.js +393 -41
  189. package/src/lib/plugin-source-identity.js +850 -0
  190. package/src/lib/process-execution-broker/index.js +112 -0
  191. package/src/lib/process-execution-broker/platform-sandbox.js +57 -3
  192. package/src/lib/process-execution-broker/workspace-transaction.js +26 -0
  193. package/src/lib/remote-approval-bridge.js +136 -46
  194. package/src/lib/remote-control.js +217 -31
  195. package/src/lib/session-message-fabric.js +1105 -0
  196. package/src/lib/session-projection.js +171 -12
  197. package/src/lib/session-runtime-retention.js +155 -0
  198. package/src/lib/settings-loader.cjs +29 -0
  199. package/src/repl/agent-repl.js +51 -14
  200. package/src/repl/permission-prompt.js +31 -8
  201. package/src/repl/repl-keybindings.js +55 -0
  202. package/src/runtime/agent-core.js +63 -2
  203. package/src/runtime/headless-runner.js +47 -66
  204. package/src/runtime/headless-stream.js +18 -24
  205. package/src/runtime/mcp-config.js +2 -0
  206. package/src/runtime/policies/agent-policy.js +2 -0
  207. package/src/assets/web-panel/assets/ChatBubbleRenderer-xijcWkJe.js +0 -1
  208. package/src/assets/web-panel/assets/MarkdownRenderer-hDpWdiBc.js +0 -1
  209. package/src/assets/web-panel/assets/Projects-BC9KSDM6.js +0 -1
  210. package/src/assets/web-panel/assets/Providers-Dz-CAYYU.js +0 -1
  211. package/src/assets/web-panel/assets/devWarning-DJZ0gAMu.js +0 -1
  212. package/src/assets/web-panel/assets/index-Bizb4hkw.js +0 -1
  213. package/src/assets/web-panel/assets/index-OHSl-xCh.js +0 -1
  214. package/src/assets/web-panel/assets/parsers-UEvh_ShA.js +0 -4
@@ -75,9 +75,8 @@ function renderWorkflowPreflight(preflight) {
75
75
  }
76
76
 
77
77
  async function loadCoworkWorkflowRecord(cwd, id, definitionDigest) {
78
- const { getWorkflowRecord, getWorkflowVersion } = await import(
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 } = await import(
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 } = await import(
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 } = await import(
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 } = await import(
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 } = await import(
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 } = await import(
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 } = await import(
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 } = await import(
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 } = await import(
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 } = await import(
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 = import(
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 = await import(
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 } = await import(
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 } = await import(
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 } = await import(
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 } = await import(
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));
@@ -632,6 +632,10 @@ export function registerMcpCommand(program) {
632
632
  "--client-id <id>",
633
633
  "Use a pre-registered client_id instead of dynamic registration",
634
634
  )
635
+ .option(
636
+ "--redirect-uri <url>",
637
+ "Exact pre-registered http://127.0.0.1:<port>/<path> callback URI",
638
+ )
635
639
  .option(
636
640
  "--port <n>",
637
641
  "Localhost callback port",
@@ -662,6 +666,7 @@ export function registerMcpCommand(program) {
662
666
  const rec = await oauth.authorizeInteractive(url, {
663
667
  scope: options.scope,
664
668
  clientId: options.clientId,
669
+ redirectUri: options.redirectUri,
665
670
  port: options.port,
666
671
  writeOut: (s) => process.stdout.write(s),
667
672
  });