@skaile/workspaces 4.33.0 → 4.35.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 (231) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +3 -3
  3. package/dist/{asset-feeds-CZGV7GCG.js → asset-feeds-NL3526ZV.js} +11 -11
  4. package/dist/{asset-feeds-CZGV7GCG.js.map → asset-feeds-NL3526ZV.js.map} +1 -1
  5. package/dist/asset-manager/catalog-deployer.js +5 -5
  6. package/dist/asset-manager/index.js +11 -11
  7. package/dist/asset-manager/installer.js +8 -8
  8. package/dist/asset-manager/renderers.js +2 -2
  9. package/dist/asset-manager/src/index.d.ts +30 -24
  10. package/dist/asset-manager/src/index.d.ts.map +1 -1
  11. package/dist/asset-manager/src/renderers.d.ts +2 -2
  12. package/dist/bridge/drivers/claude-sdk.js +9 -9
  13. package/dist/bridge/drivers/codex.js +8 -8
  14. package/dist/bridge/drivers/continue.js +10 -10
  15. package/dist/bridge/drivers/continue.js.map +1 -1
  16. package/dist/bridge/drivers/echo.js +2 -2
  17. package/dist/bridge/drivers/gemini.js +6 -6
  18. package/dist/bridge/drivers/goose.js +10 -10
  19. package/dist/bridge/drivers/goose.js.map +1 -1
  20. package/dist/bridge/drivers/omp.js +3 -3
  21. package/dist/bridge/drivers/omp.js.map +1 -1
  22. package/dist/bridge/drivers/opencode.js +11 -11
  23. package/dist/bridge/drivers/opencode.js.map +1 -1
  24. package/dist/bridge/drivers/qwen.js +6 -6
  25. package/dist/bridge/index.js +10 -10
  26. package/dist/bridge/src/capability-dispatch.d.ts +1 -1
  27. package/dist/bridge/src/drivers/_subprocess-cli.d.ts +3 -3
  28. package/dist/bridge/src/drivers/continue.d.ts +1 -1
  29. package/dist/bridge/src/drivers/gemini.d.ts +3 -3
  30. package/dist/bridge/src/drivers/goose.d.ts +1 -1
  31. package/dist/bridge/src/drivers/opencode.d.ts +1 -1
  32. package/dist/bridge/src/provider-materialize/continue-config-yaml.d.ts +2 -2
  33. package/dist/bridge/src/provider-materialize/credential-env.d.ts +4 -4
  34. package/dist/bridge/src/provider-materialize/env-drivers.d.ts +18 -18
  35. package/dist/bridge/src/provider-materialize/goose-custom-providers.d.ts +1 -1
  36. package/dist/bridge/src/provider-materialize/opencode-config.d.ts +1 -1
  37. package/dist/bridge/src/provider-materialize/session-config-home.d.ts +5 -5
  38. package/dist/bridge/src/registry.d.ts +10 -10
  39. package/dist/bridge/src/types.d.ts +9 -9
  40. package/dist/{chunk-AAPFZCQX.js → chunk-24X2GGSC.js} +6 -6
  41. package/dist/{chunk-AAPFZCQX.js.map → chunk-24X2GGSC.js.map} +1 -1
  42. package/dist/{chunk-WPISSDEI.js → chunk-3ELIPWCH.js} +6 -6
  43. package/dist/{chunk-WPISSDEI.js.map → chunk-3ELIPWCH.js.map} +1 -1
  44. package/dist/{chunk-HL6SZ7Z3.js → chunk-5YXKEM7Q.js} +7 -7
  45. package/dist/{chunk-HL6SZ7Z3.js.map → chunk-5YXKEM7Q.js.map} +1 -1
  46. package/dist/{chunk-HXC5VF3L.js → chunk-66A35U4V.js} +36 -35
  47. package/dist/chunk-66A35U4V.js.map +1 -0
  48. package/dist/{chunk-ENUCD5MW.js → chunk-75LXFKQR.js} +4 -4
  49. package/dist/{chunk-ENUCD5MW.js.map → chunk-75LXFKQR.js.map} +1 -1
  50. package/dist/{chunk-GMXG2JGN.js → chunk-7ERHZQ7O.js} +3 -3
  51. package/dist/{chunk-GMXG2JGN.js.map → chunk-7ERHZQ7O.js.map} +1 -1
  52. package/dist/{chunk-JULFGNQN.js → chunk-7HJ6SFFF.js} +3 -3
  53. package/dist/{chunk-JULFGNQN.js.map → chunk-7HJ6SFFF.js.map} +1 -1
  54. package/dist/{chunk-DKCFWSVW.js → chunk-7LBPHRRP.js} +3 -3
  55. package/dist/chunk-7LBPHRRP.js.map +1 -0
  56. package/dist/{chunk-A7WRTOFI.js → chunk-AKO6XHGV.js} +5 -5
  57. package/dist/{chunk-A7WRTOFI.js.map → chunk-AKO6XHGV.js.map} +1 -1
  58. package/dist/{chunk-3C6Q6TCZ.js → chunk-AO7TCPOS.js} +62 -18
  59. package/dist/chunk-AO7TCPOS.js.map +1 -0
  60. package/dist/{chunk-54A5QAIV.js → chunk-C3256F2F.js} +2 -2
  61. package/dist/{chunk-54A5QAIV.js.map → chunk-C3256F2F.js.map} +1 -1
  62. package/dist/{chunk-2JANXYTJ.js → chunk-DHLE66FV.js} +3 -3
  63. package/dist/{chunk-2JANXYTJ.js.map → chunk-DHLE66FV.js.map} +1 -1
  64. package/dist/{chunk-BR2IXOWX.js → chunk-DOF77WEV.js} +6 -6
  65. package/dist/{chunk-BR2IXOWX.js.map → chunk-DOF77WEV.js.map} +1 -1
  66. package/dist/{chunk-MENCWIHW.js → chunk-EB4ZTESQ.js} +4 -4
  67. package/dist/chunk-EB4ZTESQ.js.map +1 -0
  68. package/dist/{chunk-XUVQSDNV.js → chunk-GKTFGCQZ.js} +3 -3
  69. package/dist/chunk-GKTFGCQZ.js.map +1 -0
  70. package/dist/{chunk-GTVQUHBN.js → chunk-GORUF3YZ.js} +10 -10
  71. package/dist/{chunk-GTVQUHBN.js.map → chunk-GORUF3YZ.js.map} +1 -1
  72. package/dist/{chunk-ACDHNOT7.js → chunk-IFUQ6XBQ.js} +87 -10
  73. package/dist/chunk-IFUQ6XBQ.js.map +1 -0
  74. package/dist/{chunk-6J4WBP3C.js → chunk-IGNY4C6K.js} +21 -21
  75. package/dist/{chunk-6J4WBP3C.js.map → chunk-IGNY4C6K.js.map} +1 -1
  76. package/dist/{chunk-I6NZG7WX.js → chunk-J4ANCOQ4.js} +6 -6
  77. package/dist/chunk-J4ANCOQ4.js.map +1 -0
  78. package/dist/{chunk-5RHPNNWP.js → chunk-JRIU5GA7.js} +3 -3
  79. package/dist/{chunk-5RHPNNWP.js.map → chunk-JRIU5GA7.js.map} +1 -1
  80. package/dist/{chunk-F3HNW354.js → chunk-KIFJWSNC.js} +3 -3
  81. package/dist/{chunk-F3HNW354.js.map → chunk-KIFJWSNC.js.map} +1 -1
  82. package/dist/{chunk-DF7C3KZK.js → chunk-LRCSWOZO.js} +14 -14
  83. package/dist/chunk-LRCSWOZO.js.map +1 -0
  84. package/dist/{chunk-TAZMDZFP.js → chunk-MTWZ7KHZ.js} +3 -3
  85. package/dist/{chunk-TAZMDZFP.js.map → chunk-MTWZ7KHZ.js.map} +1 -1
  86. package/dist/{chunk-QDRQKQOU.js → chunk-N2UGG6WV.js} +3 -3
  87. package/dist/{chunk-QDRQKQOU.js.map → chunk-N2UGG6WV.js.map} +1 -1
  88. package/dist/{chunk-4T25XCWX.js → chunk-NVQLE4MK.js} +3 -3
  89. package/dist/{chunk-4T25XCWX.js.map → chunk-NVQLE4MK.js.map} +1 -1
  90. package/dist/{chunk-C4JDLXPI.js → chunk-QJOOD3OV.js} +3 -3
  91. package/dist/{chunk-C4JDLXPI.js.map → chunk-QJOOD3OV.js.map} +1 -1
  92. package/dist/{chunk-NPS765HV.js → chunk-RHESVS7V.js} +9 -9
  93. package/dist/{chunk-NPS765HV.js.map → chunk-RHESVS7V.js.map} +1 -1
  94. package/dist/{chunk-6GSZLKA5.js → chunk-T762W5CI.js} +3 -3
  95. package/dist/chunk-T762W5CI.js.map +1 -0
  96. package/dist/{chunk-3ZE7X5Y6.js → chunk-TB3LJ6NA.js} +3 -3
  97. package/dist/{chunk-3ZE7X5Y6.js.map → chunk-TB3LJ6NA.js.map} +1 -1
  98. package/dist/{chunk-N7B3LZ7V.js → chunk-TGE33MKN.js} +2 -2
  99. package/dist/{chunk-N7B3LZ7V.js.map → chunk-TGE33MKN.js.map} +1 -1
  100. package/dist/{chunk-DRAI3JH5.js → chunk-TGJIX77V.js} +11 -11
  101. package/dist/chunk-TGJIX77V.js.map +1 -0
  102. package/dist/{chunk-UWJAJP6T.js → chunk-TTITGVXV.js} +2 -2
  103. package/dist/{chunk-UWJAJP6T.js.map → chunk-TTITGVXV.js.map} +1 -1
  104. package/dist/{chunk-N3AH66VX.js → chunk-TUTVTGMG.js} +4 -4
  105. package/dist/{chunk-N3AH66VX.js.map → chunk-TUTVTGMG.js.map} +1 -1
  106. package/dist/{chunk-HGPSZXZP.js → chunk-VOXFI3XS.js} +3 -3
  107. package/dist/{chunk-HGPSZXZP.js.map → chunk-VOXFI3XS.js.map} +1 -1
  108. package/dist/{chunk-SK36WO2Z.js → chunk-XTOTP7MJ.js} +2 -2
  109. package/dist/{chunk-SK36WO2Z.js.map → chunk-XTOTP7MJ.js.map} +1 -1
  110. package/dist/cli/index.js +119 -119
  111. package/dist/cli/index.js.map +1 -1
  112. package/dist/cli/src/commands/catalog.d.ts +1 -1
  113. package/dist/cli/src/commands/integration.d.ts +2 -2
  114. package/dist/cli/src/commands/plugin/claude-code.d.ts +2 -2
  115. package/dist/cli/src/commands/plugin/codex.d.ts +2 -2
  116. package/dist/cli/src/commands/plugin/omp.d.ts +2 -2
  117. package/dist/cli/src/commands/plugin/types.d.ts +13 -13
  118. package/dist/cli/src/commands/plugin/types.d.ts.map +1 -1
  119. package/dist/cli/src/commands/run.d.ts +1 -1
  120. package/dist/connectors/config.js +3 -3
  121. package/dist/connectors/index.js +13 -13
  122. package/dist/connectors/src/connect-failure-carry-over.d.ts +38 -0
  123. package/dist/connectors/src/connect-failure-carry-over.d.ts.map +1 -0
  124. package/dist/connectors/src/connector-manager.d.ts +15 -0
  125. package/dist/connectors/src/connector-manager.d.ts.map +1 -1
  126. package/dist/connectors/src/index.d.ts +1 -0
  127. package/dist/connectors/src/index.d.ts.map +1 -1
  128. package/dist/core/driver-targets.js +1 -1
  129. package/dist/core/index.js +5 -5
  130. package/dist/core/runtime-assets.js +3 -3
  131. package/dist/core/src/driver-targets.d.ts +8 -8
  132. package/dist/core/src/index.d.ts +8 -2
  133. package/dist/core/src/index.d.ts.map +1 -1
  134. package/dist/core/src/settings.d.ts +1 -1
  135. package/dist/core/src/workspace-config.d.ts +16 -15
  136. package/dist/core/src/workspace-config.d.ts.map +1 -1
  137. package/dist/core/store.js +2 -2
  138. package/dist/core/workspace-config.js +2 -2
  139. package/dist/deploy/index.js +5 -5
  140. package/dist/discovery/index.js +2 -2
  141. package/dist/{ensure-sources-JGKHWDC4.js → ensure-sources-DVPPPCBS.js} +14 -14
  142. package/dist/{ensure-sources-JGKHWDC4.js.map → ensure-sources-DVPPPCBS.js.map} +1 -1
  143. package/dist/factory-assets/connectors/box.js +13 -13
  144. package/dist/factory-assets/connectors/deploy.js +13 -13
  145. package/dist/factory-assets/connectors/devserver.js +13 -13
  146. package/dist/factory-assets/connectors/flow/CONNECTOR.md +2 -2
  147. package/dist/factory-assets/connectors/flow/adapter.js +13 -13
  148. package/dist/factory-assets/connectors/flow/engine.js +6 -6
  149. package/dist/factory-assets/connectors/flow/run-flow.d.ts +1 -1
  150. package/dist/factory-assets/connectors/flow/run-flow.js +14 -14
  151. package/dist/factory-assets/connectors/flow/subprompt-runner.d.ts +3 -3
  152. package/dist/factory-assets/connectors/flow/subprompt-runner.d.ts.map +1 -1
  153. package/dist/factory-assets/connectors/flow.js +13 -13
  154. package/dist/factory-assets/connectors/git.js +13 -13
  155. package/dist/factory-assets/connectors/gmail.js +13 -13
  156. package/dist/factory-assets/connectors/googledrive.js +13 -13
  157. package/dist/factory-assets/connectors/local.js +13 -13
  158. package/dist/factory-assets/connectors/mattermost.js +13 -13
  159. package/dist/factory-assets/connectors/memory.js +13 -13
  160. package/dist/factory-assets/connectors/minio.js +13 -13
  161. package/dist/factory-assets/connectors/postgres.js +13 -13
  162. package/dist/factory-assets/connectors/s3.js +13 -13
  163. package/dist/factory-assets/connectors/sharepoint.js +13 -13
  164. package/dist/factory-assets/connectors/sqlite.js +13 -13
  165. package/dist/factory-assets/connectors/static-server.js +13 -13
  166. package/dist/factory-assets/connectors/tunnel.js +13 -13
  167. package/dist/factory-assets/connectors/webdav.js +13 -13
  168. package/dist/factory-assets/connectors/xstate-store.js +13 -13
  169. package/dist/factory-assets/connectors/xstate.js +13 -13
  170. package/dist/{flows-QTUSWYKY.js → flows-X7JFAVRR.js} +8 -8
  171. package/dist/{flows-QTUSWYKY.js.map → flows-X7JFAVRR.js.map} +1 -1
  172. package/dist/{helpers-6X4HJKWS.js → helpers-KLO5VUVZ.js} +14 -14
  173. package/dist/{helpers-6X4HJKWS.js.map → helpers-KLO5VUVZ.js.map} +1 -1
  174. package/dist/library/index.js +8 -8
  175. package/dist/{library-publish-MGN3N73A.js → library-publish-X6JGR7K3.js} +18 -18
  176. package/dist/{library-publish-MGN3N73A.js.map → library-publish-X6JGR7K3.js.map} +1 -1
  177. package/dist/{open-library-4PFE2CJ7.js → open-library-S2ZFKJUK.js} +16 -16
  178. package/dist/{open-library-4PFE2CJ7.js.map → open-library-S2ZFKJUK.js.map} +1 -1
  179. package/dist/{paths-IOOMNHTC.js → paths-OI5IIS22.js} +8 -8
  180. package/dist/{paths-IOOMNHTC.js.map → paths-OI5IIS22.js.map} +1 -1
  181. package/dist/plugin-registry/src/targets.d.ts +5 -5
  182. package/dist/plugin-registry/src/targets.d.ts.map +1 -1
  183. package/dist/{plugin-store-OIIPB2MQ.js → plugin-store-C67RLSPD.js} +7 -7
  184. package/dist/{plugin-store-OIIPB2MQ.js.map → plugin-store-C67RLSPD.js.map} +1 -1
  185. package/dist/{project-MD4HQ62C.js → project-7VOTYB7O.js} +15 -15
  186. package/dist/{project-MD4HQ62C.js.map → project-7VOTYB7O.js.map} +1 -1
  187. package/dist/resolver/index.js +5 -5
  188. package/dist/runner/index.js +18 -18
  189. package/dist/runner/src/manifest.d.ts +1 -1
  190. package/dist/runner/src/resources.d.ts.map +1 -1
  191. package/dist/runner/src/serve.d.ts +47 -1
  192. package/dist/runner/src/serve.d.ts.map +1 -1
  193. package/dist/runner/src/session-builder.d.ts +2 -2
  194. package/dist/runner/src/session-stimulus.d.ts +5 -0
  195. package/dist/runner/src/session-stimulus.d.ts.map +1 -1
  196. package/dist/runner/src/session.d.ts +1 -1
  197. package/dist/runner/src/session.d.ts.map +1 -1
  198. package/dist/sdk/asset-manager.js +11 -11
  199. package/dist/sdk/bridge.js +10 -10
  200. package/dist/sdk/core.js +5 -5
  201. package/dist/sdk/flow.js +6 -6
  202. package/dist/sdk/index.js +18 -18
  203. package/dist/sdk/resolver.js +5 -5
  204. package/dist/sdk/runner.js +18 -18
  205. package/dist/{setup-PB35G5SG.js → setup-RO3PGJYS.js} +19 -19
  206. package/dist/{setup-PB35G5SG.js.map → setup-RO3PGJYS.js.map} +1 -1
  207. package/dist/{skills-DH75K326.js → skills-4YTVHMOH.js} +7 -7
  208. package/dist/{skills-DH75K326.js.map → skills-4YTVHMOH.js.map} +1 -1
  209. package/dist/{source-Y5OF6IZU.js → source-ZZLLOP2U.js} +17 -17
  210. package/dist/{source-Y5OF6IZU.js.map → source-ZZLLOP2U.js.map} +1 -1
  211. package/dist/{source-manifest-publish-YWFVYTEI.js → source-manifest-publish-7WRQDIXO.js} +19 -19
  212. package/dist/{source-manifest-publish-YWFVYTEI.js.map → source-manifest-publish-7WRQDIXO.js.map} +1 -1
  213. package/dist/tui/index.js +18 -18
  214. package/dist/types/manifests.js +1 -1
  215. package/dist/types/src/manifests/agent.d.ts +4 -4
  216. package/dist/types/src/runtime.d.ts +4 -4
  217. package/dist/workspace-plugin/adapters/mcp.js +7 -7
  218. package/dist/workspace-plugin/adapters/omp.js +7 -7
  219. package/dist/workspace-plugin/index.js +1 -1
  220. package/dist/workspace-plugin/src/plugin.d.ts +1 -1
  221. package/package.json +1 -1
  222. package/dist/chunk-3C6Q6TCZ.js.map +0 -1
  223. package/dist/chunk-6GSZLKA5.js.map +0 -1
  224. package/dist/chunk-ACDHNOT7.js.map +0 -1
  225. package/dist/chunk-DF7C3KZK.js.map +0 -1
  226. package/dist/chunk-DKCFWSVW.js.map +0 -1
  227. package/dist/chunk-DRAI3JH5.js.map +0 -1
  228. package/dist/chunk-HXC5VF3L.js.map +0 -1
  229. package/dist/chunk-I6NZG7WX.js.map +0 -1
  230. package/dist/chunk-MENCWIHW.js.map +0 -1
  231. package/dist/chunk-XUVQSDNV.js.map +0 -1
