@skaile/workspaces 4.29.0 → 4.30.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 (177) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/app-sdk/index.js +1 -1
  3. package/dist/{asset-feeds-3P3XWCCZ.js → asset-feeds-K7N37CGF.js} +4 -4
  4. package/dist/{asset-feeds-3P3XWCCZ.js.map → asset-feeds-K7N37CGF.js.map} +1 -1
  5. package/dist/asset-manager/index.js +1 -1
  6. package/dist/bridge/drivers/claude-sdk.js +36 -7
  7. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  8. package/dist/bridge/drivers/codex.js +2 -2
  9. package/dist/bridge/drivers/continue.js +3 -3
  10. package/dist/bridge/drivers/echo.js +3 -3
  11. package/dist/bridge/drivers/gemini.js +5 -5
  12. package/dist/bridge/drivers/goose.js +3 -3
  13. package/dist/bridge/drivers/omp.js +4 -4
  14. package/dist/bridge/drivers/opencode.js +3 -3
  15. package/dist/bridge/drivers/qwen.js +5 -5
  16. package/dist/bridge/index.js +5 -5
  17. package/dist/bridge/src/drivers/claude-sdk.d.ts +11 -0
  18. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  19. package/dist/bridge/src/normalizer.d.ts.map +1 -1
  20. package/dist/bridge/src/types.d.ts +4 -1
  21. package/dist/bridge/src/types.d.ts.map +1 -1
  22. package/dist/{chunk-7P6OPPG4.js → chunk-324NAWHN.js} +4 -4
  23. package/dist/{chunk-7P6OPPG4.js.map → chunk-324NAWHN.js.map} +1 -1
  24. package/dist/{chunk-BGSM22L6.js → chunk-3FVL4TBA.js} +6 -6
  25. package/dist/{chunk-BGSM22L6.js.map → chunk-3FVL4TBA.js.map} +1 -1
  26. package/dist/{chunk-3XMGAODZ.js → chunk-3W4SDHJP.js} +149 -22
  27. package/dist/chunk-3W4SDHJP.js.map +1 -0
  28. package/dist/{chunk-I4C4AHZB.js → chunk-527MPCTU.js} +4 -4
  29. package/dist/{chunk-I4C4AHZB.js.map → chunk-527MPCTU.js.map} +1 -1
  30. package/dist/{chunk-LFZEN3XG.js → chunk-6X4DHKHP.js} +3 -3
  31. package/dist/{chunk-LFZEN3XG.js.map → chunk-6X4DHKHP.js.map} +1 -1
  32. package/dist/{chunk-5UQNCPIP.js → chunk-C5OSO7HJ.js} +3 -3
  33. package/dist/{chunk-5UQNCPIP.js.map → chunk-C5OSO7HJ.js.map} +1 -1
  34. package/dist/{chunk-Q2AOHZFF.js → chunk-CFKJQDPA.js} +6 -5
  35. package/dist/chunk-CFKJQDPA.js.map +1 -0
  36. package/dist/{chunk-TFH6Z4KZ.js → chunk-CYX7TIWL.js} +3 -3
  37. package/dist/{chunk-TFH6Z4KZ.js.map → chunk-CYX7TIWL.js.map} +1 -1
  38. package/dist/{chunk-PZL6BEWG.js → chunk-DIQDYNXZ.js} +3 -3
  39. package/dist/{chunk-PZL6BEWG.js.map → chunk-DIQDYNXZ.js.map} +1 -1
  40. package/dist/{chunk-ERDK4ATM.js → chunk-GHLJV2FY.js} +3 -3
  41. package/dist/{chunk-ERDK4ATM.js.map → chunk-GHLJV2FY.js.map} +1 -1
  42. package/dist/{chunk-FUKJ4IU6.js → chunk-GHX6XFLY.js} +40 -21
  43. package/dist/chunk-GHX6XFLY.js.map +1 -0
  44. package/dist/{chunk-LZRA54EP.js → chunk-HNWYNNIX.js} +2 -2
  45. package/dist/{chunk-LZRA54EP.js.map → chunk-HNWYNNIX.js.map} +1 -1
  46. package/dist/{chunk-DQ64NLMC.js → chunk-K3IBZ2UZ.js} +3 -3
  47. package/dist/{chunk-DQ64NLMC.js.map → chunk-K3IBZ2UZ.js.map} +1 -1
  48. package/dist/{chunk-DMXEFYND.js → chunk-K575XNKG.js} +3 -3
  49. package/dist/{chunk-DMXEFYND.js.map → chunk-K575XNKG.js.map} +1 -1
  50. package/dist/{chunk-Y42A2ZBB.js → chunk-KKBXGPJE.js} +4 -4
  51. package/dist/{chunk-Y42A2ZBB.js.map → chunk-KKBXGPJE.js.map} +1 -1
  52. package/dist/{chunk-2ZFE2R7S.js → chunk-KOVAB6W2.js} +2 -2
  53. package/dist/{chunk-2ZFE2R7S.js.map → chunk-KOVAB6W2.js.map} +1 -1
  54. package/dist/{chunk-XEBSA7YU.js → chunk-LIWDDZO2.js} +6 -6
  55. package/dist/{chunk-XEBSA7YU.js.map → chunk-LIWDDZO2.js.map} +1 -1
  56. package/dist/{chunk-X5CW2HDM.js → chunk-MLM5JZAQ.js} +3 -3
  57. package/dist/{chunk-X5CW2HDM.js.map → chunk-MLM5JZAQ.js.map} +1 -1
  58. package/dist/{chunk-G6NTA3BZ.js → chunk-MZQOSE2X.js} +8 -8
  59. package/dist/chunk-MZQOSE2X.js.map +1 -0
  60. package/dist/{chunk-DJZRPPFJ.js → chunk-NQOE57Q7.js} +4 -4
  61. package/dist/chunk-NQOE57Q7.js.map +1 -0
  62. package/dist/{chunk-HFVK7FKK.js → chunk-OHON7XSG.js} +3 -3
  63. package/dist/{chunk-HFVK7FKK.js.map → chunk-OHON7XSG.js.map} +1 -1
  64. package/dist/{chunk-KPRZHEEI.js → chunk-ORH2BZEM.js} +155 -85
  65. package/dist/chunk-ORH2BZEM.js.map +1 -0
  66. package/dist/{chunk-H5EGBMZ5.js → chunk-RHXRXTBO.js} +2 -2
  67. package/dist/chunk-RHXRXTBO.js.map +1 -0
  68. package/dist/{chunk-AMJSC6SU.js → chunk-RLIISQHO.js} +3 -3
  69. package/dist/{chunk-AMJSC6SU.js.map → chunk-RLIISQHO.js.map} +1 -1
  70. package/dist/{chunk-6ZELKHAI.js → chunk-TU2UTFVG.js} +3 -3
  71. package/dist/{chunk-6ZELKHAI.js.map → chunk-TU2UTFVG.js.map} +1 -1
  72. package/dist/{chunk-ULLMVMAN.js → chunk-UDFWBALP.js} +3 -3
  73. package/dist/{chunk-ULLMVMAN.js.map → chunk-UDFWBALP.js.map} +1 -1
  74. package/dist/{chunk-YNJRENVU.js → chunk-UQ3JFN4N.js} +2 -2
  75. package/dist/{chunk-YNJRENVU.js.map → chunk-UQ3JFN4N.js.map} +1 -1
  76. package/dist/{chunk-3TZECMBB.js → chunk-X22NBPTU.js} +6 -6
  77. package/dist/{chunk-3TZECMBB.js.map → chunk-X22NBPTU.js.map} +1 -1
  78. package/dist/{chunk-YO654LTQ.js → chunk-YVWUHPQW.js} +43 -66
  79. package/dist/chunk-YVWUHPQW.js.map +1 -0
  80. package/dist/{chunk-2MD6TJWZ.js → chunk-YYH5EVPM.js} +3 -3
  81. package/dist/{chunk-2MD6TJWZ.js.map → chunk-YYH5EVPM.js.map} +1 -1
  82. package/dist/cli/index.js +43 -43
  83. package/dist/connectors/index.js +13 -13
  84. package/dist/connectors-shared/index.js +2 -2
  85. package/dist/{ensure-sources-3NKAGEBJ.js → ensure-sources-OGAOMNTT.js} +4 -4
  86. package/dist/{ensure-sources-3NKAGEBJ.js.map → ensure-sources-OGAOMNTT.js.map} +1 -1
  87. package/dist/factory-assets/connectors/box.js +13 -13
  88. package/dist/factory-assets/connectors/deploy.js +13 -13
  89. package/dist/factory-assets/connectors/devserver.js +13 -13
  90. package/dist/factory-assets/connectors/flow/CONNECTOR.md +6 -2
  91. package/dist/factory-assets/connectors/flow/adapter.js +13 -13
  92. package/dist/factory-assets/connectors/flow/contract/index.d.ts +1 -1
  93. package/dist/factory-assets/connectors/flow/contract/index.d.ts.map +1 -1
  94. package/dist/factory-assets/connectors/flow/contract/output-fields.d.ts +28 -0
  95. package/dist/factory-assets/connectors/flow/contract/output-fields.d.ts.map +1 -0
  96. package/dist/factory-assets/connectors/flow/contract/schema.d.ts +5 -0
  97. package/dist/factory-assets/connectors/flow/contract/schema.d.ts.map +1 -1
  98. package/dist/factory-assets/connectors/flow/contract.js +4 -4
  99. package/dist/factory-assets/connectors/flow/engine/output-schema.d.ts +2 -7
  100. package/dist/factory-assets/connectors/flow/engine/output-schema.d.ts.map +1 -1
  101. package/dist/factory-assets/connectors/flow/engine.js +4 -4
  102. package/dist/factory-assets/connectors/flow/prompt-fragments.js +3 -3
  103. package/dist/factory-assets/connectors/flow/run-flow.d.ts +20 -0
  104. package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
  105. package/dist/factory-assets/connectors/flow/run-flow.js +14 -14
  106. package/dist/factory-assets/connectors/flow.js +13 -13
  107. package/dist/factory-assets/connectors/git/CONNECTOR.md +2 -0
  108. package/dist/factory-assets/connectors/git/driver.d.ts +3 -2
  109. package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -1
  110. package/dist/factory-assets/connectors/git.js +13 -13
  111. package/dist/factory-assets/connectors/gmail.js +13 -13
  112. package/dist/factory-assets/connectors/googledrive.js +13 -13
  113. package/dist/factory-assets/connectors/local.js +13 -13
  114. package/dist/factory-assets/connectors/mattermost.js +13 -13
  115. package/dist/factory-assets/connectors/memory.js +13 -13
  116. package/dist/factory-assets/connectors/minio.js +13 -13
  117. package/dist/factory-assets/connectors/postgres.js +13 -13
  118. package/dist/factory-assets/connectors/s3.js +13 -13
  119. package/dist/factory-assets/connectors/sharepoint.js +13 -13
  120. package/dist/factory-assets/connectors/sqlite.js +13 -13
  121. package/dist/factory-assets/connectors/static-server.js +13 -13
  122. package/dist/factory-assets/connectors/tunnel.js +13 -13
  123. package/dist/factory-assets/connectors/webdav.js +13 -13
  124. package/dist/factory-assets/connectors/xstate-store.js +13 -13
  125. package/dist/factory-assets/connectors/xstate.js +13 -13
  126. package/dist/{flows-4X6PVPPH.js → flows-6WUQ2J4X.js} +3 -3
  127. package/dist/{flows-4X6PVPPH.js.map → flows-6WUQ2J4X.js.map} +1 -1
  128. package/dist/{helpers-WHBQSVBQ.js → helpers-AS2CN7BJ.js} +4 -4
  129. package/dist/{helpers-WHBQSVBQ.js.map → helpers-AS2CN7BJ.js.map} +1 -1
  130. package/dist/{library-publish-4APUZRJV.js → library-publish-SXQAWWPG.js} +10 -10
  131. package/dist/{library-publish-4APUZRJV.js.map → library-publish-SXQAWWPG.js.map} +1 -1
  132. package/dist/{open-library-QTC5PH7Y.js → open-library-UVAFPWK7.js} +9 -9
  133. package/dist/{open-library-QTC5PH7Y.js.map → open-library-UVAFPWK7.js.map} +1 -1
  134. package/dist/{project-3K6VBQIV.js → project-MHUUWPCN.js} +5 -5
  135. package/dist/{project-3K6VBQIV.js.map → project-MHUUWPCN.js.map} +1 -1
  136. package/dist/runner/index.js +19 -19
  137. package/dist/runner/src/agent.d.ts.map +1 -1
  138. package/dist/runner/src/flow-turn-dispatch.d.ts +4 -3
  139. package/dist/runner/src/flow-turn-dispatch.d.ts.map +1 -1
  140. package/dist/runner/src/init-build-hold.d.ts +60 -0
  141. package/dist/runner/src/init-build-hold.d.ts.map +1 -0
  142. package/dist/runner/src/serve.d.ts +14 -0
  143. package/dist/runner/src/serve.d.ts.map +1 -1
  144. package/dist/sdk/asset-manager.js +1 -1
  145. package/dist/sdk/bridge.js +5 -5
  146. package/dist/sdk/flow.js +4 -4
  147. package/dist/sdk/index.js +19 -19
  148. package/dist/sdk/runner.js +19 -19
  149. package/dist/sdk/session.js +2 -2
  150. package/dist/sdk/types.js +1 -1
  151. package/dist/session/index.js +2 -2
  152. package/dist/{setup-K37IWBVQ.js → setup-NQKJXRK5.js} +10 -10
  153. package/dist/{setup-K37IWBVQ.js.map → setup-NQKJXRK5.js.map} +1 -1
  154. package/dist/{source-DMSYJIY6.js → source-T7DWNSDN.js} +10 -10
  155. package/dist/{source-DMSYJIY6.js.map → source-T7DWNSDN.js.map} +1 -1
  156. package/dist/{source-manifest-publish-VJSEWCG7.js → source-manifest-publish-WBAWFUHX.js} +11 -11
  157. package/dist/{source-manifest-publish-VJSEWCG7.js.map → source-manifest-publish-WBAWFUHX.js.map} +1 -1
  158. package/dist/tui/index.js +19 -19
  159. package/dist/types/index.js +1 -1
  160. package/dist/types/src/events.d.ts +23 -0
  161. package/dist/types/src/events.d.ts.map +1 -1
  162. package/dist/types/src/index.d.ts +1 -1
  163. package/dist/types/src/index.d.ts.map +1 -1
  164. package/dist/types/src/version.d.ts +9 -1
  165. package/dist/types/src/version.d.ts.map +1 -1
  166. package/dist/workspace-plugin/adapters/mcp.js +3 -3
  167. package/dist/workspace-plugin/adapters/omp.js +3 -3
  168. package/dist/workspace-plugin/index.js +1 -1
  169. package/package.json +1 -1
  170. package/dist/chunk-3XMGAODZ.js.map +0 -1
  171. package/dist/chunk-DJZRPPFJ.js.map +0 -1
  172. package/dist/chunk-FUKJ4IU6.js.map +0 -1
  173. package/dist/chunk-G6NTA3BZ.js.map +0 -1
  174. package/dist/chunk-H5EGBMZ5.js.map +0 -1
  175. package/dist/chunk-KPRZHEEI.js.map +0 -1
  176. package/dist/chunk-Q2AOHZFF.js.map +0 -1
  177. package/dist/chunk-YO654LTQ.js.map +0 -1
