@skaile/workspaces 0.31.0 → 0.33.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 (148) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/dist/{asset-feeds-6HZDZEIT.js → asset-feeds-DX5JPM76.js} +7 -7
  3. package/dist/{asset-feeds-6HZDZEIT.js.map → asset-feeds-DX5JPM76.js.map} +1 -1
  4. package/dist/asset-manager/index.js +5 -5
  5. package/dist/asset-manager/installer.js +4 -4
  6. package/dist/bridge/drivers/claude-sdk.js +8 -1
  7. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  8. package/dist/bridge/drivers/codex.js +1 -1
  9. package/dist/bridge/drivers/continue.js +2 -2
  10. package/dist/bridge/drivers/echo.js +1 -1
  11. package/dist/bridge/drivers/gemini.js +3 -3
  12. package/dist/bridge/drivers/goose.js +2 -2
  13. package/dist/bridge/drivers/omp.js +1 -1
  14. package/dist/bridge/drivers/opencode.js +2 -2
  15. package/dist/bridge/drivers/qwen.js +3 -3
  16. package/dist/bridge/index.js +2 -2
  17. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  18. package/dist/{chunk-QF6LBS2C.js → chunk-362QBS57.js} +277 -61
  19. package/dist/chunk-362QBS57.js.map +1 -0
  20. package/dist/{chunk-ZM7UOJR2.js → chunk-4ZVS6KV4.js} +2 -2
  21. package/dist/{chunk-ZM7UOJR2.js.map → chunk-4ZVS6KV4.js.map} +1 -1
  22. package/dist/{chunk-NGE6PALH.js → chunk-67AXL4OK.js} +3 -3
  23. package/dist/{chunk-NGE6PALH.js.map → chunk-67AXL4OK.js.map} +1 -1
  24. package/dist/{chunk-DKAV43NI.js → chunk-AZODLVKH.js} +9 -16
  25. package/dist/chunk-AZODLVKH.js.map +1 -0
  26. package/dist/{chunk-MWAEOCU7.js → chunk-BUMDC3R2.js} +5 -5
  27. package/dist/{chunk-MWAEOCU7.js.map → chunk-BUMDC3R2.js.map} +1 -1
  28. package/dist/{chunk-OEXA7BBK.js → chunk-CIFTUSBV.js} +2 -2
  29. package/dist/{chunk-OEXA7BBK.js.map → chunk-CIFTUSBV.js.map} +1 -1
  30. package/dist/{chunk-BRBOC53X.js → chunk-EJZFQCQG.js} +2 -2
  31. package/dist/{chunk-BRBOC53X.js.map → chunk-EJZFQCQG.js.map} +1 -1
  32. package/dist/{chunk-7KOBITAP.js → chunk-KKERAIPQ.js} +3 -3
  33. package/dist/{chunk-7KOBITAP.js.map → chunk-KKERAIPQ.js.map} +1 -1
  34. package/dist/{chunk-VO7QQ76S.js → chunk-LRFZNLB2.js} +10 -7
  35. package/dist/chunk-LRFZNLB2.js.map +1 -0
  36. package/dist/{chunk-WDMH4UMD.js → chunk-N74UQJPN.js} +45 -3
  37. package/dist/chunk-N74UQJPN.js.map +1 -0
  38. package/dist/{chunk-7FLLPKX3.js → chunk-NSVAJWWQ.js} +3 -3
  39. package/dist/{chunk-7FLLPKX3.js.map → chunk-NSVAJWWQ.js.map} +1 -1
  40. package/dist/{chunk-G247J4MC.js → chunk-PKPUVQJP.js} +3 -3
  41. package/dist/{chunk-G247J4MC.js.map → chunk-PKPUVQJP.js.map} +1 -1
  42. package/dist/{chunk-4CRKROS5.js → chunk-PTDVTMQL.js} +4 -4
  43. package/dist/{chunk-4CRKROS5.js.map → chunk-PTDVTMQL.js.map} +1 -1
  44. package/dist/{chunk-LA2YSXEE.js → chunk-PWXN2KHV.js} +3 -3
  45. package/dist/{chunk-LA2YSXEE.js.map → chunk-PWXN2KHV.js.map} +1 -1
  46. package/dist/{chunk-NQC7ZUXE.js → chunk-QUWXW2N3.js} +3 -3
  47. package/dist/{chunk-NQC7ZUXE.js.map → chunk-QUWXW2N3.js.map} +1 -1
  48. package/dist/{chunk-IENYMRZ6.js → chunk-R2I7RHT7.js} +49 -19
  49. package/dist/chunk-R2I7RHT7.js.map +1 -0
  50. package/dist/{chunk-CBIPUBUS.js → chunk-RQG5TXIR.js} +3 -3
  51. package/dist/{chunk-CBIPUBUS.js.map → chunk-RQG5TXIR.js.map} +1 -1
  52. package/dist/{chunk-P72K36PU.js → chunk-TV2OU2EZ.js} +4 -4
  53. package/dist/{chunk-P72K36PU.js.map → chunk-TV2OU2EZ.js.map} +1 -1
  54. package/dist/{chunk-HH62ECJ7.js → chunk-VXW2K4YH.js} +3 -3
  55. package/dist/{chunk-HH62ECJ7.js.map → chunk-VXW2K4YH.js.map} +1 -1
  56. package/dist/{chunk-45RKEHPX.js → chunk-XQRAXAL5.js} +6 -6
  57. package/dist/{chunk-45RKEHPX.js.map → chunk-XQRAXAL5.js.map} +1 -1
  58. package/dist/{chunk-74UKG2LA.js → chunk-XT6AZWK3.js} +40 -5
  59. package/dist/chunk-XT6AZWK3.js.map +1 -0
  60. package/dist/cli/index.js +33 -33
  61. package/dist/connectors/config.js +4 -4
  62. package/dist/connectors/index.js +6 -6
  63. package/dist/connectors/rclone.js +1 -1
  64. package/dist/connectors/src/config.d.ts +30 -3
  65. package/dist/connectors/src/config.d.ts.map +1 -1
  66. package/dist/connectors/src/connector-types.d.ts +8 -0
  67. package/dist/connectors/src/connector-types.d.ts.map +1 -1
  68. package/dist/connectors/src/index.d.ts +5 -2
  69. package/dist/connectors/src/index.d.ts.map +1 -1
  70. package/dist/connectors/src/rclone-process-manager.d.ts +24 -0
  71. package/dist/connectors/src/rclone-process-manager.d.ts.map +1 -1
  72. package/dist/connectors/src/rclone-token-refresh.d.ts +84 -0
  73. package/dist/connectors/src/rclone-token-refresh.d.ts.map +1 -0
  74. package/dist/core/index.js +3 -3
  75. package/dist/core/runtime-assets.js +2 -2
  76. package/dist/core/src/workspace-config.d.ts +15 -6
  77. package/dist/core/src/workspace-config.d.ts.map +1 -1
  78. package/dist/core/workspace-config.js +1 -1
  79. package/dist/deploy/index.js +3 -3
  80. package/dist/{ensure-sources-JWBUVDW6.js → ensure-sources-O6RMWP6C.js} +7 -7
  81. package/dist/{ensure-sources-JWBUVDW6.js.map → ensure-sources-O6RMWP6C.js.map} +1 -1
  82. package/dist/factory-assets/connectors/deploy.js +6 -6
  83. package/dist/factory-assets/connectors/devserver.js +6 -6
  84. package/dist/factory-assets/connectors/flow/adapter.js +6 -6
  85. package/dist/factory-assets/connectors/flow/engine.js +3 -3
  86. package/dist/factory-assets/connectors/flow/run-flow.js +7 -7
  87. package/dist/factory-assets/connectors/flow.js +6 -6
  88. package/dist/factory-assets/connectors/git/driver.d.ts +54 -0
  89. package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -1
  90. package/dist/factory-assets/connectors/git.js +6 -6
  91. package/dist/factory-assets/connectors/gmail.js +6 -6
  92. package/dist/factory-assets/connectors/googledrive.js +6 -6
  93. package/dist/factory-assets/connectors/local.js +6 -6
  94. package/dist/factory-assets/connectors/mattermost.js +6 -6
  95. package/dist/factory-assets/connectors/memory.js +6 -6
  96. package/dist/factory-assets/connectors/minio.js +6 -6
  97. package/dist/factory-assets/connectors/postgres.js +6 -6
  98. package/dist/factory-assets/connectors/s3.js +6 -6
  99. package/dist/factory-assets/connectors/sharepoint/driver.d.ts.map +1 -1
  100. package/dist/factory-assets/connectors/sharepoint.js +6 -6
  101. package/dist/factory-assets/connectors/sqlite.js +6 -6
  102. package/dist/factory-assets/connectors/static-server.js +6 -6
  103. package/dist/factory-assets/connectors/tunnel.js +6 -6
  104. package/dist/factory-assets/connectors/webdav/driver.d.ts.map +1 -1
  105. package/dist/factory-assets/connectors/webdav.js +6 -6
  106. package/dist/factory-assets/connectors/xstate-store.js +6 -6
  107. package/dist/factory-assets/connectors/xstate.js +6 -6
  108. package/dist/{flows-T6RCRKCX.js → flows-QWYIUDA2.js} +3 -3
  109. package/dist/{flows-T6RCRKCX.js.map → flows-QWYIUDA2.js.map} +1 -1
  110. package/dist/library/index.js +5 -5
  111. package/dist/library/install.js +4 -4
  112. package/dist/library/src/install/index.d.ts +1 -1
  113. package/dist/library/src/install/index.d.ts.map +1 -1
  114. package/dist/library/src/install/install-from-manifest.d.ts +25 -1
  115. package/dist/library/src/install/install-from-manifest.d.ts.map +1 -1
  116. package/dist/{open-library-ZXTSUPBJ.js → open-library-B7BLYXYK.js} +8 -8
  117. package/dist/{open-library-ZXTSUPBJ.js.map → open-library-B7BLYXYK.js.map} +1 -1
  118. package/dist/{paths-F7RHQUFL.js → paths-5IUR235S.js} +6 -6
  119. package/dist/{paths-F7RHQUFL.js.map → paths-5IUR235S.js.map} +1 -1
  120. package/dist/{plugin-store-BC3I36HA.js → plugin-store-WWOJXWG7.js} +5 -5
  121. package/dist/{plugin-store-BC3I36HA.js.map → plugin-store-WWOJXWG7.js.map} +1 -1
  122. package/dist/runner/index.js +10 -10
  123. package/dist/runner/src/lifecycle-handler.d.ts +17 -0
  124. package/dist/runner/src/lifecycle-handler.d.ts.map +1 -0
  125. package/dist/runner/src/runner-capabilities.d.ts +1 -1
  126. package/dist/runner/src/runner-capabilities.d.ts.map +1 -1
  127. package/dist/runner/src/serve.d.ts.map +1 -1
  128. package/dist/sdk/asset-manager.js +5 -5
  129. package/dist/sdk/bridge.js +2 -2
  130. package/dist/sdk/core.js +3 -3
  131. package/dist/sdk/flow.js +3 -3
  132. package/dist/sdk/index.js +10 -10
  133. package/dist/sdk/runner.js +10 -10
  134. package/dist/{setup-FQ3DE6J6.js → setup-2RD6EDBZ.js} +7 -7
  135. package/dist/{setup-FQ3DE6J6.js.map → setup-2RD6EDBZ.js.map} +1 -1
  136. package/dist/{store-client-27YYEWMM.js → store-client-XQQRHYDW.js} +6 -6
  137. package/dist/{store-client-27YYEWMM.js.map → store-client-XQQRHYDW.js.map} +1 -1
  138. package/dist/tui/index.js +10 -10
  139. package/dist/workspace-plugin/adapters/mcp.js +1 -1
  140. package/dist/workspace-plugin/adapters/omp.js +3 -3
  141. package/dist/workspace-plugin/index.js +1 -1
  142. package/package.json +1 -1
  143. package/dist/chunk-74UKG2LA.js.map +0 -1
  144. package/dist/chunk-DKAV43NI.js.map +0 -1
  145. package/dist/chunk-IENYMRZ6.js.map +0 -1
  146. package/dist/chunk-QF6LBS2C.js.map +0 -1
  147. package/dist/chunk-VO7QQ76S.js.map +0 -1
  148. package/dist/chunk-WDMH4UMD.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { dispatchCapability } from '../../chunk-RRVQAE5D.js';
