@detergent-software/atk 8.7.0-dev.1 → 8.7.0-dev.10

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 (216) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/build/commands/audit.d.ts.map +1 -1
  3. package/build/commands/audit.js +34 -11
  4. package/build/commands/audit.js.map +1 -1
  5. package/build/commands/browse.d.ts.map +1 -1
  6. package/build/commands/browse.js +23 -15
  7. package/build/commands/browse.js.map +1 -1
  8. package/build/commands/freeze.d.ts.map +1 -1
  9. package/build/commands/freeze.js +11 -6
  10. package/build/commands/freeze.js.map +1 -1
  11. package/build/commands/index.d.ts.map +1 -1
  12. package/build/commands/index.js +1 -0
  13. package/build/commands/index.js.map +1 -1
  14. package/build/commands/install.d.ts.map +1 -1
  15. package/build/commands/install.js +91 -26
  16. package/build/commands/install.js.map +1 -1
  17. package/build/commands/list.d.ts +2 -1
  18. package/build/commands/list.d.ts.map +1 -1
  19. package/build/commands/list.js +82 -66
  20. package/build/commands/list.js.map +1 -1
  21. package/build/commands/move.d.ts +28 -0
  22. package/build/commands/move.d.ts.map +1 -0
  23. package/build/commands/move.js +180 -0
  24. package/build/commands/move.js.map +1 -0
  25. package/build/commands/outdated.d.ts +2 -1
  26. package/build/commands/outdated.d.ts.map +1 -1
  27. package/build/commands/outdated.js +67 -24
  28. package/build/commands/outdated.js.map +1 -1
  29. package/build/commands/pin.d.ts.map +1 -1
  30. package/build/commands/pin.js +12 -7
  31. package/build/commands/pin.js.map +1 -1
  32. package/build/commands/prune.d.ts.map +1 -1
  33. package/build/commands/prune.js +17 -10
  34. package/build/commands/prune.js.map +1 -1
  35. package/build/commands/schema.d.ts +1 -1
  36. package/build/commands/sync.d.ts.map +1 -1
  37. package/build/commands/sync.js +22 -13
  38. package/build/commands/sync.js.map +1 -1
  39. package/build/commands/thaw.d.ts.map +1 -1
  40. package/build/commands/thaw.js +11 -6
  41. package/build/commands/thaw.js.map +1 -1
  42. package/build/commands/uninstall.d.ts.map +1 -1
  43. package/build/commands/uninstall.js +20 -15
  44. package/build/commands/uninstall.js.map +1 -1
  45. package/build/commands/unpin.d.ts.map +1 -1
  46. package/build/commands/unpin.js +11 -6
  47. package/build/commands/unpin.js.map +1 -1
  48. package/build/commands/update.d.ts.map +1 -1
  49. package/build/commands/update.js +11 -11
  50. package/build/commands/update.js.map +1 -1
  51. package/build/components/CrossScopeWarning.d.ts +12 -0
  52. package/build/components/CrossScopeWarning.d.ts.map +1 -0
  53. package/build/components/CrossScopeWarning.js +13 -0
  54. package/build/components/CrossScopeWarning.js.map +1 -0
  55. package/build/components/DryRunBanner.d.ts +3 -1
  56. package/build/components/DryRunBanner.d.ts.map +1 -1
  57. package/build/components/DryRunBanner.js +2 -2
  58. package/build/components/DryRunBanner.js.map +1 -1
  59. package/build/components/InstallConfirmBar.d.ts.map +1 -1
  60. package/build/components/InstallConfirmBar.js +1 -3
  61. package/build/components/InstallConfirmBar.js.map +1 -1
  62. package/build/components/InstallSummary.d.ts +3 -1
  63. package/build/components/InstallSummary.d.ts.map +1 -1
  64. package/build/components/InstallSummary.js +2 -2
  65. package/build/components/InstallSummary.js.map +1 -1
  66. package/build/components/ListActionBar.d.ts +4 -2
  67. package/build/components/ListActionBar.d.ts.map +1 -1
  68. package/build/components/ListActionBar.js +5 -4
  69. package/build/components/ListActionBar.js.map +1 -1
  70. package/build/components/ListBrowseList.d.ts +7 -6
  71. package/build/components/ListBrowseList.d.ts.map +1 -1
  72. package/build/components/ListBrowseList.js +10 -6
  73. package/build/components/ListBrowseList.js.map +1 -1
  74. package/build/components/StatusBadge.d.ts +1 -1
  75. package/build/components/StatusBadge.d.ts.map +1 -1
  76. package/build/components/StatusBadge.js +1 -0
  77. package/build/components/StatusBadge.js.map +1 -1
  78. package/build/components/SyncAllInSync.d.ts +3 -1
  79. package/build/components/SyncAllInSync.d.ts.map +1 -1
  80. package/build/components/SyncAllInSync.js +2 -2
  81. package/build/components/SyncAllInSync.js.map +1 -1
  82. package/build/components/SyncDriftedList.d.ts +3 -1
  83. package/build/components/SyncDriftedList.d.ts.map +1 -1
  84. package/build/components/SyncDriftedList.js +3 -3
  85. package/build/components/SyncDriftedList.js.map +1 -1
  86. package/build/components/SyncNoAssets.d.ts +3 -1
  87. package/build/components/SyncNoAssets.d.ts.map +1 -1
  88. package/build/components/SyncNoAssets.js +2 -2
  89. package/build/components/SyncNoAssets.js.map +1 -1
  90. package/build/components/index.d.ts +1 -0
  91. package/build/components/index.d.ts.map +1 -1
  92. package/build/components/index.js +1 -0
  93. package/build/components/index.js.map +1 -1
  94. package/build/hooks/useInitState.d.ts.map +1 -1
  95. package/build/hooks/useInitState.js +4 -2
  96. package/build/hooks/useInitState.js.map +1 -1
  97. package/build/hooks/useListActions.d.ts +19 -6
  98. package/build/hooks/useListActions.d.ts.map +1 -1
  99. package/build/hooks/useListActions.js +37 -33
  100. package/build/hooks/useListActions.js.map +1 -1
  101. package/build/hooks/useListState.d.ts +29 -12
  102. package/build/hooks/useListState.d.ts.map +1 -1
  103. package/build/hooks/useListState.js +22 -6
  104. package/build/hooks/useListState.js.map +1 -1
  105. package/build/hooks/usePruneState.d.ts +6 -0
  106. package/build/hooks/usePruneState.d.ts.map +1 -1
  107. package/build/hooks/usePruneState.js +6 -1
  108. package/build/hooks/usePruneState.js.map +1 -1
  109. package/build/hooks/useResolvedScope.d.ts +21 -0
  110. package/build/hooks/useResolvedScope.d.ts.map +1 -0
  111. package/build/hooks/useResolvedScope.js +15 -0
  112. package/build/hooks/useResolvedScope.js.map +1 -0
  113. package/build/hooks/useUninstallState.d.ts +6 -0
  114. package/build/hooks/useUninstallState.d.ts.map +1 -1
  115. package/build/hooks/useUninstallState.js +6 -1
  116. package/build/hooks/useUninstallState.js.map +1 -1
  117. package/build/lib/adapter.d.ts +41 -2
  118. package/build/lib/adapter.d.ts.map +1 -1
  119. package/build/lib/adapter.js +147 -12
  120. package/build/lib/adapter.js.map +1 -1
  121. package/build/lib/checksum.d.ts.map +1 -1
  122. package/build/lib/checksum.js +2 -1
  123. package/build/lib/checksum.js.map +1 -1
  124. package/build/lib/config-entries.d.ts +5 -3
  125. package/build/lib/config-entries.d.ts.map +1 -1
  126. package/build/lib/config-entries.js +7 -4
  127. package/build/lib/config-entries.js.map +1 -1
  128. package/build/lib/config-file.d.ts +10 -3
  129. package/build/lib/config-file.d.ts.map +1 -1
  130. package/build/lib/config-file.js +29 -7
  131. package/build/lib/config-file.js.map +1 -1
  132. package/build/lib/config-lock.d.ts +3 -1
  133. package/build/lib/config-lock.d.ts.map +1 -1
  134. package/build/lib/config-lock.js +12 -5
  135. package/build/lib/config-lock.js.map +1 -1
  136. package/build/lib/cross-scope.d.ts +50 -0
  137. package/build/lib/cross-scope.d.ts.map +1 -0
  138. package/build/lib/cross-scope.js +132 -0
  139. package/build/lib/cross-scope.js.map +1 -0
  140. package/build/lib/diagnostics.d.ts +15 -2
  141. package/build/lib/diagnostics.d.ts.map +1 -1
  142. package/build/lib/diagnostics.js +152 -10
  143. package/build/lib/diagnostics.js.map +1 -1
  144. package/build/lib/diff-command.d.ts.map +1 -1
  145. package/build/lib/diff-command.js +7 -7
  146. package/build/lib/diff-command.js.map +1 -1
  147. package/build/lib/init.d.ts.map +1 -1
  148. package/build/lib/init.js +2 -1
  149. package/build/lib/init.js.map +1 -1
  150. package/build/lib/installed-for-tool.d.ts +2 -1
  151. package/build/lib/installed-for-tool.d.ts.map +1 -1
  152. package/build/lib/installed-for-tool.js +7 -4
  153. package/build/lib/installed-for-tool.js.map +1 -1
  154. package/build/lib/installer.d.ts +2 -2
  155. package/build/lib/installer.d.ts.map +1 -1
  156. package/build/lib/installer.js +111 -40
  157. package/build/lib/installer.js.map +1 -1
  158. package/build/lib/lockfile.d.ts +1 -1
  159. package/build/lib/lockfile.d.ts.map +1 -1
  160. package/build/lib/lockfile.js +2 -2
  161. package/build/lib/lockfile.js.map +1 -1
  162. package/build/lib/mover.d.ts +103 -0
  163. package/build/lib/mover.d.ts.map +1 -0
  164. package/build/lib/mover.js +375 -0
  165. package/build/lib/mover.js.map +1 -0
  166. package/build/lib/owned-paths.d.ts.map +1 -1
  167. package/build/lib/owned-paths.js +8 -8
  168. package/build/lib/owned-paths.js.map +1 -1
  169. package/build/lib/read-scopes.d.ts +32 -0
  170. package/build/lib/read-scopes.d.ts.map +1 -0
  171. package/build/lib/read-scopes.js +55 -0
  172. package/build/lib/read-scopes.js.map +1 -0
  173. package/build/lib/root-path.d.ts +7 -0
  174. package/build/lib/root-path.d.ts.map +1 -0
  175. package/build/lib/root-path.js +10 -0
  176. package/build/lib/root-path.js.map +1 -0
  177. package/build/lib/schemas/adapter.d.ts +49 -1
  178. package/build/lib/schemas/adapter.d.ts.map +1 -1
  179. package/build/lib/schemas/adapter.js +36 -0
  180. package/build/lib/schemas/adapter.js.map +1 -1
  181. package/build/lib/schemas/lockfile.d.ts +2 -0
  182. package/build/lib/schemas/lockfile.d.ts.map +1 -1
  183. package/build/lib/schemas/lockfile.js +8 -2
  184. package/build/lib/schemas/lockfile.js.map +1 -1
  185. package/build/lib/scope.d.ts +11 -0
  186. package/build/lib/scope.d.ts.map +1 -1
  187. package/build/lib/scope.js +12 -0
  188. package/build/lib/scope.js.map +1 -1
  189. package/build/lib/sync.d.ts +2 -1
  190. package/build/lib/sync.d.ts.map +1 -1
  191. package/build/lib/sync.js +12 -5
  192. package/build/lib/sync.js.map +1 -1
  193. package/build/lib/toml-edit.d.ts +10 -0
  194. package/build/lib/toml-edit.d.ts.map +1 -0
  195. package/build/lib/toml-edit.js +311 -0
  196. package/build/lib/toml-edit.js.map +1 -0
  197. package/build/lib/tool-resolver.d.ts +3 -0
  198. package/build/lib/tool-resolver.d.ts.map +1 -1
  199. package/build/lib/tool-resolver.js +10 -10
  200. package/build/lib/tool-resolver.js.map +1 -1
  201. package/build/lib/uninstaller.d.ts +14 -1
  202. package/build/lib/uninstaller.d.ts.map +1 -1
  203. package/build/lib/uninstaller.js +68 -25
  204. package/build/lib/uninstaller.js.map +1 -1
  205. package/build/lib/updater.d.ts +3 -2
  206. package/build/lib/updater.d.ts.map +1 -1
  207. package/build/lib/updater.js +18 -12
  208. package/build/lib/updater.js.map +1 -1
  209. package/build/lib/write-file.d.ts +5 -2
  210. package/build/lib/write-file.d.ts.map +1 -1
  211. package/build/lib/write-file.js +6 -3
  212. package/build/lib/write-file.js.map +1 -1
  213. package/package.json +1 -1
  214. package/tool-adapters/claude-code.json +13 -0
  215. package/tool-adapters/codex-cli.json +28 -0
  216. package/tool-adapters/copilot-cli.json +46 -2