@@ -1,25 +1,25 @@
1
- import { WorkspacePlugin } from './chunk-LZRA54EP.js';
2
- import { buildWorkspaceToolDefs } from './chunk-I4C4AHZB.js';
1
+ import { WorkspacePlugin } from './chunk-HNWYNNIX.js';
2
+ import { buildWorkspaceToolDefs } from './chunk-527MPCTU.js';
3
3
  import { findAiAssetsRoot } from './chunk-7IH3RKKK.js';
4
4
  import { WebSocketServerTransport } from './chunk-5LKOAX7I.js';
5
5
  import { assembleSystemPrompt, buildCapabilitiesPromptSection } from './chunk-W3UDISS2.js';
6
6
  import { prepareNativePolicy, codexInstanceEnvironment, parseCodexCredential, parseCodexRefreshInput, parseCodexRefreshResult } from './chunk-PE3A6FFW.js';
7
- import { resolveFlowPath } from './chunk-G6NTA3BZ.js';
7
+ import { resolveFlowPath } from './chunk-MZQOSE2X.js';
8
8
  import { findAiAssetsRoot as findAiAssetsRoot$1, deployCatalogEntry, undeployCatalogEntry } from './chunk-Q6NDQ6BH.js';
9
- import { registerBuiltinConnectors, buildConnectorPromptSection, findMissingPackages, installNpmPackages, ConnectorManager, buildSdkConnectorTools, buildLazySdkFlowTools, describeFlowOperations, buildConnectorToolDefs, buildFlowToolDefs, SessionNodeExecutor, SessionSubpromptRunner, ClassifierSubpromptRunner, SessionInlineSubFlowRunner, driveOrchestratorTurn, buildSdkFlowTools } from './chunk-FUKJ4IU6.js';
9
+ import { registerBuiltinConnectors, buildConnectorPromptSection, findMissingPackages, installNpmPackages, ConnectorManager, buildSdkConnectorTools, buildLazySdkFlowTools, describeFlowOperations, buildConnectorToolDefs, buildFlowToolDefs, SessionNodeExecutor, SessionSubpromptRunner, ClassifierSubpromptRunner, SessionInlineSubFlowRunner, driveOrchestratorTurn, buildSdkFlowTools } from './chunk-GHX6XFLY.js';
10
10
  import { loadYamlConnectorDeclarations, withMaterializedConnectorDeclarations, SecretProviderChain, ConnectorStartupError, PreMintedSecretProvider, InMemorySecretProvider, resolvedConfigToDeclarations, isKnownSecretRef, deriveSingleMaterializedConnectorDeclaration } from './chunk-2JANXYTJ.js';
