@detergent-software/atk 8.9.0-dev.2 → 8.9.0-dev.20

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 (226) hide show
  1. package/CHANGELOG.md +137 -0
  2. package/README.md +11 -1
  3. package/build/cli.js +18 -6
  4. package/build/cli.js.map +1 -1
  5. package/build/command-manifest.json +1507 -0
  6. package/build/commands/_app.d.ts.map +1 -1
  7. package/build/commands/_app.js +8 -4
  8. package/build/commands/_app.js.map +1 -1
  9. package/build/commands/audit.d.ts.map +1 -1
  10. package/build/commands/audit.js +1 -1
  11. package/build/commands/audit.js.map +1 -1
  12. package/build/commands/browse.js +2 -2
  13. package/build/commands/browse.js.map +1 -1
  14. package/build/commands/cache.d.ts +1 -1
  15. package/build/commands/cache.d.ts.map +1 -1
  16. package/build/commands/cache.js +1 -16
  17. package/build/commands/cache.js.map +1 -1
  18. package/build/commands/config.d.ts.map +1 -1
  19. package/build/commands/config.js +1 -1
  20. package/build/commands/config.js.map +1 -1
  21. package/build/commands/diff.d.ts.map +1 -1
  22. package/build/commands/diff.js +4 -0
  23. package/build/commands/diff.js.map +1 -1
  24. package/build/commands/drift.d.ts.map +1 -1
  25. package/build/commands/drift.js +4 -0
  26. package/build/commands/drift.js.map +1 -1
  27. package/build/commands/index.js +1 -1
  28. package/build/commands/index.js.map +1 -1
  29. package/build/commands/info.d.ts.map +1 -1
  30. package/build/commands/info.js +50 -33
  31. package/build/commands/info.js.map +1 -1
  32. package/build/commands/init.d.ts.map +1 -1
  33. package/build/commands/init.js +4 -2
  34. package/build/commands/init.js.map +1 -1
  35. package/build/commands/install.d.ts.map +1 -1
  36. package/build/commands/install.js +28 -7
  37. package/build/commands/install.js.map +1 -1
  38. package/build/commands/list.js +2 -2
  39. package/build/commands/list.js.map +1 -1
  40. package/build/commands/outdated.js +1 -1
  41. package/build/commands/outdated.js.map +1 -1
  42. package/build/commands/publish.d.ts +1 -1
  43. package/build/commands/publish.d.ts.map +1 -1
  44. package/build/commands/publish.js +32 -36
  45. package/build/commands/publish.js.map +1 -1
  46. package/build/commands/release-notes.d.ts.map +1 -1
  47. package/build/commands/release-notes.js +4 -0
  48. package/build/commands/release-notes.js.map +1 -1
  49. package/build/commands/schema.d.ts +3 -3
  50. package/build/commands/search.js +1 -1
  51. package/build/commands/search.js.map +1 -1
  52. package/build/commands/sync.d.ts +1 -1
  53. package/build/commands/sync.d.ts.map +1 -1
  54. package/build/commands/sync.js +27 -12
  55. package/build/commands/sync.js.map +1 -1
  56. package/build/commands/update.d.ts.map +1 -1
  57. package/build/commands/update.js +58 -9
  58. package/build/commands/update.js.map +1 -1
  59. package/build/commands/why.js +3 -4
  60. package/build/commands/why.js.map +1 -1
  61. package/build/components/Header.d.ts +2 -3
  62. package/build/components/Header.d.ts.map +1 -1
  63. package/build/components/Header.js +2 -9
  64. package/build/components/Header.js.map +1 -1
  65. package/build/components/LocalEditsHint.d.ts +16 -0
  66. package/build/components/LocalEditsHint.d.ts.map +1 -0
  67. package/build/components/LocalEditsHint.js +18 -0
  68. package/build/components/LocalEditsHint.js.map +1 -0
  69. package/build/components/SyncAllInSync.d.ts +5 -1
  70. package/build/components/SyncAllInSync.d.ts.map +1 -1
  71. package/build/components/SyncAllInSync.js +2 -2
  72. package/build/components/SyncAllInSync.js.map +1 -1
  73. package/build/components/header-art.d.ts +7 -0
  74. package/build/components/header-art.d.ts.map +1 -0
  75. package/build/components/header-art.js +14 -0
  76. package/build/components/header-art.js.map +1 -0
  77. package/build/components/index.d.ts +1 -0
  78. package/build/components/index.d.ts.map +1 -1
  79. package/build/components/index.js +1 -0
  80. package/build/components/index.js.map +1 -1
  81. package/build/hooks/useListActions.d.ts.map +1 -1
  82. package/build/hooks/useListActions.js +4 -0
  83. package/build/hooks/useListActions.js.map +1 -1
  84. package/build/hooks/usePublishState.d.ts +38 -207
  85. package/build/hooks/usePublishState.d.ts.map +1 -1
  86. package/build/hooks/usePublishState.js +83 -1501
  87. package/build/hooks/usePublishState.js.map +1 -1
  88. package/build/lib/adapter.js +23 -3
  89. package/build/lib/adapter.js.map +1 -1
  90. package/build/lib/api-client.d.ts +2 -1
  91. package/build/lib/api-client.d.ts.map +1 -1
  92. package/build/lib/api-client.js +10 -1
  93. package/build/lib/api-client.js.map +1 -1
  94. package/build/lib/atk-api/generated/types.gen.d.ts +4 -4
  95. package/build/lib/checksum.d.ts +40 -14
  96. package/build/lib/checksum.d.ts.map +1 -1
  97. package/build/lib/checksum.js +110 -57
  98. package/build/lib/checksum.js.map +1 -1
  99. package/build/lib/config.d.ts.map +1 -1
  100. package/build/lib/config.js +28 -5
  101. package/build/lib/config.js.map +1 -1
  102. package/build/lib/diagnostics.d.ts.map +1 -1
  103. package/build/lib/diagnostics.js +5 -2
  104. package/build/lib/diagnostics.js.map +1 -1
  105. package/build/lib/diff-command.js +1 -1
  106. package/build/lib/diff-command.js.map +1 -1
  107. package/build/lib/errors.d.ts +4 -1
  108. package/build/lib/errors.d.ts.map +1 -1
  109. package/build/lib/errors.js.map +1 -1
  110. package/build/lib/format-age.d.ts +3 -0
  111. package/build/lib/format-age.d.ts.map +1 -0
  112. package/build/lib/format-age.js +18 -0
  113. package/build/lib/format-age.js.map +1 -0
  114. package/build/lib/installer.d.ts +2 -7
  115. package/build/lib/installer.d.ts.map +1 -1
  116. package/build/lib/installer.js +30 -5
  117. package/build/lib/installer.js.map +1 -1
  118. package/build/lib/local-edits.d.ts +72 -0
  119. package/build/lib/local-edits.d.ts.map +1 -0
  120. package/build/lib/local-edits.js +145 -0
  121. package/build/lib/local-edits.js.map +1 -0
  122. package/build/lib/lockfile.d.ts +12 -8
  123. package/build/lib/lockfile.d.ts.map +1 -1
  124. package/build/lib/lockfile.js +193 -52
  125. package/build/lib/lockfile.js.map +1 -1
  126. package/build/lib/mover.d.ts.map +1 -1
  127. package/build/lib/mover.js +8 -12
  128. package/build/lib/mover.js.map +1 -1
  129. package/build/lib/offline.d.ts +19 -0
  130. package/build/lib/offline.d.ts.map +1 -0
  131. package/build/lib/offline.js +26 -0
  132. package/build/lib/offline.js.map +1 -0
  133. package/build/lib/owned-paths.d.ts +4 -2
  134. package/build/lib/owned-paths.d.ts.map +1 -1
  135. package/build/lib/owned-paths.js +19 -6
  136. package/build/lib/owned-paths.js.map +1 -1
  137. package/build/lib/pastel/commander-specs.d.ts +7 -0
  138. package/build/lib/pastel/commander-specs.d.ts.map +1 -0
  139. package/build/lib/pastel/commander-specs.js +50 -0
  140. package/build/lib/pastel/commander-specs.js.map +1 -0
  141. package/build/lib/pastel/generate-arguments.d.ts +3 -3
  142. package/build/lib/pastel/generate-arguments.d.ts.map +1 -1
  143. package/build/lib/pastel/generate-arguments.js +25 -22
  144. package/build/lib/pastel/generate-arguments.js.map +1 -1
  145. package/build/lib/pastel/generate-command.d.ts +7 -5
  146. package/build/lib/pastel/generate-command.d.ts.map +1 -1
  147. package/build/lib/pastel/generate-command.js +32 -67
  148. package/build/lib/pastel/generate-command.js.map +1 -1
  149. package/build/lib/pastel/generate-commands.d.ts +3 -5
  150. package/build/lib/pastel/generate-commands.d.ts.map +1 -1
  151. package/build/lib/pastel/generate-commands.js +6 -10
  152. package/build/lib/pastel/generate-commands.js.map +1 -1
  153. package/build/lib/pastel/generate-options.d.ts +3 -3
  154. package/build/lib/pastel/generate-options.d.ts.map +1 -1
  155. package/build/lib/pastel/generate-options.js +16 -13
  156. package/build/lib/pastel/generate-options.js.map +1 -1
  157. package/build/lib/pastel/index.d.ts +26 -4
  158. package/build/lib/pastel/index.d.ts.map +1 -1
  159. package/build/lib/pastel/index.js +104 -18
  160. package/build/lib/pastel/index.js.map +1 -1
  161. package/build/lib/pastel/internal-types.d.ts +39 -8
  162. package/build/lib/pastel/internal-types.d.ts.map +1 -1
  163. package/build/lib/pastel/manifest.d.ts +8 -0
  164. package/build/lib/pastel/manifest.d.ts.map +1 -0
  165. package/build/lib/pastel/manifest.js +7 -0
  166. package/build/lib/pastel/manifest.js.map +1 -0
  167. package/build/lib/pastel/read-commands.d.ts +7 -2
  168. package/build/lib/pastel/read-commands.d.ts.map +1 -1
  169. package/build/lib/pastel/read-commands.js +51 -30
  170. package/build/lib/pastel/read-commands.js.map +1 -1
  171. package/build/lib/pastel/render-command.d.ts +13 -0
  172. package/build/lib/pastel/render-command.d.ts.map +1 -0
  173. package/build/lib/pastel/render-command.js +56 -0
  174. package/build/lib/pastel/render-command.js.map +1 -0
  175. package/build/lib/publish-flow.d.ts +225 -0
  176. package/build/lib/publish-flow.d.ts.map +1 -0
  177. package/build/lib/publish-flow.js +1242 -0
  178. package/build/lib/publish-flow.js.map +1 -0
  179. package/build/lib/publish-run.d.ts +55 -0
  180. package/build/lib/publish-run.d.ts.map +1 -0
  181. package/build/lib/publish-run.js +164 -0
  182. package/build/lib/publish-run.js.map +1 -0
  183. package/build/lib/publisher.d.ts +11 -16
  184. package/build/lib/publisher.d.ts.map +1 -1
  185. package/build/lib/publisher.js +25 -42
  186. package/build/lib/publisher.js.map +1 -1
  187. package/build/lib/registry.d.ts +15 -1
  188. package/build/lib/registry.d.ts.map +1 -1
  189. package/build/lib/registry.js +107 -24
  190. package/build/lib/registry.js.map +1 -1
  191. package/build/lib/root-path.d.ts +11 -0
  192. package/build/lib/root-path.d.ts.map +1 -1
  193. package/build/lib/root-path.js +15 -1
  194. package/build/lib/root-path.js.map +1 -1
  195. package/build/lib/schemas/config.js +1 -1
  196. package/build/lib/schemas/config.js.map +1 -1
  197. package/build/lib/schemas/lockfile.d.ts +156 -23
  198. package/build/lib/schemas/lockfile.d.ts.map +1 -1
  199. package/build/lib/schemas/lockfile.js +100 -79
  200. package/build/lib/schemas/lockfile.js.map +1 -1
  201. package/build/lib/staging.d.ts +15 -0
  202. package/build/lib/staging.d.ts.map +1 -0
  203. package/build/lib/staging.js +33 -0
  204. package/build/lib/staging.js.map +1 -0
  205. package/build/lib/sync.d.ts +22 -6
  206. package/build/lib/sync.d.ts.map +1 -1
  207. package/build/lib/sync.js +59 -7
  208. package/build/lib/sync.js.map +1 -1
  209. package/build/lib/uninstaller.js +2 -2
  210. package/build/lib/uninstaller.js.map +1 -1
  211. package/build/lib/update-check.d.ts.map +1 -1
  212. package/build/lib/update-check.js +5 -1
  213. package/build/lib/update-check.js.map +1 -1
  214. package/build/lib/updater.d.ts +31 -1
  215. package/build/lib/updater.d.ts.map +1 -1
  216. package/build/lib/updater.js +143 -4
  217. package/build/lib/updater.js.map +1 -1
  218. package/build/lib/usage-error.d.ts +20 -0
  219. package/build/lib/usage-error.d.ts.map +1 -0
  220. package/build/lib/usage-error.js +41 -0
  221. package/build/lib/usage-error.js.map +1 -0
  222. package/build/lib/write-file.d.ts +5 -0
  223. package/build/lib/write-file.d.ts.map +1 -1
  224. package/build/lib/write-file.js +10 -7
  225. package/build/lib/write-file.js.map +1 -1
  226. package/package.json +81 -81