@@ -1,11 +1,11 @@
1
1
  import { declaredConnectErrorKind, ClassifiedConnectError, withConnectErrorKind } from './chunk-ZWTCXL3H.js';
2
- import { OAuthRequiredError, ConnectorFieldMissingError, LegacyAuthGrammarError, resolveAuthRef, readUnavailableMarker, ConnectorStartupError } from './chunk-2JANXYTJ.js';
3
- import { EventNormalizer } from './chunk-4T25XCWX.js';
4
- import { resolveModelTier } from './chunk-ENUCD5MW.js';
5
- import { createDriver } from './chunk-TAZMDZFP.js';
2
+ import { OAuthRequiredError, ConnectorFieldMissingError, LegacyAuthGrammarError, resolveAuthRef, readUnavailableMarker, ConnectorStartupError } from './chunk-DHLE66FV.js';
3
+ import { EventNormalizer } from './chunk-NVQLE4MK.js';
4
+ import { resolveModelTier } from './chunk-75LXFKQR.js';
5
+ import { createDriver } from './chunk-MTWZ7KHZ.js';
6
6
  import { pluginRegistry } from './chunk-6E6PKKAD.js';
7
7
  import { computeStimulus } from './chunk-IFGTRL2I.js';
8
- import { interpolateNodeInstruction, resolveNodeBindings, validateConsumedNodeOutput, appendAttempt, resolveTerminalFailureStatus, remainingActiveExecutionMs, deriveCheckEvidence, computeFlowStateFromSnapshots, availableRouterFrontier, evaluateRouterSelection, routerSelectionOutput, planRouterSkips, unsettledRouterBranchIds, countFailedAttempts, hasAutomaticRetryBudget, persistedRouterSelection } from './chunk-JULFGNQN.js';
8
+ import { interpolateNodeInstruction, resolveNodeBindings, validateConsumedNodeOutput, appendAttempt, resolveTerminalFailureStatus, remainingActiveExecutionMs, deriveCheckEvidence, computeFlowStateFromSnapshots, availableRouterFrontier, evaluateRouterSelection, routerSelectionOutput, planRouterSkips, unsettledRouterBranchIds, countFailedAttempts, hasAutomaticRetryBudget, persistedRouterSelection } from './chunk-7HJ6SFFF.js';
9
9
  import { INPUT_SCHEMA_SHAPES_HINT, coerceInputSchema } from './chunk-YYH5EVPM.js';
