@skaile/workspaces 2.3.0 → 2.5.0

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 (217) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +32 -13
  3. package/dist/app-sdk/index.js +1 -1
  4. package/dist/{asset-feeds-DKNYRLED.js → asset-feeds-4AWAT5PW.js} +6 -6
  5. package/dist/{asset-feeds-DKNYRLED.js.map → asset-feeds-4AWAT5PW.js.map} +1 -1
  6. package/dist/asset-manager/catalog-deployer.js +1 -1
  7. package/dist/asset-manager/index.js +5 -5
  8. package/dist/asset-manager/installer.js +2 -2
  9. package/dist/bridge/drivers/claude-sdk.js +108 -5
  10. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  11. package/dist/bridge/drivers/codex.js +1 -1
  12. package/dist/bridge/drivers/continue.js +2 -2
  13. package/dist/bridge/drivers/echo.js +1 -1
  14. package/dist/bridge/drivers/gemini.js +3 -3
  15. package/dist/bridge/drivers/goose.js +2 -2
  16. package/dist/bridge/drivers/omp.js +1 -1
  17. package/dist/bridge/drivers/opencode.js +2 -2
  18. package/dist/bridge/drivers/qwen.js +3 -3
  19. package/dist/bridge/index.js +2 -2
  20. package/dist/bridge/src/drivers/claude-sdk.d.ts +33 -0
  21. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  22. package/dist/{chunk-CERGXDGG.js → chunk-2OCYS5EP.js} +3 -3
  23. package/dist/{chunk-CERGXDGG.js.map → chunk-2OCYS5EP.js.map} +1 -1
  24. package/dist/{chunk-W3Q37HEF.js → chunk-3HVASHBF.js} +3 -3
  25. package/dist/{chunk-W3Q37HEF.js.map → chunk-3HVASHBF.js.map} +1 -1
  26. package/dist/{chunk-UQ3RJKDD.js → chunk-4O2RAXKJ.js} +179 -52
  27. package/dist/chunk-4O2RAXKJ.js.map +1 -0
  28. package/dist/{chunk-DZM33LQO.js → chunk-4QROZZ5Z.js} +15 -3
  29. package/dist/chunk-4QROZZ5Z.js.map +1 -0
  30. package/dist/{chunk-G2ILW47R.js → chunk-57RFYEVM.js} +3 -3
  31. package/dist/{chunk-G2ILW47R.js.map → chunk-57RFYEVM.js.map} +1 -1
  32. package/dist/{chunk-BLWNI5KW.js → chunk-AKVAZ5CB.js} +2 -2
  33. package/dist/{chunk-BLWNI5KW.js.map → chunk-AKVAZ5CB.js.map} +1 -1
  34. package/dist/{chunk-BFIK6NPZ.js → chunk-AM5LFRXJ.js} +3 -3
  35. package/dist/{chunk-BFIK6NPZ.js.map → chunk-AM5LFRXJ.js.map} +1 -1
  36. package/dist/{chunk-RDE43ORT.js → chunk-D4VHBAJC.js} +4 -4
  37. package/dist/{chunk-RDE43ORT.js.map → chunk-D4VHBAJC.js.map} +1 -1
  38. package/dist/{chunk-PTS3QN5P.js → chunk-EEHOMCRU.js} +1021 -115
  39. package/dist/chunk-EEHOMCRU.js.map +1 -0
  40. package/dist/{chunk-CXX3UGJP.js → chunk-ENBTXMPL.js} +7 -7
  41. package/dist/{chunk-CXX3UGJP.js.map → chunk-ENBTXMPL.js.map} +1 -1
  42. package/dist/{chunk-LD6YGIKZ.js → chunk-EUWN4EK4.js} +60 -21
  43. package/dist/chunk-EUWN4EK4.js.map +1 -0
  44. package/dist/{chunk-FB4GPWYC.js → chunk-FKBQRV4J.js} +57 -16
  45. package/dist/chunk-FKBQRV4J.js.map +1 -0
  46. package/dist/{chunk-WG3L5VHF.js → chunk-HY3MBSNC.js} +2 -2
  47. package/dist/{chunk-WG3L5VHF.js.map → chunk-HY3MBSNC.js.map} +1 -1
  48. package/dist/{chunk-7IRH7MGV.js → chunk-IHX2SN35.js} +9 -9
  49. package/dist/{chunk-7IRH7MGV.js.map → chunk-IHX2SN35.js.map} +1 -1
  50. package/dist/{chunk-3F54MH2T.js → chunk-JAFEMG7W.js} +4 -4
  51. package/dist/{chunk-3F54MH2T.js.map → chunk-JAFEMG7W.js.map} +1 -1
  52. package/dist/{chunk-X6BPVUV2.js → chunk-L3TS7ZO4.js} +3 -3
  53. package/dist/{chunk-X6BPVUV2.js.map → chunk-L3TS7ZO4.js.map} +1 -1
  54. package/dist/{chunk-RIEXN7WA.js → chunk-MADO7PH5.js} +2 -2
  55. package/dist/{chunk-RIEXN7WA.js.map → chunk-MADO7PH5.js.map} +1 -1
  56. package/dist/{chunk-BCTU4TN7.js → chunk-MWFYXUFK.js} +3 -3
  57. package/dist/{chunk-BCTU4TN7.js.map → chunk-MWFYXUFK.js.map} +1 -1
  58. package/dist/{chunk-TK66CMXV.js → chunk-NU4E7C5I.js} +7 -3
  59. package/dist/chunk-NU4E7C5I.js.map +1 -0
  60. package/dist/{chunk-ZE2KEPE2.js → chunk-OEGHKO5N.js} +258 -24
  61. package/dist/chunk-OEGHKO5N.js.map +1 -0
  62. package/dist/{chunk-63ZPKREA.js → chunk-P43HBWKK.js} +11 -4
  63. package/dist/chunk-P43HBWKK.js.map +1 -0
  64. package/dist/{chunk-7UZGKVSK.js → chunk-PJ6INYDD.js} +3 -3
  65. package/dist/{chunk-7UZGKVSK.js.map → chunk-PJ6INYDD.js.map} +1 -1
  66. package/dist/{chunk-CA5CWLGN.js → chunk-PKEAYYEJ.js} +7 -4
  67. package/dist/chunk-PKEAYYEJ.js.map +1 -0
  68. package/dist/{chunk-ETFETLLB.js → chunk-UZYTSIX6.js} +6 -6
  69. package/dist/{chunk-ETFETLLB.js.map → chunk-UZYTSIX6.js.map} +1 -1
  70. package/dist/{chunk-SIF5F5SN.js → chunk-V4ZLZJFN.js} +3 -3
  71. package/dist/{chunk-SIF5F5SN.js.map → chunk-V4ZLZJFN.js.map} +1 -1
  72. package/dist/{chunk-ZR5Q4KZK.js → chunk-VNIKF66R.js} +3 -3
  73. package/dist/{chunk-ZR5Q4KZK.js.map → chunk-VNIKF66R.js.map} +1 -1
  74. package/dist/{chunk-CILACPUC.js → chunk-WSARNOPP.js} +5 -5
  75. package/dist/{chunk-CILACPUC.js.map → chunk-WSARNOPP.js.map} +1 -1
  76. package/dist/{chunk-TAJBFYCT.js → chunk-YWPEDILM.js} +83 -36
  77. package/dist/chunk-YWPEDILM.js.map +1 -0
  78. package/dist/{chunk-UNP4M5ZZ.js → chunk-ZR2X4SIG.js} +4 -4
  79. package/dist/{chunk-UNP4M5ZZ.js.map → chunk-ZR2X4SIG.js.map} +1 -1
  80. package/dist/cli/index.js +50 -50
  81. package/dist/connectors/config.js +1 -1
  82. package/dist/connectors/index.js +6 -6
  83. package/dist/core/index.js +1 -1
  84. package/dist/core/src/subprocess.d.ts +5 -1
  85. package/dist/core/src/subprocess.d.ts.map +1 -1
  86. package/dist/deploy/index.js +1 -1
  87. package/dist/discovery/index.js +1 -1
  88. package/dist/{ensure-sources-R6KW7K3M.js → ensure-sources-QF72HVUM.js} +8 -8
  89. package/dist/{ensure-sources-R6KW7K3M.js.map → ensure-sources-QF72HVUM.js.map} +1 -1
  90. package/dist/factory-assets/connectors/box.js +6 -6
  91. package/dist/factory-assets/connectors/deploy.js +6 -6
  92. package/dist/factory-assets/connectors/devserver.js +6 -6
  93. package/dist/factory-assets/connectors/flow/CONNECTOR.md +61 -14
  94. package/dist/factory-assets/connectors/flow/adapter.d.ts +78 -34
  95. package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -1
  96. package/dist/factory-assets/connectors/flow/adapter.js +6 -6
  97. package/dist/factory-assets/connectors/flow/contract/expression.d.ts +55 -0
  98. package/dist/factory-assets/connectors/flow/contract/expression.d.ts.map +1 -1
  99. package/dist/factory-assets/connectors/flow/contract/flow.v2.schema.json +61 -134
  100. package/dist/factory-assets/connectors/flow/contract/index.d.ts +1 -1
  101. package/dist/factory-assets/connectors/flow/contract/index.d.ts.map +1 -1
  102. package/dist/factory-assets/connectors/flow/contract/normalize.d.ts.map +1 -1
  103. package/dist/factory-assets/connectors/flow/contract/schema.d.ts +14 -2
  104. package/dist/factory-assets/connectors/flow/contract/schema.d.ts.map +1 -1
  105. package/dist/factory-assets/connectors/flow/contract.js +2 -2
  106. package/dist/factory-assets/connectors/flow/engine/bindings.d.ts +9 -0
  107. package/dist/factory-assets/connectors/flow/engine/bindings.d.ts.map +1 -0
  108. package/dist/factory-assets/connectors/flow/engine/engine.d.ts +11 -6
  109. package/dist/factory-assets/connectors/flow/engine/engine.d.ts.map +1 -1
  110. package/dist/factory-assets/connectors/flow/engine/flow-kind-provider.d.ts.map +1 -1
  111. package/dist/factory-assets/connectors/flow/engine/index.d.ts +2 -0
  112. package/dist/factory-assets/connectors/flow/engine/index.d.ts.map +1 -1
  113. package/dist/factory-assets/connectors/flow/engine/node-shape.d.ts +22 -0
  114. package/dist/factory-assets/connectors/flow/engine/node-shape.d.ts.map +1 -1
  115. package/dist/factory-assets/connectors/flow/engine/output-schema.d.ts +18 -0
  116. package/dist/factory-assets/connectors/flow/engine/output-schema.d.ts.map +1 -0
  117. package/dist/factory-assets/connectors/flow/engine/types.d.ts +21 -15
  118. package/dist/factory-assets/connectors/flow/engine/types.d.ts.map +1 -1
  119. package/dist/factory-assets/connectors/flow/engine.js +4 -4
  120. package/dist/factory-assets/connectors/flow/index.d.ts +3 -0
  121. package/dist/factory-assets/connectors/flow/index.d.ts.map +1 -1
  122. package/dist/factory-assets/connectors/flow/inline-sub-flow-host.d.ts +48 -0
  123. package/dist/factory-assets/connectors/flow/inline-sub-flow-host.d.ts.map +1 -0
  124. package/dist/factory-assets/connectors/flow/node-executor.d.ts +45 -0
  125. package/dist/factory-assets/connectors/flow/node-executor.d.ts.map +1 -0
  126. package/dist/factory-assets/connectors/flow/prompt-fragments.d.ts +3 -2
  127. package/dist/factory-assets/connectors/flow/prompt-fragments.d.ts.map +1 -1
  128. package/dist/factory-assets/connectors/flow/prompt-fragments.js +2 -2
  129. package/dist/factory-assets/connectors/flow/run-flow.d.ts +10 -9
  130. package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
  131. package/dist/factory-assets/connectors/flow/run-flow.js +7 -7
  132. package/dist/factory-assets/connectors/flow/sub-flow-runner.d.ts +73 -0
  133. package/dist/factory-assets/connectors/flow/sub-flow-runner.d.ts.map +1 -0
  134. package/dist/factory-assets/connectors/flow.js +6 -6
  135. package/dist/factory-assets/connectors/git.js +6 -6
  136. package/dist/factory-assets/connectors/gmail.js +6 -6
  137. package/dist/factory-assets/connectors/googledrive.js +6 -6
  138. package/dist/factory-assets/connectors/local.js +6 -6
  139. package/dist/factory-assets/connectors/mattermost.js +6 -6
  140. package/dist/factory-assets/connectors/memory.js +6 -6
  141. package/dist/factory-assets/connectors/minio.js +6 -6
  142. package/dist/factory-assets/connectors/postgres.js +6 -6
  143. package/dist/factory-assets/connectors/s3.js +6 -6
  144. package/dist/factory-assets/connectors/sharepoint.js +6 -6
  145. package/dist/factory-assets/connectors/sqlite.js +6 -6
  146. package/dist/factory-assets/connectors/static-server.js +6 -6
  147. package/dist/factory-assets/connectors/tunnel.js +6 -6
  148. package/dist/factory-assets/connectors/webdav.js +6 -6
  149. package/dist/factory-assets/connectors/xstate-store.js +6 -6
  150. package/dist/factory-assets/connectors/xstate.js +6 -6
  151. package/dist/{flows-F3CJNMK6.js → flows-YIW4HL3L.js} +4 -4
  152. package/dist/{flows-F3CJNMK6.js.map → flows-YIW4HL3L.js.map} +1 -1
  153. package/dist/{helpers-KPOLCGKX.js → helpers-LURCZHA4.js} +8 -8
  154. package/dist/{helpers-KPOLCGKX.js.map → helpers-LURCZHA4.js.map} +1 -1
  155. package/dist/library/index.js +3 -3
  156. package/dist/library/install.js +1 -1
  157. package/dist/{library-publish-ZAPZS64O.js → library-publish-2GMJM3NZ.js} +14 -14
  158. package/dist/{library-publish-ZAPZS64O.js.map → library-publish-2GMJM3NZ.js.map} +1 -1
  159. package/dist/{open-library-I4F2UNOY.js → open-library-POFOXZWH.js} +12 -12
  160. package/dist/{open-library-I4F2UNOY.js.map → open-library-POFOXZWH.js.map} +1 -1
  161. package/dist/{paths-KBACHM5B.js → paths-ZLX4ITAQ.js} +6 -6
  162. package/dist/{paths-KBACHM5B.js.map → paths-ZLX4ITAQ.js.map} +1 -1
  163. package/dist/{plugin-store-CYSNVZIX.js → plugin-store-YIMNH2FH.js} +3 -3
  164. package/dist/{plugin-store-CYSNVZIX.js.map → plugin-store-YIMNH2FH.js.map} +1 -1
  165. package/dist/{project-SIHZBTGB.js → project-GVOPZEJZ.js} +9 -9
  166. package/dist/{project-SIHZBTGB.js.map → project-GVOPZEJZ.js.map} +1 -1
  167. package/dist/resolver/index.js +1 -1
  168. package/dist/runner/index.js +15 -12
  169. package/dist/runner/src/serve.d.ts +3 -1
  170. package/dist/runner/src/serve.d.ts.map +1 -1
  171. package/dist/sdk/asset-manager.js +5 -5
  172. package/dist/sdk/bridge.js +2 -2
  173. package/dist/sdk/core.js +1 -1
  174. package/dist/sdk/flow.js +4 -4
  175. package/dist/sdk/index.js +15 -12
  176. package/dist/sdk/index.js.map +1 -1
  177. package/dist/sdk/resolver.js +1 -1
  178. package/dist/sdk/runner.js +15 -12
  179. package/dist/sdk/session.js +2 -2
  180. package/dist/sdk/types.js +1 -1
  181. package/dist/session/index.js +2 -2
  182. package/dist/session/src/dispatcher.d.ts.map +1 -1
  183. package/dist/{setup-KMBXMV25.js → setup-RHWARBBB.js} +5 -5
  184. package/dist/{setup-KMBXMV25.js.map → setup-RHWARBBB.js.map} +1 -1
  185. package/dist/{skills-LHS4TOKK.js → skills-HGVH6UTA.js} +5 -5
  186. package/dist/{skills-LHS4TOKK.js.map → skills-HGVH6UTA.js.map} +1 -1
  187. package/dist/{source-X226ZJPR.js → source-FB3T4IHP.js} +13 -13
  188. package/dist/{source-X226ZJPR.js.map → source-FB3T4IHP.js.map} +1 -1
  189. package/dist/{source-manifest-publish-N2QVUR5U.js → source-manifest-publish-XTRDVPSC.js} +15 -15
  190. package/dist/{source-manifest-publish-N2QVUR5U.js.map → source-manifest-publish-XTRDVPSC.js.map} +1 -1
  191. package/dist/tui/index.js +15 -12
  192. package/dist/tui/index.js.map +1 -1
  193. package/dist/types/index.js +1 -1
  194. package/dist/types/src/events.d.ts +20 -1
  195. package/dist/types/src/events.d.ts.map +1 -1
  196. package/dist/types/src/flow.d.ts +26 -0
  197. package/dist/types/src/flow.d.ts.map +1 -1
  198. package/dist/types/src/index.d.ts +1 -1
  199. package/dist/types/src/index.d.ts.map +1 -1
  200. package/dist/types/src/protocol.d.ts +1 -0
  201. package/dist/types/src/protocol.d.ts.map +1 -1
  202. package/dist/types/src/version.d.ts +12 -1
  203. package/dist/types/src/version.d.ts.map +1 -1
  204. package/dist/workspace-plugin/adapters/mcp.js +4 -4
  205. package/dist/workspace-plugin/adapters/omp.js +7 -7
  206. package/dist/workspace-plugin/index.js +1 -1
  207. package/package.json +1 -1
  208. package/dist/chunk-63ZPKREA.js.map +0 -1
  209. package/dist/chunk-CA5CWLGN.js.map +0 -1
  210. package/dist/chunk-DZM33LQO.js.map +0 -1
  211. package/dist/chunk-FB4GPWYC.js.map +0 -1
  212. package/dist/chunk-LD6YGIKZ.js.map +0 -1
  213. package/dist/chunk-PTS3QN5P.js.map +0 -1
  214. package/dist/chunk-TAJBFYCT.js.map +0 -1
  215. package/dist/chunk-TK66CMXV.js.map +0 -1
  216. package/dist/chunk-UQ3RJKDD.js.map +0 -1
  217. package/dist/chunk-ZE2KEPE2.js.map +0 -1
