@skaile/workspaces 3.22.0 → 3.23.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 (94) hide show
  1. package/CHANGELOG.md +84 -0
  2. package/dist/app-sdk/index.js +1 -1
  3. package/dist/{asset-feeds-6EETZDHH.js → asset-feeds-7XNPNIHN.js} +4 -4
  4. package/dist/{asset-feeds-6EETZDHH.js.map → asset-feeds-7XNPNIHN.js.map} +1 -1
  5. package/dist/asset-manager/index.js +1 -1
  6. package/dist/{chunk-DAWQ22RW.js → chunk-2WY5GFGM.js} +3 -3
  7. package/dist/{chunk-DAWQ22RW.js.map → chunk-2WY5GFGM.js.map} +1 -1
  8. package/dist/{chunk-FBIETQGY.js → chunk-3AUHU52L.js} +2 -2
  9. package/dist/{chunk-FBIETQGY.js.map → chunk-3AUHU52L.js.map} +1 -1
  10. package/dist/{chunk-ZMV3VFDF.js → chunk-57XKQ6VA.js} +6 -6
  11. package/dist/{chunk-ZMV3VFDF.js.map → chunk-57XKQ6VA.js.map} +1 -1
  12. package/dist/{chunk-IUOXPQA3.js → chunk-74PLEDRD.js} +2 -2
  13. package/dist/{chunk-IUOXPQA3.js.map → chunk-74PLEDRD.js.map} +1 -1
  14. package/dist/{chunk-ORC2K2I7.js → chunk-GA2TTHBP.js} +6 -6
  15. package/dist/{chunk-ORC2K2I7.js.map → chunk-GA2TTHBP.js.map} +1 -1
  16. package/dist/{chunk-IST2V7RU.js → chunk-M2AG3GLB.js} +3 -3
  17. package/dist/{chunk-IST2V7RU.js.map → chunk-M2AG3GLB.js.map} +1 -1
  18. package/dist/{chunk-FXHBHT75.js → chunk-NBXH6RTU.js} +51 -15
  19. package/dist/chunk-NBXH6RTU.js.map +1 -0
  20. package/dist/{chunk-AYOYM3R3.js → chunk-NMP4POJO.js} +3 -3
  21. package/dist/{chunk-AYOYM3R3.js.map → chunk-NMP4POJO.js.map} +1 -1
  22. package/dist/{chunk-AA3ZFPWX.js → chunk-OO5ITOUC.js} +3 -3
  23. package/dist/{chunk-AA3ZFPWX.js.map → chunk-OO5ITOUC.js.map} +1 -1
  24. package/dist/{chunk-TDHG7F77.js → chunk-XHVAGSSY.js} +3 -3
  25. package/dist/{chunk-TDHG7F77.js.map → chunk-XHVAGSSY.js.map} +1 -1
  26. package/dist/{chunk-PLLVREB2.js → chunk-YFBDJWRA.js} +104 -13
  27. package/dist/chunk-YFBDJWRA.js.map +1 -0
  28. package/dist/{chunk-23L3P7IB.js → chunk-ZJLO6HFS.js} +2 -2
  29. package/dist/{chunk-23L3P7IB.js.map → chunk-ZJLO6HFS.js.map} +1 -1
  30. package/dist/cli/index.js +27 -27
  31. package/dist/connectors/index.js +1 -1
  32. package/dist/{ensure-sources-LLUFYDS6.js → ensure-sources-KQARQTTZ.js} +4 -4
  33. package/dist/{ensure-sources-LLUFYDS6.js.map → ensure-sources-KQARQTTZ.js.map} +1 -1
  34. package/dist/factory-assets/connectors/box.js +1 -1
  35. package/dist/factory-assets/connectors/deploy.js +1 -1
  36. package/dist/factory-assets/connectors/devserver.js +1 -1
  37. package/dist/factory-assets/connectors/flow/adapter.js +1 -1
  38. package/dist/factory-assets/connectors/flow/run-flow.js +2 -2
  39. package/dist/factory-assets/connectors/flow.js +1 -1
  40. package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -1
  41. package/dist/factory-assets/connectors/git.js +1 -1
  42. package/dist/factory-assets/connectors/gmail.js +1 -1
  43. package/dist/factory-assets/connectors/googledrive.js +1 -1
  44. package/dist/factory-assets/connectors/local.js +1 -1
  45. package/dist/factory-assets/connectors/mattermost.js +1 -1
  46. package/dist/factory-assets/connectors/memory.js +1 -1
  47. package/dist/factory-assets/connectors/minio.js +1 -1
  48. package/dist/factory-assets/connectors/postgres.js +1 -1
  49. package/dist/factory-assets/connectors/s3.js +1 -1
  50. package/dist/factory-assets/connectors/sharepoint.js +1 -1
  51. package/dist/factory-assets/connectors/sqlite.js +1 -1
  52. package/dist/factory-assets/connectors/static-server.js +1 -1
  53. package/dist/factory-assets/connectors/tunnel.js +1 -1
  54. package/dist/factory-assets/connectors/webdav.js +1 -1
  55. package/dist/factory-assets/connectors/xstate-store.js +1 -1
  56. package/dist/factory-assets/connectors/xstate.js +1 -1
  57. package/dist/{helpers-QCDU5PSM.js → helpers-LOJY7SGY.js} +4 -4
  58. package/dist/{helpers-QCDU5PSM.js.map → helpers-LOJY7SGY.js.map} +1 -1
  59. package/dist/{library-publish-ZKA7VRVX.js → library-publish-AVLOQR4R.js} +6 -6
  60. package/dist/{library-publish-ZKA7VRVX.js.map → library-publish-AVLOQR4R.js.map} +1 -1
  61. package/dist/{open-library-JSP4TJJH.js → open-library-A2UKFS2M.js} +5 -5
  62. package/dist/{open-library-JSP4TJJH.js.map → open-library-A2UKFS2M.js.map} +1 -1
  63. package/dist/{project-6WVN7M7B.js → project-NELXHEXE.js} +5 -5
  64. package/dist/{project-6WVN7M7B.js.map → project-NELXHEXE.js.map} +1 -1
  65. package/dist/runner/index.js +5 -5
  66. package/dist/runner/src/capability-roundtrip.d.ts +2 -6
  67. package/dist/runner/src/capability-roundtrip.d.ts.map +1 -1
  68. package/dist/runner/src/lifecycle-handler.d.ts +6 -3
  69. package/dist/runner/src/lifecycle-handler.d.ts.map +1 -1
  70. package/dist/runner/src/reply-routing.d.ts +44 -0
  71. package/dist/runner/src/reply-routing.d.ts.map +1 -0
  72. package/dist/runner/src/serve.d.ts.map +1 -1
  73. package/dist/sdk/asset-manager.js +1 -1
  74. package/dist/sdk/index.js +5 -5
  75. package/dist/sdk/runner.js +5 -5
  76. package/dist/sdk/session.js +2 -2
  77. package/dist/sdk/types.js +1 -1
  78. package/dist/session/index.js +2 -2
  79. package/dist/{source-KC2IJYXJ.js → source-VXH4TL3D.js} +6 -6
  80. package/dist/{source-KC2IJYXJ.js.map → source-VXH4TL3D.js.map} +1 -1
  81. package/dist/{source-manifest-publish-OLSWFW7L.js → source-manifest-publish-6TUZGQX2.js} +7 -7
  82. package/dist/{source-manifest-publish-OLSWFW7L.js.map → source-manifest-publish-6TUZGQX2.js.map} +1 -1
  83. package/dist/tui/index.js +5 -5
  84. package/dist/types/index.js +1 -1
  85. package/dist/types/src/capabilities.d.ts +43 -0
  86. package/dist/types/src/capabilities.d.ts.map +1 -1
  87. package/dist/types/src/envelope.d.ts +3 -3
  88. package/dist/types/src/envelope.d.ts.map +1 -1
  89. package/dist/types/src/index.d.ts +1 -1
  90. package/dist/types/src/index.d.ts.map +1 -1
  91. package/dist/workspace-plugin/index.js +1 -1
  92. package/package.json +1 -1
  93. package/dist/chunk-FXHBHT75.js.map +0 -1
  94. package/dist/chunk-PLLVREB2.js.map +0 -1