@@ -1,9 +1,9 @@
1
1
  import { readFile } from 'node:fs/promises';
2
- import { join } from 'node:path';
3
- import { resolveInstalledPaths } from './adapter.js';
2
+ import { adapterAsPlaced, resolveInstalledPaths } from './adapter.js';
4
3
  import { isExcludedForTool, supportsType } from './asset-tools.js';
5
4
  import { matchesChecksum, verifyChecksums, verifyConfigEntries } from './checksum.js';
6
5
  import { getConfigEntriesForTool } from './config-entries.js';
6
+ import { fromRoot } from './root-path.js';
7
7
  /**
8
8
  * The config entries, memory-template blocks and hook groups that installed assets other than
9
9
  * `asset` placed for the adapter's tool. Like {@link pathsOwnedByOthers}, for the entries a global
@@ -33,7 +33,7 @@ export function configEntriesToRemove(asset, adapter, projectDir) {
33
33
  const ownEntries = getConfigEntriesForTool(asset, adapter);
34
34
  return ownEntries.length > 0
35
35
  ? ownEntries.map((e) => ({ checksum: e.checksum, command: e.command, file: e.file, key: e.key }))
36
- : resolveInstalledPaths(asset, adapter, projectDir).configEntries;
36
+ : resolveInstalledPaths(asset, adapterAsPlaced(adapter, asset), projectDir).configEntries;
37
37
  }
38
38
  /**
39
39
  * Whether `entry`, which an asset being removed placed, now holds the value of another asset that
@@ -54,8 +54,8 @@ export async function holdsAnotherOwnersValue(entry, owners, projectDir) {
54
54
  export function pathsOwnedByOthers(lockfile, asset, adapter, projectDir) {
55
55
  const paths = new Set();
56
56
  for (const other of otherAssetsPlacedFor(lockfile, asset, adapter)) {
57
- for (const file of resolveInstalledPaths(other, adapter, projectDir).files) {
58
- paths.add(join(projectDir, file.installedPath));
57
+ for (const file of resolveInstalledPaths(other, adapterAsPlaced(adapter, other), projectDir).files) {
58
+ paths.add(fromRoot(projectDir, file.installedPath));
59
59
  }
60
60
  }
61
61
  return paths;
@@ -117,15 +117,15 @@ export async function verifyOwnFiles(files, asset, lockfile, adapter, projectDir
117
117
  * recorded path and an adapter's `./`-prefixed one match.
118
118
  */