2
- import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger } from '../../chunk-OEXA7BBK.js';
2
+ import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger } from '../../chunk-CIFTUSBV.js';
3
3
  import '../../chunk-6E6PKKAD.js';
4
4
  import '../../chunk-JB35MVBN.js';
5
5
  import '../../chunk-NSBPE2FW.js';
@@ -1,8 +1,8 @@
1
- export { GeminiDriver, GeminiFamilyDriver, geminiDriverTarget } from '../../chunk-P72K36PU.js';
2
- import '../../chunk-NGE6PALH.js';
1
+ export { GeminiDriver, GeminiFamilyDriver, geminiDriverTarget } from '../../chunk-TV2OU2EZ.js';
2
+ import '../../chunk-67AXL4OK.js';
3
3
  import '../../chunk-BMQKMOQY.js';
4
4
  import '../../chunk-NGJ6E344.js';
5
- import '../../chunk-OEXA7BBK.js';
5
+ import '../../chunk-CIFTUSBV.js';
6
6
  import '../../chunk-6E6PKKAD.js';
7
7
  import '../../chunk-JB35MVBN.js';
8
8
  import '../../chunk-NSBPE2FW.js';
@@ -1,6 +1,6 @@
1
- import { SubprocessCliDriver, mapApiKeysToEnv, extractText, extractCost, extractTokens } from '../../chunk-NGE6PALH.js';
1
+ import { SubprocessCliDriver, mapApiKeysToEnv, extractText, extractCost, extractTokens } from '../../chunk-67AXL4OK.js';
2
2
  import '../../chunk-NGJ6E344.js';
