@skaile/workspaces 0.53.0 → 1.0.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 (137) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/{asset-feeds-OEGJ6NOF.js → asset-feeds-677S5NX7.js} +7 -7
  3. package/dist/{asset-feeds-OEGJ6NOF.js.map → asset-feeds-677S5NX7.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/{chunk-VGT2R662.js → chunk-43JDPQJ4.js} +3 -3
  7. package/dist/{chunk-VGT2R662.js.map → chunk-43JDPQJ4.js.map} +1 -1
  8. package/dist/{chunk-EOINYN5T.js → chunk-DW5MIJK3.js} +3 -3
  9. package/dist/{chunk-EOINYN5T.js.map → chunk-DW5MIJK3.js.map} +1 -1
  10. package/dist/{chunk-VE2UIJ7Y.js → chunk-EXNTTJGP.js} +3 -43
  11. package/dist/chunk-EXNTTJGP.js.map +1 -0
  12. package/dist/{chunk-7ZWLZ5H3.js → chunk-FLRHP3UC.js} +3 -3
  13. package/dist/{chunk-7ZWLZ5H3.js.map → chunk-FLRHP3UC.js.map} +1 -1
  14. package/dist/{chunk-V4BGVOJC.js → chunk-K5JIAHDV.js} +6 -6
  15. package/dist/{chunk-V4BGVOJC.js.map → chunk-K5JIAHDV.js.map} +1 -1
  16. package/dist/{chunk-3IHBGDCG.js → chunk-KSISPZV3.js} +2 -2
  17. package/dist/{chunk-3IHBGDCG.js.map → chunk-KSISPZV3.js.map} +1 -1
  18. package/dist/{chunk-WD2NRI3T.js → chunk-PLQVAEM2.js} +2 -2
  19. package/dist/{chunk-WD2NRI3T.js.map → chunk-PLQVAEM2.js.map} +1 -1
  20. package/dist/{chunk-TCNYSHPM.js → chunk-SFVEHSCI.js} +4 -4
  21. package/dist/{chunk-TCNYSHPM.js.map → chunk-SFVEHSCI.js.map} +1 -1
  22. package/dist/{chunk-QLLFCQU5.js → chunk-WSQ5J7CE.js} +403 -1469
  23. package/dist/chunk-WSQ5J7CE.js.map +1 -0
  24. package/dist/{chunk-BXC5547R.js → chunk-XD7GYMAU.js} +3 -3
  25. package/dist/{chunk-BXC5547R.js.map → chunk-XD7GYMAU.js.map} +1 -1
  26. package/dist/cli/index.js +30 -32
  27. package/dist/cli/index.js.map +1 -1
  28. package/dist/connectors/config.js +4 -4
  29. package/dist/connectors/index.js +5 -7
  30. package/dist/connectors/src/config.d.ts +1 -74
  31. package/dist/connectors/src/config.d.ts.map +1 -1
  32. package/dist/connectors/src/connector-manager.d.ts +13 -137
  33. package/dist/connectors/src/connector-manager.d.ts.map +1 -1
  34. package/dist/connectors/src/connector-types.d.ts +3 -25
  35. package/dist/connectors/src/connector-types.d.ts.map +1 -1
  36. package/dist/connectors/src/fleet-utils.d.ts +2 -30
  37. package/dist/connectors/src/fleet-utils.d.ts.map +1 -1
  38. package/dist/connectors/src/fs-utils.d.ts +1 -2
  39. package/dist/connectors/src/fs-utils.d.ts.map +1 -1
  40. package/dist/connectors/src/index.d.ts +2 -12
  41. package/dist/connectors/src/index.d.ts.map +1 -1
  42. package/dist/connectors/src/watcher.d.ts +1 -5
  43. package/dist/connectors/src/watcher.d.ts.map +1 -1
  44. package/dist/core/index.js +3 -3
  45. package/dist/deploy/index.js +3 -3
  46. package/dist/{ensure-sources-GJOXWVWO.js → ensure-sources-OCMHK7LT.js} +5 -5
  47. package/dist/{ensure-sources-GJOXWVWO.js.map → ensure-sources-OCMHK7LT.js.map} +1 -1
  48. package/dist/factory-assets/connectors/deploy.js +5 -7
  49. package/dist/factory-assets/connectors/devserver.js +5 -7
  50. package/dist/factory-assets/connectors/flow/adapter.js +5 -7
  51. package/dist/factory-assets/connectors/flow/engine.js +3 -3
  52. package/dist/factory-assets/connectors/flow/run-flow.js +6 -8
  53. package/dist/factory-assets/connectors/flow.js +5 -7
  54. package/dist/factory-assets/connectors/git.js +5 -7
  55. package/dist/factory-assets/connectors/gmail.js +5 -7
  56. package/dist/factory-assets/connectors/googledrive/CONNECTOR.md +14 -128
  57. package/dist/factory-assets/connectors/googledrive/driver.d.ts +6 -13
  58. package/dist/factory-assets/connectors/googledrive/driver.d.ts.map +1 -1
  59. package/dist/factory-assets/connectors/googledrive.js +5 -7
  60. package/dist/factory-assets/connectors/local.js +5 -7
  61. package/dist/factory-assets/connectors/mattermost.js +5 -7
  62. package/dist/factory-assets/connectors/memory.js +5 -7
  63. package/dist/factory-assets/connectors/minio.js +5 -7
  64. package/dist/factory-assets/connectors/postgres.js +5 -7
  65. package/dist/factory-assets/connectors/s3.js +5 -7
  66. package/dist/factory-assets/connectors/sharepoint/CONNECTOR.md +13 -159
  67. package/dist/factory-assets/connectors/sharepoint/driver.d.ts +6 -12
  68. package/dist/factory-assets/connectors/sharepoint/driver.d.ts.map +1 -1
  69. package/dist/factory-assets/connectors/sharepoint.js +5 -7
  70. package/dist/factory-assets/connectors/sqlite.js +5 -7
  71. package/dist/factory-assets/connectors/static-server.js +5 -7
  72. package/dist/factory-assets/connectors/tunnel.js +5 -7
  73. package/dist/factory-assets/connectors/webdav/CONNECTOR.md +13 -118
  74. package/dist/factory-assets/connectors/webdav/driver.d.ts +6 -15
  75. package/dist/factory-assets/connectors/webdav/driver.d.ts.map +1 -1
  76. package/dist/factory-assets/connectors/webdav.js +5 -7
  77. package/dist/factory-assets/connectors/xstate-store.js +5 -7
  78. package/dist/factory-assets/connectors/xstate.js +5 -7
  79. package/dist/{flows-AGPIE6JM.js → flows-36PZESON.js} +4 -4
  80. package/dist/{flows-AGPIE6JM.js.map → flows-36PZESON.js.map} +1 -1
  81. package/dist/library/index.js +4 -4
  82. package/dist/library/install.js +3 -3
  83. package/dist/{open-library-ERKRGH4B.js → open-library-WRFYABFP.js} +7 -7
  84. package/dist/{open-library-ERKRGH4B.js.map → open-library-WRFYABFP.js.map} +1 -1
  85. package/dist/{paths-D6RUQ522.js → paths-EUNVMONC.js} +5 -5
  86. package/dist/{paths-D6RUQ522.js.map → paths-EUNVMONC.js.map} +1 -1
  87. package/dist/{plugin-store-SGNJTBYS.js → plugin-store-35KIMX6W.js} +5 -5
  88. package/dist/{plugin-store-SGNJTBYS.js.map → plugin-store-35KIMX6W.js.map} +1 -1
  89. package/dist/runner/index.js +7 -9
  90. package/dist/sdk/asset-manager.js +5 -5
  91. package/dist/sdk/core.js +3 -3
  92. package/dist/sdk/flow.js +3 -3
  93. package/dist/sdk/index.js +7 -9
  94. package/dist/sdk/index.js.map +1 -1
  95. package/dist/sdk/runner.js +7 -9
  96. package/dist/{setup-IV2JFW3T.js → setup-HM6HATAC.js} +5 -5
  97. package/dist/{setup-IV2JFW3T.js.map → setup-HM6HATAC.js.map} +1 -1
  98. package/dist/{source-FGOMQMZT.js → source-EZ5Y3CKP.js} +8 -8
  99. package/dist/{source-FGOMQMZT.js.map → source-EZ5Y3CKP.js.map} +1 -1
  100. package/dist/{store-client-GJT2XQ5Z.js → store-client-BUUF7BPK.js} +5 -5
  101. package/dist/{store-client-GJT2XQ5Z.js.map → store-client-BUUF7BPK.js.map} +1 -1
  102. package/dist/tui/index.js +7 -9
  103. package/dist/tui/index.js.map +1 -1
  104. package/dist/workspace-plugin/adapters/mcp.js +3 -3
  105. package/dist/workspace-plugin/adapters/omp.js +3 -3
  106. package/dist/workspace-plugin/index.js +1 -1
  107. package/package.json +1 -13
  108. package/dist/chunk-OVRSNIKJ.js +0 -72
  109. package/dist/chunk-OVRSNIKJ.js.map +0 -1
  110. package/dist/chunk-QLLFCQU5.js.map +0 -1
  111. package/dist/chunk-RAIRWFAN.js +0 -843
  112. package/dist/chunk-RAIRWFAN.js.map +0 -1
  113. package/dist/chunk-VE2UIJ7Y.js.map +0 -1
  114. package/dist/connectors/rclone-config.d.ts +0 -2
  115. package/dist/connectors/rclone-config.js +0 -4
  116. package/dist/connectors/rclone-config.js.map +0 -1
  117. package/dist/connectors/rclone.d.ts +0 -2
  118. package/dist/connectors/rclone.js +0 -5
  119. package/dist/connectors/rclone.js.map +0 -1
  120. package/dist/connectors/src/fleet-health-gate.d.ts +0 -105
  121. package/dist/connectors/src/fleet-health-gate.d.ts.map +0 -1
  122. package/dist/connectors/src/mount-placeholder.d.ts +0 -131
  123. package/dist/connectors/src/mount-placeholder.d.ts.map +0 -1
  124. package/dist/connectors/src/rclone-config/googledrive.d.ts +0 -59
  125. package/dist/connectors/src/rclone-config/googledrive.d.ts.map +0 -1
  126. package/dist/connectors/src/rclone-config/index.d.ts +0 -9
  127. package/dist/connectors/src/rclone-config/index.d.ts.map +0 -1
  128. package/dist/connectors/src/rclone-config/onedrive.d.ts +0 -48
  129. package/dist/connectors/src/rclone-config/onedrive.d.ts.map +0 -1
  130. package/dist/connectors/src/rclone-config/sanitize.d.ts +0 -9
  131. package/dist/connectors/src/rclone-config/sanitize.d.ts.map +0 -1
  132. package/dist/connectors/src/rclone-config/webdav.d.ts +0 -50
  133. package/dist/connectors/src/rclone-config/webdav.d.ts.map +0 -1
  134. package/dist/connectors/src/rclone-process-manager.d.ts +0 -316
  135. package/dist/connectors/src/rclone-process-manager.d.ts.map +0 -1
  136. package/dist/connectors/src/rclone-token-refresh.d.ts +0 -84
  137. package/dist/connectors/src/rclone-token-refresh.d.ts.map +0 -1
@@ -1,13 +1,13 @@
1
1
  export { ALL_PROVIDERS, ManifestYamlEditor, SETTINGS_DEFAULTS, WorkspaceYamlEditor, applyPatch, buildLockFile, checkAgentSkillConformance, computeHash, detectEnvApiKeys, extractForPatch, generatePatch, globalSettingsPath, listPatches, loadSettings, mapLegacyFields, maskApiKey, migrateSettings, portableSpawn, portableSpawnSync, projectSettingsPath, providerEnvKey, readLock, readPatch, readPluginsLockSlice, resolveAllKeys, resolveApiKey, resolveSettings, savePatch, saveSettings, verifyLock, walkForSettings, writeLock, writePluginsLockSlice } from '../chunk-3KPNDTMR.js';
2
- export { ASSET_KIND_DIRS, assetSearchDirs, detectAiResources, detectDomains, detectMonorepoRoot } from '../chunk-ZAP2BDHG.js';
3
2
  export { FACTORY_ASSETS_REPO_NAME, factoryAssetRoots, resolveFactoryAssetsRoot, resolveFactoryAssetsRootOrNull, resolvePackagedAssetsDir, resolveRuntimeAssets, resolveWorkspacesPackageRoot } from '../chunk-W53D5Q52.js';
3
+ export { deployedBase, deployedDir, isDeployed } from '../chunk-F3HNW354.js';
4
+ export { DRIVER_DEFAULTS, resolveDriverPaths } from '../chunk-K5GBV4SA.js';
5
+ export { ASSET_KIND_DIRS, assetSearchDirs, detectAiResources, detectDomains, detectMonorepoRoot } from '../chunk-ZAP2BDHG.js';
4
6
  export { COMPACTION_DEFAULTS, CanonicalRefConflictError, DEFAULT_RECIPE_ATTR, SKAILE_YAML_DEFAULT, SK_WORKSPACE_DEFAULT_NAME, SK_WORKSPACE_SUFFIX, __resetCacheMigrationMemo, buildProvenanceIndex, checkRepoStatus, checkoutPin, cloneRepo, decodeSkaileYaml, deriveSingleMaterializedMcpDeclaration, encodeSkaileYaml, ensureRepo, findWorkspaceRoot, getGlobalCacheDir, getRepoCommit, globalCacheRoot, globalSkaileDir, linkRepo, listSkWorkspaceConfigs, loadMcpServerDeclarations, loadSkWorkspaceConfig, mergeLegacyEntriesInto, mergeSkWorkspaceConfigs, migrateLegacyDir, normalizeConfig, pullRepo, readLinks, resolveAgentDir, resolveAll, resolveAsset, resolveGlobalBackends, resolveGlobalSkWorkspaceConfig, resolveSkWorkspaceConfig, saveSkWorkspaceConfig, scanRepo, sourceCacheKey, sourceShortName, stageMaterializedSkills, unlinkRepo, validateAssetRecipeAttr, validateAssetRecipeFlake, workspaceConfigFilename, writeLinks } from '../chunk-NXC6IEL4.js';
5
7
  export { SKAILE_MANIFEST_FILENAME, decodeSkaileManifest, encodeSkaileManifest, loadSkPublishManifest, saveSkPublishManifest } from '../chunk-DZCK7GRW.js';
6
8
  export { bundleDepRefs, fromAgentMd, fromAgentYaml, fromBundleYaml, fromConnectorMd, fromContractMd, fromFlowYaml, fromMcpServerMd, fromMcpServerMdContent, fromPromptMd, fromSkillMd, parseFrontmatter, parseRequires, scanDirectory, walkDir } from '../chunk-BQCGFPHW.js';
7
9
  export { ASSET_KINDS, ASSET_NAME_HINT, INDIVIDUAL_KINDS, assetRefToDep, assetRefToStr, depToStr, entryFromRaw, entryToRaw, isValidAssetName, parseAssetRef, parseDep, repositoryFromRaw, repositoryToRaw, slugifyAssetName } from '../chunk-GEEW6SY2.js';
8
- export { deployedBase, deployedDir, isDeployed } from '../chunk-F3HNW354.js';
9
10
  export { DRIVER_TARGETS, SUPPORTED_DRIVER_TARGETS, globalBackendRoot } from '../chunk-MENCWIHW.js';
10
- export { DRIVER_DEFAULTS, resolveDriverPaths } from '../chunk-K5GBV4SA.js';
11
11
  export { LogStore, LogStoreDisabledError, NoOpSink, OnLogBridgeSink, SqliteSink, StdoutSink, WsLogSink, createLogStoreFromConfig, createLogger, getLogStore, normalizeError, openSqlite, registerLogStore, resetLogStore, resolveLogStoreConfig, sanitizeData } from '../chunk-JB35MVBN.js';
12
12
  import '../chunk-NSBPE2FW.js';
13
13
  //# sourceMappingURL=index.js.map
@@ -1,14 +1,14 @@
1
1
  import { makeDeployHandle, pluginRegistry } from '../chunk-6E6PKKAD.js';
2
2
  import { portableSpawnSync, portableSpawn } from '../chunk-3KPNDTMR.js';
3
- import '../chunk-ZAP2BDHG.js';
4
3
  import '../chunk-W53D5Q52.js';
4
+ import '../chunk-F3HNW354.js';
5
+ import '../chunk-K5GBV4SA.js';
6
+ import '../chunk-ZAP2BDHG.js';
5
7
  import '../chunk-NXC6IEL4.js';
6
8
  import '../chunk-DZCK7GRW.js';
7
9
  import '../chunk-BQCGFPHW.js';
8
10
  import '../chunk-GEEW6SY2.js';
9
- import '../chunk-F3HNW354.js';
10
11
  import '../chunk-MENCWIHW.js';
11
- import '../chunk-K5GBV4SA.js';
12
12
  import '../chunk-JB35MVBN.js';
13
13
  import '../chunk-NSBPE2FW.js';
14
14
  import * as z from 'zod';
@@ -1,14 +1,14 @@
1
1
  import { logErr, logOk, logInfo } from './chunk-GYPA2Q7F.js';
2
2
  import { WorkspaceYamlEditor } from './chunk-3KPNDTMR.js';
3
- import './chunk-ZAP2BDHG.js';
4
3
  import './chunk-W53D5Q52.js';
4
+ import './chunk-F3HNW354.js';
5
+ import './chunk-K5GBV4SA.js';
6
+ import './chunk-ZAP2BDHG.js';
5
7
  import { sourceCacheKey, sourceShortName, getGlobalCacheDir } from './chunk-NXC6IEL4.js';
6
8
  import './chunk-DZCK7GRW.js';
7
9
  import './chunk-BQCGFPHW.js';
8
10
  import './chunk-GEEW6SY2.js';
9
- import './chunk-F3HNW354.js';
10
11
  import './chunk-MENCWIHW.js';
11
- import './chunk-K5GBV4SA.js';
12
12
  import './chunk-JB35MVBN.js';
13
13
  import './chunk-NSBPE2FW.js';
14
14
  import { spawnSync } from 'child_process';
@@ -73,5 +73,5 @@ function ensureSourcesCloned(projectDir, opts = {}) {
73
73
  }
74
74
 
75
75
  export { ensureSourcesCloned };
76
- //# sourceMappingURL=ensure-sources-GJOXWVWO.js.map
77
- //# sourceMappingURL=ensure-sources-GJOXWVWO.js.map
76
+ //# sourceMappingURL=ensure-sources-OCMHK7LT.js.map
77
+ //# sourceMappingURL=ensure-sources-OCMHK7LT.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../cli/src/ensure-sources.ts"],"names":[],"mappings":"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","file":"ensure-sources-GJOXWVWO.js","sourcesContent":["/**\n * ensure-sources.ts — hydrate the `~/.skaile/cache/sources/` clone cache from a\n * project's `skaile.yaml` `sources:` entries.\n *\n * Called by `skaile init` (idempotent: no-op when no sources declared) and\n * `skaile install` so checking out a project pulls its source clones onto\n * the local machine.\n */\n\nimport { spawnSync } from \"node:child_process\";\nimport { existsSync, mkdirSync } from \"node:fs\";\nimport * as path from \"node:path\";\nimport {\n getGlobalCacheDir,\n type SourceEntry,\n sourceCacheKey,\n sourceShortName,\n WorkspaceYamlEditor,\n} from \"@skaile/workspaces/core\";\nimport { logErr, logInfo, logOk } from \"./helpers.ts\";\n\nfunction sourceClonePath(key: string): string {\n return path.join(getGlobalCacheDir(), key);\n}\n\nexport interface EnsureResult {\n cloned: string[];\n cached: string[];\n failed: string[];\n}\n\n/** Load `sources:` from a project's `skaile.yaml`, or `null` when unavailable. */\nfunction loadProjectSources(yamlPath: string, quiet: boolean): SourceEntry[] | null {\n try {\n return WorkspaceYamlEditor.load(yamlPath).getSources();\n } catch (err) {\n if (!quiet) {\n logErr(`Could not read ${yamlPath}: ${err instanceof Error ? err.message : String(err)}`);\n }\n return null;\n }\n}\n\n/**\n * Hydrate a single source entry into `result`: skip when already cached,\n * otherwise clone and record success/failure. Mutates `result` in place.\n */\nfunction hydrateSourceEntry(entry: SourceEntry, quiet: boolean, result: EnsureResult): void {\n const key = sourceCacheKey(entry.url);\n const slug = sourceShortName(entry.url);\n const dest = sourceClonePath(key);\n if (existsSync(dest)) {\n result.cached.push(slug);\n return;\n }\n mkdirSync(path.dirname(dest), { recursive: true });\n const args = [\"clone\", entry.url, dest];\n if (entry.pin) args.splice(1, 0, \"--branch\", entry.pin);\n const clone = spawnSync(\"git\", args, { stdio: quiet ? \"pipe\" : \"inherit\" });\n if (clone.status !== 0) {\n result.failed.push(slug);\n if (quiet) {\n logErr(`git clone failed for ${entry.url}`);\n }\n return;\n }\n result.cloned.push(slug);\n}\n\n/** Log a full-hydrate summary of cloned + reused-cached entries. */\nfunction logHydrateSummary(result: EnsureResult): void {\n for (const n of result.cloned) logOk(`Cloned source \"${n}\".`);\n if (result.cached.length > 0) {\n logInfo(`Reused cached clones: ${result.cached.join(\", \")}`);\n }\n}\n\n/**\n * Walk `projectDir/skaile.yaml` `sources:` and clone any entries whose\n * clone directory does not yet exist under `~/.skaile/cache/sources/`. Existing\n * clones are left untouched — this is hydration, not sync.\n *\n * Quiet by default: when `quiet: true` the helper only prints failures.\n * On full hydrate (`quiet: false`) it logs each cloned/cached entry.\n */\nexport function ensureSourcesCloned(\n projectDir: string,\n opts: { quiet?: boolean } = {},\n): EnsureResult {\n const result: EnsureResult = { cloned: [], cached: [], failed: [] };\n const yamlPath = path.join(projectDir, \"skaile.yaml\");\n if (!existsSync(yamlPath)) return result;\n\n const quiet = opts.quiet ?? false;\n const sources = loadProjectSources(yamlPath, quiet);\n if (sources === null) return result;\n if (sources.length === 0) return result;\n\n for (const entry of sources) {\n hydrateSourceEntry(entry, quiet, result);\n }\n\n if (!quiet) {\n logHydrateSummary(result);\n }\n\n return result;\n}\n"]}
1
+ {"version":3,"sources":["../cli/src/ensure-sources.ts"],"names":[],"mappings":"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","file":"ensure-sources-OCMHK7LT.js","sourcesContent":["/**\n * ensure-sources.ts — hydrate the `~/.skaile/cache/sources/` clone cache from a\n * project's `skaile.yaml` `sources:` entries.\n *\n * Called by `skaile init` (idempotent: no-op when no sources declared) and\n * `skaile install` so checking out a project pulls its source clones onto\n * the local machine.\n */\n\nimport { spawnSync } from \"node:child_process\";\nimport { existsSync, mkdirSync } from \"node:fs\";\nimport * as path from \"node:path\";\nimport {\n getGlobalCacheDir,\n type SourceEntry,\n sourceCacheKey,\n sourceShortName,\n WorkspaceYamlEditor,\n} from \"@skaile/workspaces/core\";\nimport { logErr, logInfo, logOk } from \"./helpers.ts\";\n\nfunction sourceClonePath(key: string): string {\n return path.join(getGlobalCacheDir(), key);\n}\n\nexport interface EnsureResult {\n cloned: string[];\n cached: string[];\n failed: string[];\n}\n\n/** Load `sources:` from a project's `skaile.yaml`, or `null` when unavailable. */\nfunction loadProjectSources(yamlPath: string, quiet: boolean): SourceEntry[] | null {\n try {\n return WorkspaceYamlEditor.load(yamlPath).getSources();\n } catch (err) {\n if (!quiet) {\n logErr(`Could not read ${yamlPath}: ${err instanceof Error ? err.message : String(err)}`);\n }\n return null;\n }\n}\n\n/**\n * Hydrate a single source entry into `result`: skip when already cached,\n * otherwise clone and record success/failure. Mutates `result` in place.\n */\nfunction hydrateSourceEntry(entry: SourceEntry, quiet: boolean, result: EnsureResult): void {\n const key = sourceCacheKey(entry.url);\n const slug = sourceShortName(entry.url);\n const dest = sourceClonePath(key);\n if (existsSync(dest)) {\n result.cached.push(slug);\n return;\n }\n mkdirSync(path.dirname(dest), { recursive: true });\n const args = [\"clone\", entry.url, dest];\n if (entry.pin) args.splice(1, 0, \"--branch\", entry.pin);\n const clone = spawnSync(\"git\", args, { stdio: quiet ? \"pipe\" : \"inherit\" });\n if (clone.status !== 0) {\n result.failed.push(slug);\n if (quiet) {\n logErr(`git clone failed for ${entry.url}`);\n }\n return;\n }\n result.cloned.push(slug);\n}\n\n/** Log a full-hydrate summary of cloned + reused-cached entries. */\nfunction logHydrateSummary(result: EnsureResult): void {\n for (const n of result.cloned) logOk(`Cloned source \"${n}\".`);\n if (result.cached.length > 0) {\n logInfo(`Reused cached clones: ${result.cached.join(\", \")}`);\n }\n}\n\n/**\n * Walk `projectDir/skaile.yaml` `sources:` and clone any entries whose\n * clone directory does not yet exist under `~/.skaile/cache/sources/`. Existing\n * clones are left untouched — this is hydration, not sync.\n *\n * Quiet by default: when `quiet: true` the helper only prints failures.\n * On full hydrate (`quiet: false`) it logs each cloned/cached entry.\n */\nexport function ensureSourcesCloned(\n projectDir: string,\n opts: { quiet?: boolean } = {},\n): EnsureResult {\n const result: EnsureResult = { cloned: [], cached: [], failed: [] };\n const yamlPath = path.join(projectDir, \"skaile.yaml\");\n if (!existsSync(yamlPath)) return result;\n\n const quiet = opts.quiet ?? false;\n const sources = loadProjectSources(yamlPath, quiet);\n if (sources === null) return result;\n if (sources.length === 0) return result;\n\n for (const entry of sources) {\n hydrateSourceEntry(entry, quiet, result);\n }\n\n if (!quiet) {\n logHydrateSummary(result);\n }\n\n return result;\n}\n"]}
@@ -1,21 +1,19 @@
1
- export { DeployConnector, createConnector2 as createConnector } from '../../chunk-QLLFCQU5.js';
2
- import '../../chunk-OVRSNIKJ.js';
3
- import '../../chunk-VE2UIJ7Y.js';
4
- import '../../chunk-RAIRWFAN.js';
1
+ export { DeployConnector, createConnector2 as createConnector } from '../../chunk-WSQ5J7CE.js';
2
+ import '../../chunk-EXNTTJGP.js';
5
3
  import '../../chunk-6E6PKKAD.js';
6
4
  import '../../chunk-SKADPHAM.js';
7
5
  import '../../chunk-DEYYRFQU.js';
8
6
  import '../../chunk-IFGTRL2I.js';
9
7
  import '../../chunk-3KPNDTMR.js';
10
- import '../../chunk-ZAP2BDHG.js';
11
8
  import '../../chunk-W53D5Q52.js';
9
+ import '../../chunk-F3HNW354.js';
10
+ import '../../chunk-K5GBV4SA.js';
11
+ import '../../chunk-ZAP2BDHG.js';
12
12
  import '../../chunk-NXC6IEL4.js';
13
13
  import '../../chunk-DZCK7GRW.js';
14
14
  import '../../chunk-BQCGFPHW.js';
15
15
  import '../../chunk-GEEW6SY2.js';
16
- import '../../chunk-F3HNW354.js';
17
16
  import '../../chunk-MENCWIHW.js';
18
- import '../../chunk-K5GBV4SA.js';
19
17
  import '../../chunk-JB35MVBN.js';
20
18
  import '../../chunk-NSBPE2FW.js';
21
19
  //# sourceMappingURL=deploy.js.map
@@ -1,21 +1,19 @@
1
- export { DevServerConnector, createConnector3 as createConnector } from '../../chunk-QLLFCQU5.js';
2
- import '../../chunk-OVRSNIKJ.js';
3
- import '../../chunk-VE2UIJ7Y.js';
4
- import '../../chunk-RAIRWFAN.js';
1
+ export { DevServerConnector, createConnector3 as createConnector } from '../../chunk-WSQ5J7CE.js';
2
+ import '../../chunk-EXNTTJGP.js';
5
3
  import '../../chunk-6E6PKKAD.js';
6
4
  import '../../chunk-SKADPHAM.js';
7
5
  import '../../chunk-DEYYRFQU.js';
8
6
  import '../../chunk-IFGTRL2I.js';
9
7
  import '../../chunk-3KPNDTMR.js';
10
- import '../../chunk-ZAP2BDHG.js';
11
8
  import '../../chunk-W53D5Q52.js';
9
+ import '../../chunk-F3HNW354.js';
10
+ import '../../chunk-K5GBV4SA.js';
11
+ import '../../chunk-ZAP2BDHG.js';
12
12
  import '../../chunk-NXC6IEL4.js';
13
13
  import '../../chunk-DZCK7GRW.js';
14
14
  import '../../chunk-BQCGFPHW.js';
15
15
  import '../../chunk-GEEW6SY2.js';
16
- import '../../chunk-F3HNW354.js';
17
16
  import '../../chunk-MENCWIHW.js';
18
- import '../../chunk-K5GBV4SA.js';
19
17
  import '../../chunk-JB35MVBN.js';
20
18
  import '../../chunk-NSBPE2FW.js';
21
19
  //# sourceMappingURL=devserver.js.map
@@ -1,21 +1,19 @@
1
- export { FlowAdapter, createConnector } from '../../../chunk-QLLFCQU5.js';
2
- import '../../../chunk-OVRSNIKJ.js';
3
- import '../../../chunk-VE2UIJ7Y.js';
4
- import '../../../chunk-RAIRWFAN.js';
1
+ export { FlowAdapter, createConnector } from '../../../chunk-WSQ5J7CE.js';
2
+ import '../../../chunk-EXNTTJGP.js';
5
3
  import '../../../chunk-6E6PKKAD.js';
6
4
  export { isBlocking } from '../../../chunk-SKADPHAM.js';
7
5
  import '../../../chunk-DEYYRFQU.js';
8
6
  import '../../../chunk-IFGTRL2I.js';
9
7
  import '../../../chunk-3KPNDTMR.js';
10
- import '../../../chunk-ZAP2BDHG.js';
11
8
  import '../../../chunk-W53D5Q52.js';
9
+ import '../../../chunk-F3HNW354.js';
10
+ import '../../../chunk-K5GBV4SA.js';
11
+ import '../../../chunk-ZAP2BDHG.js';
12
12
  import '../../../chunk-NXC6IEL4.js';
13
13
  import '../../../chunk-DZCK7GRW.js';
14
14
  import '../../../chunk-BQCGFPHW.js';
15
15
  import '../../../chunk-GEEW6SY2.js';
16
- import '../../../chunk-F3HNW354.js';
17
16
  import '../../../chunk-MENCWIHW.js';
18
- import '../../../chunk-K5GBV4SA.js';
19
17
  import '../../../chunk-JB35MVBN.js';
20
18
  import '../../../chunk-NSBPE2FW.js';
21
19
  //# sourceMappingURL=adapter.js.map
@@ -1,14 +1,14 @@
1
1
  export { FlowManifestSchema, computeFlowState, computeFlowStateFromSnapshots, computeSkippable, flowKindProvider, isBlocking, loadAllFlows, loadFlow, loadFlowsFromDir, resolveNextNodes, validateFlow } from '../../../chunk-SKADPHAM.js';
2
2
  import '../../../chunk-3KPNDTMR.js';
3
- import '../../../chunk-ZAP2BDHG.js';
4
3
  import '../../../chunk-W53D5Q52.js';
4
+ import '../../../chunk-F3HNW354.js';
5
+ import '../../../chunk-K5GBV4SA.js';
6
+ import '../../../chunk-ZAP2BDHG.js';
5
7
  import '../../../chunk-NXC6IEL4.js';
6
8
  import '../../../chunk-DZCK7GRW.js';
7
9
  import '../../../chunk-BQCGFPHW.js';
8
10
  import '../../../chunk-GEEW6SY2.js';
9
- import '../../../chunk-F3HNW354.js';
10
11
  import '../../../chunk-MENCWIHW.js';
11
- import '../../../chunk-K5GBV4SA.js';
12
12
  import '../../../chunk-JB35MVBN.js';
13
13
  import '../../../chunk-NSBPE2FW.js';
14
14
  //# sourceMappingURL=engine.js.map
@@ -1,24 +1,22 @@
1
- export { resumeFlow, runFlow } from '../../../chunk-VGT2R662.js';
1
+ export { resumeFlow, runFlow } from '../../../chunk-43JDPQJ4.js';
2
2
  import '../../../chunk-4R6DROGN.js';
3
3
  import '../../../chunk-GXC3TYMQ.js';
4
- import '../../../chunk-QLLFCQU5.js';
5
- import '../../../chunk-OVRSNIKJ.js';
6
- import '../../../chunk-VE2UIJ7Y.js';
7
- import '../../../chunk-RAIRWFAN.js';
4
+ import '../../../chunk-WSQ5J7CE.js';
5
+ import '../../../chunk-EXNTTJGP.js';
8
6
  import '../../../chunk-6E6PKKAD.js';
9
7
  import '../../../chunk-SKADPHAM.js';
10
8
  import '../../../chunk-DEYYRFQU.js';
11
9
  import '../../../chunk-IFGTRL2I.js';
12
10
  import '../../../chunk-3KPNDTMR.js';
13
- import '../../../chunk-ZAP2BDHG.js';
14
11
  import '../../../chunk-W53D5Q52.js';
12
+ import '../../../chunk-F3HNW354.js';
13
+ import '../../../chunk-K5GBV4SA.js';
14
+ import '../../../chunk-ZAP2BDHG.js';
15
15
  import '../../../chunk-NXC6IEL4.js';
16
16
  import '../../../chunk-DZCK7GRW.js';
17
17
  import '../../../chunk-BQCGFPHW.js';
18
18
  import '../../../chunk-GEEW6SY2.js';
19
- import '../../../chunk-F3HNW354.js';
20
19
  import '../../../chunk-MENCWIHW.js';
21
- import '../../../chunk-K5GBV4SA.js';
22
20
  import '../../../chunk-JB35MVBN.js';
23
21
  import '../../../chunk-NSBPE2FW.js';
24
22
  //# sourceMappingURL=run-flow.js.map
@@ -1,21 +1,19 @@
1
- export { FlowAdapter, createConnector } from '../../chunk-QLLFCQU5.js';
2
- import '../../chunk-OVRSNIKJ.js';
3
- import '../../chunk-VE2UIJ7Y.js';
4
- import '../../chunk-RAIRWFAN.js';
1
+ export { FlowAdapter, createConnector } from '../../chunk-WSQ5J7CE.js';
2
+ import '../../chunk-EXNTTJGP.js';
5
3
  import '../../chunk-6E6PKKAD.js';
6
4
  import '../../chunk-SKADPHAM.js';
7
5
  import '../../chunk-DEYYRFQU.js';
8
6
  import '../../chunk-IFGTRL2I.js';
9
7
  import '../../chunk-3KPNDTMR.js';
10
- import '../../chunk-ZAP2BDHG.js';
11
8
  import '../../chunk-W53D5Q52.js';
9
+ import '../../chunk-F3HNW354.js';
10
+ import '../../chunk-K5GBV4SA.js';
11
+ import '../../chunk-ZAP2BDHG.js';
12
12
  import '../../chunk-NXC6IEL4.js';
13
13
  import '../../chunk-DZCK7GRW.js';
14
14
  import '../../chunk-BQCGFPHW.js';
15
15
  import '../../chunk-GEEW6SY2.js';
16
- import '../../chunk-F3HNW354.js';
17
16
  import '../../chunk-MENCWIHW.js';
18
- import '../../chunk-K5GBV4SA.js';
19
17
  import '../../chunk-JB35MVBN.js';
20
18
  import '../../chunk-NSBPE2FW.js';
21
19
  //# sourceMappingURL=flow.js.map
@@ -1,21 +1,19 @@
1
- export { GitConnector, __test, createConnector4 as createConnector, readGitSyncStatus } from '../../chunk-QLLFCQU5.js';
2
- import '../../chunk-OVRSNIKJ.js';
3
- import '../../chunk-VE2UIJ7Y.js';
4
- import '../../chunk-RAIRWFAN.js';
1
+ export { GitConnector, __test, createConnector4 as createConnector, readGitSyncStatus } from '../../chunk-WSQ5J7CE.js';
2
+ import '../../chunk-EXNTTJGP.js';
5
3
  import '../../chunk-6E6PKKAD.js';
6
4
  import '../../chunk-SKADPHAM.js';
7
5
  import '../../chunk-DEYYRFQU.js';
8
6
  import '../../chunk-IFGTRL2I.js';
9
7
  import '../../chunk-3KPNDTMR.js';
10
- import '../../chunk-ZAP2BDHG.js';
11
8
  import '../../chunk-W53D5Q52.js';
9
+ import '../../chunk-F3HNW354.js';
10
+ import '../../chunk-K5GBV4SA.js';
11
+ import '../../chunk-ZAP2BDHG.js';
12
12
  import '../../chunk-NXC6IEL4.js';
13
13
  import '../../chunk-DZCK7GRW.js';
14
14
  import '../../chunk-BQCGFPHW.js';
15
15
  import '../../chunk-GEEW6SY2.js';
16
- import '../../chunk-F3HNW354.js';
17
16
  import '../../chunk-MENCWIHW.js';
18
- import '../../chunk-K5GBV4SA.js';
19
17
  import '../../chunk-JB35MVBN.js';
20
18
  import '../../chunk-NSBPE2FW.js';
21
19
  //# sourceMappingURL=git.js.map
@@ -1,21 +1,19 @@
1
- export { GmailConnector, createConnector5 as createConnector } from '../../chunk-QLLFCQU5.js';
2
- import '../../chunk-OVRSNIKJ.js';
3
- import '../../chunk-VE2UIJ7Y.js';
4
- import '../../chunk-RAIRWFAN.js';
1
+ export { GmailConnector, createConnector5 as createConnector } from '../../chunk-WSQ5J7CE.js';
2
+ import '../../chunk-EXNTTJGP.js';
5
3
  import '../../chunk-6E6PKKAD.js';
6
4
  import '../../chunk-SKADPHAM.js';
7
5
  import '../../chunk-DEYYRFQU.js';
8
6
  import '../../chunk-IFGTRL2I.js';
9
7
  import '../../chunk-3KPNDTMR.js';
10
- import '../../chunk-ZAP2BDHG.js';
11
8
  import '../../chunk-W53D5Q52.js';
9
+ import '../../chunk-F3HNW354.js';
10
+ import '../../chunk-K5GBV4SA.js';
11
+ import '../../chunk-ZAP2BDHG.js';
12
12
  import '../../chunk-NXC6IEL4.js';
13
13
  import '../../chunk-DZCK7GRW.js';
14
14
  import '../../chunk-BQCGFPHW.js';
15
15
  import '../../chunk-GEEW6SY2.js';
16
- import '../../chunk-F3HNW354.js';
17
16
  import '../../chunk-MENCWIHW.js';
18
- import '../../chunk-K5GBV4SA.js';
19
17
  import '../../chunk-JB35MVBN.js';
20
18
  import '../../chunk-NSBPE2FW.js';
21
19
  //# sourceMappingURL=gmail.js.map
@@ -1,150 +1,36 @@
1
1
  ---
2
2
  name: googledrive
3
- description: "Google Drive (Google Files) connector via rclone FUSE."
4
- version: "0.1.0"
3
+ description: "Google Drive connector for host fleet-managed bind mounts."
4
+ version: "0.2.0"
5
5
  entry: ./driver.ts
6
- fields:
7
- - key: auth
8
- label: "Bearer token, service-account JSON path, or JSON credential bundle"
9
- required: true
10
- sensitive: true
11
- - key: options.scope
12
- label: "OAuth scope (drive | drive.readonly | drive.file | drive.appfolder | drive.metadata.readonly). Default: drive"
13
- required: false
14
- sensitive: false
15
- - key: options.rootFolderId
16
- label: "Drive folder ID to mount as the remote root"
17
- required: false
18
- sensitive: false
19
- - key: options.teamDrive
20
- label: "Shared Drive (Team Drive) ID"
21
- required: false
22
- sensitive: false
23
- - key: options.basePath
24
- label: "Subfolder appended under the remote root"
25
- required: false
26
- sensitive: false
27
- - key: options.cacheMaxSize
28
- label: "rclone VFS cache size cap (e.g. '5G'). Default: 5G"
29
- required: false
30
- sensitive: false
31
- - key: options.cacheMaxAge
32
- label: "rclone VFS cache age cap (e.g. '168h'). Default: 168h"
33
- required: false
34
- sensitive: false
35
- - key: options.vfsWriteBack
36
- label: "rclone VFS write-back delay before upload (e.g. '30s', '1m'). Default: 30s"
37
- required: false
38
- sensitive: false
6
+ fields: []
39
7
  keywords:
40
8
  - google
41
9
  - googledrive
42
10
  - google-drive
43
11
  - google-files
44
12
  - drive
45
- - rclone
13
+ - fleet
46
14
  ---
47
15
 
48
16
  ## Google Drive Connector
49
17
 
50
- Exposes a Google Drive folder (or Shared Drive) via rclone's FUSE backend. The
51
- driver delegates the entire data plane (enumeration, download, upload, change
52
- detection, cache management) to an `rclone mount` subprocess managed by
53
- `RcloneProcessManager`.
18
+ Exposes a Google Drive folder or Shared Drive that has already been mounted by
19
+ the host fleet and bind-mounted into the agent container.
54
20
 
55
- ### Configuration
21
+ Package-side Google Drive connectors do not spawn or configure a cloud data
22
+ plane. At connect time the connector id must be listed in
23
+ `SKAILE_FLEET_MANAGED_MOUNTS`; otherwise connect fails with a host fleet-managed
24
+ mount requirement.
56
25
 
57
26
  ```yaml
58
27
  connectors:
59
28
  - id: project-drive
60
29
  driver: googledrive
61
30
  access: read-write
62
- auth: env:GDRIVE_TOKEN
63
- options:
64
- scope: drive
65
- rootFolderId: 0Abc123XYZdefg
66
- basePath: subfolder/optional
67
- cacheMaxSize: 5G
68
- cacheMaxAge: 168h
69
- vfsWriteBack: 30s
70
31
  ```
71
32
 
72
- `vfsWriteBack` controls rclone's `--vfs-write-back` how long a dirty file
73
- sits before upload. Default raised from 5s to 30s so a rapidly-rewritten file
74
- settles before transfer instead of aborting with `sizes differ`.
75
-
76
- `rootFolderId` (optional) restricts the mount to a subtree. Without it the
77
- remote root is the user's "My Drive". `teamDrive` (optional) points the mount
78
- at a Shared Drive — set both for a subtree inside a Shared Drive.
79
-
80
- ### Authentication
81
-
82
- The `auth` field can be:
83
-
84
- - A plain OAuth Bearer token string (rclone has no refresh path; on 401 the
85
- next session start re-provisions a fresh token from the platform DB).
86
- - A JSON object with OAuth refresh support — emitted into the rclone config so
87
- rclone can refresh autonomously:
88
- ```json
89
- {
90
- "accessToken": "...",
91
- "refreshToken": "...",
92
- "expiresAt": 1234567890,
93
- "clientId": "...",
94
- "clientSecret": "..."
95
- }
96
- ```
97
- - A JSON object pointing at a service-account file:
98
- ```json
99
- { "serviceAccountFile": "/etc/skaile/gdrive-sa.json" }
100
- ```
101
-
102
- ### Scopes
103
-
104
- The `options.scope` field maps to rclone's `scope =` for the Google Drive
105
- backend:
106
-
107
- | Scope | Effect |
108
- |---|---|
109
- | `drive` (default) | Full read/write access |
110
- | `drive.readonly` | Read-only access |
111
- | `drive.file` | Only files the app created or opened |
112
- | `drive.appfolder` | The app's hidden data folder |
113
- | `drive.metadata.readonly` | Metadata only |
114
-
115
- ### Implementation: rclone FUSE
116
-
117
- - **mount**: Renders an `[skaile-<id>]` rclone config (`drive` backend, OAuth
118
- token JSON or service-account file, optional root/team-drive restrictions),
119
- spawns `rclone mount` with VFS caching, returns once the FUSE mountpoint is
120
- confirmed in `/proc/self/mounts`.
121
- - **VFS cache mode**: `read-only` mounts use `minimal`; `read-write` uses
122
- `full` so writes are buffered locally before upload.
123
- - **Cache directory**: `/var/cache/skaile/<mountId>` (the parent
124
- `/var/cache/skaile` is bind-mounted from the host per session).
125
- - **sync**: Calls `RcloneProcessManager.flush` (POSTs `/vfs/refresh` then waits
126
- for the in-use counter to reach zero).
127
- - **unmount**: `RcloneProcessManager.stop` flushes, sends SIGTERM, falls back
128
- to SIGKILL + `fusermount3 -u` after a 30s grace.
129
- - **onHibernate / onSessionClose**: Always flush. Cheap and the right default;
130
- no opt-out toggles.
131
- - **Logs**: rclone subprocess JSON log lines are routed through a child logger
132
- with subkind `googledrive+rclone`, alongside the driver's own `googledrive`
133
- entries — both visible via `skaile session logs --kind connector`.
134
-
135
- ### Fleet-managed mode
136
-
137
- When the `SKAILE_FLEET_MANAGED_MOUNTS` env var lists this mount's id, the
138
- host-side `RcloneFleetService` (in the platform backend) has already spawned
139
- a shared `rclone mount` process and bind-mounted its FUSE mountpoint into the
140
- container at the driver's `targetDir`. The driver short-circuits its own
141
- rclone spawn:
142
-
143
- - `mount()` verifies the bind mount is live (`stat` + `readdir` poll up to
144
- 3s), then returns a no-op handle with `state.fleetManaged = true`.
145
- - `unmount()`, `sync()`, `onHibernate()`, `onSessionClose()` all return early
146
- — the fleet owns the rclone process and is responsible for flushing and
147
- teardown.
148
-
149
- The env var is comma-separated; an empty / unset value preserves the
150
- per-session behaviour described above.
33
+ The host is responsible for authentication, remote configuration, cache
34
+ lifecycle, upload flushing, and health handling. The package driver verifies the
35
+ bind is readable, returns a handle with `mountPath`, and treats sync/hibernate/
36
+ close as no-op success.
@@ -1,28 +1,21 @@
1
1
  /**
2
- * GoogleDriveConnector — Google Drive (a.k.a. Google Files) filesystem-face
3
- * connector backed by rclone FUSE.
2
+ * GoogleDriveConnector — host fleet-managed Google Drive filesystem connector.
4
3
  *
5
- * The whole data plane (enumeration, download, upload, change detection,
6
- * cache eviction) is delegated to an `rclone mount` subprocess managed by
7
- * {@link RcloneProcessManager}. This connector only parses the declaration,
8
- * renders the rclone config, hands it off, and forwards lifecycle hooks.
4
+ * Cloud mounts are prepared outside the agent container and exposed through a
5
+ * bind mount. The package-side driver only verifies the bind and returns a
6
+ * no-op lifecycle handle.
9
7
  */
10
8
  import type { ConnectContext, ConnectorDeclaration, ConnectorHandle, FilesystemFace } from "@skaile/workspaces/connectors";
11
9
  import { AbstractConnector } from "@skaile/workspaces/connectors";
12
10
  /**
13
- * Filesystem-face connector for Google Drive — delegates the data plane to an
14
- * `rclone mount` subprocess via `RcloneProcessManager` using the `drive` backend.
15
- * Supports OAuth2 access tokens with optional refresh, service-account JSON files,
16
- * and fleet-managed mode via `SKAILE_FLEET_MANAGED_MOUNTS`.
11
+ * Filesystem-face connector for host fleet-managed Google Drive mounts.
17
12
  * @docLink packages/factory-assets/concepts#googledrive-connector
18
13
  */
19
14
  export declare class GoogleDriveConnector extends AbstractConnector {
20
15
  readonly name = "googledrive";
21
- private rclone;
22
16
  readonly filesystem: FilesystemFace;
23
17
  connect(declaration: ConnectorDeclaration, ctx: ConnectContext): Promise<ConnectorHandle>;
24
- disconnect(handle: ConnectorHandle): Promise<void>;
25
- private _sync;
18
+ disconnect(_handle: ConnectorHandle): Promise<void>;
26
19
  onHibernate(handle: ConnectorHandle): Promise<string | undefined>;
27
20
  onSessionClose(handle: ConnectorHandle): Promise<string | undefined>;
28
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../../../factory-assets/connectors/googledrive/driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,cAAc,EAKf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,iBAAiB,EAOlB,MAAM,+BAA+B,CAAC;AAwCvC;;;;;;GAMG;AACH,qBAAa,oBAAqB,SAAQ,iBAAiB;IACzD,QAAQ,CAAC,IAAI,iBAAiB;IAE9B,OAAO,CAAC,MAAM,CAA8B;IAE5C,QAAQ,CAAC,UAAU,EAAE,cAAc,CAKjC;IAEI,OAAO,CAAC,WAAW,EAAE,oBAAoB,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAkHzF,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAM1C,KAAK;IAuBJ,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAOjE,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAMpF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,oBAAoB,CAEtD"}
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../../../factory-assets/connectors/googledrive/driver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,cAAc,EAGf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,iBAAiB,EAGlB,MAAM,+BAA+B,CAAC;AASvC;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,iBAAiB;IACzD,QAAQ,CAAC,IAAI,iBAAiB;IAE9B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAGjC;IAEI,OAAO,CAAC,WAAW,EAAE,oBAAoB,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAqBzF,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1C,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAKjE,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAIpF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,oBAAoB,CAEtD"}
@@ -1,21 +1,19 @@
1
- export { GoogleDriveConnector, createConnector6 as createConnector } from '../../chunk-QLLFCQU5.js';
2
- import '../../chunk-OVRSNIKJ.js';
3
- import '../../chunk-VE2UIJ7Y.js';
4
- import '../../chunk-RAIRWFAN.js';
1
+ export { GoogleDriveConnector, createConnector6 as createConnector } from '../../chunk-WSQ5J7CE.js';
2
+ import '../../chunk-EXNTTJGP.js';
5
3
  import '../../chunk-6E6PKKAD.js';
6
4
  import '../../chunk-SKADPHAM.js';
7
5
  import '../../chunk-DEYYRFQU.js';
8
6
  import '../../chunk-IFGTRL2I.js';
9
7
  import '../../chunk-3KPNDTMR.js';
10
- import '../../chunk-ZAP2BDHG.js';
11
8
  import '../../chunk-W53D5Q52.js';
9
+ import '../../chunk-F3HNW354.js';
10
+ import '../../chunk-K5GBV4SA.js';
11
+ import '../../chunk-ZAP2BDHG.js';
12
12
  import '../../chunk-NXC6IEL4.js';
13
13
  import '../../chunk-DZCK7GRW.js';
14
14
  import '../../chunk-BQCGFPHW.js';
15
15
  import '../../chunk-GEEW6SY2.js';
16
- import '../../chunk-F3HNW354.js';
17
16
  import '../../chunk-MENCWIHW.js';
18
- import '../../chunk-K5GBV4SA.js';
19
17
  import '../../chunk-JB35MVBN.js';
20
18
  import '../../chunk-NSBPE2FW.js';
21
19
  //# sourceMappingURL=googledrive.js.map
@@ -1,21 +1,19 @@
1
- export { LocalConnector, createConnector7 as createConnector } from '../../chunk-QLLFCQU5.js';
2
- import '../../chunk-OVRSNIKJ.js';
3
- import '../../chunk-VE2UIJ7Y.js';
4
- import '../../chunk-RAIRWFAN.js';
1
+ export { LocalConnector, createConnector7 as createConnector } from '../../chunk-WSQ5J7CE.js';
2
+ import '../../chunk-EXNTTJGP.js';
5
3
  import '../../chunk-6E6PKKAD.js';
6
4
  import '../../chunk-SKADPHAM.js';
7
5
  import '../../chunk-DEYYRFQU.js';
8
6
  import '../../chunk-IFGTRL2I.js';
9
7
  import '../../chunk-3KPNDTMR.js';
10
- import '../../chunk-ZAP2BDHG.js';
11
8
  import '../../chunk-W53D5Q52.js';
9
+ import '../../chunk-F3HNW354.js';
10
+ import '../../chunk-K5GBV4SA.js';
11
+ import '../../chunk-ZAP2BDHG.js';
12
12
  import '../../chunk-NXC6IEL4.js';
13
13
  import '../../chunk-DZCK7GRW.js';
14
14
  import '../../chunk-BQCGFPHW.js';
15
15
  import '../../chunk-GEEW6SY2.js';
16
- import '../../chunk-F3HNW354.js';
17
16
  import '../../chunk-MENCWIHW.js';
18
- import '../../chunk-K5GBV4SA.js';
19
17
  import '../../chunk-JB35MVBN.js';
20
18
  import '../../chunk-NSBPE2FW.js';
21
19
  //# sourceMappingURL=local.js.map
@@ -1,21 +1,19 @@
1
- export { MattermostConnector, createConnector8 as createConnector } from '../../chunk-QLLFCQU5.js';
2
- import '../../chunk-OVRSNIKJ.js';
3
- import '../../chunk-VE2UIJ7Y.js';
4
- import '../../chunk-RAIRWFAN.js';
1
+ export { MattermostConnector, createConnector8 as createConnector } from '../../chunk-WSQ5J7CE.js';
2
+ import '../../chunk-EXNTTJGP.js';
5
3
  import '../../chunk-6E6PKKAD.js';
6
4
  import '../../chunk-SKADPHAM.js';
7
5
  import '../../chunk-DEYYRFQU.js';
8
6
  import '../../chunk-IFGTRL2I.js';
9
7
  import '../../chunk-3KPNDTMR.js';
10
- import '../../chunk-ZAP2BDHG.js';
11
8
  import '../../chunk-W53D5Q52.js';
9
+ import '../../chunk-F3HNW354.js';
10
+ import '../../chunk-K5GBV4SA.js';
11
+ import '../../chunk-ZAP2BDHG.js';
12
12
  import '../../chunk-NXC6IEL4.js';
13
13
  import '../../chunk-DZCK7GRW.js';
14
14
  import '../../chunk-BQCGFPHW.js';
15
15
  import '../../chunk-GEEW6SY2.js';
16
- import '../../chunk-F3HNW354.js';
17
16
  import '../../chunk-MENCWIHW.js';
18
- import '../../chunk-K5GBV4SA.js';
19
17
  import '../../chunk-JB35MVBN.js';
20
18
  import '../../chunk-NSBPE2FW.js';
21
19
  //# sourceMappingURL=mattermost.js.map
@@ -1,21 +1,19 @@
1
- export { MemoryConnector, createConnector9 as createConnector } from '../../chunk-QLLFCQU5.js';
2
- import '../../chunk-OVRSNIKJ.js';
3
- import '../../chunk-VE2UIJ7Y.js';
4
- import '../../chunk-RAIRWFAN.js';
1
+ export { MemoryConnector, createConnector9 as createConnector } from '../../chunk-WSQ5J7CE.js';
2
+ import '../../chunk-EXNTTJGP.js';
5
3
  import '../../chunk-6E6PKKAD.js';
6
4
  import '../../chunk-SKADPHAM.js';
7
5
  import '../../chunk-DEYYRFQU.js';
8
6
  import '../../chunk-IFGTRL2I.js';
9
7
  import '../../chunk-3KPNDTMR.js';
10
- import '../../chunk-ZAP2BDHG.js';
11
8
  import '../../chunk-W53D5Q52.js';
9
+ import '../../chunk-F3HNW354.js';
10
+ import '../../chunk-K5GBV4SA.js';
11
+ import '../../chunk-ZAP2BDHG.js';
12
12
  import '../../chunk-NXC6IEL4.js';
13
13
  import '../../chunk-DZCK7GRW.js';
14
14
  import '../../chunk-BQCGFPHW.js';
15
15
  import '../../chunk-GEEW6SY2.js';
16
- import '../../chunk-F3HNW354.js';
17
16
  import '../../chunk-MENCWIHW.js';
18
- import '../../chunk-K5GBV4SA.js';
19
17
  import '../../chunk-JB35MVBN.js';
20
18
  import '../../chunk-NSBPE2FW.js';
21
19
  //# sourceMappingURL=memory.js.map