@@ -4,9 +4,11 @@ import { type InstalledAsset, type Lockfile } from './schemas/lockfile.js';
4
4
  export interface AcquireLockOptions {
5
5
  /** Maximum time (ms) to wait to acquire the lock. Default: 30 000. */
6
6
  acquireTimeout?: number;
7
+ /** Interval (ms) at which the holder refreshes the lock. Default: 10 000. */
8
+ refreshInterval?: number;
7
9
  /** Interval (ms) between retry attempts. Default: 200. */
8
10
  retryInterval?: number;
9
- /** Time (ms) after which a held lock is considered stale. Default: 60 000. */
11
+ /** Time (ms) without a refresh after which a held lock is considered stale. Default: 60 000. */
10
12
  staleTimeout?: number;
11
13
  }
12
14
  /** What identifies an installed asset in the lockfile. */
@@ -47,14 +49,14 @@ export type DependencyChainResult = {
47
49
  } | {
48
50
  name: string;
49
51
  org?: string;
50
- status: 'not_installed';
52
+ status: 'not-installed';
51
53
  };
52
54
  export declare class LockfileError extends GuidedError {
53
55
  name: string;
54
56
  }
55
57
  export declare class LockfileLockedError extends GuidedError {
56
58
  name: string;
57
- constructor(pid: number, sentinelPath: string, options?: GuidedErrorOptions);
59
+ constructor(pid: number | undefined, sentinelPath: string, options?: GuidedErrorOptions);
58
60
  }
