@skaile/workspaces 0.45.0 → 0.47.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 (136) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/dist/{asset-feeds-AOZLZMDV.js → asset-feeds-DLRQWELS.js} +7 -7
  3. package/dist/{asset-feeds-AOZLZMDV.js.map → asset-feeds-DLRQWELS.js.map} +1 -1
  4. package/dist/asset-manager/index.js +7 -7
  5. package/dist/asset-manager/installer.js +6 -6
  6. package/dist/asset-manager/renderers.js +2 -2
  7. package/dist/asset-manager/src/index.d.ts.map +1 -1
  8. package/dist/{chunk-VPXV2Z5E.js → chunk-3VBQJZYL.js} +6 -6
  9. package/dist/chunk-3VBQJZYL.js.map +1 -0
  10. package/dist/{chunk-FYLIR4AV.js → chunk-4OCZBSBY.js} +5 -2
  11. package/dist/chunk-4OCZBSBY.js.map +1 -0
  12. package/dist/{chunk-CVWA4RIK.js → chunk-4VPRAG35.js} +5 -5
  13. package/dist/{chunk-CVWA4RIK.js.map → chunk-4VPRAG35.js.map} +1 -1
  14. package/dist/{chunk-RGPBEGP2.js → chunk-CU5Z7GH3.js} +6 -2
  15. package/dist/chunk-CU5Z7GH3.js.map +1 -0
  16. package/dist/{chunk-CBZEIFU4.js → chunk-DDR4OSSM.js} +3 -3
  17. package/dist/{chunk-CBZEIFU4.js.map → chunk-DDR4OSSM.js.map} +1 -1
  18. package/dist/{chunk-L6BKSTAX.js → chunk-DHU4LJZV.js} +16 -18
  19. package/dist/chunk-DHU4LJZV.js.map +1 -0
  20. package/dist/{chunk-PCXU2CVW.js → chunk-FAALG3QN.js} +4 -4
  21. package/dist/{chunk-PCXU2CVW.js.map → chunk-FAALG3QN.js.map} +1 -1
  22. package/dist/{chunk-BLGHFVXE.js → chunk-G3GODNHM.js} +66 -4
  23. package/dist/chunk-G3GODNHM.js.map +1 -0
  24. package/dist/{chunk-JUZGLINM.js → chunk-HETXFD2Q.js} +2 -2
  25. package/dist/{chunk-JUZGLINM.js.map → chunk-HETXFD2Q.js.map} +1 -1
  26. package/dist/{chunk-ETDXTGDF.js → chunk-HOEP5CJQ.js} +3 -3
  27. package/dist/{chunk-ETDXTGDF.js.map → chunk-HOEP5CJQ.js.map} +1 -1
  28. package/dist/{chunk-5FVJXQDP.js → chunk-JXHULIOA.js} +3 -3
  29. package/dist/{chunk-5FVJXQDP.js.map → chunk-JXHULIOA.js.map} +1 -1
  30. package/dist/{chunk-ZAEJ33Y6.js → chunk-LLOXWWB6.js} +5 -5
  31. package/dist/{chunk-ZAEJ33Y6.js.map → chunk-LLOXWWB6.js.map} +1 -1
  32. package/dist/{chunk-N2KV5RK3.js → chunk-ON5NSPB6.js} +8 -8
  33. package/dist/{chunk-N2KV5RK3.js.map → chunk-ON5NSPB6.js.map} +1 -1
  34. package/dist/{chunk-GM3BV6JK.js → chunk-P6HRQPXC.js} +2 -2
  35. package/dist/{chunk-GM3BV6JK.js.map → chunk-P6HRQPXC.js.map} +1 -1
  36. package/dist/{chunk-LHUCCPH4.js → chunk-THAJ4MOW.js} +5 -5
  37. package/dist/{chunk-LHUCCPH4.js.map → chunk-THAJ4MOW.js.map} +1 -1
  38. package/dist/{chunk-XUXVH3JK.js → chunk-WRBF34YE.js} +3 -3
  39. package/dist/{chunk-XUXVH3JK.js.map → chunk-WRBF34YE.js.map} +1 -1
  40. package/dist/{chunk-COSTF7QW.js → chunk-WTFJFW7F.js} +50 -12
  41. package/dist/chunk-WTFJFW7F.js.map +1 -0
  42. package/dist/{chunk-LMRO2QNF.js → chunk-XUUMKMMJ.js} +119 -6
  43. package/dist/chunk-XUUMKMMJ.js.map +1 -0
  44. package/dist/{chunk-XF2BBX6P.js → chunk-Z3ZRI2AE.js} +3 -3
  45. package/dist/{chunk-XF2BBX6P.js.map → chunk-Z3ZRI2AE.js.map} +1 -1
  46. package/dist/cli/index.js +128 -81
  47. package/dist/cli/index.js.map +1 -1
  48. package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
  49. package/dist/cli/src/commands/catalog.d.ts +2 -1
  50. package/dist/cli/src/commands/catalog.d.ts.map +1 -1
  51. package/dist/cli/src/commands/npx.d.ts.map +1 -1
  52. package/dist/cli/src/commands/project.d.ts.map +1 -1
  53. package/dist/cli/src/commands/source.d.ts +17 -4
  54. package/dist/cli/src/commands/source.d.ts.map +1 -1
  55. package/dist/cli/src/commands/validate.d.ts.map +1 -1
  56. package/dist/cli/src/ensure-sources.d.ts.map +1 -1
  57. package/dist/connectors/config.js +4 -4
  58. package/dist/connectors/index.js +6 -6
  59. package/dist/connectors/rclone.js +1 -1
  60. package/dist/connectors/src/rclone-process-manager.d.ts.map +1 -1
  61. package/dist/core/index.js +3 -3
  62. package/dist/core/runtime-assets.js +2 -2
  63. package/dist/core/src/conformance.d.ts +33 -0
  64. package/dist/core/src/conformance.d.ts.map +1 -0
  65. package/dist/core/src/index.d.ts +2 -1
  66. package/dist/core/src/index.d.ts.map +1 -1
  67. package/dist/core/src/repo-manager.d.ts +24 -0
  68. package/dist/core/src/repo-manager.d.ts.map +1 -1
  69. package/dist/core/src/runtime-assets.d.ts.map +1 -1
  70. package/dist/core/src/workspace-config.d.ts.map +1 -1
  71. package/dist/core/workspace-config.js +1 -1
  72. package/dist/deploy/index.js +3 -3
  73. package/dist/discovery/index.js +2 -2
  74. package/dist/{ensure-sources-NSDMTAWN.js → ensure-sources-KLCGXVE6.js} +12 -13
  75. package/dist/ensure-sources-KLCGXVE6.js.map +1 -0
  76. package/dist/factory-assets/connectors/deploy.js +6 -6
  77. package/dist/factory-assets/connectors/devserver.js +6 -6
  78. package/dist/factory-assets/connectors/flow/adapter.js +6 -6
  79. package/dist/factory-assets/connectors/flow/engine.js +3 -3
  80. package/dist/factory-assets/connectors/flow/run-flow.js +7 -7
  81. package/dist/factory-assets/connectors/flow.js +6 -6
  82. package/dist/factory-assets/connectors/git/CONNECTOR.md +8 -0
  83. package/dist/factory-assets/connectors/git/driver.d.ts +55 -1
  84. package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -1
  85. package/dist/factory-assets/connectors/git.js +6 -6
  86. package/dist/factory-assets/connectors/gmail.js +6 -6
  87. package/dist/factory-assets/connectors/googledrive.js +6 -6
  88. package/dist/factory-assets/connectors/local.js +6 -6
  89. package/dist/factory-assets/connectors/mattermost.js +6 -6
  90. package/dist/factory-assets/connectors/memory.js +6 -6
  91. package/dist/factory-assets/connectors/minio.js +6 -6
  92. package/dist/factory-assets/connectors/postgres.js +6 -6
  93. package/dist/factory-assets/connectors/s3.js +6 -6
  94. package/dist/factory-assets/connectors/sharepoint.js +6 -6
  95. package/dist/factory-assets/connectors/sqlite.js +6 -6
  96. package/dist/factory-assets/connectors/static-server.js +6 -6
  97. package/dist/factory-assets/connectors/tunnel.js +6 -6
  98. package/dist/factory-assets/connectors/webdav.js +6 -6
  99. package/dist/factory-assets/connectors/xstate-store.js +6 -6
  100. package/dist/factory-assets/connectors/xstate.js +6 -6
  101. package/dist/{flows-WELXQ7IG.js → flows-PNDUCOJR.js} +3 -3
  102. package/dist/{flows-WELXQ7IG.js.map → flows-PNDUCOJR.js.map} +1 -1
  103. package/dist/library/index.js +6 -6
  104. package/dist/library/install.js +3 -3
  105. package/dist/{open-library-362BZ6OW.js → open-library-COHFCT4N.js} +9 -9
  106. package/dist/{open-library-362BZ6OW.js.map → open-library-COHFCT4N.js.map} +1 -1
  107. package/dist/{paths-4SSFMX5Z.js → paths-2SYXGTZJ.js} +6 -6
  108. package/dist/{paths-4SSFMX5Z.js.map → paths-2SYXGTZJ.js.map} +1 -1
  109. package/dist/{plugin-store-2X2YXJVG.js → plugin-store-UNENLB56.js} +5 -5
  110. package/dist/{plugin-store-2X2YXJVG.js.map → plugin-store-UNENLB56.js.map} +1 -1
  111. package/dist/runner/index.js +8 -8
  112. package/dist/sdk/asset-manager.js +7 -7
  113. package/dist/sdk/core.js +3 -3
  114. package/dist/sdk/flow.js +3 -3
  115. package/dist/sdk/index.js +8 -8
  116. package/dist/sdk/runner.js +8 -8
  117. package/dist/{setup-VGZTFQ32.js → setup-AYH6SR4U.js} +5 -5
  118. package/dist/{setup-VGZTFQ32.js.map → setup-AYH6SR4U.js.map} +1 -1
  119. package/dist/{store-client-XFZFKY3W.js → store-client-U4FMAIWX.js} +6 -6
  120. package/dist/{store-client-XFZFKY3W.js.map → store-client-U4FMAIWX.js.map} +1 -1
  121. package/dist/tui/index.js +8 -8
  122. package/dist/types/manifests.js +1 -1
  123. package/dist/types/src/manifests/skill.d.ts +1 -0
  124. package/dist/types/src/manifests/skill.d.ts.map +1 -1
  125. package/dist/workspace-plugin/adapters/mcp.js +1 -1
  126. package/dist/workspace-plugin/adapters/omp.js +3 -3
  127. package/dist/workspace-plugin/index.js +1 -1
  128. package/package.json +1 -1
  129. package/dist/chunk-BLGHFVXE.js.map +0 -1
  130. package/dist/chunk-COSTF7QW.js.map +0 -1
  131. package/dist/chunk-FYLIR4AV.js.map +0 -1
  132. package/dist/chunk-L6BKSTAX.js.map +0 -1
  133. package/dist/chunk-LMRO2QNF.js.map +0 -1
  134. package/dist/chunk-RGPBEGP2.js.map +0 -1
  135. package/dist/chunk-VPXV2Z5E.js.map +0 -1
  136. package/dist/ensure-sources-NSDMTAWN.js.map +0 -1