3
- import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from '../../chunk-OEXA7BBK.js';
3
+ import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from '../../chunk-CIFTUSBV.js';
4
4
  import '../../chunk-6E6PKKAD.js';
5
5
  import '../../chunk-JB35MVBN.js';
6
6
  import '../../chunk-NSBPE2FW.js';
@@ -1,5 +1,5 @@
1
1
  import { classifyGenericErrorMessage } from '../../chunk-NGJ6E344.js';
2
- import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger } from '../../chunk-OEXA7BBK.js';
2
+ import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger } from '../../chunk-CIFTUSBV.js';
3
3
  import '../../chunk-6E6PKKAD.js';
4
4
  import '../../chunk-JB35MVBN.js';
5
5
  import '../../chunk-NSBPE2FW.js';
@@ -1,6 +1,6 @@
1
- import { SubprocessCliDriver, mapApiKeysToEnv, extractText, extractCost, extractTokens } from '../../chunk-NGE6PALH.js';
1
+ import { SubprocessCliDriver, mapApiKeysToEnv, extractText, extractCost, extractTokens } from '../../chunk-67AXL4OK.js';
2
2
  import '../../chunk-NGJ6E344.js';
3
- import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from '../../chunk-OEXA7BBK.js';
3
+ import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from '../../chunk-CIFTUSBV.js';
4
4
  import '../../chunk-6E6PKKAD.js';
5
5
  import '../../chunk-JB35MVBN.js';
6
6
  import '../../chunk-NSBPE2FW.js';
@@ -1,8 +1,8 @@
1
- import { GeminiFamilyDriver } from '../../chunk-P72K36PU.js';
2
- import '../../chunk-NGE6PALH.js';
1
+ import { GeminiFamilyDriver } from '../../chunk-TV2OU2EZ.js';
2
+ import '../../chunk-67AXL4OK.js';
3
3
  import { fetchProviderModels } from '../../chunk-BMQKMOQY.js';
4
4
  import '../../chunk-NGJ6E344.js';
5
- import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from '../../chunk-OEXA7BBK.js';
5
+ import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from '../../chunk-CIFTUSBV.js';
6
6
  import '../../chunk-6E6PKKAD.js';
7
7
  import '../../chunk-JB35MVBN.js';
8
8
  import '../../chunk-NSBPE2FW.js';
@@ -1,8 +1,8 @@
1
- export { BridgeRuntime, EventNormalizer, createRuntime, detectFileChange, detectFileChanges, summarizeToolCall, summarizeToolResult, validateApiKey } from '../chunk-7FLLPKX3.js';
1
+ export { BridgeRuntime, EventNormalizer, createRuntime, detectFileChange, detectFileChanges, summarizeToolCall, summarizeToolResult, validateApiKey } from '../chunk-NSVAJWWQ.js';
2
2
  export { dispatchCapability, filterRenderCapabilities, renderFallback } from '../chunk-RRVQAE5D.js';
3
3
  export { STATIC_MODELS, fetchProviderModels, getModels, getStaticModels } from '../chunk-BMQKMOQY.js';
4
4
  export { AuthError, classifyClaudeSdkError } from '../chunk-NGJ6E344.js';
5
- export { AgentDriver, BUILTIN_DRIVER_CATALOG, DRIVER_CATALOG, createDriver, getBridgeLogger, listDrivers, listModelsForDriver, registerBuiltinDrivers } from '../chunk-OEXA7BBK.js';
5
+ export { AgentDriver, BUILTIN_DRIVER_CATALOG, DRIVER_CATALOG, createDriver, getBridgeLogger, listDrivers, listModelsForDriver, registerBuiltinDrivers } from '../chunk-CIFTUSBV.js';
6
6
  import '../chunk-6E6PKKAD.js';