@@ -1,17 +1,19 @@
1
- import { WorkspacePlugin } from './chunk-BLWNI5KW.js';
1
+ import { WorkspacePlugin } from './chunk-AKVAZ5CB.js';
2
2
  import { assembleSystemPrompt, buildCapabilitiesPromptSection } from './chunk-W3UDISS2.js';
3
3
  import { WebSocketServerTransport } from './chunk-WQ7DE5UC.js';
4
- import { EventNormalizer } from './chunk-ZR5Q4KZK.js';
4
+ import { EventNormalizer } from './chunk-VNIKF66R.js';
5
5
  import { SUPPORTED_CLOUDS, CLOUD_SECRET_ENV_KEYS } from './chunk-ISQWMBKD.js';
6
6
  import { classifyClaudeSdkError } from './chunk-GAH4YRCI.js';
7
- import { createDriver } from './chunk-WG3L5VHF.js';
7
+ import { createDriver } from './chunk-HY3MBSNC.js';
8
+ import { resolveFlowPath } from './chunk-EUWN4EK4.js';
8
9
  import { findAiAssetsRoot, deployCatalogEntry, undeployCatalogEntry } from './chunk-BEAIJRVF.js';
9
- import { registerBuiltinConnectors, buildConnectorPromptSection, findMissingPackages, installNpmPackages, ConnectorManager, ConnectorStartupError, buildSdkConnectorTools, buildSdkFlowTools } from './chunk-PTS3QN5P.js';
10
+ import { registerBuiltinConnectors, buildConnectorPromptSection, findMissingPackages, installNpmPackages, ConnectorManager, ConnectorStartupError, buildSdkConnectorTools, SessionNodeExecutor, SessionInlineSubFlowRunner, buildSdkFlowTools } from './chunk-EEHOMCRU.js';
10
11
  import { loadConnectorDeclarations, SecretProviderChain, PreMintedSecretProvider, InMemorySecretProvider, resolvedConfigToDeclarations, isKnownSecretRef, deriveSingleMaterializedConnectorDeclaration } from './chunk-ZNIHTT22.js';