11
- import { EventNormalizer } from './chunk-Q2AOHZFF.js';
11
+ import { EventNormalizer } from './chunk-CFKJQDPA.js';
12
12
  import { probeResumeTranscript, transcriptStoreForRuntime } from './chunk-6S5KL76M.js';
13
13
  import { scopeReconfigureModel } from './chunk-TJRNJVGU.js';
14
14
  import { CodexNativeStateUnavailable } from './chunk-LOO5CB5M.js';
15
- import { dispatchCapability } from './chunk-ERDK4ATM.js';
15
+ import { dispatchCapability } from './chunk-GHLJV2FY.js';
16
16
  import { classifyClaudeSdkError } from './chunk-BGY4KTU6.js';
17
17
  import { agentExecRequested } from './chunk-YROR332M.js';
18
- import { toAgentEffort, createDriver, catalogLayer, providerCredentialEnvName, toMergedRegistry, registryCredentialEnv, AI_PROVIDER_PRESETS, AgentDriver } from './chunk-H5EGBMZ5.js';
19
- import { loadFlow } from './chunk-YO654LTQ.js';
20
- import { parseFlowDefinition } from './chunk-PZL6BEWG.js';
21
- import { renderStimulusPrompt } from './chunk-DQ64NLMC.js';
22
- import { withActivityLabelJsonSchema, TOOL_ACTIVITY_PROMPT_SECTION, SESSION_ROOT_CONNECTOR_ID, PROTOCOL_VERSION } from './chunk-DJZRPPFJ.js';
18
+ import { toAgentEffort, createDriver, catalogLayer, providerCredentialEnvName, toMergedRegistry, registryCredentialEnv, AI_PROVIDER_PRESETS, AgentDriver } from './chunk-RHXRXTBO.js';
19
+ import { loadFlow } from './chunk-YVWUHPQW.js';
20
+ import { parseFlowDefinition } from './chunk-DIQDYNXZ.js';
21
+ import { renderStimulusPrompt } from './chunk-K3IBZ2UZ.js';
22
+ import { withActivityLabelJsonSchema, TOOL_ACTIVITY_PROMPT_SECTION, SESSION_ROOT_CONNECTOR_ID, PROTOCOL_VERSION } from './chunk-NQOE57Q7.js';
23
23
  import { resolveSettings, loadProviderRegistry } from './chunk-UWU572Q6.js';