@@ -1384,6 +1384,83 @@ var BOOTSTRAP_COMMIT_EMAIL = "skaile@local";
1384
1384
  function gitPrefix(cwd) {
1385
1385
  return ["-c", `safe.directory=${cwd}`];
1386
1386
  }
1387
+ var SKAILE_INTERNAL_DIR = ".skaile";
1388
+ var SKAILE_EXCLUDE_MARKER = "# skaile: platform-internal session state (git connector)";
1389
+ var UNSTAGE_BATCH = 500;
1390
+ async function commitIdentityArgs(cwd) {
1391
+ try {
1392
+ await git(["var", "GIT_COMMITTER_IDENT"], cwd, 5e3);
1393
+ return [];
1394
+ } catch (err) {
1395
+ if (typeof err.code !== "number") return [];
1396
+ return [
1397
+ "-c",
1398
+ `user.name=${BOOTSTRAP_COMMIT_NAME}`,
1399
+ "-c",
1400
+ `user.email=${BOOTSTRAP_COMMIT_EMAIL}`
1401
+ ];
1402
+ }
1403
+ }
1404
+ function gitCommitting(args, cwd, timeout = 3e4) {
1405
+ return commitIdentityArgs(cwd).then((identity) => git([...identity, ...args], cwd, timeout));
1406
+ }
1407
+ async function ensureSkaileExcluded(cwd, log) {
1408
+ try {
1409
+ const commonDir = await git(["rev-parse", "--git-common-dir"], cwd, 5e3);
1410
+ const excludePath = resolve(cwd, commonDir, "info", "exclude");
1411
+ let current = "";
1412
+ try {
1413
+ current = await readFile(excludePath, "utf-8");
1414
+ } catch (err) {
1415
+ if (err.code !== "ENOENT") throw err;
1416
+ await mkdir(dirname(excludePath), { recursive: true });
1417
+ }
1418
+ if (!current.includes(SKAILE_EXCLUDE_MARKER)) {
1419
+ const sep3 = current === "" || current.endsWith("\n") ? "" : "\n";
1420
+ await writeFile(
1421
+ excludePath,
1422
+ `${current}${sep3}${SKAILE_EXCLUDE_MARKER}
1423
+ /${SKAILE_INTERNAL_DIR}/
1424
+ `
1425
+ );
1426
+ log.info("excluded platform-internal state from the checkout", { excludePath });
1427
+ }
1428
+ const born = await gitOrNull(["rev-parse", "--verify", "--quiet", "HEAD"], cwd) !== null;
1429
+ const listed = await gitOrNull(
1430
+ // Pathspec, not a gitignore pattern: a leading "/" is not anchoring
1431
+ // syntax here. These run with cwd at the checkout root, so the bare name
1432
+ // already means the root one — which is what the anchored rule above
1433
+ // excludes. The two halves have to agree about that.
1434
+ // `-z` because git C-quotes any path carrying a non-ASCII byte, a
1435
+ // control character, `"` or `\` (core.quotePath, on by default), and the
1436
+ // quoted form fed back as a pathspec matches nothing. The two paths then
1437
+ // fail differently and both badly: `rm --cached` goes fatal and the catch
1438
+ // below drops the whole batch, while `reset` exits 0 having unstaged
1439
+ // nothing at all — no throw, no warning, and `add -A` re-stages it into
1440
+ // the commit this function exists to keep it out of.
1441
+ born ? ["diff", "--cached", "--name-only", "-z", "--diff-filter=A", "--", SKAILE_INTERNAL_DIR] : ["ls-files", "--cached", "-z", "--", SKAILE_INTERNAL_DIR],
1442
+ cwd
1443
+ );
1444
+ const staged = (listed ?? "").split("\0").filter(Boolean);
1445
+ if (staged.length > 0) {
1446
+ for (let i = 0; i < staged.length; i += UNSTAGE_BATCH) {
1447
+ const batch = staged.slice(i, i + UNSTAGE_BATCH);
1448
+ await git(
1449
+ born ? ["reset", "--quiet", "--", ...batch] : ["rm", "--cached", "--quiet", "--", ...batch],
1450
+ cwd,
1451
+ 15e3
1452
+ );
1453
+ }
1454
+ log.warn("unstaged platform-internal state left in the index by an earlier session", {
1455
+ entries: staged.length
1456
+ });
1457
+ }
1458
+ } catch (err) {
1459
+ log.warn("could not exclude platform-internal state \u2014 it may reach the remote", {
1460
+ error: err instanceof Error ? err.message : String(err)
1461
+ });
1462
+ }
1463
+ }
1387
1464
  async function runGit(args, options) {
1388
1465
  const { stdout } = await execFileAsync2("git", args, {
1389
1466
  encoding: "utf-8",
@@ -1508,7 +1585,7 @@ async function isDirEmpty(dir) {
1508
1585
  async function commitAll(cwd, message) {
1509
1586
  if (!await hasChanges(cwd)) return null;
1510
1587
  await git(["add", "-A"], cwd);
1511
- return git(["commit", "-m", message], cwd);
1588
+ return gitCommitting(["commit", "-m", message], cwd);
1512
1589
  }
1513
1590
  var TokenMediatorError = class extends Error {
1514
1591
  code;
@@ -1622,6 +1699,7 @@ var GitConnector = class extends AbstractConnector {
1622
1699
  this.scheduleRefresh(declaration.id, state, initial.expiresAt);
1623
1700
  }
1624
1701
  }
1702
+ await ensureSkaileExcluded(targetDir, this.log);
1625
1703
  this.log.info("mount ok", {
1626
1704
  targetDir,
1627
1705
  activeBranch: state.activeBranch,
@@ -1915,7 +1993,7 @@ var GitConnector = class extends AbstractConnector {
1915
1993
  }
1916
1994
  this.log.debug("sync (pull) start", { branch: s.activeBranch });
1917
1995
  try {
1918
- await git(["pull", "origin", s.activeBranch], handle.mountPath, 6e4);
1996
+ await gitCommitting(["pull", "origin", s.activeBranch], handle.mountPath, 6e4);
1919
1997
  await syncSubmodules(handle.mountPath, this.log);
1920
1998
  this.log.debug("sync ok");
1921
1999
  } catch (err) {
@@ -2001,20 +2079,29 @@ var GitConnector = class extends AbstractConnector {
2001
2079
  }
2002
2080
  if (lc.mergeOnClose && s.activeBranch !== s.branch) {
2003
2081
  await git(["checkout", s.branch], handle.mountPath);
2004
- await git(["pull", "origin", s.branch], handle.mountPath, 6e4);
2082
+ await gitCommitting(["pull", "origin", s.branch], handle.mountPath, 6e4);
2005
2083
  await syncSubmodules(handle.mountPath, this.log);
2084
+ let merged = true;
2006
2085
  try {
2007
- await git(["merge", s.activeBranch], handle.mountPath);
2008
- } catch {
2086
+ await gitCommitting(["merge", s.activeBranch], handle.mountPath);
2087
+ } catch (err) {
2088
+ this.log.warn("merge failed", {
2089
+ branch: s.activeBranch,
2090
+ error: redactUrlAuth(err instanceof Error ? err.message : String(err))
2091
+ });
2009
2092
  const resolved = await this.resolveConflictsOrAbort(s, handle.mountPath, "merge");
2010
2093
  if (resolved) {
2011
2094
  details.push("Resolved merge conflicts (created .conflict files)");
2095
+ } else {
2096
+ merged = false;
2012
2097
  }
2013
2098
  }
2014
2099
  if (lc.pushOnClose) {
2015
2100
  await git(["push", "origin", s.branch], handle.mountPath, 6e4);
2016
2101
  }
2017
- details.push(`Merged ${s.activeBranch} into ${s.branch}`);
2102
+ details.push(
2103
+ merged ? `Merged ${s.activeBranch} into ${s.branch}` : `Merge of ${s.activeBranch} into ${s.branch} FAILED`
2104
+ );
2018
2105
  }
2019
2106
  return details.join("; ") || void 0;
2020
2107
  } finally {
@@ -2660,14 +2747,18 @@ var GitConnector = class extends AbstractConnector {
2660
2747
  if (s.disposed) return;
2661
2748
  if (s.sync.autoRebase && s.activeBranch !== s.branch) {
2662
2749
  try {
2663
- await git(["rebase", `origin/${s.branch}`], mountPath, 6e4);
2664
- } catch {
2750
+ await gitCommitting(["rebase", `origin/${s.branch}`], mountPath, 6e4);
2751
+ } catch (err) {
2752
+ this.log.warn("rebase failed", {
2753
+ branch: s.branch,
2754
+ error: redactUrlAuth(err instanceof Error ? err.message : String(err))
2755
+ });
2665
2756
  await this.resolveConflictsOrAbort(s, mountPath, "rebase");
2666
2757
  }
2667
2758
  if (s.disposed) return;
2668
2759
  await syncSubmodules(mountPath, this.log);
2669
2760
  } else if (s.sync.autoPull) {
2670
- await git(["pull", "origin", s.activeBranch], mountPath, 6e4);
2761
+ await gitCommitting(["pull", "origin", s.activeBranch], mountPath, 6e4);
2671
2762
  if (s.disposed) return;
2672
2763
  await syncSubmodules(mountPath, this.log);
2673
2764
  }
@@ -2686,9 +2777,9 @@ var GitConnector = class extends AbstractConnector {
2686
2777
  await this.resolveFileConflict(mountPath, file);
2687
2778
  }
2688
2779
  if (mode === "rebase") {
2689
- await git(["-c", "core.editor=true", "rebase", "--continue"], mountPath, 3e4);
2780
+ await gitCommitting(["-c", "core.editor=true", "rebase", "--continue"], mountPath, 3e4);
2690
2781
  } else {
2691
- await git(["commit", "--no-edit"], mountPath);
2782
+ await gitCommitting(["commit", "--no-edit"], mountPath);
2692
2783
  }
2693
2784
  for (const file of conflicted) {
2694
2785
  const ext = file.includes(".") ? file.slice(file.lastIndexOf(".")) : "";
@@ -10718,5 +10809,5 @@ function createConnector() {
10718
10809
  }
10719
10810
 
10720
10811
  export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, BoxConnector, ConnectorFieldMissingError, ConnectorManager, ConnectorStartupError, DeployConnector, DevServerConnector, FlowAdapter, GitConnector, GmailConnector, GoogleDriveConnector, LocalConnector, LogBuffer, ManagedGitconfigCollisionError, MattermostConnector, MemoryConnector, MinIOConnector, PortPool, PostgresConnector, S3Connector, SQLiteConnector, SessionInlineSubFlowRunner, SessionNodeExecutor, SessionSubpromptRunner, SharePointConnector, StaticServerConnector, TunnelConnector, WebDAVConnector, XStateConnector, XStateStoreConnector, __test, atomicReplaceCredential, buildConnectorPromptSection, buildConnectorToolDefs, buildFlowPromptEvent, buildFlowToolDefs, buildSdkConnectorTools, buildSdkFlowTools, createConnector, createConnector10, createConnector11, createConnector12, createConnector13, createConnector14, createConnector15, createConnector16, createConnector17, createConnector18, createConnector19, createConnector2, createConnector20, createConnector3, createConnector4, createConnector5, createConnector6, createConnector7, createConnector8, createConnector9, createFsWatcher, createWorktree, defaultSpawn, driveOrchestratorTurn, ensureDirMode, ensureFleetMounted, ensureRefreshAttemptStamp, findGitRoot, findMissingPackages, getConnector, installNpmPackages, isFleetManaged, isPackageResolvable, listConnectors, listWorktrees, readGitSyncStatus, registerBuiltinConnectors, removeMountBlock, removeUnavailableMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock, writeUnavailableMountBlock };
10721
- //# sourceMappingURL=chunk-PLLVREB2.js.map
10722
- //# sourceMappingURL=chunk-PLLVREB2.js.map
10812
+ //# sourceMappingURL=chunk-YFBDJWRA.js.map
10813
+ //# sourceMappingURL=chunk-YFBDJWRA.js.map