119
119
  function configEntryKey(entry, projectDir) {
120
- return `${join(projectDir, entry.file)}#${entry.key}#${entry.command ?? ''}`;
120
+ return `${fromRoot(projectDir, entry.file)}#${entry.key}#${entry.command ?? ''}`;
121
121
  }
122
122
  /**
123
123
  * For each installed asset other than `asset` placed for the adapter's tool, the absolute paths of
124
124
  * its files mapped to the checksums it recorded for them.
125
125
  */
126
126
  function filesPlacedByOthers(lockfile, asset, adapter, projectDir) {
127
- return otherAssetsPlacedFor(lockfile, asset, adapter).map((other) => new Map(resolveInstalledPaths(other, adapter, projectDir).files.map((file) => [
128
- join(projectDir, file.installedPath),
127
+ return otherAssetsPlacedFor(lockfile, asset, adapter).map((other) => new Map(resolveInstalledPaths(other, adapterAsPlaced(adapter, other), projectDir).files.map((file) => [
128
+ fromRoot(projectDir, file.installedPath),
129
129
  file.checksum,
130
130
  ])));
131
131
  }
@@ -1 +1 @@
1
- {"version":3,"file":"owned-paths.js","sourceRoot":"","sources":["../../src/lib/owned-paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"owned-paths.js","sourceRoot":"","sources":["../../src/lib/owned-paths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { ProjectConfig } from './schemas/config.js';
2
+ import type { Lockfile } from './schemas/lockfile.js';
3
+ import { type ResolvedScope } from './scope.js';
4
+ /** A scope a read command shows: its root, its lockfile and its config. */
5
+ export interface ReadScope extends ResolvedScope {
6
+ /** The scope's config; null when it has none, or when the command didn't ask for it (`withConfig`). */
7
+ config: null | ProjectConfig;
8
+ lockfile: Lockfile;
9
+ }
10
+ /** The scopes a read command shows, project first, and why the user scope is missing when it can't be read. */
11
+ export interface ReadScopes {
12
+ /** The command's own scope first. */
13
+ scopes: [ReadScope, ...ReadScope[]];
14
+ /** Set when the user root has a lockfile that couldn't be read, so only the project is shown. */
15
+ warning?: string;
16
+ }
17
+ /**
18
+ * Resolve the scopes `list` and `outdated` show. `--user` (or a root that is the user root)
19
+ * shows the user scope alone, and `--project` the project alone. Otherwise a project also shows
20
+ * the user scope when the user root has installs, so the user's own assets appear beside the
21
+ * project's. The project's lockfile and config load as they always have, and fail the command
22
+ * when they can't; the user scope's only add a warning, so the project view always works.
23
+ * A command that reads no config passes `withConfig: false`, so a config that doesn't load
24
+ * doesn't fail it.
25
+ */
26
+ export declare function resolveReadScopes({ project, projectRoot, user, withConfig, }: {
27
+ project?: boolean;
28
+ projectRoot?: string;
29
+ user?: boolean;
30
+ withConfig?: boolean;
31
+ }): Promise<ReadScopes>;
32
+ //# sourceMappingURL=read-scopes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-scopes.d.ts","sourceRoot":"","sources":["../../src/lib/read-scopes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,OAAO,EAAmB,KAAK,aAAa,EAA6C,MAAM,YAAY,CAAC;AAE5G,2EAA2E;AAC3E,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,uGAAuG;IACvG,MAAM,EAAE,IAAI,GAAG,aAAa,CAAC;IAC7B,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,+GAA+G;AAC/G,MAAM,WAAW,UAAU;IACzB,qCAAqC;IACrC,MAAM,EAAE,CAAC,SAAS,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;IACpC,iGAAiG;IACjG,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,OAAe,EACf,WAAW,EACX,IAAY,EACZ,UAAiB,GAClB,EAAE;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,OAAO,CAAC,UAAU,CAAC,CAoCtB"}
@@ -0,0 +1,55 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { errorMessage } from './errors.js';
3
+ import { lockfileExists, readLockfile } from './lockfile.js';
4
+ import { loadScopeConfig, resolveScope, resolveUserRoot, ScopeError } from './scope.js';
5
+ /**
6
+ * Resolve the scopes `list` and `outdated` show. `--user` (or a root that is the user root)
7
+ * shows the user scope alone, and `--project` the project alone. Otherwise a project also shows
8
+ * the user scope when the user root has installs, so the user's own assets appear beside the
9
+ * project's. The project's lockfile and config load as they always have, and fail the command
10
+ * when they can't; the user scope's only add a warning, so the project view always works.
11
+ * A command that reads no config passes `withConfig: false`, so a config that doesn't load
12
+ * doesn't fail it.
13
+ */
14
+ export async function resolveReadScopes({ project = false, projectRoot, user = false, withConfig = true, }) {
15
+ if (user && project) {
16
+ throw new ScopeError('--user and --project cannot be used together.', {
17
+ hint: 'Use --user for the user scope alone, or --project for the project alone.',
18
+ });
19
+ }
20
+ const resolved = await resolveScope({ projectRoot, user });
21
+ const scopes = [await loadReadScope(resolved, withConfig)];
22
+ if (resolved.scope === 'user' || project) {
23
+ return { scopes };
24
+ }
25
+ let userRoot;
26
+ try {
27
+ userRoot = await resolveUserRoot();
28
+ }
29
+ catch {
30
+ // A user config that doesn't load names no user root; `atk doctor` reports it.
31
+ return { scopes };
32
+ }
33
+ if (!existsSync(userRoot) || !lockfileExists(userRoot)) {
34
+ return { scopes };
35
+ }
36
+ try {
37
+ const userScope = await loadReadScope({ root: userRoot, scope: 'user' }, withConfig);
38
+ if ((userScope.lockfile.assets ?? []).length > 0) {
39
+ scopes.push(userScope);
40
+ }
41
+ return { scopes };
42
+ }
43
+ catch (err) {
44
+ return {
45
+ scopes,
46
+ warning: `User installs not shown (${errorMessage(err).replace(/\.$/, '')}). Run \`atk doctor --user\` to check the user scope.`,
47
+ };
48
+ }
49
+ }
50
+ async function loadReadScope(resolved, withConfig) {
51
+ const lockfile = await readLockfile(resolved.root);
52
+ const config = withConfig ? await loadScopeConfig(resolved.root) : null;
53
+ return { ...resolved, config, lockfile };
54
+ }
55
+ //# sourceMappingURL=read-scopes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-scopes.js","sourceRoot":"","sources":["../../src/lib/read-scopes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAKrC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAsB,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAiB5G;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EACtC,OAAO,GAAG,KAAK,EACf,WAAW,EACX,IAAI,GAAG,KAAK,EACZ,UAAU,GAAG,IAAI,GAMlB;IACC,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAAC,+CAA+C,EAAE;YACpE,IAAI,EAAE,0EAA0E;SACjF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAyB,CAAC,MAAM,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IACjF,IAAI,QAAQ,CAAC,KAAK,KAAK,MAAM,IAAI,OAAO,EAAE,CAAC;QACzC,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,eAAe,EAAE,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,+EAA+E;QAC/E,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC;QACrF,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,MAAM;YACN,OAAO,EAAE,4BAA4B,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,uDAAuD;SACjI,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,QAAuB,EAAE,UAAmB;IACvE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,OAAO,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Where a path the lockfile or an adapter records is on disk: joined onto `root` when it is
3
+ * relative, as it is when it is absolute. A user placement is recorded as an absolute path when
4
+ * its tool's config directory is on another drive than the user root (see `adapterForScope`).
5
+ */
6
+ export declare function fromRoot(root: string, path: string): string;
7
+ //# sourceMappingURL=root-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root-path.d.ts","sourceRoot":"","sources":["../../src/lib/root-path.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D"}
@@ -0,0 +1,10 @@
1
+ import { isAbsolute, join } from 'node:path';
2
+ /**
3
+ * Where a path the lockfile or an adapter records is on disk: joined onto `root` when it is
4
+ * relative, as it is when it is absolute. A user placement is recorded as an absolute path when
5
+ * its tool's config directory is on another drive than the user root (see `adapterForScope`).
6
+ */
7
+ export function fromRoot(root, path) {
8
+ return isAbsolute(path) ? join(path) : join(root, path);
9
+ }
10
+ //# sourceMappingURL=root-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root-path.js","sourceRoot":"","sources":["../../src/lib/root-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE7C;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,IAAY;IACjD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1D,CAAC"}
@@ -1,7 +1,9 @@
1
1
  import { z } from 'zod';
2
2
  export declare const PlacementConfig: z.ZodObject<{
3
3
  configCommand: z.ZodOptional<z.ZodString>;
4
+ configCommandEntryDefaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4
5
  configCommandPrefix: z.ZodOptional<z.ZodString>;
6
+ configEntryDefaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
5
7
  configFile: z.ZodOptional<z.ZodString>;
6
8
  configFormat: z.ZodOptional<z.ZodEnum<{
7
9
  json: "json";
@@ -20,6 +22,20 @@ export declare const PlacementConfig: z.ZodObject<{
20
22
  path: z.ZodString;
21
23
  }, z.core.$strip>;
22
24
  export type PlacementConfig = z.infer<typeof PlacementConfig>;
25
+ export declare const UserConfigDir: z.ZodObject<{
26
+ dir: z.ZodString;
27
+ env: z.ZodString;
28
+ files: z.ZodOptional<z.ZodArray<z.ZodString>>;
29
+ keep: z.ZodOptional<z.ZodArray<z.ZodString>>;
30
+ subdir: z.ZodOptional<z.ZodString>;
31
+ }, z.core.$strip>;
32
+ export type UserConfigDir = z.infer<typeof UserConfigDir>;
33
+ export declare const ScopeClash: z.ZodEnum<{
34
+ both: "both";
35
+ project: "project";
36
+ user: "user";
37
+ }>;
38
+ export type ScopeClash = z.infer<typeof ScopeClash>;
23
39
  export declare const AdapterSchema: z.ZodObject<{
24
40
  $schema: z.ZodOptional<z.ZodString>;
25
41
  configDetection: z.ZodArray<z.ZodString>;
@@ -33,7 +49,9 @@ export declare const AdapterSchema: z.ZodObject<{
33
49
  "mcp-config": "mcp-config";
34
50
  }> & z.core.$partial, z.ZodObject<{
35
51
  configCommand: z.ZodOptional<z.ZodString>;
52
+ configCommandEntryDefaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
36
53
  configCommandPrefix: z.ZodOptional<z.ZodString>;
54
+ configEntryDefaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
37
55
  configFile: z.ZodOptional<z.ZodString>;
38
56
  configFormat: z.ZodOptional<z.ZodEnum<{
39
57
  json: "json";
@@ -51,7 +69,26 @@ export declare const AdapterSchema: z.ZodObject<{
51
69
  fileless: z.ZodOptional<z.ZodBoolean>;
52
70
  path: z.ZodString;
53
71
  }, z.core.$strip>>;
72
+ scopeClash: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
73
+ skill: "skill";
74
+ agent: "agent";
75
+ rule: "rule";
76
+ hook: "hook";
77
+ "memory-template": "memory-template";
78
+ "mcp-config": "mcp-config";
79
+ }> & z.core.$partial, z.ZodEnum<{
80
+ both: "both";
81
+ project: "project";
82
+ user: "user";
83
+ }>>>;
54
84
  tool: z.ZodString;
85
+ userConfigDir: z.ZodOptional<z.ZodObject<{
86
+ dir: z.ZodString;
87
+ env: z.ZodString;
88
+ files: z.ZodOptional<z.ZodArray<z.ZodString>>;
89
+ keep: z.ZodOptional<z.ZodArray<z.ZodString>>;
90
+ subdir: z.ZodOptional<z.ZodString>;
91
+ }, z.core.$strip>>;
55
92
  userPlacements: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
56
93
  skill: "skill";
57
94
  agent: "agent";
@@ -61,7 +98,9 @@ export declare const AdapterSchema: z.ZodObject<{
61
98
  "mcp-config": "mcp-config";
62
99
  }> & z.core.$partial, z.ZodObject<{
63
100
  configCommand: z.ZodOptional<z.ZodString>;
101
+ configCommandEntryDefaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
64
102
  configCommandPrefix: z.ZodOptional<z.ZodString>;
103
+ configEntryDefaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
65
104
  configFile: z.ZodOptional<z.ZodString>;
66
105
  configFormat: z.ZodOptional<z.ZodEnum<{
67
106
  json: "json";
@@ -80,5 +119,14 @@ export declare const AdapterSchema: z.ZodObject<{
80
119
  path: z.ZodString;
81
120
  }, z.core.$strip>>>;
82
121
  }, z.core.$strip>;
83
- export type Adapter = z.infer<typeof AdapterSchema>;
122
+ export type Adapter = z.infer<typeof AdapterSchema> & {
123
+ /**
124
+ * Set by `adapterForScope` on the adapter the user scope sees, never read from a file: the user
125
+ * config directory its placements are under, as `userConfigDirs` records it in the lockfile
126
+ * (absent while `userConfigDir.env` is unset).
127
+ */
128
+ userScope?: {
129
+ movedDir?: string;
130
+ };
131
+ };
84
132
  //# sourceMappingURL=adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/lib/schemas/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;iBAwE1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAYxB,CAAC;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/lib/schemas/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;iBAoF1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,aAAa;;;;;;iBAyBxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,UAAU;;;;EAIpB,CAAC;AACJ,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqBxB,CAAC;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,GAAG;IACpD;;;;OAIG;IACH,SAAS,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACnC,CAAC"}
@@ -5,10 +5,18 @@ export const PlacementConfig = z.object({
5
5
  .string()
6
6
  .optional()
7
7
  .describe('For hook placements: the hook command template (supports {name}), used instead of configCommandPrefix + the installed script path when the command does not name that path (e.g. "\\"$HOME/.claude/hooks/{name}.sh\\"")'),
8
+ configCommandEntryDefaults: z
9
+ .record(z.string(), z.unknown())
10
+ .optional()
11
+ .describe('For configFragment placements: keys added to each merged entry that has a command (a local stdio server) and lacks them, on top of configEntryDefaults (e.g. {"args": []} for Copilot CLI’s ~/.copilot/mcp-config.json, which refuses the whole file when a local server has no args list)'),
8
12
  configCommandPrefix: z
9
13
  .string()
10
14
  .optional()
11
15
  .describe('For hook placements: prefix prepended to the installed script path to form the hook command (e.g. "$CLAUDE_PROJECT_DIR/")'),
16
+ configEntryDefaults: z
17
+ .record(z.string(), z.unknown())
18
+ .optional()
19
+ .describe('For configFragment placements: keys added to each merged entry that lacks them, for a tool that requires a key the asset content may leave out (e.g. {"tools": ["*"]} for Copilot CLI’s ~/.copilot/mcp-config.json, which older Copilot versions refuse as a whole when a server has no tools list)'),
12
20
  configFile: z.string().optional().describe('Config file to update for registration (e.g., settings.json)'),
13
21
  configFormat: z
14
22
  .enum(['json', 'toml'])
@@ -53,12 +61,40 @@ export const PlacementConfig = z.object({
53
61
  .describe('When true, no standalone files are placed. Asset content is only used for config merging.'),
54
62
  path: z.string().describe('File placement path template (supports {name} variable)'),
55
63
  });
64
+ export const UserConfigDir = z.object({
65
+ dir: z
66
+ .string()
67
+ .describe('The config directory the user placements assume, relative to the user root (e.g. ".claude")'),
68
+ env: z
69
+ .string()
70
+ .describe('Environment variable that moves the tool’s user config directory when set (e.g. CLAUDE_CONFIG_DIR)'),
71
+ files: z
72
+ .array(z.string())
73
+ .optional()
74
+ .describe('Files at the user root that the tool keeps inside the moved directory instead (e.g. [".claude.json"] for Claude Code)'),
75
+ keep: z
76
+ .array(z.string())
77
+ .optional()
78
+ .describe('User placement paths under `dir/` that stay put while `env` is set, as path prefixes (e.g. [".copilot/hooks/"] for Copilot CLI, whose hooks always read the home directory)'),
79
+ subdir: z
80
+ .string()
81
+ .optional()
82
+ .describe('The tool’s directory inside the path `env` names, when it is not that path itself (e.g. ".copilot" for Copilot CLI’s `$XDG_CONFIG_HOME/.copilot`)'),
83
+ });
84
+ export const ScopeClash = z
85
+ .enum(['both', 'project', 'user'])
86
+ .describe('Which copy the tool uses when an asset of this type has the same name at the user and the project scope: "user" or "project" (that copy wins and the other is hidden), or "both" (it loads both)');
56
87
  export const AdapterSchema = z.object({
57
88
  $schema: z.string().optional().describe('JSON Schema reference for editor validation and autocomplete'),
58
89
  configDetection: z.array(z.string()).describe('Paths/files that indicate this tool is in use (e.g., [".claude/"])'),
59
90
  displayName: z.string().describe('Human-readable tool name'),
60
91
  placements: z.partialRecord(AssetType, PlacementConfig).describe('File placement rules per asset type'),
92
+ scopeClash: z
93
+ .partialRecord(AssetType, ScopeClash)
94
+ .optional()
95
+ .describe('Per asset type, which copy the tool uses when the same name is installed at both scopes; `atk install` and `atk doctor` state it when they find one. A type missing here has no known rule.'),
61
96
  tool: z.string().describe('Tool identifier (e.g., claude-code)'),
97
+ userConfigDir: UserConfigDir.optional().describe('Where the tool’s user config directory moves to: while `env` is set, user placements under `dir/` (except the `keep` ones), and the `files`, are placed in that directory (or its `subdir`) instead.'),
62
98
  userPlacements: z
63
99
  .partialRecord(AssetType, PlacementConfig)
64
100
  .optional()
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/lib/schemas/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,IAAI,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEvE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,yNAAyN,CAC1N;IACH,mBAAmB,EAAE,CAAC;SACnB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,2HAA2H,CAC5H;IACH,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;IAC1G,YAAY,EAAE,CAAC;SACZ,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACtB,QAAQ,EAAE;SACV,QAAQ,CACP,0IAA0I,CAC3I;IACH,cAAc,EAAE,CAAC;SACd,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,0PAA0P,CAC3P;IACH,iBAAiB,EAAE,CAAC;SACjB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,qQAAqQ,CACtQ;IACH,eAAe,EAAE,CAAC;SACf,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,qMAAqM,CACtM;IACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACtF,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,4OAA4O,CAC7O;IACH,WAAW,EAAE,CAAC;SACX,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,qGAAqG,CAAC;IAClH,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,0GAA0G,CAC3G;IACH,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,kHAAkH,CACnH;IACH,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,qIAAqI,CACtI;IACH,QAAQ,EAAE,CAAC;SACR,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,2FAA2F,CAAC;IACxG,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;CACrF,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;IACvG,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,oEAAoE,CAAC;IACnH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACvG,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAChE,cAAc,EAAE,CAAC;SACd,aAAa,CAAC,SAAS,EAAE,eAAe,CAAC;SACzC,QAAQ,EAAE;SACV,QAAQ,CACP,yJAAyJ,CAC1J;CACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/lib/schemas/adapter.ts"],"names":[],"mappings":"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"}
@@ -63,6 +63,7 @@ export declare const InstalledAsset: z.ZodObject<{
63
63
  "mcp-config": "mcp-config";
64
64
  }>;
65
65
  undeclaredTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
66
+ userConfigDirs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
66
67
  version: z.ZodString;
67
68
  }, z.core.$strip>;
68
69
  export type InstalledAsset = z.infer<typeof InstalledAsset>;
@@ -117,6 +118,7 @@ export declare const LockfileSchema: z.ZodObject<{
117
118
  "mcp-config": "mcp-config";
118
119
  }>;
119
120
  undeclaredTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
121
+ userConfigDirs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
120
122
  version: z.ZodString;
121
123
  }, z.core.$strip>>>;
122
124
  lockVersion: z.ZodLiteral<1>;
@@ -1 +1 @@
1
- {"version":3,"file":"lockfile.d.ts","sourceRoot":"","sources":["../../../src/lib/schemas/lockfile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,aAAa;;;;iBAOxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,WAAW;;;;;;iBAgBtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkDzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQzB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
1
+ {"version":3,"file":"lockfile.d.ts","sourceRoot":"","sources":["../../../src/lib/schemas/lockfile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,aAAa;;;;iBASxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,WAAW;;;;;;iBAoBtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwDzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQzB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
@@ -5,7 +5,7 @@ export const InstalledFile = z.object({
5
5
  installedPath: z
6
6
  .string()
7
7
  .optional()
8
- .describe('Project-relative POSIX path to where the file was installed (computed via adapter for legacy entries)'),
8
+ .describe('Project-relative POSIX path to where the file was installed (computed via adapter for legacy entries); absolute at the user scope when the tool’s config directory is on another drive than the user root'),
9
9
  sourcePath: z.string().describe('Original path within the asset directory'),
10
10
  });
11
11
  export const ConfigEntry = z.object({
@@ -14,7 +14,9 @@ export const ConfigEntry = z.object({
14
14
  .string()
15
15
  .optional()
16
16
  .describe('For array-valued config sections (e.g. hooks.<Event>): identifies the array element this asset owns by its nested hooks[].command value'),
17
- file: z.string().describe('Project-relative POSIX path to the config file'),
17
+ file: z
18
+ .string()
19
+ .describe('Project-relative POSIX path to the config file; absolute at the user scope when the tool’s config directory is on another drive than the user root'),
18
20
  key: z.string().describe('Dot-path key within the config file (e.g. hooks.Stop)'),
19
21
  tool: z
20
22
  .string()
@@ -62,6 +64,10 @@ export const InstalledAsset = z.object({
62
64
  .array(z.string())
63
65
  .optional()
64
66
  .describe('The tools in excludedTools that a hook was skipped for because its manifest does not declare them, not uninstalled for. Sync and update place the hook for such a tool once its version declares it'),
67
+ userConfigDirs: z
68
+ .record(z.string(), z.string())
69
+ .optional()
70
+ .describe('User scope only: per tool adapter id, the directory its `userConfigDir.env` (e.g. CLAUDE_CONFIG_DIR) had moved the tool’s user config to when ATK placed this asset, relative to the user root (e.g. { "claude-code": "../cc" }), or absolute when it is on another drive (e.g. "D:/cc"). A tool missing here placed it in its default directory. Uninstall, sync and audit find the tool’s copy there'),
65
71
  version: z.string().describe('Installed version'),
66
72
  });
67
73
  export const LockfileSchema = z.object({
@@ -1 +1 @@
1
- {"version":3,"file":"lockfile.js","sourceRoot":"","sources":["../../../src/lib/schemas/lockfile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lockfile.js","sourceRoot":"","sources":["../../../src/lib/schemas/lockfile.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,17 @@ export declare function saveScopeConfig(root: string, config: ProjectConfig): Pr
47
47
  * from an error acts on the user scope, not on the project the user happens to be in.
48
48
  */
49
49
  export declare function scopedCommand(command: string, scope?: Scope): string;
50
+ /**
51
+ * The scope's fields for a command's `--json` payload, so a run's output says where it wrote.
52
+ */
53
+ export declare function scopeFields({ root, scope }: ResolvedScope): {
54
+ root: string;
55
+ scope: Scope;
56
+ };
57
+ /**
58
+ * Where a command wrote, in words: `user scope (<root>)`, or the project's path.
59
+ */
60
+ export declare function scopeLabel({ root, scope }: ResolvedScope): string;
50
61
  /**
51
62
  * The setup command for the scope at `root`, and its hint, for errors that need the scope set up.
52
63
  */
@@ -1 +1 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/lib/scope.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AASzD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;CACd;AAED,wFAAwF;AACxF,MAAM,MAAM,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvC,2EAA2E;AAC3E,qBAAa,UAAW,SAAQ,WAAW;IAChC,IAAI,SAAgB;CAC9B;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE/D;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,aAAa,CAAC,CAEjF;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,EACjC,WAAW,EACX,IAAY,GACb,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,aAAa,CAAC,CAmBzB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAavD;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAEpE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAI3G"}
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/lib/scope.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AASzD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;CACd;AAED,wFAAwF;AACxF,MAAM,MAAM,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvC,2EAA2E;AAC3E,qBAAa,UAAW,SAAQ,WAAW;IAChC,IAAI,SAAgB;CAC9B;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE/D;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,aAAa,CAAC,CAEjF;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,EACjC,WAAW,EACX,IAAY,GACb,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,aAAa,CAAC,CAmBzB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAavD;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAEpE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAE1F;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,aAAa,GAAG,MAAM,CAEjE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAI3G"}
@@ -81,6 +81,18 @@ export async function saveScopeConfig(root, config) {
81
81
  export function scopedCommand(command, scope) {
82
82
  return scope === 'user' ? `${command} --user` : command;
83
83
  }
84
+ /**
85
+ * The scope's fields for a command's `--json` payload, so a run's output says where it wrote.
86
+ */
87
+ export function scopeFields({ root, scope }) {
88
+ return { root, scope };
89
+ }
90
+ /**
91
+ * Where a command wrote, in words: `user scope (<root>)`, or the project's path.
92
+ */
93
+ export function scopeLabel({ root, scope }) {
94
+ return scope === 'user' ? `user scope (${root})` : root;
95
+ }
84
96
  /**
85
97
  * The setup command for the scope at `root`, and its hint, for errors that need the scope set up.
86
98
  */
@@ -1 +1 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/lib/scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/lib/scope.ts"],"names":[],"mappings":"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"}
@@ -59,7 +59,8 @@ export interface SyncAssetsOptions {
59
59
  }
60
60
  export interface SyncEntry {
61
61
  asset: InstalledAsset;
62
- reason: 'forced' | 'missing' | 'modified';
62
+ /** `moved`: the tool's user config directory moved since ATK placed the asset. */
63
+ reason: 'forced' | 'missing' | 'modified' | 'moved';
63
64
  result?: InstallResult;
64
65
  }
65
66
  export interface SyncFailure extends ErrorGuidance {
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/lib/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/lib/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAc5D,OAAO,EAGL,KAAK,aAAa,EAElB,WAAW,EAEZ,MAAM,aAAa,CAAC;AAiBrB,OAAO,EAAE,KAAK,KAAK,EAAiB,MAAM,YAAY,CAAC;AAOvD,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,aAAa,EAAE,IAAI,GAAG,aAAa,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,qGAAqG;IACrG,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,yBAAyB;IACxC,oFAAoF;IACpF,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB;;;;OAIG;IACH,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,aAAa,EAAE,IAAI,GAAG,aAAa,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,iFAAiF;IACjF,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,aAAa,EAAE,IAAI,GAAG,aAAa,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,cAAc,CAAC;IACtB,kFAAkF;IAClF,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IACpD,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,WAAW,GACnB;IACE,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,QAAQ,CAAC;IAClB,yDAAyD;IACzD,KAAK,EAAE,KAAK,CAAC;IACb,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B,GACD;IACE,OAAO,EAAE,SAAS,CAAC;IACnB,0DAA0D;IAC1D,KAAK,EAAE,KAAK,CAAC;IACb,WAAW,EAAE,gBAAgB,EAAE,CAAC;CACjC,CAAC;AAMN,oFAAoF;AACpF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,sGAAsG;IACtG,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1B,8GAA8G;IAC9G,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,sGAAsG;IACtG,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,SAAU,SAAQ,WAAW;IAC/B,IAAI,SAAe;CAC7B;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAyHjH;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAoExF;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA8MtF"}
package/build/lib/sync.js CHANGED
@@ -1,5 +1,4 @@
1
- import { join } from 'node:path';
2
- import { resolveInstalledPaths } from './adapter.js';
1
+ import { configDirMove, resolveInstalledPaths } from './adapter.js';
3
2
  import { declarationAllows, excludeToolFromAsset, isExcludedAtVersion, isExcludedForTool, supportsType, withToolExcluded, } from './asset-tools.js';
4
3
  import { getCredential } from './auth.js';
5
4
  import { getConfigEntriesForTool, needsConfigRegistration } from './config-entries.js';
@@ -12,6 +11,7 @@ import { scopeSwitchGuidance } from './org.js';
12
11
  import { verifyOwnConfigEntries, verifyOwnFiles } from './owned-paths.js';
13
12
  import { findAsset, versionTools } from './registry.js';
14
13
  import { resolveInstallPlan } from './resolver.js';
14
+ import { fromRoot } from './root-path.js';
15
15
  import { scopedCommand } from './scope.js';
16
16
  import { hasCopyForTool, removeSingleAsset, UninstallerError } from './uninstaller.js';
17
17
  export class SyncError extends GuidedError {
@@ -92,10 +92,16 @@ export async function classifySyncEntries(options) {
92
92
  toSync.push({ asset, reason: 'forced' });
93
93
  continue;
94
94
  }
95
+ // The tool's user config directory moved since ATK placed the asset: reinstall it where the tool
96
+ // reads it now (removing it from the old directory first).
97
+ if (configDirMove(adapter, asset)) {
98
+ toSync.push({ asset, reason: 'moved' });
99
+ continue;
100
+ }
95
101
  const resolved = resolveInstalledPaths(asset, adapter, projectDir);
96
102
  const filesToCheck = resolved.files.map((f) => ({
97
103
  checksum: f.checksum,
98
- path: join(projectDir, f.installedPath),
104
+ path: fromRoot(projectDir, f.installedPath),
99
105
  }));
100
106
  // A file holding the content of another asset that places it is not drift: reinstalling
101
107
  // would only swap the two.
@@ -110,12 +116,13 @@ export async function classifySyncEntries(options) {
110
116
  ? await verifyOwnConfigEntries(ownConfigEntries, asset, { assets }, adapter, projectDir)
111
117
  : [];
112
118
  // Another tool recorded config entries for this asset but this tool never did (e.g. it
113
- // was installed or last synced under a different tool) — reinstall to register it here.
119
+ // was installed or last synced under a different tool), or this tool's entries are in a
120
+ // config file its adapter no longer uses — reinstall to register it where the tool reads it.
114
121
  const needsRegistration = needsConfigRegistration(asset, adapter);
115
122
  // A hook script without the exec bit (placed by a CLI that never set it) has an intact
116
123
  // checksum but cannot run, so reinstall it.
117
124
  const scriptPath = hookScriptPath(adapter.placements[asset.type], asset.name);
118
- const notExecutable = scriptPath ? await lacksExecBit(join(projectDir, scriptPath)) : false;
125
+ const notExecutable = scriptPath ? await lacksExecBit(fromRoot(projectDir, scriptPath)) : false;
119
126
  if (checksumFailures.length === 0 && configFailures.length === 0 && !needsRegistration && !notExecutable) {
120
127
  skipped++;
121
128
  continue;