24
24
  import { resolveRuntimeAssets } from './chunk-5RHPNNWP.js';
25
25
  import { resolveDriverPaths } from './chunk-K5GBV4SA.js';
@@ -3031,7 +3031,7 @@ ${message}`;
3031
3031
  process.stdout.write("\n");
3032
3032
  driver.kill();
3033
3033
  resolve4();
3034
- } else if (event.type === "error") {
3034
+ } else if (event.type === "error" && event.retrying !== true) {
3035
3035
  driver.off("agent-event", onEvent);
3036
3036
  const err = Object.assign(new Error(String(event.error)), {
3037
3037
  detail: event.detail
@@ -4800,6 +4800,86 @@ var DriverSwapGate = class {
4800
4800
  }
4801
4801
  };
4802
4802
 
4803
+ // runner/src/init-build-hold.ts
4804
+ var DEFAULT_CONNECTOR_MUTATE_INIT_HOLD_MS = 1e4;
4805
+ function resolveConnectorMutateInitHoldMs(env = process.env) {
4806
+ const parsed = Number.parseInt(env.SKAILE_CONNECTOR_MUTATE_INIT_HOLD_MS ?? "", 10);
4807
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_CONNECTOR_MUTATE_INIT_HOLD_MS;
4808
+ }
4809
+ function createInitBuildHold(now = Date.now) {
4810
+ let current = null;
4811
+ let tail = Promise.resolve();
4812
+ let held = 0;
4813
+ const building = () => current !== null && !current.done;
4814
+ async function awaitNewestBuild() {
4815
+ for (; ; ) {
4816
+ const build = current;
4817
+ if (!build) return null;
4818
+ if (!build.done) await build.settled;
4819
+ if (current === build) return build.error;
4820
+ }
4821
+ }
4822
+ return {
4823
+ beginBuild() {
4824
+ let resolve4;
4825
+ const build = {
4826
+ done: false,
4827
+ error: null,
4828
+ settled: new Promise((r) => {
4829
+ resolve4 = r;
4830
+ })
4831
+ };
4832
+ current = build;
4833
+ const settle = (error) => {
4834
+ if (build.done) return;
4835
+ build.done = true;
4836
+ build.error = error;
4837
+ resolve4();
4838
+ };
4839
+ return { succeed: () => settle(null), fail: (error) => settle(error) };
4840
+ },
4841
+ run(task, deadlineMs) {
4842
+ if (held === 0 && !building()) {
4843
+ if (current?.error) return task({ kind: "failed", error: current.error });
4844
+ return task({ kind: "ready", remainingMs: void 0 });
4845
+ }
4846
+ held++;
4847
+ const arrivedAt = now();
4848
+ const previous = tail;
4849
+ const turn = previous.then(awaitNewestBuild);
4850
+ let timer;
4851
+ const deadline = deadlineMs === void 0 ? null : new Promise((resolve4) => {
4852
+ timer = setTimeout(() => resolve4("timeout"), deadlineMs);
4853
+ timer.unref?.();
4854
+ });
4855
+ let markStarted;
4856
+ const started = new Promise((resolve4) => {
4857
+ markStarted = resolve4;
4858
+ });
4859
+ const result = (async () => {
4860
+ const first = deadline ? await Promise.race([turn, deadline]) : await turn;
4861
+ clearTimeout(timer);
4862
+ if (first === "timeout") {
4863
+ void turn.then(markStarted);
4864
+ return task({ kind: "timeout", waitedMs: now() - arrivedAt });
4865
+ }
4866
+ markStarted();
4867
+ if (first) return task({ kind: "failed", error: first });
4868
+ return task({
4869
+ kind: "ready",
4870
+ remainingMs: deadlineMs === void 0 ? void 0 : Math.max(0, deadlineMs - (now() - arrivedAt))
4871
+ });
4872
+ })();
4873
+ tail = started;
4874
+ void Promise.allSettled([turn, result]).then(() => {
4875
+ held--;
4876
+ });
4877
+ return result;
4878
+ },
4879
+ held: () => held
4880
+ };
4881
+ }
4882
+
4803
4883
  // runner/src/pending-turns.ts
4804
4884
  var PendingTurns = class {
4805
4885
  constructor(emitIdle) {
@@ -5004,7 +5084,7 @@ function awaitAgentEnd(driver, prompt, timeoutMs) {
5004
5084
  const onEvent = (raw) => {
5005
5085
  const event = raw;
5006
5086
  if (event.type === "agent_end") done();
5007
- else if (event.type === "error")
5087
+ else if (event.type === "error" && event.retrying !== true)
5008
5088
  done(new Error(event.error ?? event.message ?? "Agent error"));
5009
5089
  };
5010
5090
  const done = (err) => {
@@ -7954,6 +8034,7 @@ function hostOpResumeStimulus(op, payload) {
7954
8034
  return null;
7955
8035
  }
7956
8036
  }
8037
+ var CONNECTOR_MUTATE_NOT_READY = "connector_mutate before resources ready";
7957
8038
  function toActiveFlowTarget(entry) {
7958
8039
  return {
7959
8040
  runId: entry.runId,
@@ -7980,6 +8061,46 @@ async function executeConnectorMutate(cmd, deps) {
7980
8061
  respond({ ok: false, code: "session_unavailable", error: message });
7981
8062
  return;
7982
8063
  }
8064
+ if (!deps.initBuildHold) {
8065
+ await applyConnectorMutate(cmd, deps, respond, deps.connectorWaitMs);
8066
+ return;
8067
+ }
8068
+ await deps.initBuildHold.run(
8069
+ async (outcome) => {
8070
+ switch (outcome.kind) {
8071
+ case "timeout":
8072
+ deps.log.warn("connector_mutate held past its deadline during session_init", {
8073
+ id: cmd.id,
8074
+ op: cmd.op,
8075
+ waitedMs: outcome.waitedMs
8076
+ });
8077
+ respond({
8078
+ ok: false,
8079
+ code: "op_failed",
8080
+ error: `${CONNECTOR_MUTATE_NOT_READY} (held ${outcome.waitedMs}ms while session_init built the session)`
8081
+ });
8082
+ return;
8083
+ case "failed":
8084
+ respond({
8085
+ ok: false,
8086
+ code: "session_unavailable",
8087
+ error: `Session not available: ${outcome.error.message}`
8088
+ });
8089
+ return;
8090
+ case "ready":
8091
+ await applyConnectorMutate(
8092
+ cmd,
8093
+ deps,
8094
+ respond,
8095
+ outcome.remainingMs === void 0 ? deps.connectorWaitMs : Math.min(deps.connectorWaitMs, outcome.remainingMs)
8096
+ );
8097
+ return;
8098
+ }
8099
+ },
8100
+ cmd.requestId ? deps.initBuildHoldMs : void 0
8101
+ );
8102
+ }
8103
+ async function applyConnectorMutate(cmd, deps, respond, connectorWaitMs) {
7983
8104
  const payload = cmd.payload ?? {};
7984
8105
  const planContext = () => {
7985
8106
  const targetExists = deps.hasConnector(cmd.id);
@@ -7998,19 +8119,19 @@ async function executeConnectorMutate(cmd, deps) {
7998
8119
  const flowTargeted = cmd.id === "flow" || cmd.id.startsWith("flow:");
7999
8120
  if (plan.kind === "dispatch" && flowTargeted && !deps.hasConnector(plan.dispatchId)) {
8000
8121
  const ready = await deps.waitForFlowConnector(
8001
- deps.connectorWaitMs,
8122
+ connectorWaitMs,
8002
8123
  cmd.id === "flow" ? void 0 : () => deps.hasConnector(cmd.id)
8003
8124
  );
8004
8125
  if (!ready) {
8005
8126
  deps.log.warn("connector_mutate timed out waiting for the flow connector", {
8006
8127
  id: cmd.id,
8007
8128
  op: cmd.op,
8008
- waitedMs: deps.connectorWaitMs
8129
+ waitedMs: connectorWaitMs
8009
8130
  });
8010
8131
  respond({
8011
8132
  ok: false,
8012
8133
  code: "connector_unavailable",
8013
- error: `Connector not found: "${cmd.id}" (waited ${deps.connectorWaitMs}ms)`
8134
+ error: `Connector not found: "${cmd.id}" (waited ${connectorWaitMs}ms)`
8014
8135
  });
8015
8136
  return;
8016
8137
  }
@@ -8962,6 +9083,8 @@ async function startAgentServer(opts) {
8962
9083
  }
8963
9084
  const flowConnectorReadiness = createFlowConnectorReadiness(() => getOnlyActiveFlow() !== null);
8964
9085
  const flowMutateConnectorWaitMs = resolveFlowMutateConnectorWaitMs();
9086
+ const initBuildHold = createInitBuildHold();
9087
+ const connectorMutateInitHoldMs = resolveConnectorMutateInitHoldMs();
8965
9088
  async function ensureDriverStarted() {
8966
9089
  for (let attempt = 0; attempt < DRIVER_START_ATTEMPTS; attempt += 1) {
8967
9090
  if (driverStarted) return;
@@ -10035,13 +10158,15 @@ async function startAgentServer(opts) {
10035
10158
  }
10036
10159
  resolveSessionReady();
10037
10160
  };
10038
- void buildSession().catch((err) => {
10161
+ const initBuild = initBuildHold.beginBuild();
10162
+ void buildSession().then(initBuild.succeed, (err) => {
10039
10163
  const errMsg = err instanceof Error ? err.message : String(err);
10040
10164
  if (thisInit === initGeneration) initAcknowledged = false;
10041
10165
  logPhase("session_ready", initReceivedAt, { ready: false });
10042
10166
  log(`[serve] session_init failed to build session: ${errMsg}`);
10043
10167
  sendEvent({ type: "error", message: errMsg, fatal: true });
10044
10168
  rejectSessionReady(err instanceof Error ? err : new Error(errMsg));
10169
+ initBuild.fail(err instanceof Error ? err : new Error(errMsg));
10045
10170
  if (managedHost) {
10046
10171
  runtimeRejected = true;
10047
10172
  void cleanup().finally(async () => {
@@ -10194,12 +10319,12 @@ async function startAgentServer(opts) {
10194
10319
  sessionReady,
10195
10320
  sendEvent,
10196
10321
  assertResourcesReady: () => {
10197
- if (!resourceManager) throw new Error("connector_mutate before resources ready");
10322
+ if (!resourceManager) throw new Error(CONNECTOR_MUTATE_NOT_READY);
10198
10323
  },
10199
10324
  hasConnector: (id) => resourceManager?.has?.(id) ?? false,
10200
10325
  isFlowConnector: (id) => resourceManager?.has?.(id) === true && resourceManager.get(id).connector?.name === "flow",
10201
10326
  executeOp: (id, op, args) => {
10202
- if (!resourceManager) throw new Error("connector_mutate before resources ready");
10327
+ if (!resourceManager) throw new Error(CONNECTOR_MUTATE_NOT_READY);
10203
10328
  return resourceManager.executeOp(id, op, args);
10204
10329
  },
10205
10330
  flowState: () => {
@@ -10213,6 +10338,8 @@ async function startAgentServer(opts) {
10213
10338
  createActiveFlow: async (flowDef, seedOrExecution) => toActiveFlowTarget(await createActiveFlow(flowDef, seedOrExecution)),
10214
10339
  waitForFlowConnector: (timeoutMs, isSatisfied) => flowConnectorReadiness.wait(timeoutMs, isSatisfied),
10215
10340
  connectorWaitMs: flowMutateConnectorWaitMs,
10341
+ initBuildHold,
10342
+ initBuildHoldMs: connectorMutateInitHoldMs,
10216
10343
  signalStimulus: kickFlowTurn,
10217
10344
  log: serverLog
10218
10345
  });
@@ -10734,6 +10861,6 @@ function touchSession(state) {
10734
10861
  return { ...state, updatedAt: (/* @__PURE__ */ new Date()).toISOString() };
10735
10862
  }
10736
10863
 
10737
- 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_STAT_BUDGET_MS, MOUNT_STAT_MAX_ENTRIES, MOUNT_TREE_OP_DEADLINE_FACTOR, MarkdownStreamer, PreInitRingSink, ResourceOperationError, SESSION_ROOT_WRITABLE_DIRS, SESSION_ROOT_WRITABLE_FILES, WS_AUTH_TOKEN_ENV, WS_AUTH_TOKEN_FILE_ENV, agentDefinitionExists, bootstrapCapabilityRegistry, bootstrapRunnerLogStore, buildAgentResources, buildClientCapabilityHandler, buildConnectorTokenMediator, buildContextSection, buildEnvironmentSection, buildResourcesAvailablePayload, buildStoreSnapshotReplay, builtinCapabilities, capabilityLogInstance, clearPreInitRingSink, clearSession, compileComposition, computeCapabilitySignature, computeDirectoryTotals, connectorRefreshKind, createAgentSession, createFlowConnectorReadiness, createManagedCodexSubpromptDriver, createSessionStimulusBus, defineCapability, deleteSession, dispatchResourceRequest, dispatchRunnerCapabilityInvocation, emitSystemPromptComposed, ensureClaudeSettingsDisablesConnectors, ensureGitConfigInclude, executeConnectorMutate, extractClaudeAiOauthExpiresAt, flowRunDrivesTurns, flowStartNeedsDriverRestart, getPreInitRingSink, handleMountResourceRequest, handleResourceRequest, handleSessionRootResourceRequest, hasNonTerminalFlow, hostOpResumeStimulus, installPreInitRingSink, isSessionRootPathAllowed, isTerminalFlowStatus, listSessions, loadAgentManifest, loadCompileManifest, loadCompileManifestFromDir, loadManagedCodexHostConfig, loadSession, loadSessionById, mcpAuthSecretKey, newSession, nulTailPaddingLength, pickChatFlowTarget, pickFlowToolTarget, pickRepointedManager, planFlowMutate, prepareCodexTools, reconcilePendingDecisions, recreateKeepingLiveFlows, registerActiveFlow, registerCompositionCapabilities, rejectCapabilityOnApprovalDeny, rejectPendingCapabilityCallsOnDisconnect, resetRunnerLogStore, resolveAgentComposition, resolveAgentMixins, resolveBinding, resolveCapabilityCallTimeoutMs, resolveCapabilityResult, resolveComposition, resolveFlowMutateConnectorWaitMs, resolveMixin, restoredRunHasWorkToResume, runAgentChat, saveSession, setCurrentSession, setUpFlowConnector, startAgentServer, stimulusFromMetas, supportsLiveToolUpdates, takeRunnerWsAuthToken, toActiveFlowTarget, touchSession, validateInputResponse, writeClaudeCodeCredentialsFile };
10738
- //# sourceMappingURL=chunk-3XMGAODZ.js.map
10739
- //# sourceMappingURL=chunk-3XMGAODZ.js.map
10864
+ export { CLAUDE_CODE_CREDENTIALS_KEY, COMPILE_MANIFEST_FILENAME, CONNECTOR_MUTATE_NOT_READY, 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_STAT_BUDGET_MS, MOUNT_STAT_MAX_ENTRIES, MOUNT_TREE_OP_DEADLINE_FACTOR, MarkdownStreamer, PreInitRingSink, ResourceOperationError, SESSION_ROOT_WRITABLE_DIRS, SESSION_ROOT_WRITABLE_FILES, WS_AUTH_TOKEN_ENV, WS_AUTH_TOKEN_FILE_ENV, agentDefinitionExists, bootstrapCapabilityRegistry, bootstrapRunnerLogStore, buildAgentResources, buildClientCapabilityHandler, buildConnectorTokenMediator, buildContextSection, buildEnvironmentSection, buildResourcesAvailablePayload, buildStoreSnapshotReplay, builtinCapabilities, capabilityLogInstance, clearPreInitRingSink, clearSession, compileComposition, computeCapabilitySignature, computeDirectoryTotals, connectorRefreshKind, createAgentSession, createFlowConnectorReadiness, createManagedCodexSubpromptDriver, createSessionStimulusBus, defineCapability, deleteSession, dispatchResourceRequest, dispatchRunnerCapabilityInvocation, emitSystemPromptComposed, ensureClaudeSettingsDisablesConnectors, ensureGitConfigInclude, executeConnectorMutate, extractClaudeAiOauthExpiresAt, flowRunDrivesTurns, flowStartNeedsDriverRestart, getPreInitRingSink, handleMountResourceRequest, handleResourceRequest, handleSessionRootResourceRequest, hasNonTerminalFlow, hostOpResumeStimulus, installPreInitRingSink, isSessionRootPathAllowed, isTerminalFlowStatus, listSessions, loadAgentManifest, loadCompileManifest, loadCompileManifestFromDir, loadManagedCodexHostConfig, loadSession, loadSessionById, mcpAuthSecretKey, newSession, nulTailPaddingLength, pickChatFlowTarget, pickFlowToolTarget, pickRepointedManager, planFlowMutate, prepareCodexTools, reconcilePendingDecisions, recreateKeepingLiveFlows, registerActiveFlow, registerCompositionCapabilities, rejectCapabilityOnApprovalDeny, rejectPendingCapabilityCallsOnDisconnect, resetRunnerLogStore, resolveAgentComposition, resolveAgentMixins, resolveBinding, resolveCapabilityCallTimeoutMs, resolveCapabilityResult, resolveComposition, resolveFlowMutateConnectorWaitMs, resolveMixin, restoredRunHasWorkToResume, runAgentChat, saveSession, setCurrentSession, setUpFlowConnector, startAgentServer, stimulusFromMetas, supportsLiveToolUpdates, takeRunnerWsAuthToken, toActiveFlowTarget, touchSession, validateInputResponse, writeClaudeCodeCredentialsFile };
10865
+ //# sourceMappingURL=chunk-3W4SDHJP.js.map
10866
+ //# sourceMappingURL=chunk-3W4SDHJP.js.map