10
10
  import { parseFlowDefinition } from './chunk-DIQDYNXZ.js';
11
11
  import { describeStimulus, buildOrchestratorPrompt, renderSubpromptPrompt, renderStimulusPrompt } from './chunk-K3IBZ2UZ.js';
@@ -638,7 +638,7 @@ var SessionSubpromptRunner = class {
638
638
  const config = {
639
639
  cwd: this.options.workspaceDir,
640
640
  model,
641
- // A subprompt is one model call by definition. Backends default to a
641
+ // A subprompt is one model call by definition. Harnesses default to a
642
642
  // multi-turn agentic loop (claude-sdk: 15), which would let a node that
643
643
  // was asked to classify a string go off and work instead.
644
644
  maxTurns: 1,
@@ -7945,6 +7945,8 @@ var ConnectorManager = class {
7945
7945
  * that will never sync. See {@link listFailedConnectors}.
7946
7946
  */
7947
7947
  failedConnectors = /* @__PURE__ */ new Map();
7948
+ /** Kind of each failed bulk-connect attempt, so a carried failure replays it. */
7949
+ attemptErrorKinds = /* @__PURE__ */ new Map();
7948
7950
  // Allocated absolute mount target → owning connector id; collisions rejected at setup, released on disconnect.
7949
7951
  mountTargets = /* @__PURE__ */ new Map();
7950
7952
  /**
@@ -8275,8 +8277,13 @@ var ConnectorManager = class {
8275
8277
  throw err;
8276
8278
  }
8277
8279
  const results = [];
8280
+ const carriedIds = /* @__PURE__ */ new Set();
8278
8281
  for (const decl of declarations) {
8279
- results.push(await this.attemptConnect(decl));
8282
+ const carried = this.opts.failureCarryOver?.take(decl);
8283
+ if (carried !== void 0) carriedIds.add(decl.id);
8284
+ results.push(
8285
+ carried !== void 0 ? this.carryFailure(decl, carried) : await this.attemptConnect(decl)
8286
+ );
8280
8287
  }
8281
8288
  const report = { results };
8282
8289
  this.mgrLog.info("connectAll complete", {
@@ -8289,6 +8296,15 @@ var ConnectorManager = class {
8289
8296
  const decl = declById.get(r.id);
8290
8297
  return !r.connected && r.access === "read-write" && decl?.mount != null && !readUnavailableMarker(decl.unavailable);
8291
8298
  }).map((r) => ({ id: r.id, error: r.error ?? "unknown error" }));
8299
+ for (const f of failedRw) {
8300
+ const decl = declById.get(f.id);
8301
+ if (!decl || carriedIds.has(f.id)) continue;
8302
+ const errorKind = this.attemptErrorKinds.get(f.id);
8303
+ this.opts.failureCarryOver?.record(decl, {
8304
+ error: f.error,
8305
+ ...errorKind ? { errorKind } : {}
8306
+ });
8307
+ }
8292
8308
  if (failedRw.length > 0) {
8293
8309
  const summary = failedRw.map((f) => `"${f.id}": ${f.error}`).join("; ");
8294
8310
  this.mgrLog.error("connectAll failed: required read-write connector(s) failed", void 0, {
@@ -8344,6 +8360,7 @@ var ConnectorManager = class {
8344
8360
  });
8345
8361
  this.createdMountDirs.delete(decl.id);
8346
8362
  this.failedConnectors.delete(decl.id);
8363
+ this.attemptErrorKinds.delete(decl.id);
8347
8364
  this.opts.onStatusChange?.({
8348
8365
  type: "connector_status",
8349
8366
  connectorId: decl.id,
@@ -8363,6 +8380,8 @@ var ConnectorManager = class {
8363
8380
  const msg = redactCredentials(err instanceof Error ? err.message : String(err));
8364
8381
  this.recordFailure(decl, msg);
8365
8382
  const errorKind = classifyConnectError(err);
8383
+ if (errorKind) this.attemptErrorKinds.set(decl.id, errorKind);
8384
+ else this.attemptErrorKinds.delete(decl.id);
8366
8385
  this.mgrLog.error("connect failed", err, {
8367
8386
  id: decl.id,
8368
8387
  driver: decl.driver,
@@ -8383,6 +8402,26 @@ var ConnectorManager = class {
8383
8402
  };
8384
8403
  }
8385
8404
  }
8405
+ /**
8406
+ * Fail `decl` with the error a previous build's `connectAll` carried over,
8407
+ * without calling its driver. Same records and events as a failed attempt.
8408
+ */
8409
+ carryFailure(decl, { error, errorKind }) {
8410
+ if (!this.active.has(decl.id)) this.releaseMountTarget(decl.id);
8411
+ this.recordFailure(decl, error);
8412
+ this.mgrLog.warn("connect skipped: it failed in the previous build moments ago", {
8413
+ id: decl.id,
8414
+ driver: decl.driver
8415
+ });
8416
+ this.opts.onStatusChange?.({
8417
+ type: "connector_status",
8418
+ connectorId: decl.id,
8419
+ status: "error",
8420
+ error,
8421
+ ...errorKind ? { errorKind } : {}
8422
+ });
8423
+ return { id: decl.id, connected: false, error, access: decl.access };
8424
+ }
8386
8425
  /**
8387
8426
  * Compatibility no-op for the removed in-container fleet health gate. Host
8388
8427
  * fleet-managed cloud mounts are verified at connect time by their drivers.
@@ -8414,6 +8453,7 @@ var ConnectorManager = class {
8414
8453
  this.mountTargets.clear();
8415
8454
  this.createdMountDirs.clear();
8416
8455
  this.failedConnectors.clear();
8456
+ this.attemptErrorKinds.clear();
8417
8457
  this.mgrLog.info("disconnectAll complete");
8418
8458
  }
8419
8459
  // ── Hot-plug ──────────────────────────────────────────────────────────────────
@@ -8923,6 +8963,43 @@ function redactMarker(marker) {
8923
8963
  ...marker.detail !== void 0 ? { detail: redactCredentials(marker.detail) } : {}
8924
8964
  };
8925
8965
  }
8966
+
8967
+ // connectors/src/connect-failure-carry-over.ts
8968
+ var CONNECT_FAILURE_CARRY_OVER_TTL_MS = 3e4;
8969
+ var ConnectFailureCarryOver = class {
8970
+ entries = /* @__PURE__ */ new Map();
8971
+ ttlMs;
8972
+ now;
8973
+ constructor(opts = {}) {
8974
+ this.ttlMs = opts.ttlMs ?? CONNECT_FAILURE_CARRY_OVER_TTL_MS;
8975
+ this.now = opts.now ?? Date.now;
8976
+ }
8977
+ /** Remember how `decl` failed in the bulk connect that just ran. */
8978
+ record(decl, failure) {
8979
+ const fingerprint = fingerprintOf(decl);
8980
+ if (fingerprint === void 0) return;
8981
+ this.entries.set(decl.id, { ...failure, fingerprint, at: this.now() });
8982
+ }
8983
+ /**
8984
+ * The carried failure for `decl`, or `undefined` when it must connect.
8985
+ * Removes the entry either way, so a failure is carried over once at most.
8986
+ */
8987
+ take(decl) {
8988
+ const entry = this.entries.get(decl.id);
8989
+ if (!entry) return void 0;
8990
+ this.entries.delete(decl.id);
8991
+ if (this.now() - entry.at > this.ttlMs) return void 0;
8992
+ if (fingerprintOf(decl) !== entry.fingerprint) return void 0;
8993
+ return { error: entry.error, ...entry.errorKind ? { errorKind: entry.errorKind } : {} };
8994
+ }
8995
+ };
8996
+ function fingerprintOf(decl) {
8997
+ try {
8998
+ return JSON.stringify(decl);
8999
+ } catch {
9000
+ return void 0;
9001
+ }
9002
+ }
8926
9003
  var zStatic = z4.z ?? z4.default ?? z4;
8927
9004
  function readFailedConnectors(manager) {
8928
9005
  if (typeof manager.listFailedConnectors !== "function") return [];
@@ -12875,6 +12952,6 @@ function describeFlowOperations() {
12875
12952
  return new FlowAdapter().tools.describeOperations({ access: "read-write" });
12876
12953
  }
12877
12954
 
12878
- export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, BoxConnector, ClassifierSubpromptRunner, ConnectorManager, DeployConnector, DevServerConnector, FlowAdapter, GitConnector, GmailConnector, GoogleDriveConnector, LocalConnector, LogBuffer, MAX_REARM_MS, MIN_REFRESH_DELAY_MS, ManagedGitconfigCollisionError, MattermostConnector, MemoryConnector, MinIOConnector, NO_ACTIVE_FLOW_ERROR, PortPool, PostgresConnector, REFRESH_LEAD_MS, S3Connector, S3FetchStoppedError, S3PresignedRequestError, S3_PRESIGN_BATCH, SQLiteConnector, SessionInlineSubFlowRunner, SessionNodeExecutor, SessionSubpromptRunner, SharePointConnector, StaticServerConnector, TunnelConnector, WebDAVConnector, XStateConnector, XStateStoreConnector, __test, atomicReplaceCredential, buildConnectorPromptSection, buildConnectorToolDefs, buildFlowPromptEvent, buildFlowToolDefs, buildLazyFlowToolDefs, buildLazySdkFlowTools, buildSdkConnectorTools, buildSdkFlowTools, checkFleetMountLiveness, classifierQuestion, classifyConnectError, createConnector, createConnector10, createConnector11, createConnector12, createConnector13, createConnector14, createConnector15, createConnector16, createConnector17, createConnector18, createConnector19, createConnector2, createConnector20, createConnector3, createConnector4, createConnector5, createConnector6, createConnector7, createConnector8, createConnector9, createFsWatcher, createWorktree, defaultSpawn, describeFlowOperations, driveOrchestratorTurn, ensureDirMode, ensureFleetMounted, ensureRefreshAttemptStamp, findGitRoot, findMissingPackages, getConnector, installNpmPackages, isFleetManaged, isPackageResolvable, listConnectors, listWorktrees, missingTokenMediatorMessage, parseListObjectsV2, presignScopePrefix, presignableKey, readGitSyncStatus, registerBuiltinConnectors, removeMountBlock, removeUnavailableMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock, writeUnavailableMountBlock };
12879
- //# sourceMappingURL=chunk-ACDHNOT7.js.map
12880
- //# sourceMappingURL=chunk-ACDHNOT7.js.map
12955
+ export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, BoxConnector, CONNECT_FAILURE_CARRY_OVER_TTL_MS, ClassifierSubpromptRunner, ConnectFailureCarryOver, ConnectorManager, DeployConnector, DevServerConnector, FlowAdapter, GitConnector, GmailConnector, GoogleDriveConnector, LocalConnector, LogBuffer, MAX_REARM_MS, MIN_REFRESH_DELAY_MS, ManagedGitconfigCollisionError, MattermostConnector, MemoryConnector, MinIOConnector, NO_ACTIVE_FLOW_ERROR, PortPool, PostgresConnector, REFRESH_LEAD_MS, S3Connector, S3FetchStoppedError, S3PresignedRequestError, S3_PRESIGN_BATCH, SQLiteConnector, SessionInlineSubFlowRunner, SessionNodeExecutor, SessionSubpromptRunner, SharePointConnector, StaticServerConnector, TunnelConnector, WebDAVConnector, XStateConnector, XStateStoreConnector, __test, atomicReplaceCredential, buildConnectorPromptSection, buildConnectorToolDefs, buildFlowPromptEvent, buildFlowToolDefs, buildLazyFlowToolDefs, buildLazySdkFlowTools, buildSdkConnectorTools, buildSdkFlowTools, checkFleetMountLiveness, classifierQuestion, classifyConnectError, createConnector, createConnector10, createConnector11, createConnector12, createConnector13, createConnector14, createConnector15, createConnector16, createConnector17, createConnector18, createConnector19, createConnector2, createConnector20, createConnector3, createConnector4, createConnector5, createConnector6, createConnector7, createConnector8, createConnector9, createFsWatcher, createWorktree, defaultSpawn, describeFlowOperations, driveOrchestratorTurn, ensureDirMode, ensureFleetMounted, ensureRefreshAttemptStamp, findGitRoot, findMissingPackages, getConnector, installNpmPackages, isFleetManaged, isPackageResolvable, listConnectors, listWorktrees, missingTokenMediatorMessage, parseListObjectsV2, presignScopePrefix, presignableKey, readGitSyncStatus, registerBuiltinConnectors, removeMountBlock, removeUnavailableMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock, writeUnavailableMountBlock };
12956
+ //# sourceMappingURL=chunk-IFUQ6XBQ.js.map
12957
+ //# sourceMappingURL=chunk-IFUQ6XBQ.js.map