11
- import { parseFlowDefinition } from './chunk-ZE2KEPE2.js';
12
- import { renderStimulusPrompt, buildOrchestratorPrompt } from './chunk-FB4GPWYC.js';
13
- import { PROTOCOL_VERSION } from './chunk-RDE43ORT.js';
14
- import { resolveSettings, resolveApiKey, providerEnvKey } from './chunk-63ZPKREA.js';
12
+ import { loadFlow } from './chunk-4O2RAXKJ.js';
13
+ import { parseFlowDefinition } from './chunk-OEGHKO5N.js';
14
+ import { renderStimulusPrompt, buildOrchestratorPrompt } from './chunk-FKBQRV4J.js';
15
+ import { PROTOCOL_VERSION } from './chunk-D4VHBAJC.js';
16
+ import { resolveSettings, resolveApiKey, providerEnvKey } from './chunk-P43HBWKK.js';
15
17
  import { resolveDriverPaths } from './chunk-K5GBV4SA.js';
16
18
  import { resolveRuntimeAssets } from './chunk-UFY2HFLO.js';
17
19
  import { resolveSkWorkspaceConfig, resolveAgentDir, cloudConfigFromProfile, stageMaterializedSkills, loadMcpServerDeclarations, COMPACTION_DEFAULTS, validateAssetRecipeAttr, deriveSingleMaterializedMcpDeclaration } from './chunk-Q26C5GLO.js';