59
61
  /** What the user sees in place of a {@link LockfileLockedError}'s PID and sentinel path. */
60
62
  export declare const LOCKFILE_LOCKED_MESSAGE = "Another ATK process is currently modifying this project. Please wait and try again.";
@@ -62,10 +64,12 @@ export declare const LOCKFILE_LOCKED_MESSAGE = "Another ATK process is currently
62
64
  * Acquire an advisory lock on the lockfile.
63
65
  *
64
66
  * Creates a sentinel file (`.atk-lock.json.lock`) atomically using the `'wx'`
65
- * flag. If the sentinel already exists the function will:
66
- * 1. Read the sentinel to get the holding PID and timestamp.
67
- * 2. If the holding PID is dead **or** the lock is older than `staleTimeout`,
68
- * remove the stale sentinel and retry immediately.
67
+ * flag, then refreshes its mtime every `refreshInterval` ms until
68
+ * {@link releaseLockfileLock}. If the sentinel already exists the function will:
69
+ * 1. Read the sentinel's holding PID and its mtime (the holder's last refresh).
70
+ * 2. If the holding PID is dead **or** the holder hasn't refreshed it for `staleTimeout`
71
+ * (the only test when nobody can read it), remove the stale sentinel under a guard
72
+ * file and retry immediately.
69
73
  * 3. Otherwise wait `retryInterval` ms and retry, up to `acquireTimeout` ms total.