@@ -1,11 +1,11 @@
1
1
  import { renderGoogleDriveConfig, renderOneDriveConfig, renderWebDAVConfig } from './chunk-OVRSNIKJ.js';
2
- import { resolveAuthRef, resolveAuth, resolveMountCredentialString, resolveMountCredential } from './chunk-CBZEIFU4.js';
3
- import { PortPool, createFsWatcher, RcloneProcessManager, ensureDirMode } from './chunk-FYLIR4AV.js';
2
+ import { resolveAuthRef, resolveAuth, resolveMountCredentialString, resolveMountCredential } from './chunk-DDR4OSSM.js';
3
+ import { PortPool, createFsWatcher, RcloneProcessManager, ensureDirMode } from './chunk-4OCZBSBY.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-BLGHFVXE.js';
8
+ import { portableSpawn } from './chunk-G3GODNHM.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 path2, { join, dirname, resolve, sep } from 'path';
@@ -814,6 +814,46 @@ function hasChanges(cwd) {
814
814
  const status = git("status --porcelain", cwd);
815
815
  return status.length > 0;
816
816
  }
817
+ function gitOrNull(cmd, cwd) {
818
+ try {
819
+ return git(cmd, cwd);
820
+ } catch {
821
+ return null;
822
+ }
823
+ }
824
+ function countAheadBehind(cwd, remoteRef) {
825
+ const out = gitOrNull(`rev-list --left-right --count ${remoteRef}...HEAD`, cwd);
826
+ if (!out) {
827
+ return { ahead: 0, behind: 0 };
828
+ }
829
+ const parts = out.split(/\s+/);
830
+ const behind = Number.parseInt(parts[0] ?? "0", 10);
831
+ const ahead = Number.parseInt(parts[1] ?? "0", 10);
832
+ return {
833
+ ahead: Number.isFinite(ahead) ? ahead : 0,
834
+ behind: Number.isFinite(behind) ? behind : 0
835
+ };
836
+ }
837
+ function readGitSyncStatus(cwd, baseBranch) {
838
+ const branchRaw = gitOrNull("rev-parse --abbrev-ref HEAD", cwd);
839
+ const branch = branchRaw && branchRaw !== "HEAD" ? branchRaw : null;
840
+ const dirty = (gitOrNull("status --porcelain", cwd) ?? "") !== "";
841
+ const hasUpstream = branch !== null && gitOrNull("rev-parse --abbrev-ref @{upstream}", cwd) !== null;
842
+ const upstream = countAheadBehind(cwd, "@{upstream}");
843
+ const baseRef = isValidGitRefOrSha(baseBranch) ? `origin/${baseBranch}` : "origin/main";
844
+ const base = countAheadBehind(cwd, baseRef);
845
+ const commitSha = gitOrNull("rev-parse HEAD", cwd);
846
+ return {
847
+ branch,
848
+ dirty,
849
+ ahead: upstream.ahead,
850
+ behind: upstream.behind,
851
+ hasUpstream,
852
+ mainAhead: base.ahead,
853
+ mainBehind: base.behind,
854
+ commitSha
855
+ };
856
+ }
817
857
  function localBranchExists(branch, cwd) {
818
858
  try {
819
859
  git(`rev-parse --verify --quiet refs/heads/${branch}`, cwd);
@@ -849,6 +889,35 @@ var GitConnector = class extends AbstractConnector {
849
889
  return this._sync(handle, options);
850
890
  }
851
891
  };
892
+ tools = {
893
+ describeOperations: (handle) => this._describeOperations(handle),
894
+ executeOp: (handle, operation, args) => this._executeOp(handle, operation, args)
895
+ };
896
+ _describeOperations(_handle) {
897
+ return [
898
+ {
899
+ name: "sync_status",
900
+ description: "Report git sync status for this mount: current branch, dirty flag, ahead/behind vs the upstream, whether the branch has a configured upstream (never-pushed when false), and divergence vs the base branch. Read-only; performs no fetch.",
901
+ accessLevel: "read",
902
+ args: [],
903
+ examples: ["sync_status"]
904
+ }
905
+ ];
906
+ }
907
+ async _executeOp(handle, operation, _args) {
908
+ switch (operation) {
909
+ case "sync_status": {
910
+ const cwd = handle.mountPath;
911
+ if (!cwd) {
912
+ throw new Error("git sync_status: mount path unavailable");
913
+ }
914
+ const state = handle.state;
915
+ return JSON.stringify(readGitSyncStatus(cwd, state.branch));
916
+ }
917
+ default:
918
+ throw new Error(`GitConnector has no operation: ${operation}`);
919
+ }
920
+ }
852
921
  async connect(declaration, ctx) {
853
922
  const targetDir = ctx.mountTarget;
854
923
  if (!targetDir) {
@@ -902,6 +971,11 @@ var GitConnector = class extends AbstractConnector {
902
971
  throw err;
903
972
  }
904
973
  }
974
+ if (state.managedGitconfig) {
975
+ this.stripRemoteInlineToken(targetDir);
976
+ } else {
977
+ this.rebakeRemoteAuth(targetDir, state);
978
+ }
905
979
  this.log.info("mount ok", {
906
980
  targetDir,
907
981
  activeBranch: state.activeBranch,
@@ -1646,6 +1720,45 @@ var GitConnector = class extends AbstractConnector {
1646
1720
  }
1647
1721
  return s.url;
1648
1722
  }
1723
+ /**
1724
+ * Rewrite `origin` to drop any inline `user:password@` credentials, leaving
1725
+ * a bare https(s) URL. Tier-2 only: the managed credential helper supplies
1726
+ * (and refreshes) the token, but git ignores helpers when the URL already
1727
+ * carries creds — so the baked-in token must go. Best-effort: a missing
1728
+ * origin or a non-http(s) remote (e.g. file:// in tests) is left untouched.
1729
+ */
1730
+ stripRemoteInlineToken(targetDir) {
1731
+ try {
1732
+ const current = git("remote get-url origin", targetDir, 5e3);
1733
+ if (!current.startsWith("https://") && !current.startsWith("http://")) return;
1734
+ const u = new URL(current);
1735
+ if (!u.username && !u.password) return;
1736
+ u.username = "";
1737
+ u.password = "";
1738
+ git(`remote set-url origin ${u.toString()}`, targetDir, 5e3);
1739
+ } catch (err) {
1740
+ this.log.warn("managed-gitconfig: failed to strip inline token from origin", {
1741
+ error: err instanceof Error ? err.message : String(err)
1742
+ });
1743
+ }
1744
+ }
1745
+ /**
1746
+ * Tier-1 only: rewrite `origin` so it carries the token freshly minted on
1747
+ * this connect. The "use as-is" wake path leaves whatever token the first
1748
+ * connect baked in — long-dead for short-lived (GitHub App) tokens. Without
1749
+ * a Tier-2 helper this URL token is the sole credential, so it must be
1750
+ * refreshed here. No-op for anonymous (no token) or non-https remotes.
1751
+ */
1752
+ rebakeRemoteAuth(targetDir, state) {
1753
+ if (!state.token || !state.url.startsWith("https://")) return;
1754
+ try {
1755
+ git(`remote set-url origin ${this.authUrl(state)}`, targetDir, 5e3);
1756
+ } catch (err) {
1757
+ this.log.warn("failed to refresh inline token on origin", {
1758
+ error: err instanceof Error ? err.message : String(err)
1759
+ });
1760
+ }
1761
+ }
1649
1762
  // ── Periodic fetch ─────────────────────────────────────────────────────────
1650
1763
  startPeriodicFetch(s, mountPath) {
1651
1764
  if (s.fetchTimer) clearInterval(s.fetchTimer);
@@ -8652,6 +8765,6 @@ function createConnector() {
8652
8765
  return new FlowAdapter();
8653
8766
  }
8654
8767
 
8655
- export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, ConnectorFieldMissingError, ConnectorManager, ConnectorStartupError, DEFAULT_REACTIVE_COOLDOWN_MS, DeployConnector, DevServerConnector, FleetHealthGate, 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, probeFleetHealth, registerBuiltinConnectors, removeMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock };
8656
- //# sourceMappingURL=chunk-LMRO2QNF.js.map
8657
- //# sourceMappingURL=chunk-LMRO2QNF.js.map
8768
+ export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, ConnectorFieldMissingError, ConnectorManager, ConnectorStartupError, DEFAULT_REACTIVE_COOLDOWN_MS, DeployConnector, DevServerConnector, FleetHealthGate, 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, probeFleetHealth, readGitSyncStatus, registerBuiltinConnectors, removeMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock };
8769
+ //# sourceMappingURL=chunk-XUUMKMMJ.js.map
8770
+ //# sourceMappingURL=chunk-XUUMKMMJ.js.map