@@ -4651,6 +4653,11 @@ function pendingDecisionOp(decision) {
4651
4653
  }
4652
4654
  };
4653
4655
  }
4656
+ function hasRejectedParkedApproval(execution) {
4657
+ return Object.values(execution.nodes ?? {}).some(
4658
+ (node) => node.status === "awaiting_approval" && node.approval?.decision === "rejected" && node.approval.decidedAt != null
4659
+ );
4660
+ }
4654
4661
  function hostOpResumeStimulus(op, payload) {
4655
4662
  switch (op) {
4656
4663
  case "applyApproval":
@@ -4748,21 +4755,23 @@ async function executeConnectorMutate(cmd, deps) {
4748
4755
  });
4749
4756
  if (payload.pendingDecisions === void 0) {
4750
4757
  respond({ ok: true });
4758
+ if (entry.hydratedStateChanged || hasRejectedParkedApproval(plan.execution)) {
4759
+ deps.signalStimulus(entry, { kind: "resumed_after_hibernation" });
4760
+ }
4751
4761
  return;
4752
4762
  }
4753
4763
  const { toApply, reconciled } = reconcilePendingDecisions(
4754
4764
  plan.execution,
4755
4765
  payload.pendingDecisions
4756
4766
  );
4757
- let lastApplied = null;
4767
+ let appliedAny = false;
4758
4768
  const applied = [];
4759
4769
  for (const decision of toApply) {
4760
4770
  const { op, payload: opPayload } = pendingDecisionOp(decision);
4761
4771
  try {
4762
4772
  await deps.executeOp(entry.connectorId, op, opPayload);
4763
4773
  applied.push(decision.nodeId);
4764
- const stimulus = hostOpResumeStimulus(op, opPayload);
4765
- if (stimulus) lastApplied = { target: entry, stimulus };
4774
+ appliedAny = true;
4766
4775
  } catch (err) {
4767
4776
  reconciled.skipped.push({ nodeId: decision.nodeId, reason: "not_parked" });
4768
4777
  deps.log.warn("flow hydrate reconciliation refused", {
@@ -4774,7 +4783,9 @@ async function executeConnectorMutate(cmd, deps) {
4774
4783
  }
4775
4784
  reconciled.applied = applied;
4776
4785
  respond({ ok: true, reconciled });
4777
- if (lastApplied) deps.signalStimulus(lastApplied.target, lastApplied.stimulus);
4786
+ if (appliedAny || entry.hydratedStateChanged || hasRejectedParkedApproval(plan.execution)) {
4787
+ deps.signalStimulus(entry, { kind: "resumed_after_hibernation" });
4788
+ }
4778
4789
  return;
4779
4790
  }
4780
4791
  case "reject": {
@@ -4804,6 +4815,9 @@ async function executeConnectorMutate(cmd, deps) {
4804
4815
  if (resumeStimulus) {
4805
4816
  const active = deps.flowState().activeFlow;
4806
4817
  if (active) deps.signalStimulus(active, resumeStimulus);
4818
+ } else if (cmd.op === "hydrate" && typeof result === "string" && JSON.stringify(payload.state) !== result) {
4819
+ const active = deps.flowState().activeFlow;
4820
+ if (active) deps.signalStimulus(active, { kind: "resumed_after_hibernation" });
4807
4821
  }
4808
4822
  return;
4809
4823
  }
@@ -4818,6 +4832,8 @@ function reconstructTypedStimulus(meta) {
4818
4832
  switch (meta.kind) {
4819
4833
  case "flow_started":
4820
4834
  return { kind: "flow_started" };
4835
+ case "resumed_after_hibernation":
4836
+ return { kind: "resumed_after_hibernation" };
4821
4837
  case "user_message":
4822
4838
  return typeof meta.text === "string" ? {
4823
4839
  kind: "user_message",
@@ -5390,6 +5406,19 @@ async function startAgentServer(opts) {
5390
5406
  }
5391
5407
  const flowConnectorReadiness = createFlowConnectorReadiness(() => getOnlyActiveFlow() !== null);
5392
5408
  const flowMutateConnectorWaitMs = resolveFlowMutateConnectorWaitMs();
5409
+ async function ensureFlowDriverStarted() {
5410
+ if (driverStarted) return;
5411
+ await driver.start();
5412
+ driverStarted = true;
5413
+ driver.on("agent-event", (event) => {
5414
+ const normalized = normalizer.normalize(event);
5415
+ for (const e of normalized) forwardNormalizedEvent(e);
5416
+ });
5417
+ driver.on("error", (err) => {
5418
+ log(`[serve] driver error: ${err.message}`);
5419
+ sendEvent({ type: "error", message: err.message, fatal: true });
5420
+ });
5421
+ }
5393
5422
  function getOrCreateStimulusBus() {
5394
5423
  if (stimulusBus) return stimulusBus;
5395
5424
  stimulusBus = createSessionStimulusBus({
@@ -5402,23 +5431,14 @@ async function startAgentServer(opts) {
5402
5431
  return;
5403
5432
  }
5404
5433
  const stimulus = stimulusFromMetas(metas);
5405
- const fullPrompt = buildOrchestratorPrompt(
5406
- entry.flowDef,
5407
- entry.adapter.getExecution(entry.handle),
5408
- stimulus
5409
- );
5410
- if (!driverStarted) {
5411
- await driver.start();
5412
- driverStarted = true;
5413
- driver.on("agent-event", (event) => {
5414
- const normalized = normalizer.normalize(event);
5415
- for (const e of normalized) forwardNormalizedEvent(e);
5416
- });
5417
- driver.on("error", (err) => {
5418
- log(`[serve] driver error: ${err.message}`);
5419
- sendEvent({ type: "error", message: err.message, fatal: true });
5420
- });
5434
+ await entry.adapter.drainRuntimeNodes(entry.handle);
5435
+ const execution = entry.adapter.getExecution(entry.handle);
5436
+ if (execution.done || execution.status === "failed" || execution.status === "cancelled") {
5437
+ return;
5421
5438
  }
5439
+ if (!entry.adapter.shouldDriveAgentTurn(entry.handle, stimulus)) return;
5440
+ const fullPrompt = buildOrchestratorPrompt(entry.flowDef, execution, stimulus);
5441
+ await ensureFlowDriverStarted();
5422
5442
  await awaitFlowAgentEnd(fullPrompt, FLOW_TURN_TIMEOUT_MS);
5423
5443
  },
5424
5444
  log: serverLog
@@ -5476,9 +5496,23 @@ async function startAgentServer(opts) {
5476
5496
  }
5477
5497
  async function createActiveFlow(flowDef, seedOrExecution) {
5478
5498
  const bus = getOrCreateStimulusBus();
5499
+ const nodeExecutor = new SessionNodeExecutor({ workspaceDir: opts.projectDir });
5500
+ const inlineSubFlowRunner = new SessionInlineSubFlowRunner({
5501
+ resolveFlow: (flowId) => loadFlow(resolveFlowPath(flowId, opts.projectDir)),
5502
+ nodeExecutor,
5503
+ driveAgentTurn: async ({ flow, execution, stimulus }) => {
5504
+ await ensureFlowDriverStarted();
5505
+ await awaitFlowAgentEnd(
5506
+ buildOrchestratorPrompt(flow, execution, stimulus),
5507
+ FLOW_TURN_TIMEOUT_MS
5508
+ );
5509
+ }
5510
+ });
5479
5511
  const baseOptions = {
5480
5512
  stimulusBus: bus,
5481
- useBusForStimulus: true
5513
+ useBusForStimulus: true,
5514
+ nodeExecutor,
5515
+ inlineSubFlowRunner
5482
5516
  };
5483
5517
  const options = "execution" in seedOrExecution ? { flow: flowDef, execution: seedOrExecution.execution, ...baseOptions } : { flow: flowDef, seed: seedOrExecution.seed, ...baseOptions };
5484
5518
  const seedRunId = "execution" in seedOrExecution ? seedOrExecution.execution.runId : seedOrExecution.seed.runId;
@@ -5495,6 +5529,7 @@ async function startAgentServer(opts) {
5495
5529
  });
5496
5530
  const adapter = manager.get(connectorId).connector;
5497
5531
  const runId = adapter.getExecution(handle).runId;
5532
+ const hydratedStateChanged = "execution" in seedOrExecution && JSON.stringify(adapter.getExecution(handle)) !== JSON.stringify(seedOrExecution.execution);
5498
5533
  adapter.onStateChange(handle, (state) => {
5499
5534
  sendEvent({
5500
5535
  type: "state_changed",
@@ -5502,7 +5537,7 @@ async function startAgentServer(opts) {
5502
5537
  state
5503
5538
  });
5504
5539
  });
5505
- if ("seed" in seedOrExecution) {
5540
+ if ("seed" in seedOrExecution || hydratedStateChanged) {
5506
5541
  sendEvent({
5507
5542
  type: "state_changed",
5508
5543
  store: `flow:${runId}`,
@@ -5510,9 +5545,9 @@ async function startAgentServer(opts) {
5510
5545
  });
5511
5546
  }
5512
5547
  driver.config.flowTestDriver = {
5513
- getState: () => adapter.getExecution(handle),
5548
+ getState: () => adapter.getAgentExecution(handle),
5514
5549
  execute: (op, args) => adapter.executeOp(handle, op, args),
5515
- mandatoryGates: () => adapter.getMandatoryGates(handle)
5550
+ mandatoryGates: () => adapter.getMandatoryAgentApprovalNodeIds(handle)
5516
5551
  };
5517
5552
  if (agentSession?.driverType === "claude-sdk") {
5518
5553
  try {
@@ -5532,7 +5567,14 @@ async function startAgentServer(opts) {
5532
5567
  }
5533
5568
  }
5534
5569
  emitAvailability();
5535
- const entry = { runId, flowDef, adapter, handle, connectorId };
5570
+ const entry = {
5571
+ runId,
5572
+ flowDef,
5573
+ adapter,
5574
+ handle,
5575
+ connectorId,
5576
+ hydratedStateChanged
5577
+ };
5536
5578
  const pruned = registerActiveFlow(activeFlows, runId, entry);
5537
5579
  if (pruned.length > 0) serverLog.debug("pruned terminal flow runs", { runIds: pruned });
5538
5580
  flowConnectorReadiness.drain();
@@ -6107,6 +6149,7 @@ async function startAgentServer(opts) {
6107
6149
  });
6108
6150
  }
6109
6151
  async function handlePrompt(cmd) {
6152
+ if (cmd.messageId) sendEvent({ type: "prompt_ack", messageId: cmd.messageId });
6110
6153
  if (!await awaitSessionReadyOrFail()) return;
6111
6154
  if (!secretsProvisioned) {
6112
6155
  log("[serve] prompt received before secrets provisioned \u2014 rejecting");
@@ -6247,7 +6290,11 @@ async function startAgentServer(opts) {
6247
6290
  },
6248
6291
  createActiveFlow: async (flowDef, seedOrExecution) => {
6249
6292
  const entry = await createActiveFlow(flowDef, seedOrExecution);
6250
- return { runId: entry.runId, connectorId: entry.connectorId };
6293
+ return {
6294
+ runId: entry.runId,
6295
+ connectorId: entry.connectorId,
6296
+ hydratedStateChanged: entry.hydratedStateChanged
6297
+ };
6251
6298
  },
6252
6299
  waitForFlowConnector: (timeoutMs, isSatisfied) => flowConnectorReadiness.wait(timeoutMs, isSatisfied),
6253
6300
  connectorWaitMs: flowMutateConnectorWaitMs,
@@ -6717,5 +6764,5 @@ function touchSession(state) {
6717
6764
  }
6718
6765
 
6719
6766
  export { CLAUDE_CODE_CREDENTIALS_KEY, COMPILE_MANIFEST_FILENAME, CapabilityRegistry, DEFAULT_CAPABILITY_CALL_TIMEOUT_MS, DEFAULT_COALESCE_MS, DEFAULT_FLOW_MUTATE_CONNECTOR_WAIT_MS, MOUNT_LIST_MAX_DEPTH, MOUNT_LIST_MAX_ENTRIES, MOUNT_READ_DEADLINE_FACTOR, MOUNT_TREE_OP_DEADLINE_FACTOR, MarkdownStreamer, PreInitRingSink, agentDefinitionExists, bootstrapCapabilityRegistry, bootstrapRunnerLogStore, buildAgentResources, buildClientCapabilityHandler, buildConnectorTokenMediator, buildContextSection, buildEnvironmentSection, buildResourcesAvailablePayload, buildStoreSnapshotReplay, builtinCapabilities, capabilityLogInstance, clearPreInitRingSink, clearSession, compileComposition, computeCapabilitySignature, connectorRefreshKind, createAgentSession, createFlowConnectorReadiness, createSessionStimulusBus, defineCapability, deleteSession, dispatchRunnerCapabilityInvocation, emitSystemPromptComposed, ensureGitConfigInclude, executeConnectorMutate, extractClaudeAiOauthExpiresAt, getPreInitRingSink, handleMountResourceRequest, handleResourceRequest, hasNonTerminalFlow, hostOpResumeStimulus, installPreInitRingSink, isTerminalFlowStatus, listSessions, loadAgentManifest, loadCompileManifest, loadCompileManifestFromDir, loadSession, loadSessionById, mcpAuthSecretKey, newSession, pickRepointedManager, planFlowMutate, reconcilePendingDecisions, registerActiveFlow, registerCompositionCapabilities, rejectCapabilityOnApprovalDeny, resetRunnerLogStore, resolveAgentComposition, resolveAgentMixins, resolveBinding, resolveCapabilityCallTimeoutMs, resolveCapabilityResult, resolveComposition, resolveFlowMutateConnectorWaitMs, resolveMixin, runAgentChat, saveSession, setCurrentSession, setUpFlowConnector, startAgentServer, stimulusFromMetas, touchSession, validateInputResponse, writeClaudeCodeCredentialsFile };
6720
- //# sourceMappingURL=chunk-TAJBFYCT.js.map
6721
- //# sourceMappingURL=chunk-TAJBFYCT.js.map
6767
+ //# sourceMappingURL=chunk-YWPEDILM.js.map
6768
+ //# sourceMappingURL=chunk-YWPEDILM.js.map