70
74
  *
71
75
  * @throws {LockfileLockedError} if the lock cannot be acquired within the timeout.
@@ -209,7 +213,7 @@ export declare function setOrgReviewers(lockfile: Lockfile, usernames: string[])
209
213
  * Returns a discriminated union indicating whether the asset is:
210
214
  * - `direct`: explicitly installed by the user
211
215
  * - `dependency`: pulled in as a dependency, with chain(s) to direct root(s)
212
- * - `not_installed`: not found in the lockfile
216
+ * - `not-installed`: not found in the lockfile
213
217
  * - `orphaned`: installed as a dependency but no path to a direct root exists
214
218
  */
215
219
  export declare function traceDependencyChain(lockfile: Lockfile, assetName: string, assetType?: AssetType, assetOrg?: string): DependencyChainResult;
@@ -1 +1 @@
1
- {"version":3,"file":"lockfile.d.ts","sourceRoot":"","sources":["../../src/lib/lockfile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lockfile.d.ts","sourceRoot":"","sources":["../../src/lib/lockfile.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { existsSync } from 'node:fs';
2
- import { readFile, unlink, writeFile } from 'node:fs/promises';
2
+ import { lstat, readFile, unlink, utimes, writeFile } from 'node:fs/promises';
3
3
  import { join } from 'node:path';
4
4
  import { setTimeout as delay } from 'node:timers/promises';
5
5
  import { isExcludedForTools } from './asset-tools.js';
@@ -9,20 +9,30 @@ import { LockfileSchema } from './schemas/lockfile.js';
9
9
  import { writeJsonFile } from './write-file.js';
10
10
  const LOCKFILE_NAME = '.atk-lock.json';
11
11
  const LOCK_SENTINEL_NAME = '.atk-lock.json.lock';
12
+ /** Held by a run while it removes a stale sentinel, so two runs never remove each other's new lock. */
13
+ const LOCK_GUARD_SUFFIX = '.stale';
12
14
  const CURRENT_LOCK_VERSION = 1;
13
- /** Default timeout (ms) after which a lock is considered stale even if the PID is alive. */
15
+ /** Default time (ms) without a refresh after which a lock is stale, even if its PID is alive (a reused PID). */
14
16
  const DEFAULT_STALE_TIMEOUT_MS = 60_000;
17
+ /** Default interval (ms) at which the holder refreshes the sentinel's mtime. */
18
+ const DEFAULT_REFRESH_INTERVAL_MS = 10_000;
15
19
  /** Default interval (ms) between retry attempts when the lock is held. */
16
20
  const DEFAULT_RETRY_INTERVAL_MS = 200;
17
21
  /** Default maximum time (ms) to wait to acquire the lock before giving up. */
18
22
  const DEFAULT_ACQUIRE_TIMEOUT_MS = 30_000;
23
+ /** Age (ms) after which a guard was left by a run that crashed: one is held only for a read and an unlink. */
24
+ const GUARD_STALE_MS = 10_000;
25
+ /** How long (ms) to retry a sentinel create that Windows refuses while another run deletes it. */
26
+ const BUSY_RETRY_MS = 2_000;
27
+ /** The refresh timer of each lock this process holds, by sentinel path. */
28
+ const heartbeats = new Map();
19
29
  export class LockfileError extends GuidedError {
20
30
  name = 'LockfileError';
21
31
  }
22
32
  export class LockfileLockedError extends GuidedError {
23
33
  name = 'LockfileLockedError';
24
34
  constructor(pid, sentinelPath, options = {}) {
25
- super(`Lockfile is held by PID ${pid} (sentinel: ${sentinelPath})`, options);
35
+ super(`Lockfile is held by ${pid === undefined ? 'another process' : `PID ${pid}`} (sentinel: ${sentinelPath})`, options);
26
36
  }
27
37
  }
28
38
  /** What the user sees in place of a {@link LockfileLockedError}'s PID and sentinel path. */
@@ -31,10 +41,12 @@ export const LOCKFILE_LOCKED_MESSAGE = 'Another ATK process is currently modifyi
31
41
  * Acquire an advisory lock on the lockfile.
32
42
  *
33
43
  * Creates a sentinel file (`.atk-lock.json.lock`) atomically using the `'wx'`
34
- * flag. If the sentinel already exists the function will:
35
- * 1. Read the sentinel to get the holding PID and timestamp.
36
- * 2. If the holding PID is dead **or** the lock is older than `staleTimeout`,
37
- * remove the stale sentinel and retry immediately.
44
+ * flag, then refreshes its mtime every `refreshInterval` ms until
45
+ * {@link releaseLockfileLock}. If the sentinel already exists the function will:
46
+ * 1. Read the sentinel's holding PID and its mtime (the holder's last refresh).
47
+ * 2. If the holding PID is dead **or** the holder hasn't refreshed it for `staleTimeout`
48
+ * (the only test when nobody can read it), remove the stale sentinel under a guard
49
+ * file and retry immediately.
38
50
  * 3. Otherwise wait `retryInterval` ms and retry, up to `acquireTimeout` ms total.
39
51
  *
40
52
  * @throws {LockfileLockedError} if the lock cannot be acquired within the timeout.
@@ -42,60 +54,55 @@ export const LOCKFILE_LOCKED_MESSAGE = 'Another ATK process is currently modifyi
42
54
  export async function acquireLockfileLock(projectDir, options) {
43
55
  const sentinelPath = getLockSentinelPath(projectDir);
44
56
  const acquireTimeout = options?.acquireTimeout ?? DEFAULT_ACQUIRE_TIMEOUT_MS;
57
+ const refreshInterval = options?.refreshInterval ?? DEFAULT_REFRESH_INTERVAL_MS;
45
58
  const retryInterval = options?.retryInterval ?? DEFAULT_RETRY_INTERVAL_MS;
46
59
  const staleTimeout = options?.staleTimeout ?? DEFAULT_STALE_TIMEOUT_MS;
47
60
  const deadline = Date.now() + acquireTimeout;
61
+ let busySince;
48
62
  while (true) {
49
63
  try {
50
64
  const data = { pid: process.pid, timestamp: Date.now() };
51
65
  await writeFile(sentinelPath, JSON.stringify(data), { flag: 'wx' });
52
66
  // Sentinel created successfully — lock acquired.
67
+ startHeartbeat(sentinelPath, refreshInterval);
53
68
  return;
54
69
  }
55
70
  catch (err) {
56
- if (!isEnoentOrExist(err, 'EEXIST')) {
57
- throw err;
58
- }
59
- // Sentinel already exists — inspect it.
60
- let existing;
61
- try {
62
- const raw = await readFile(sentinelPath, 'utf-8');
63
- existing = JSON.parse(raw);
64
- }
65
- catch {
66
- // If we cannot read/parse the sentinel, treat it as stale and
67
- // remove it so we can retry on the next iteration.
68
- try {
69
- await unlink(sentinelPath);
70
- }
71
- catch {
72
- // Another process may have already removed it — ignore.
71
+ if (isBusyError(err)) {
72
+ // Windows refuses the create while another run's delete of the sentinel is pending; a
73
+ // directory we can't write to refuses it for good, so give up after a moment.
74
+ busySince ??= Date.now();
75
+ if (Date.now() - busySince >= BUSY_RETRY_MS || Date.now() >= deadline) {
76
+ throw err;
73
77
  }
78
+ await delay(retryInterval);
74
79
  continue;
75
80
  }
76
- const isStale = !isProcessAlive(existing.pid) || Date.now() - existing.timestamp > staleTimeout;
77
- if (isStale) {
78
- try {
79
- await unlink(sentinelPath);
80
- }
81
- catch {
82
- // Another process may have already removed it — ignore.
83
- }
84
- continue;
85
- }
86
- // Lock is held by a live process and is not stale — wait and retry.
87
- if (Date.now() >= deadline) {
88
- throw new LockfileLockedError(existing.pid, sentinelPath, {
89
- hint: 'Another ATK process holds the lock. Wait for it to finish, or remove the stale sentinel file.',
90
- });
91
- }
92
- await delay(retryInterval);
93
- if (Date.now() >= deadline) {
94
- throw new LockfileLockedError(existing.pid, sentinelPath, {
95
- hint: 'Another ATK process holds the lock. Wait for it to finish, or remove the stale sentinel file.',
96
- });
81
+ if (!isEnoentOrExist(err, 'EEXIST')) {
82
+ throw err;
97
83
  }
98
84
  }
85
+ busySince = undefined;
86
+ // Sentinel already exists — inspect it.
87
+ const existing = await inspectSentinel(sentinelPath);
88
+ if (existing === 'gone') {
89
+ continue;
90
+ }
91
+ if (isSentinelStale(existing, staleTimeout) && (await removeStaleSentinel(sentinelPath, staleTimeout))) {
92
+ continue;
93
+ }
94
+ // Lock is held by a live process, or another run is removing it — wait and retry.
95
+ if (Date.now() >= deadline) {
96
+ throw new LockfileLockedError(existing.pid, sentinelPath, {
97
+ hint: 'Another ATK process holds the lock. Wait for it to finish, or remove the stale sentinel file.',
98
+ });
99
+ }
100
+ await delay(retryInterval);
101
+ if (Date.now() >= deadline) {
102
+ throw new LockfileLockedError(existing.pid, sentinelPath, {
103
+ hint: 'Another ATK process holds the lock. Wait for it to finish, or remove the stale sentinel file.',
104
+ });
105
+ }
99
106
  }
100
107
  }
101
108
  /**
@@ -289,11 +296,14 @@ export async function readLockfile(projectDir) {
289
296
  catch {
290
297
  throw new LockfileError(`Invalid lockfile at ${lockfilePath}: Invalid JSON`);
291
298
  }
299
+ const newer = await newerLockVersionError(lockfilePath, parsed);
300
+ if (newer)
301
+ throw newer;
292
302
  const result = LockfileSchema.safeParse(parsed);
293
303
  if (result.success) {
294
304
  return sanitizeLockfileData(result.data);
295
305
  }
296
- throw new LockfileError(`Invalid lockfile at ${lockfilePath}: ${result.error.issues.map((i) => i.message).join(', ')}`);
306
+ throw new LockfileError(`Invalid lockfile at ${lockfilePath}: ${result.error.issues.map((i) => (i.path.length > 0 ? `${i.path.join('.')}: ${i.message}` : i.message)).join(', ')}`);
297
307
  }
298
308
  /**
299
309
  * Release the advisory lock by removing the sentinel file.
@@ -301,6 +311,12 @@ export async function readLockfile(projectDir) {
301
311
  */
302
312
  export async function releaseLockfileLock(projectDir) {
303
313
  const sentinelPath = getLockSentinelPath(projectDir);
314
+ stopHeartbeat(sentinelPath);
315
+ // A holder that stalled past the stale timeout may have lost the lock: leave the new holder's.
316
+ const holder = await inspectSentinel(sentinelPath);
317
+ if (holder !== 'gone' && holder.pid !== undefined && holder.pid !== process.pid) {
318
+ return;
319
+ }
304
320
  try {
305
321
  await unlink(sentinelPath);
306
322
  }
@@ -353,13 +369,13 @@ export function setOrgReviewers(lockfile, usernames) {
353
369
  * Returns a discriminated union indicating whether the asset is:
354
370
  * - `direct`: explicitly installed by the user
355
371
  * - `dependency`: pulled in as a dependency, with chain(s) to direct root(s)
356
- * - `not_installed`: not found in the lockfile
372
+ * - `not-installed`: not found in the lockfile
357
373
  * - `orphaned`: installed as a dependency but no path to a direct root exists
358
374
  */
359
375
  export function traceDependencyChain(lockfile, assetName, assetType, assetOrg) {
360
376
  const asset = findInstalledAsset(lockfile, assetName, assetType, assetOrg);
361
377
  if (!asset) {
362
- return { name: assetName, ...(assetOrg ? { org: assetOrg } : {}), status: 'not_installed' };
378
+ return { name: assetName, ...(assetOrg ? { org: assetOrg } : {}), status: 'not-installed' };
363
379
  }
364
380
  if ((asset.installReason ?? 'direct') === 'direct') {
365
381
  return { asset, status: 'direct' };
@@ -450,6 +466,10 @@ export async function writeLockfile(projectDir, lockfile) {
450
466
  try {
451
467
  const raw = await readFile(lockfilePath, 'utf-8');
452
468
  const existing = JSON.parse(raw);
469
+ // Changed on disk since this command read it (a pull, a teammate's newer CLI): don't overwrite it.
470
+ const newer = await newerLockVersionError(lockfilePath, existing);
471
+ if (newer)
472
+ throw newer;
453
473
  if (typeof existing.org === 'string' &&
454
474
  existing.org.length > 0 &&
455
475
  lockfile.org !== undefined &&
@@ -465,7 +485,8 @@ export async function writeLockfile(projectDir, lockfile) {
465
485
  }
466
486
  }
467
487
  }
468
- await writeJsonFile(lockfilePath, lockfile);
488
+ // A kill or a full disk mid-write would leave a truncated lockfile that every command then refuses.
489
+ await writeJsonFile(lockfilePath, lockfile, { atomic: true, shared: true });
469
490
  }
470
491
  /**
471
492
  * Recursively build reverse dependency chain nodes by finding all dependents
@@ -515,6 +536,39 @@ function buildReverseChains(lockfile, asset, visiting) {
515
536
  visiting.delete(key);
516
537
  return nodes;
517
538
  }
539
+ // ---------------------------------------------------------------------------
540
+ // Helpers
541
+ // ---------------------------------------------------------------------------
542
+ /** Read a sentinel's state, or `'gone'` when it no longer exists. */
543
+ async function inspectSentinel(sentinelPath) {
544
+ let mtimeMs;
545
+ try {
546
+ // Not stat: a dangling symlink there would read as gone while the `wx` create still fails.
547
+ ({ mtimeMs } = await lstat(sentinelPath));
548
+ }
549
+ catch (err) {
550
+ if (isEnoentOrExist(err, 'ENOENT')) {
551
+ return 'gone';
552
+ }
553
+ // Windows refuses a stat while another run deletes the sentinel: count it as just made.
554
+ return { mtimeMs: Date.now(), pid: undefined };
555
+ }
556
+ try {
557
+ const data = JSON.parse(await readFile(sentinelPath, 'utf-8'));
558
+ return { mtimeMs, pid: typeof data.pid === 'number' ? data.pid : undefined };
559
+ }
560
+ catch {
561
+ return { mtimeMs, pid: undefined };
562
+ }
563
+ }
564
+ /**
565
+ * Windows answers a create or open of a file another process is deleting with one of these
566
+ * (`EPERM` mostly); so does a directory we may not write to.
567
+ */
568
+ function isBusyError(err) {
569
+ const code = err instanceof Error ? err.code : undefined;
570
+ return code === 'EACCES' || code === 'EBUSY' || code === 'EPERM';
571
+ }
518
572
  /**
519
573
  * Type-guard that checks whether an unknown `err` is a Node.js filesystem
520
574
  * error with the specified `code` (`'EEXIST'` or `'ENOENT'`).
@@ -522,9 +576,6 @@ function buildReverseChains(lockfile, asset, visiting) {
522
576
  function isEnoentOrExist(err, code) {
523
577
  return err instanceof Error && err.code === code;
524
578
  }
525
- // ---------------------------------------------------------------------------
526
- // Helpers
527
- // ---------------------------------------------------------------------------
528
579
  /**
529
580
  * Check whether a process with the given PID is still running.
530
581
  * Uses `process.kill(pid, 0)` which sends no signal but throws if the
@@ -539,4 +590,94 @@ function isProcessAlive(pid) {
539
590
  return false;
540
591
  }
541
592
  }
593
+ /**
594
+ * A holder refreshes its sentinel while it lives. One nobody can read (being created, or a read
595
+ * Windows refused) is judged by its refreshes alone.
596
+ */
597
+ function isSentinelStale({ mtimeMs, pid }, staleTimeout) {
598
+ const stale = Date.now() - mtimeMs > staleTimeout;
599
+ return pid === undefined ? stale : stale || !isProcessAlive(pid);
600
+ }
601
+ /**
602
+ * The error for a lockfile whose lockVersion is newer than this CLI's, or undefined. A newer CLI
603
+ * bumps it only for a change this one can't read or write safely (schemas/lockfile.ts).
604
+ */
605
+ async function newerLockVersionError(lockfilePath, data) {
606
+ if (typeof data !== 'object' || data === null || !('lockVersion' in data))
607
+ return undefined;
608
+ const { lockVersion } = data;
609
+ if (typeof lockVersion !== 'number' || !Number.isInteger(lockVersion) || lockVersion <= CURRENT_LOCK_VERSION) {
610
+ return undefined;
611
+ }
612
+ // Loaded here, not at the top: version.ts reads package.json as it loads.
613
+ const { isPreRelease, upgradeCommand } = await import('./version.js');
614
+ return new LockfileError(`The lockfile at ${lockfilePath} has lockVersion ${lockVersion}, which a newer ATK CLI wrote; this one reads ${CURRENT_LOCK_VERSION}.`, {
615
+ command: upgradeCommand(isPreRelease() ? 'dev' : 'latest'),
616
+ hint: 'Upgrade the ATK CLI to read and write this lockfile.',
617
+ });
618
+ }
619
+ /** Remove a guard left by a run that crashed while holding it. */
620
+ async function removeLeftoverGuard(guardPath) {
621
+ try {
622
+ const { mtimeMs } = await lstat(guardPath);
623
+ if (Date.now() - mtimeMs > GUARD_STALE_MS) {
624
+ await unlink(guardPath);
625
+ }
626
+ }
627
+ catch {
628
+ // Gone already, or being deleted.
629
+ }
630
+ }
631
+ /**
632
+ * Remove a stale sentinel while holding its guard file, judging it again under the guard: a
633
+ * sentinel another run created since it was judged is fresh, so it stays. Returns whether the
634
+ * caller should retry the create at once (the sentinel is gone) rather than wait.
635
+ */
636
+ async function removeStaleSentinel(sentinelPath, staleTimeout) {
637
+ const guardPath = sentinelPath + LOCK_GUARD_SUFFIX;
638
+ try {
639
+ await writeFile(guardPath, String(process.pid), { flag: 'wx' });
640
+ }
641
+ catch (err) {
642
+ if (isEnoentOrExist(err, 'EEXIST')) {
643
+ await removeLeftoverGuard(guardPath);
644
+ }
645
+ // Another run is removing the sentinel: wait for it.
646
+ return false;
647
+ }
648
+ try {
649
+ const current = await inspectSentinel(sentinelPath);
650
+ if (current === 'gone') {
651
+ return true;
652
+ }
653
+ if (!isSentinelStale(current, staleTimeout)) {
654
+ return false;
655
+ }
656
+ await unlink(sentinelPath);
657
+ return true;
658
+ }
659
+ catch {
660
+ // Windows is still deleting it, or another run did: the next attempt sees which.
661
+ return false;
662
+ }
663
+ finally {
664
+ await unlink(guardPath).catch(() => undefined);
665
+ }
666
+ }
667
+ /** Refresh the sentinel's mtime while this process holds it, so waiters know the holder is live. */
668
+ function startHeartbeat(sentinelPath, refreshInterval) {
669
+ stopHeartbeat(sentinelPath);
670
+ const timer = setInterval(() => {
671
+ const now = new Date();
672
+ // Released meanwhile, or Windows is busy with it: the next tick tries again.
673
+ utimes(sentinelPath, now, now).catch(() => undefined);
674
+ }, refreshInterval);
675
+ // A held lock must not keep the process alive.
676
+ timer.unref();
677
+ heartbeats.set(sentinelPath, timer);
678
+ }
679
+ function stopHeartbeat(sentinelPath) {
680
+ clearInterval(heartbeats.get(sentinelPath));
681
+ heartbeats.delete(sentinelPath);
682
+ }
542
683
  //# sourceMappingURL=lockfile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lockfile.js","sourceRoot":"","sources":["../../src/lib/lockfile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lockfile.js","sourceRoot":"","sources":["../../src/lib/lockfile.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mover.d.ts","sourceRoot":"","sources":["../../src/lib/mover.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAOtE,OAAO,EAAgB,WAAW,EAAE,MAAM,aAAa,CAAC;AAcxD,OAAO,EAA8B,KAAK,iBAAiB,EAA2B,MAAM,yBAAyB,CAAC;AAMtH,OAAO,EAAmB,KAAK,aAAa,EAAiC,KAAK,KAAK,EAAc,MAAM,YAAY,CAAC;AACxH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAiC,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE3G,6FAA6F;AAC7F,MAAM,WAAW,QAAQ;IACvB,sDAAsD;IACtD,KAAK,EAAE,cAAc,CAAC;IACtB;;;OAGG;IACH,YAAY,EAAE;QAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QAAC,OAAO,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC;IACtE,IAAI,EAAE,aAAa,CAAC;IACpB,4EAA4E;IAC5E,MAAM,EAAE,OAAO,CAAC;IAChB,2FAA2F;IAC3F,OAAO,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,SAAS,EAAE,WAAW,CAAC;IACvB,WAAW,EAAE,UAAU,CAAC;IACxB,WAAW,EAAE,UAAU,CAAC;IACxB,EAAE,EAAE,aAAa,CAAC;IAClB,2EAA2E;IAC3E,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,8FAA8F;AAC9F,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,yBAAyB,CAAC;IAAC,WAAW,EAAE,iBAAiB,EAAE,CAAA;CAAE,GACxF;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,eAAe,EAAE,CAAC;IAAC,WAAW,EAAE,iBAAiB,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE3G,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC;AAE3D,gEAAgE;AAChE,qBAAa,SAAU,SAAQ,WAAW;IAC/B,IAAI,SAAe;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAG,WAAW,CAoBjF;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,QAAQ,EAClB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACrC,OAAO,CAAC,UAAU,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAS1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC,GAAG,MAAM,CAI3F;AAED;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,QAAQ,EAClB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACrC,OAAO,CAAC,QAAQ,CAAC,CAsEnB"}
1
+ {"version":3,"file":"mover.d.ts","sourceRoot":"","sources":["../../src/lib/mover.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,17 @@
1
1
  import { satisfies } from 'semver';
2
- import { resolveInstalledPaths } from './adapter.js';
3
2
  import { supportsType } from './asset-tools.js';
4
- import { verifyChecksums, verifyConfigEntries } from './checksum.js';
3
+ import { verifyConfigEntries } from './checksum.js';
5
4
  import { getConfigEntriesForTool } from './config-entries.js';
6
5
  import { freezeAssetInConfig } from './config.js';
7
6
  import { errorMessage, GuidedError } from './errors.js';
8
7
  import { isInstalledForTool } from './installed-for-tool.js';
9
8
  import { rollBackInstalledAssets } from './installer.js';
9
+ import { editedFiles } from './local-edits.js';
10
10
  import { addAssetToLockfile, findDependencyAsset, findInstalledAsset, findInstalledAssetWithFallback, identityKey, readLockfile, withLockfileErrorHandling, writeLockfile, } from './lockfile.js';
11
11
  import { executeInstallPlanForTools, withoutKeptDependencies } from './multi-tool-install.js';
12
12
  import { formatOrgName } from './org.js';
13
13
  import { isLatestAlias } from './registry.js';
14
14
  import { resolveInstallPlan } from './resolver.js';
15
- import { fromRoot } from './root-path.js';
16
15
  import {} from './schemas/config.js';
17
16
  import { loadScopeConfig, resolveScope, saveScopeConfig, scopeLabel } from './scope.js';
18
17
  import { resolveTools } from './tool-resolver.js';
@@ -99,7 +98,7 @@ export async function planMove(request, registry, onProgress) {
99
98
  throw new MoveError(`"${displayName}" is already installed in ${scopeLabel(to)} at v${atTarget.version}, not v${asset.version}.`, { hint: `Uninstall or update it in ${scopeLabel(to)} first, so the move doesn't change its version there.` });
100
99
  }
101
100
  const frozen = isFrozen(await loadScopeConfig(from.root), asset);
102
- if (frozen && !request.force && (await hasLocalEdits(asset, sourceTools, from.root))) {
101
+ if (frozen && !request.force && (await hasLocalEdits(asset, sourceTools, from.root, source, registry))) {
103
102
  throw new MoveError(`"${displayName}" is frozen and has local edits in ${scopeLabel(from)}; moving it installs the registry's v${asset.version} and loses them.`, { hint: 'Run it again with --force to move it anyway.' });
104
103
  }
105
104
  const resolved = atSourceVersions(resolveInstallPlan(registry, asset.name, asset.type, asset.version, asset.org), source);
@@ -222,18 +221,15 @@ function findSourceAsset(source, request, from) {
222
221
  return installed;
223
222
  }
224
223
  /**
225
- * Whether any of the asset's files, or the config entries it registered, differs from what its
226
- * lockfile entry recorded, for any tool that has it in place.
224
+ * Whether any of the asset's files holds content no published version had (see `editedFiles`), or
225
+ * a config entry it registered differs from what its lockfile entry recorded, for any tool that
226
+ * has it in place.
227
227
  */
228
- async function hasLocalEdits(asset, tools, root) {
228
+ async function hasLocalEdits(asset, tools, root, lockfile, registry) {
229
229
  for (const { adapter } of tools) {
230
230
  if (!isInstalledForTool(asset, adapter, root))
231
231
  continue;
232
- const files = resolveInstalledPaths(asset, adapter, root).files.map((f) => ({
233
- checksum: f.checksum,
234
- path: fromRoot(root, f.installedPath),
235
- }));
236
- if ((await verifyChecksums(files)).some((f) => !f.actual.startsWith('FILE_NOT_FOUND')))
232
+ if (await editedFiles(asset, adapter, root, lockfile, registry))
237
233
  return true;
238
234
  const entries = getConfigEntriesForTool(asset, adapter);
239
235
  if ((await verifyConfigEntries(entries, root)).some((f) => f.reason === 'CONFIG_CHECKSUM_MISMATCH'))