7
7
  import '../chunk-JB35MVBN.js';
8
8
  import '../chunk-NSBPE2FW.js';
@@ -1 +1 @@
1
- {"version":3,"file":"claude-sdk.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/claude-sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-sdk.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/claude-sdk.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import { renderGoogleDriveConfig, renderOneDriveConfig, renderWebDAVConfig } from './chunk-OVRSNIKJ.js';
2
- import { resolveAuthRef, resolveAuth, resolveMountCredentialString } from './chunk-VO7QQ76S.js';
3
- import { PortPool, createFsWatcher, RcloneProcessManager, ensureDirMode } from './chunk-74UKG2LA.js';
2
+ import { resolveAuthRef, resolveAuth, resolveMountCredentialString, resolveMountCredential } from './chunk-LRFZNLB2.js';
3
+ import { PortPool, createFsWatcher, RcloneProcessManager, ensureDirMode } from './chunk-XT6AZWK3.js';
4
4
  import { pluginRegistry } from './chunk-6E6PKKAD.js';
5
5
  import { computeFlowStateFromSnapshots } from './chunk-X46FY45B.js';
6
6
  import { renderStimulusPrompt } from './chunk-DEYYRFQU.js';
7
7
  import { computeStimulus } from './chunk-IFGTRL2I.js';
8
- import { portableSpawn } from './chunk-G247J4MC.js';
8
+ import { portableSpawn } from './chunk-PKPUVQJP.js';
9
9
  import { createLogger } from './chunk-JB35MVBN.js';
10
10
  import { existsSync, mkdirSync, renameSync, writeFileSync, readFileSync, cpSync, statSync, createReadStream, readdirSync, openSync, writeSync, closeSync, chmodSync } from 'fs';
11
11
  import path, { join, dirname, resolve, sep } from 'path';
@@ -713,35 +713,83 @@ function instanceToStatus(inst) {
713
713
  function createConnector3() {
714
714
  return new DevServerConnector();
715
715
  }
716
- function parseSessionConfig(opts) {
716
+ var LEGACY_DEFAULTS = {
717
+ session: { enabled: false },
718
+ sync: { fetchIntervalSec: 0, autoRebase: false, autoPull: false },
719
+ lifecycle: {
720
+ commitOnHibernate: true,
721
+ pushOnHibernate: true,
722
+ mergeOnClose: true,
723
+ pushOnClose: true,
724
+ autoCommitIdleMs: 3e4,
725
+ pushAfterCommit: false
726
+ }
727
+ };
728
+ var MODE_DEFAULTS = {
729
+ agent: {
730
+ session: { enabled: true },
731
+ sync: { fetchIntervalSec: 0, autoRebase: false, autoPull: false },
732
+ lifecycle: {
733
+ ...LEGACY_DEFAULTS.lifecycle,
734
+ // Agent owns its own merge — connector must not auto-merge the session branch.
735
+ mergeOnClose: false,
736
+ autoCommitIdleMs: 0,
737
+ pushAfterCommit: false
738
+ }
739
+ },
740
+ sync: {
741
+ session: { enabled: false },
742
+ sync: { fetchIntervalSec: 30, autoRebase: true, autoPull: true },
743
+ lifecycle: {
744
+ ...LEGACY_DEFAULTS.lifecycle,
745
+ autoCommitIdleMs: 3e4,
746
+ pushAfterCommit: true
747
+ }
748
+ }
749
+ };
750
+ function parseSessionConfig(opts, defaults) {
717
751
  const raw = opts?.session ?? {};
718
752
  return {
719
- enabled: Boolean(raw.enabled ?? false),
753
+ enabled: Boolean(raw.enabled ?? defaults.enabled),
720
754
  slug: raw.slug != null ? String(raw.slug) : void 0,
721
755
  isMain: Boolean(raw.isMain ?? true),
722
756
  branchPrefix: String(raw.branchPrefix ?? "session/"),
723
757
  fromRef: raw.fromRef != null ? String(raw.fromRef) : void 0
724
758
  };
725
759
  }
726
- function parseSyncConfig(opts) {
760
+ function parseSyncConfig(opts, defaults) {
727
761
  const raw = opts?.sync ?? {};
728
762
  return {
729
- fetchIntervalSec: Number(raw.fetchIntervalSec ?? 0),
730
- autoRebase: Boolean(raw.autoRebase ?? false),
731
- autoPull: Boolean(raw.autoPull ?? false)
763
+ fetchIntervalSec: Number(raw.fetchIntervalSec ?? defaults.fetchIntervalSec),
764
+ autoRebase: Boolean(raw.autoRebase ?? defaults.autoRebase),
765
+ autoPull: Boolean(raw.autoPull ?? defaults.autoPull)
732
766
  };
733
767
  }
734
- function parseLifecycleConfig(opts) {
768
+ function parseLifecycleConfig(opts, defaults) {
735
769
  const raw = opts?.lifecycle ?? {};
736
770
  return {
737
- commitOnHibernate: Boolean(raw.commitOnHibernate ?? true),
738
- pushOnHibernate: Boolean(raw.pushOnHibernate ?? true),
739
- mergeOnClose: Boolean(raw.mergeOnClose ?? true),
740
- pushOnClose: Boolean(raw.pushOnClose ?? true),
741
- autoCommitIdleMs: Number(raw.autoCommitIdleMs ?? 3e4),
742
- pushAfterCommit: Boolean(raw.pushAfterCommit ?? false)
771
+ commitOnHibernate: Boolean(raw.commitOnHibernate ?? defaults.commitOnHibernate),
772
+ pushOnHibernate: Boolean(raw.pushOnHibernate ?? defaults.pushOnHibernate),
773
+ mergeOnClose: Boolean(raw.mergeOnClose ?? defaults.mergeOnClose),
774
+ pushOnClose: Boolean(raw.pushOnClose ?? defaults.pushOnClose),
775
+ autoCommitIdleMs: Number(raw.autoCommitIdleMs ?? defaults.autoCommitIdleMs),
776
+ pushAfterCommit: Boolean(raw.pushAfterCommit ?? defaults.pushAfterCommit)
743
777
  };
744
778
  }
779
+ function resolveGitConfig(args) {
780
+ let mode = args.mode;
781
+ if (mode && !(mode in MODE_DEFAULTS)) {
782
+ modeLog.warn("unknown git mode \u2014 falling back to legacy defaults", { mode });
783
+ mode = void 0;
784
+ }
785
+ const defaults = mode ? MODE_DEFAULTS[mode] : LEGACY_DEFAULTS;
786
+ return {
787
+ session: parseSessionConfig(args.options, defaults.session),
788
+ sync: parseSyncConfig(args.options, defaults.sync),
789
+ lifecycle: parseLifecycleConfig(args.options, defaults.lifecycle)
790
+ };
791
+ }
792
+ var modeLog = createLogger({ kind: "connector", subkind: "git" });
745
793
  function git(cmd, cwd, timeout = 3e4) {
746
794
  return execSync(`git ${cmd}`, { cwd, encoding: "utf-8", timeout, stdio: "pipe" }).trim();
747
795
  }
@@ -822,9 +870,10 @@ var GitConnector = class extends AbstractConnector {
822
870
  }
823
871
  this.log.info("mount start", { url, branch, targetDir });
824
872
  const initial = await this.acquireInitialToken(declaration, secrets, tokenMediator);
825
- const session = parseSessionConfig(opts);
826
- const sync = parseSyncConfig(opts);
827
- const lifecycle = parseLifecycleConfig(opts);
873
+ const { session, sync, lifecycle } = resolveGitConfig({
874
+ mode: declaration.mode,
875
+ options: opts
876
+ });
828
877
  const state = {
829
878
  url,
830
879
  branch,
@@ -988,13 +1037,17 @@ var GitConnector = class extends AbstractConnector {
988
1037
  activeBranch = git("rev-parse --abbrev-ref HEAD", targetDir, 5e3);
989
1038
  } catch {
990
1039
  }
1040
+ const fleetConfig = resolveGitConfig({
1041
+ mode: declaration.mode,
1042
+ options: declaration.options
1043
+ });
991
1044
  const state = {
992
1045
  url: String(declaration.mount?.source ?? ""),
993
1046
  branch: activeBranch,
994
1047
  activeBranch,
995
- session: parseSessionConfig(declaration.options),
996
- sync: parseSyncConfig(declaration.options),
997
- lifecycle: parseLifecycleConfig(declaration.options),
1048
+ session: fleetConfig.session,
1049
+ sync: fleetConfig.sync,
1050
+ lifecycle: fleetConfig.lifecycle,
998
1051
  fleetManaged: true
999
1052
  };
1000
1053
  const dispatch = (event) => {
@@ -1706,6 +1759,7 @@ var GitConnector = class extends AbstractConnector {
1706
1759
  function createConnector4() {
1707
1760
  return new GitConnector();
1708
1761
  }
1762
+ var __test = { resolveGitConfig };
1709
1763
 
1710
1764
  // factory-assets/connectors/gmail/adapter.ts
1711
1765
  var GmailConnector = class extends AbstractConnector {
@@ -3405,7 +3459,7 @@ var SharePointConnector = class extends AbstractConnector {
3405
3459
  });
3406
3460
  await ensureFleetMounted(targetDir, this.log);
3407
3461
  const fleetState = {
3408
- rcloneHandle: null,
3462
+ handleRef: { current: null },
3409
3463
  fleetManaged: true
3410
3464
  };
3411
3465
  return this.makeHandle(declaration, fleetState, targetDir);
@@ -3421,10 +3475,8 @@ var SharePointConnector = class extends AbstractConnector {
3421
3475
  );
3422
3476
  }
3423
3477
  const basePath = String(opts?.basePath ?? "").replace(/^\/+|\/+$/g, "");
3424
- const auth = parseAuthBlob2(
3425
- await resolveMountCredentialString(declaration, secrets, tokenMediator),
3426
- this.log
3427
- );
3478
+ const cred = await resolveMountCredential(declaration, secrets, tokenMediator, "initial");
3479
+ const auth = parseAuthBlob2(cred.token, this.log);
3428
3480
  if (!auth.accessToken) {
3429
3481
  throw new Error(
3430
3482
  "SharePoint connector: no access token resolved. Use 'auth: backend' (platform) or 'auth: env:SHAREPOINT_TOKEN' (standalone)."
@@ -3443,16 +3495,29 @@ var SharePointConnector = class extends AbstractConnector {
3443
3495
  vfsCacheMode,
3444
3496
  hasRefresh: auth.refreshToken !== null
3445
3497
  });
3446
- const rcloneConfig = renderOneDriveConfig({
3447
- remoteName,
3448
- accessToken: auth.accessToken,
3449
- refreshToken: auth.refreshToken,
3450
- expiresAtMs: auth.expiresAtMs,
3451
- tenantId: auth.tenantId,
3452
- clientId: auth.clientId,
3453
- clientSecret: auth.clientSecret,
3454
- driveId
3455
- });
3498
+ const renderConfig = (rawToken) => {
3499
+ const a = parseAuthBlob2(rawToken, this.log);
3500
+ return renderOneDriveConfig({
3501
+ remoteName,
3502
+ accessToken: a.accessToken,
3503
+ refreshToken: a.refreshToken,
3504
+ expiresAtMs: a.expiresAtMs,
3505
+ tenantId: a.tenantId,
3506
+ clientId: a.clientId,
3507
+ clientSecret: a.clientSecret,
3508
+ driveId
3509
+ });
3510
+ };
3511
+ const handleRef = { current: null };
3512
+ const refresh = declaration.auth === "backend" && tokenMediator ? createRcloneTokenRefresh({
3513
+ connectorId: declaration.id,
3514
+ tokenMediator,
3515
+ renderConfig,
3516
+ rclone: this.rclone,
3517
+ handleRef,
3518
+ log: (line) => this.log.info(line)
3519
+ }) : void 0;
3520
+ const rcloneConfig = renderConfig(cred.token ?? "");
3456
3521
  await ensureDirMode(base, this.log);
3457
3522
  await ensureDirMode(cacheDir, this.log);
3458
3523
  await ensureDirMode(targetDir, this.log);
@@ -3478,20 +3543,24 @@ var SharePointConnector = class extends AbstractConnector {
3478
3543
  ...cacheMaxAge !== void 0 ? { cacheMaxAge } : {},
3479
3544
  ...vfsWriteBack !== void 0 ? { vfsWriteBack } : {},
3480
3545
  ...ignoreSizeCheck ? { ignoreSizeCheck: true } : {},
3546
+ ...refresh ? { onAuthError: () => refresh.onAuthError() } : {},
3481
3547
  log: this.log
3482
3548
  });
3483
3549
  this.log.info("mount ready", { pid: rcloneHandle.pid });
3484
- const state = { rcloneHandle };
3550
+ handleRef.current = rcloneHandle;
3551
+ refresh?.schedule(cred.expiresAt);
3552
+ const state = { handleRef, refresh };
3485
3553
  return this.makeHandle(declaration, state, targetDir);
3486
3554
  }
3487
3555
  async disconnect(handle) {
3488
3556
  const s = handle.state;
3489
- if (s.fleetManaged || !s.rcloneHandle) return;
3490
- await this.rclone.stop(s.rcloneHandle, { graceMs: 3e4 });
3557
+ s.refresh?.cancel();
3558
+ if (s.fleetManaged || !s.handleRef.current) return;
3559
+ await this.rclone.stop(s.handleRef.current, { graceMs: 3e4 });
3491
3560
  }
3492
3561
  async _sync(handle, options) {
3493
3562
  const s = handle.state;
3494
- if (s.fleetManaged || !s.rcloneHandle) {
3563
+ if (s.fleetManaged || !s.handleRef.current) {
3495
3564
  options?.onSyncStatus?.({
3496
3565
  phase: "initial_sync_complete",
3497
3566
  totalFiles: 0,
@@ -3501,7 +3570,7 @@ var SharePointConnector = class extends AbstractConnector {
3501
3570
  });
3502
3571
  return { filesWritten: 0, filesDeleted: 0, bytesTransferred: 0 };
3503
3572
  }
3504
- await this.rclone.flush(s.rcloneHandle);
3573
+ await this.rclone.flush(s.handleRef.current);
3505
3574
  options?.onSyncStatus?.({
3506
3575
  phase: "initial_sync_complete",
3507
3576
  totalFiles: 0,
@@ -4351,7 +4420,7 @@ var WebDAVConnector = class extends AbstractConnector {
4351
4420
  });
4352
4421
  await ensureFleetMounted(targetDir, this.log);
4353
4422
  const fleetState = {
4354
- rcloneHandle: null,
4423
+ handleRef: { current: null },
4355
4424
  fleetManaged: true
4356
4425
  };
4357
4426
  return this.makeHandle(declaration, fleetState, targetDir);
@@ -4369,8 +4438,8 @@ var WebDAVConnector = class extends AbstractConnector {
4369
4438
  const vendor = vendorRaw;
4370
4439
  const basePath = String(opts?.basePath ?? "").replace(/^\/+|\/+$/g, "");
4371
4440
  const remotePath = basePath.length > 0 ? `/${basePath}` : "/";
4372
- const auth = parseAuth(await resolveMountCredentialString(declaration, secrets, tokenMediator));
4373
- const obscuredPassword = auth.password ? await this.obscure(auth.password) : null;
4441
+ const cred = await resolveMountCredential(declaration, secrets, tokenMediator, "initial");
4442
+ const auth = parseAuth(cred.token);
4374
4443
  const remoteName = `skaile-${declaration.id}`;
4375
4444
  const remote = `${remoteName}:${remotePath}`;
4376
4445
  const base = cacheBase3();
@@ -4384,14 +4453,28 @@ var WebDAVConnector = class extends AbstractConnector {
4384
4453
  vfsCacheMode,
4385
4454
  authKind: auth.bearerToken ? "bearer" : auth.username ? "basic" : "anonymous"
4386
4455
  });
4387
- const rcloneConfig = renderWebDAVConfig({
4388
- remoteName,
4389
- url,
4390
- vendor,
4391
- username: auth.username,
4392
- obscuredPassword,
4393
- bearerToken: auth.bearerToken
4394
- });
4456
+ const renderConfig = async (rawToken) => {
4457
+ const a = parseAuth(rawToken);
4458
+ const obscured = a.password ? await this.obscure(a.password) : null;
4459
+ return renderWebDAVConfig({
4460
+ remoteName,
4461
+ url,
4462
+ vendor,
4463
+ username: a.username,
4464
+ obscuredPassword: obscured,
4465
+ bearerToken: a.bearerToken
4466
+ });
4467
+ };
4468
+ const handleRef = { current: null };
4469
+ const refresh = declaration.auth === "backend" && tokenMediator ? createRcloneTokenRefresh({
4470
+ connectorId: declaration.id,
4471
+ tokenMediator,
4472
+ renderConfig,
4473
+ rclone: this.rclone,
4474
+ handleRef,
4475
+ log: (line) => this.log.info(line)
4476
+ }) : void 0;
4477
+ const rcloneConfig = await renderConfig(cred.token ?? "");
4395
4478
  await ensureDirMode(base, this.log);
4396
4479
  await ensureDirMode(cacheDir, this.log);
4397
4480
  await ensureDirMode(targetDir, this.log);
@@ -4409,20 +4492,24 @@ var WebDAVConnector = class extends AbstractConnector {
4409
4492
  ...cacheMaxSize !== void 0 ? { cacheMaxSize } : {},
4410
4493
  ...cacheMaxAge !== void 0 ? { cacheMaxAge } : {},
4411
4494
  ...vfsWriteBack !== void 0 ? { vfsWriteBack } : {},
4495
+ ...refresh ? { onAuthError: () => refresh.onAuthError() } : {},
4412
4496
  log: this.log
4413
4497
  });
4414
4498
  this.log.info("mount ready", { pid: rcloneHandle.pid });
4415
- const state = { rcloneHandle };
4499
+ handleRef.current = rcloneHandle;
4500
+ refresh?.schedule(cred.expiresAt);
4501
+ const state = { handleRef, refresh };
4416
4502
  return this.makeHandle(declaration, state, targetDir);
4417
4503
  }
4418
4504
  async disconnect(handle) {
4419
4505
  const s = handle.state;
4420
- if (s.fleetManaged || !s.rcloneHandle) return;
4421
- await this.rclone.stop(s.rcloneHandle, { graceMs: 3e4 });
4506
+ s.refresh?.cancel();
4507
+ if (s.fleetManaged || !s.handleRef.current) return;
4508
+ await this.rclone.stop(s.handleRef.current, { graceMs: 3e4 });
4422
4509
  }
4423
4510
  async _sync(handle, options) {
4424
4511
  const s = handle.state;
4425
- if (s.fleetManaged || !s.rcloneHandle) {
4512
+ if (s.fleetManaged || !s.handleRef.current) {
4426
4513
  options?.onSyncStatus?.({
4427
4514
  phase: "initial_sync_complete",
4428
4515
  totalFiles: 0,
@@ -4432,7 +4519,7 @@ var WebDAVConnector = class extends AbstractConnector {
4432
4519
  });
4433
4520
  return { filesWritten: 0, filesDeleted: 0, bytesTransferred: 0 };
4434
4521
  }
4435
- await this.rclone.flush(s.rcloneHandle);
4522
+ await this.rclone.flush(s.handleRef.current);
4436
4523
  options?.onSyncStatus?.({
4437
4524
  phase: "initial_sync_complete",
4438
4525
  totalFiles: 0,
@@ -6928,6 +7015,135 @@ function isPackageResolvable(pkg, projectDir) {
6928
7015
  function findMissingPackages(packages, projectDir) {
6929
7016
  return packages.filter((p) => !isPackageResolvable(p, projectDir));
6930
7017
  }
7018
+
7019
+ // connectors/src/rclone-token-refresh.ts
7020
+ var PROACTIVE_RCLONE_REFRESH_MARGIN_MS = 5 * 60 * 1e3;
7021
+ var DEFAULT_REACTIVE_COOLDOWN_MS = 30 * 1e3;
7022
+ var MAX_TIMER_MS = 2147483647;
7023
+ function createRcloneTokenRefresh(deps) {
7024
+ const now2 = deps.now ?? (() => Date.now());
7025
+ const setTimeoutImpl = deps.setTimeoutImpl ?? ((handler, ms) => setTimeout(handler, ms));
7026
+ const clearTimeoutImpl = deps.clearTimeoutImpl ?? ((handle) => {
7027
+ clearTimeout(handle);
7028
+ });
7029
+ const marginMs = deps.marginMs ?? PROACTIVE_RCLONE_REFRESH_MARGIN_MS;
7030
+ const reactiveCooldownMs = deps.reactiveCooldownMs ?? DEFAULT_REACTIVE_COOLDOWN_MS;
7031
+ let timer = null;
7032
+ let refreshing = false;
7033
+ let disposed = false;
7034
+ let lastRefreshAt = Number.NEGATIVE_INFINITY;
7035
+ function clearTimer() {
7036
+ if (timer !== null) {
7037
+ clearTimeoutImpl(timer);
7038
+ timer = null;
7039
+ }
7040
+ }
7041
+ function cancel() {
7042
+ disposed = true;
7043
+ clearTimer();
7044
+ }
7045
+ async function fire(reason) {
7046
+ if (refreshing || disposed) return;
7047
+ refreshing = true;
7048
+ try {
7049
+ let result;
7050
+ try {
7051
+ result = await deps.tokenMediator({ connectorId: deps.connectorId, reason });
7052
+ } catch (err) {
7053
+ deps.log(
7054
+ `[rclone-token-refresh] mediator threw: ${err instanceof Error ? err.message : String(err)}; reactive auth-error path remains as safety net`
7055
+ );
7056
+ return;
7057
+ }
7058
+ if (disposed) return;
7059
+ if (!result.ok) {
7060
+ deps.log(
7061
+ `[rclone-token-refresh] mediator refused (${result.code}: ${result.message}); reactive auth-error path remains as safety net`
7062
+ );
7063
+ return;
7064
+ }
7065
+ if (!result.token) {
7066
+ deps.log(
7067
+ "[rclone-token-refresh] mediator returned an empty token; reactive auth-error path remains as safety net"
7068
+ );
7069
+ return;
7070
+ }
7071
+ const handle = deps.handleRef.current;
7072
+ if (!handle) {
7073
+ deps.log("[rclone-token-refresh] no live rclone handle to recycle; skipping refresh");
7074
+ return;
7075
+ }
7076
+ const rcloneConfig = await deps.renderConfig(result.token);
7077
+ if (disposed) return;
7078
+ let next;
7079
+ try {
7080
+ next = await deps.rclone.reconfigure(handle, rcloneConfig);
7081
+ } catch (err) {
7082
+ deps.log(
7083
+ `[rclone-token-refresh] reconfigure failed: ${err instanceof Error ? err.message : String(err)}; reactive auth-error path remains as safety net`
7084
+ );
7085
+ return;
7086
+ }
7087
+ if (disposed) {
7088
+ deps.log("[rclone-token-refresh] disposed mid-recycle; stopping freshly-spawned process");
7089
+ try {
7090
+ await deps.rclone.stop(next);
7091
+ } catch {
7092
+ }
7093
+ return;
7094
+ }
7095
+ deps.handleRef.current = next;
7096
+ lastRefreshAt = now2();
7097
+ deps.log(
7098
+ `[rclone-token-refresh] recycled mount with refreshed token (reason=${reason}, expiresAt=${result.expiresAt ?? "none"})`
7099
+ );
7100
+ schedule(result.expiresAt);
7101
+ } finally {
7102
+ refreshing = false;
7103
+ }
7104
+ }
7105
+ function armTimer(fireAtMs) {
7106
+ const delayMs = Math.min(Math.max(0, fireAtMs - now2()), MAX_TIMER_MS);
7107
+ timer = setTimeoutImpl(() => {
7108
+ timer = null;
7109
+ if (now2() < fireAtMs) armTimer(fireAtMs);
7110
+ else void fire("refresh");
7111
+ }, delayMs);
7112
+ timer.unref?.();
7113
+ }
7114
+ function schedule(expiresAtIso) {
7115
+ clearTimer();
7116
+ if (disposed || !expiresAtIso) return;
7117
+ const expiresAtMs = Date.parse(expiresAtIso);
7118
+ if (!Number.isFinite(expiresAtMs)) return;
7119
+ const fireAtMs = expiresAtMs - marginMs;
7120
+ if (fireAtMs - now2() <= 0) {
7121
+ deps.log(`[rclone-token-refresh] token within ${marginMs / 1e3}s of expiry; refreshing now`);
7122
+ } else {
7123
+ deps.log(
7124
+ `[rclone-token-refresh] scheduled in ${Math.round((fireAtMs - now2()) / 1e3)}s (expiresAt=${expiresAtIso})`
7125
+ );
7126
+ }
7127
+ armTimer(fireAtMs);
7128
+ }
7129
+ function onAuthError() {
7130
+ if (refreshing || disposed) return;
7131
+ if (now2() - lastRefreshAt < reactiveCooldownMs) {
7132
+ deps.log(
7133
+ "[rclone-token-refresh] auth-error within refresh cooldown; suppressing reactive refresh"
7134
+ );
7135
+ return;
7136
+ }
7137
+ clearTimer();
7138
+ void fire("retry-401");
7139
+ }
7140
+ return {
7141
+ schedule,
7142
+ onAuthError,
7143
+ cancel,
7144
+ isPending: () => timer !== null
7145
+ };
7146
+ }
6931
7147
  var WorktreeRegistryImpl = class {
6932
7148
  entries = /* @__PURE__ */ new Map();
6933
7149
  register(path2, owner) {
@@ -7948,6 +8164,6 @@ function createConnector() {
7948
8164
  return new FlowAdapter();
7949
8165
  }
7950
8166
 
7951
- export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, ConnectorFieldMissingError, ConnectorManager, ConnectorStartupError, DeployConnector, DevServerConnector, FlowAdapter, GitConnector, GmailConnector, GoogleDriveConnector, LocalConnector, LogBuffer, ManagedGitconfigCollisionError, MattermostConnector, MemoryConnector, MinIOConnector, NOT_READY_SENTINEL, PostgresConnector, RoMountPlaceholderBarrier, S3Connector, SQLiteConnector, SharePointConnector, StaticServerConnector, TunnelConnector, WebDAVConnector, XStateConnector, XStateStoreConnector, atomicReplaceCredential, buildConnectorPromptSection, buildSdkConnectorTools, createConnector, createConnector10, createConnector11, createConnector12, createConnector13, createConnector14, createConnector15, createConnector16, createConnector17, createConnector18, createConnector19, createConnector2, createConnector3, createConnector4, createConnector5, createConnector6, createConnector7, createConnector8, createConnector9, createWorktree, defaultMountPlaceholderBarrier, defaultSpawn, ensureFleetMounted, findGitRoot, findMissingPackages, getConnector, installNpmPackages, isFleetManaged, isPackageResolvable, listConnectors, listWorktrees, registerBuiltinConnectors, removeMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock };
7952
- //# sourceMappingURL=chunk-QF6LBS2C.js.map
7953
- //# sourceMappingURL=chunk-QF6LBS2C.js.map
8167
+ export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, ConnectorFieldMissingError, ConnectorManager, ConnectorStartupError, DEFAULT_REACTIVE_COOLDOWN_MS, DeployConnector, DevServerConnector, FlowAdapter, GitConnector, GmailConnector, GoogleDriveConnector, LocalConnector, LogBuffer, ManagedGitconfigCollisionError, MattermostConnector, MemoryConnector, MinIOConnector, NOT_READY_SENTINEL, PROACTIVE_RCLONE_REFRESH_MARGIN_MS, PostgresConnector, RoMountPlaceholderBarrier, S3Connector, SQLiteConnector, SharePointConnector, StaticServerConnector, TunnelConnector, WebDAVConnector, XStateConnector, XStateStoreConnector, __test, atomicReplaceCredential, buildConnectorPromptSection, buildSdkConnectorTools, createConnector, createConnector10, createConnector11, createConnector12, createConnector13, createConnector14, createConnector15, createConnector16, createConnector17, createConnector18, createConnector19, createConnector2, createConnector3, createConnector4, createConnector5, createConnector6, createConnector7, createConnector8, createConnector9, createRcloneTokenRefresh, createWorktree, defaultMountPlaceholderBarrier, defaultSpawn, ensureFleetMounted, findGitRoot, findMissingPackages, getConnector, installNpmPackages, isFleetManaged, isPackageResolvable, listConnectors, listWorktrees, registerBuiltinConnectors, removeMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock };
8168
+ //# sourceMappingURL=chunk-362QBS57.js.map
8169
+ //# sourceMappingURL=chunk-362QBS57.js.map