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

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 (215) hide show
  1. package/CHANGELOG.md +106 -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 +94 -29
  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/sync.d.ts.map +1 -1
  36. package/build/commands/sync.js +24 -15
  37. package/build/commands/sync.js.map +1 -1
  38. package/build/commands/thaw.d.ts.map +1 -1
  39. package/build/commands/thaw.js +11 -6
  40. package/build/commands/thaw.js.map +1 -1
  41. package/build/commands/uninstall.d.ts.map +1 -1
  42. package/build/commands/uninstall.js +20 -15
  43. package/build/commands/uninstall.js.map +1 -1
  44. package/build/commands/unpin.d.ts.map +1 -1
  45. package/build/commands/unpin.js +11 -6
  46. package/build/commands/unpin.js.map +1 -1
  47. package/build/commands/update.d.ts.map +1 -1
  48. package/build/commands/update.js +13 -13
  49. package/build/commands/update.js.map +1 -1
  50. package/build/components/CrossScopeWarning.d.ts +12 -0
  51. package/build/components/CrossScopeWarning.d.ts.map +1 -0
  52. package/build/components/CrossScopeWarning.js +13 -0
  53. package/build/components/CrossScopeWarning.js.map +1 -0
  54. package/build/components/DryRunBanner.d.ts +3 -1
  55. package/build/components/DryRunBanner.d.ts.map +1 -1
  56. package/build/components/DryRunBanner.js +2 -2
  57. package/build/components/DryRunBanner.js.map +1 -1
  58. package/build/components/InstallConfirmBar.d.ts.map +1 -1
  59. package/build/components/InstallConfirmBar.js +1 -3
  60. package/build/components/InstallConfirmBar.js.map +1 -1
  61. package/build/components/InstallSummary.d.ts +3 -1
  62. package/build/components/InstallSummary.d.ts.map +1 -1
  63. package/build/components/InstallSummary.js +2 -2
  64. package/build/components/InstallSummary.js.map +1 -1
  65. package/build/components/ListActionBar.d.ts +4 -2
  66. package/build/components/ListActionBar.d.ts.map +1 -1
  67. package/build/components/ListActionBar.js +5 -4
  68. package/build/components/ListActionBar.js.map +1 -1
  69. package/build/components/ListBrowseList.d.ts +7 -6
  70. package/build/components/ListBrowseList.d.ts.map +1 -1
  71. package/build/components/ListBrowseList.js +10 -6
  72. package/build/components/ListBrowseList.js.map +1 -1
  73. package/build/components/StatusBadge.d.ts +1 -1
  74. package/build/components/StatusBadge.d.ts.map +1 -1
  75. package/build/components/StatusBadge.js +1 -0
  76. package/build/components/StatusBadge.js.map +1 -1
  77. package/build/components/SyncAllInSync.d.ts +3 -1
  78. package/build/components/SyncAllInSync.d.ts.map +1 -1
  79. package/build/components/SyncAllInSync.js +2 -2
  80. package/build/components/SyncAllInSync.js.map +1 -1
  81. package/build/components/SyncDriftedList.d.ts +3 -1
  82. package/build/components/SyncDriftedList.d.ts.map +1 -1
  83. package/build/components/SyncDriftedList.js +3 -3
  84. package/build/components/SyncDriftedList.js.map +1 -1
  85. package/build/components/SyncNoAssets.d.ts +3 -1
  86. package/build/components/SyncNoAssets.d.ts.map +1 -1
  87. package/build/components/SyncNoAssets.js +2 -2
  88. package/build/components/SyncNoAssets.js.map +1 -1
  89. package/build/components/index.d.ts +1 -0
  90. package/build/components/index.d.ts.map +1 -1
  91. package/build/components/index.js +1 -0
  92. package/build/components/index.js.map +1 -1
  93. package/build/hooks/useInitState.d.ts.map +1 -1
  94. package/build/hooks/useInitState.js +4 -2
  95. package/build/hooks/useInitState.js.map +1 -1
  96. package/build/hooks/useListActions.d.ts +19 -6
  97. package/build/hooks/useListActions.d.ts.map +1 -1
  98. package/build/hooks/useListActions.js +37 -33
  99. package/build/hooks/useListActions.js.map +1 -1
  100. package/build/hooks/useListState.d.ts +29 -12
  101. package/build/hooks/useListState.d.ts.map +1 -1
  102. package/build/hooks/useListState.js +22 -6
  103. package/build/hooks/useListState.js.map +1 -1
  104. package/build/hooks/usePruneState.d.ts +6 -0
  105. package/build/hooks/usePruneState.d.ts.map +1 -1
  106. package/build/hooks/usePruneState.js +6 -1
  107. package/build/hooks/usePruneState.js.map +1 -1
  108. package/build/hooks/useResolvedScope.d.ts +21 -0
  109. package/build/hooks/useResolvedScope.d.ts.map +1 -0
  110. package/build/hooks/useResolvedScope.js +15 -0
  111. package/build/hooks/useResolvedScope.js.map +1 -0
  112. package/build/hooks/useUninstallState.d.ts +17 -8
  113. package/build/hooks/useUninstallState.d.ts.map +1 -1
  114. package/build/hooks/useUninstallState.js +48 -12
  115. package/build/hooks/useUninstallState.js.map +1 -1
  116. package/build/lib/adapter.d.ts +41 -2
  117. package/build/lib/adapter.d.ts.map +1 -1
  118. package/build/lib/adapter.js +147 -12
  119. package/build/lib/adapter.js.map +1 -1
  120. package/build/lib/checksum.d.ts.map +1 -1
  121. package/build/lib/checksum.js +2 -1
  122. package/build/lib/checksum.js.map +1 -1
  123. package/build/lib/config-entries.d.ts +5 -3
  124. package/build/lib/config-entries.d.ts.map +1 -1
  125. package/build/lib/config-entries.js +7 -4
  126. package/build/lib/config-entries.js.map +1 -1
  127. package/build/lib/config-file.d.ts +10 -3
  128. package/build/lib/config-file.d.ts.map +1 -1
  129. package/build/lib/config-file.js +29 -7
  130. package/build/lib/config-file.js.map +1 -1
  131. package/build/lib/config-lock.d.ts +3 -1
  132. package/build/lib/config-lock.d.ts.map +1 -1
  133. package/build/lib/config-lock.js +12 -5
  134. package/build/lib/config-lock.js.map +1 -1
  135. package/build/lib/cross-scope.d.ts +50 -0
  136. package/build/lib/cross-scope.d.ts.map +1 -0
  137. package/build/lib/cross-scope.js +132 -0
  138. package/build/lib/cross-scope.js.map +1 -0
  139. package/build/lib/diagnostics.d.ts +15 -2
  140. package/build/lib/diagnostics.d.ts.map +1 -1
  141. package/build/lib/diagnostics.js +152 -10
  142. package/build/lib/diagnostics.js.map +1 -1
  143. package/build/lib/diff-command.d.ts.map +1 -1
  144. package/build/lib/diff-command.js +7 -7
  145. package/build/lib/diff-command.js.map +1 -1
  146. package/build/lib/init.d.ts.map +1 -1
  147. package/build/lib/init.js +2 -1
  148. package/build/lib/init.js.map +1 -1
  149. package/build/lib/installed-for-tool.d.ts +2 -1
  150. package/build/lib/installed-for-tool.d.ts.map +1 -1
  151. package/build/lib/installed-for-tool.js +7 -4
  152. package/build/lib/installed-for-tool.js.map +1 -1
  153. package/build/lib/installer.d.ts +2 -2
  154. package/build/lib/installer.d.ts.map +1 -1
  155. package/build/lib/installer.js +111 -40
  156. package/build/lib/installer.js.map +1 -1
  157. package/build/lib/lockfile.d.ts +1 -1
  158. package/build/lib/lockfile.d.ts.map +1 -1
  159. package/build/lib/lockfile.js +2 -2
  160. package/build/lib/lockfile.js.map +1 -1
  161. package/build/lib/mover.d.ts +103 -0
  162. package/build/lib/mover.d.ts.map +1 -0
  163. package/build/lib/mover.js +375 -0
  164. package/build/lib/mover.js.map +1 -0
  165. package/build/lib/owned-paths.d.ts.map +1 -1
  166. package/build/lib/owned-paths.js +8 -8
  167. package/build/lib/owned-paths.js.map +1 -1
  168. package/build/lib/read-scopes.d.ts +32 -0
  169. package/build/lib/read-scopes.d.ts.map +1 -0
  170. package/build/lib/read-scopes.js +55 -0
  171. package/build/lib/read-scopes.js.map +1 -0
  172. package/build/lib/root-path.d.ts +7 -0
  173. package/build/lib/root-path.d.ts.map +1 -0
  174. package/build/lib/root-path.js +10 -0
  175. package/build/lib/root-path.js.map +1 -0
  176. package/build/lib/schemas/adapter.d.ts +49 -1
  177. package/build/lib/schemas/adapter.d.ts.map +1 -1
  178. package/build/lib/schemas/adapter.js +36 -0
  179. package/build/lib/schemas/adapter.js.map +1 -1
  180. package/build/lib/schemas/lockfile.d.ts +2 -0
  181. package/build/lib/schemas/lockfile.d.ts.map +1 -1
  182. package/build/lib/schemas/lockfile.js +8 -2
  183. package/build/lib/schemas/lockfile.js.map +1 -1
  184. package/build/lib/scope.d.ts +11 -0
  185. package/build/lib/scope.d.ts.map +1 -1
  186. package/build/lib/scope.js +12 -0
  187. package/build/lib/scope.js.map +1 -1
  188. package/build/lib/sync.d.ts +2 -1
  189. package/build/lib/sync.d.ts.map +1 -1
  190. package/build/lib/sync.js +12 -5
  191. package/build/lib/sync.js.map +1 -1
  192. package/build/lib/toml-edit.d.ts +10 -0
  193. package/build/lib/toml-edit.d.ts.map +1 -0
  194. package/build/lib/toml-edit.js +311 -0
  195. package/build/lib/toml-edit.js.map +1 -0
  196. package/build/lib/tool-resolver.d.ts +12 -0
  197. package/build/lib/tool-resolver.d.ts.map +1 -1
  198. package/build/lib/tool-resolver.js +34 -8
  199. package/build/lib/tool-resolver.js.map +1 -1
  200. package/build/lib/uninstaller.d.ts +37 -2
  201. package/build/lib/uninstaller.d.ts.map +1 -1
  202. package/build/lib/uninstaller.js +121 -35
  203. package/build/lib/uninstaller.js.map +1 -1
  204. package/build/lib/updater.d.ts +3 -2
  205. package/build/lib/updater.d.ts.map +1 -1
  206. package/build/lib/updater.js +18 -12
  207. package/build/lib/updater.js.map +1 -1
  208. package/build/lib/write-file.d.ts +5 -2
  209. package/build/lib/write-file.d.ts.map +1 -1
  210. package/build/lib/write-file.js +6 -3
  211. package/build/lib/write-file.js.map +1 -1
  212. package/package.json +1 -1
  213. package/tool-adapters/claude-code.json +13 -0
  214. package/tool-adapters/codex-cli.json +28 -0
  215. package/tool-adapters/copilot-cli.json +46 -2
@@ -1 +1 @@
1
- {"version":3,"file":"checksum.d.ts","sourceRoot":"","sources":["../../src/lib/checksum.ts"],"names":[],"mappings":"AAQA,4DAA4D;AAC5D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,wBAAwB,CAAC;CAClC;AAED,mDAAmD;AACnD,MAAM,MAAM,wBAAwB,GAAG,0BAA0B,GAAG,uBAAuB,GAAG,sBAAsB,CAAC;AAErH,oDAAoD;AACpD,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,KAAK,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAgBhE;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAMjF;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAErD;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAcpE;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAK9E;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAatD;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEjG;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/C,OAAO,CAAC,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAgBpE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,EACjF,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA8E/B"}
1
+ {"version":3,"file":"checksum.d.ts","sourceRoot":"","sources":["../../src/lib/checksum.ts"],"names":[],"mappings":"AASA,4DAA4D;AAC5D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,wBAAwB,CAAC;CAClC;AAED,mDAAmD;AACnD,MAAM,MAAM,wBAAwB,GAAG,0BAA0B,GAAG,uBAAuB,GAAG,sBAAsB,CAAC;AAErH,oDAAoD;AACpD,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,KAAK,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAgBhE;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAMjF;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAErD;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAcpE;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAK9E;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAatD;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEjG;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/C,OAAO,CAAC,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAgBpE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,EACjF,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA8E/B"}
@@ -4,6 +4,7 @@ import { join } from 'node:path';
4
4
  import { detectConfigFormat, parseConfig } from './config-file.js';
5
5
  import { errorMessage } from './errors.js';
6
6
  import { hookGroupOwnsCommand } from './hook-config.js';
7
+ import { fromRoot } from './root-path.js';
7
8
  /** Recursively collect all files in a directory. */
8
9
  export async function collectFilesRecursive(dirPath, baseDir) {
9
10
  const results = [];
@@ -164,7 +165,7 @@ export async function verifyChecksums(files) {
164
165
  export async function verifyConfigEntries(entries, projectDir) {
165
166
  const failures = [];
166
167
  for (const entry of entries) {
167
- const absolutePath = join(projectDir, entry.file);
168
+ const absolutePath = fromRoot(projectDir, entry.file);
168
169
  // 1. Read and parse the config file (format inferred from the extension —
169
170
  // callers only hold lockfile entries, not the adapter placement)
170
171
  let config;
@@ -1 +1 @@
1
- {"version":3,"file":"checksum.js","sourceRoot":"","sources":["../../src/lib/checksum.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checksum.js","sourceRoot":"","sources":["../../src/lib/checksum.ts"],"names":[],"mappings":"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"}
@@ -37,9 +37,11 @@ export declare function getOtherToolsConfigEntries(asset: AssetConfigEntries | u
37
37
  export declare function mergeConfigEntriesForTool(previous: AssetConfigEntries | undefined, adapter: Adapter, fresh: Array<Omit<ConfigEntry, 'tool'>>): ConfigEntry[];
38
38
  /**
39
39
  * Whether an asset is missing its config registration for the given tool: the adapter
40
- * registers this asset type in a config file, the asset has recorded entries for some
41
- * other tool, but none for this one. This repairs multi-tool projects where only one
42
- * tool's registration was ever recorded.
40
+ * registers this asset type in a config file, the asset has recorded entries, but none
41
+ * for this tool in that file. This repairs multi-tool projects where only one tool's
42
+ * registration was ever recorded, and moves a tool's entries out of a config file its
43
+ * adapter no longer uses (copilot-cli's mcp-config once went to `copilot/mcp-config.json`,
44
+ * which Copilot never reads).
43
45
  *
44
46
  * Assets with no recorded entries at all are left alone — a hook with no event
45
47
  * bindings, a legacy lockfile, or a memory-template legitimately has none, and
@@ -1 +1 @@
1
- {"version":3,"file":"config-entries.d.ts","sourceRoot":"","sources":["../../src/lib/config-entries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEzE;;;;;;;;;;;;;;GAcG;AAEH,KAAK,kBAAkB,GAAG,IAAI,CAAC,cAAc,EAAE,eAAe,GAAG,MAAM,CAAC,CAAC;AAEzE;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAWzG;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,GAAG,WAAW,EAAE,CAElG;AAED,kGAAkG;AAClG,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,kBAAkB,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,WAAW,EAAE,CAKjH;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,kBAAkB,GAAG,SAAS,EACxC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,GACtC,WAAW,EAAE,CAQf;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAS5F;AAED,kGAAkG;AAClG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMxD"}
1
+ {"version":3,"file":"config-entries.d.ts","sourceRoot":"","sources":["../../src/lib/config-entries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEzE;;;;;;;;;;;;;;GAcG;AAEH,KAAK,kBAAkB,GAAG,IAAI,CAAC,cAAc,EAAE,eAAe,GAAG,MAAM,CAAC,CAAC;AAEzE;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAWzG;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,GAAG,WAAW,EAAE,CAElG;AAED,kGAAkG;AAClG,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,kBAAkB,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,WAAW,EAAE,CAKjH;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,kBAAkB,GAAG,SAAS,EACxC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,GACtC,WAAW,EAAE,CAQf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAU5F;AAED,kGAAkG;AAClG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMxD"}
@@ -42,9 +42,11 @@ export function mergeConfigEntriesForTool(previous, adapter, fresh) {
42
42
  }
43
43
  /**
44
44
  * Whether an asset is missing its config registration for the given tool: the adapter
45
- * registers this asset type in a config file, the asset has recorded entries for some
46
- * other tool, but none for this one. This repairs multi-tool projects where only one
47
- * tool's registration was ever recorded.
45
+ * registers this asset type in a config file, the asset has recorded entries, but none
46
+ * for this tool in that file. This repairs multi-tool projects where only one tool's
47
+ * registration was ever recorded, and moves a tool's entries out of a config file its
48
+ * adapter no longer uses (copilot-cli's mcp-config once went to `copilot/mcp-config.json`,
49
+ * which Copilot never reads).
48
50
  *
49
51
  * Assets with no recorded entries at all are left alone — a hook with no event
50
52
  * bindings, a legacy lockfile, or a memory-template legitimately has none, and
@@ -58,7 +60,8 @@ export function needsConfigRegistration(asset, adapter) {
58
60
  if ((asset.configEntries?.length ?? 0) === 0) {
59
61
  return false;
60
62
  }
61
- return getConfigEntriesForTool(asset, adapter).length === 0;
63
+ const configFile = normalizeConfigPath(placement.configFile);
64
+ return !getConfigEntriesForTool(asset, adapter).some((e) => normalizeConfigPath(e.file) === configFile);
62
65
  }
63
66
  /** Normalize a project-relative config path for comparison: POSIX separators, no leading `./`. */
64
67
  export function normalizeConfigPath(path) {
@@ -1 +1 @@
1
- {"version":3,"file":"config-entries.js","sourceRoot":"","sources":["../../src/lib/config-entries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-entries.js","sourceRoot":"","sources":["../../src/lib/config-entries.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,11 @@ export declare function parseConfig(raw: string, format: ConfigFormat): Record<s
34
34
  * like `readFile` — callers keep their own existence guards.
35
35
  */
36
36
  export declare function readConfigFile(filePath: string, format: ConfigFormat): Promise<Record<string, unknown>>;
37
+ /**
38
+ * Delete a config file that removing ATK's entries left with no keys. A TOML file that still holds
39
+ * the user's comments is kept instead, with only ATK's tables taken out of it.
40
+ */
41
+ export declare function removeEmptiedConfigFile(filePath: string, format: ConfigFormat, options?: WriteOptions): Promise<void>;
37
42
  /**
38
43
  * Resolve the format for a placement's config file: an explicit
39
44
  * `configFormat` wins, otherwise the file extension decides.
@@ -42,9 +47,11 @@ export declare function resolveConfigFormat(filePath: string, placement?: Pick<P
42
47
  /**
43
48
  * Serialize and write a config file in the given format, idempotently.
44
49
  *
45
- * For TOML, re-serializing drops any comments the user had in the file; when
46
- * that is about to happen, a one-line warning is emitted through `onProgress`
47
- * so the loss is visible rather than silent.
50
+ * An existing TOML file is edited in place ({@link editTomlTables}): only the tables that changed
51
+ * are rewritten, so the user's comments and formatting stay. When the change can't be made that way
52
+ * (it isn't one of the `section.child` tables ATK writes, or the file defines one inline), the whole
53
+ * document is re-serialized, which drops the comments; a one-line warning is then emitted through
54
+ * `onProgress` so the loss is visible rather than silent.
48
55
  *
49
56
  * `options.atomic` writes through a temp file and a rename, for a file the tool rewrites while it
50
57
  * runs (a placement with `configLockFile`).
@@ -1 +1 @@
1
- {"version":3,"file":"config-file.d.ts","sourceRoot":"","sources":["../../src/lib/config-file.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAiB,KAAK,YAAY,EAAiB,MAAM,iBAAiB,CAAC;AAElF;;;;;;;;GAQG;AAEH,6DAA6D;AAC7D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3C;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAEjE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,GAAG,CAAC,CAKvE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEtF;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAG7G;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,GAAG,SAAS,GAC5D,YAAY,CAEd;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,YAAY,EACpB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EACtC,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAcf"}
1
+ {"version":3,"file":"config-file.d.ts","sourceRoot":"","sources":["../../src/lib/config-file.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAiB,KAAK,YAAY,EAAgC,MAAM,iBAAiB,CAAC;AAEjG;;;;;;;;GAQG;AAEH,6DAA6D;AAC7D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3C;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAEjE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,GAAG,CAAC,CAKvE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEtF;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAG7G;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,GAAG,SAAS,GAC5D,YAAY,CAEd;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,YAAY,EACpB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EACtC,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAmBf"}
@@ -1,8 +1,9 @@
1
1
  import { existsSync } from 'node:fs';
2
- import { readFile } from 'node:fs/promises';
2
+ import { readFile, unlink } from 'node:fs/promises';
3
3
  import { extname } from 'node:path';
4
4
  import { parse as parseToml } from 'smol-toml';
5
- import { writeJsonFile, writeTomlFile } from './write-file.js';
5
+ import { editTomlTables } from './toml-edit.js';
6
+ import { writeJsonFile, writeTextFile, writeTomlFile } from './write-file.js';
6
7
  /**
7
8
  * Infer the config format from a file path. `.toml` (any case) → `toml`,
8
9
  * everything else → `json`. Used where only a lockfile entry (file + key) is
@@ -38,6 +39,20 @@ export async function readConfigFile(filePath, format) {
38
39
  const raw = await readFile(filePath, 'utf-8');
39
40
  return parseConfig(raw, format);
40
41
  }
42
+ /**
43
+ * Delete a config file that removing ATK's entries left with no keys. A TOML file that still holds
44
+ * the user's comments is kept instead, with only ATK's tables taken out of it.
45
+ */
46
+ export async function removeEmptiedConfigFile(filePath, format, options = {}) {
47
+ if (format === 'toml') {
48
+ const remaining = editTomlTables(await readFile(filePath, 'utf-8'), {});
49
+ if (remaining !== undefined && remaining.trim() !== '') {
50
+ await writeTextFile(filePath, remaining, options);
51
+ return;
52
+ }
53
+ }
54
+ await unlink(filePath);
55
+ }
41
56
  /**
42
57
  * Resolve the format for a placement's config file: an explicit
43
58
  * `configFormat` wins, otherwise the file extension decides.
@@ -48,9 +63,11 @@ export function resolveConfigFormat(filePath, placement) {
48
63
  /**
49
64
  * Serialize and write a config file in the given format, idempotently.
50
65
  *
51
- * For TOML, re-serializing drops any comments the user had in the file; when
52
- * that is about to happen, a one-line warning is emitted through `onProgress`
53
- * so the loss is visible rather than silent.
66
+ * An existing TOML file is edited in place ({@link editTomlTables}): only the tables that changed
67
+ * are rewritten, so the user's comments and formatting stay. When the change can't be made that way
68
+ * (it isn't one of the `section.child` tables ATK writes, or the file defines one inline), the whole
69
+ * document is re-serialized, which drops the comments; a one-line warning is then emitted through
70
+ * `onProgress` so the loss is visible rather than silent.
54
71
  *
55
72
  * `options.atomic` writes through a temp file and a rename, for a file the tool rewrites while it
56
73
  * runs (a placement with `configLockFile`).
@@ -60,10 +77,15 @@ export async function writeConfigFile(filePath, data, format, onProgress, option
60
77
  await writeJsonFile(filePath, data, options);
61
78
  return;
62
79
  }
63
- if (onProgress && existsSync(filePath)) {
80
+ if (existsSync(filePath)) {
64
81
  const existing = await readFile(filePath, 'utf-8');
82
+ const edited = editTomlTables(existing, data);
83
+ if (edited !== undefined) {
84
+ await writeTextFile(filePath, edited, options);
85
+ return;
86
+ }
65
87
  if (/^\s*#/m.test(existing)) {
66
- onProgress(`Warning: rewriting ${filePath} — TOML comments and custom formatting are not preserved`);
88
+ onProgress?.(`Warning: rewriting ${filePath} — TOML comments and custom formatting are not preserved`);
67
89
  }
68
90
  }
69
91
  await writeTomlFile(filePath, data, options);
@@ -1 +1 @@
1
- {"version":3,"file":"config-file.js","sourceRoot":"","sources":["../../src/lib/config-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-file.js","sourceRoot":"","sources":["../../src/lib/config-file.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import type { PlacementConfig } from './schemas/adapter.js';
2
2
  /**
3
3
  * The lock to hold while writing `file` (relative to `root`): the placement's `configLockFile`,
4
- * under `root`, when `file` is the placement's `configFile`. Otherwise none.
4
+ * kept where it sits relative to `configFile`, when `file` is a copy of the placement's
5
+ * `configFile` (the same file name). That also covers one recorded before `CLAUDE_CONFIG_DIR`
6
+ * moved the file. Otherwise none.
5
7
  */
6
8
  export declare function configLockPath(placement: Pick<PlacementConfig, 'configFile' | 'configLockFile'> | undefined, root: string, file: string): string | undefined;
7
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config-lock.d.ts","sourceRoot":"","sources":["../../src/lib/config-lock.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAQ5D;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,GAAG,gBAAgB,CAAC,GAAG,SAAS,EAC7E,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,SAAS,CAOpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,EAAE,MAAqB,EAAE,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAClD,OAAO,CAAC,CAAC,CAAC,CAaZ"}
1
+ {"version":3,"file":"config-lock.d.ts","sourceRoot":"","sources":["../../src/lib/config-lock.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAS5D;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,GAAG,gBAAgB,CAAC,GAAG,SAAS,EAC7E,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,SAAS,CAWpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,EAAE,MAAqB,EAAE,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAClD,OAAO,CAAC,CAAC,CAAC,CAaZ"}
@@ -1,21 +1,28 @@
1
1
  import { mkdir, rmdir } from 'node:fs/promises';
2
- import { join } from 'node:path';
2
+ import { join, posix } from 'node:path';
3
3
  import { setTimeout as sleep } from 'node:timers/promises';
4
4
  import { normalizeConfigPath } from './config-entries.js';
5
+ import { fromRoot } from './root-path.js';
5
6
  /** How long a held lock is waited for before going ahead without it. */
6
7
  const LOCK_WAIT_MS = 1000;
7
8
  const LOCK_RETRY_MS = 50;
8
9
  /**
9
10
  * The lock to hold while writing `file` (relative to `root`): the placement's `configLockFile`,
10
- * under `root`, when `file` is the placement's `configFile`. Otherwise none.
11
+ * kept where it sits relative to `configFile`, when `file` is a copy of the placement's
12
+ * `configFile` (the same file name). That also covers one recorded before `CLAUDE_CONFIG_DIR`
13
+ * moved the file. Otherwise none.
11
14
  */
12
15
  export function configLockPath(placement, root, file) {
13
16
  if (!placement?.configLockFile || !placement.configFile) {
14
17
  return undefined;
15
18
  }
16
- return normalizeConfigPath(file) === normalizeConfigPath(placement.configFile)
17
- ? join(root, placement.configLockFile)
18
- : undefined;
19
+ const configFile = normalizeConfigPath(placement.configFile);
20
+ const recorded = normalizeConfigPath(file);
21
+ if (posix.basename(recorded) !== posix.basename(configFile)) {
22
+ return undefined;
23
+ }
24
+ const lockFromConfig = posix.relative(posix.dirname(configFile), normalizeConfigPath(placement.configLockFile));
25
+ return join(fromRoot(root, posix.dirname(recorded)), lockFromConfig);
19
26
  }
20
27
  /**
21
28
  * Run `fn` holding a tool's own config lock (a placement's `configLockFile`, such as Claude
@@ -1 +1 @@
1
- {"version":3,"file":"config-lock.js","sourceRoot":"","sources":["../../src/lib/config-lock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAI3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,wEAAwE;AACxE,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,SAA6E,EAC7E,IAAY,EACZ,IAAY;IAEZ,IAAI,CAAC,SAAS,EAAE,cAAc,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QACxD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,mBAAmB,CAAC,IAAI,CAAC,KAAK,mBAAmB,CAAC,SAAS,CAAC,UAAU,CAAC;QAC5E,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,cAAc,CAAC;QACtC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAA4B,EAC5B,EAAoB,EACpB,EAAE,MAAM,GAAG,YAAY,KAA0B,EAAE;IAEnD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;AACH,CAAC;AAED,mGAAmG;AACnG,KAAK,UAAU,OAAO,CAAC,QAAgB,EAAE,MAAc;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;IACrC,SAAS,CAAC;QACR,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;gBACjF,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"config-lock.js","sourceRoot":"","sources":["../../src/lib/config-lock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAI3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,wEAAwE;AACxE,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,SAA6E,EAC7E,IAAY,EACZ,IAAY;IAEZ,IAAI,CAAC,SAAS,EAAE,cAAc,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QACxD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,mBAAmB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;IAChH,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAA4B,EAC5B,EAAoB,EACpB,EAAE,MAAM,GAAG,YAAY,KAA0B,EAAE;IAEnD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;AACH,CAAC;AAED,mGAAmG;AACnG,KAAK,UAAU,OAAO,CAAC,QAAgB,EAAE,MAAc;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;IACrC,SAAS,CAAC;QACR,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;gBACjF,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { AssetType } from './schemas/index.js';
2
+ import type { InstalledAsset } from './schemas/lockfile.js';
3
+ import { type Notice } from './notices.js';
4
+ import { type ScopeClash } from './schemas/adapter.js';
5
+ import { type ResolvedScope, type Scope } from './scope.js';
6
+ /** Which copy one tool uses of an asset installed at both scopes. */
7
+ export interface CrossScopeClash {
8
+ displayName: string;
9
+ tool: string;
10
+ uses: ScopeClash;
11
+ }
12
+ /** An asset being installed at one scope that the other scope already has. */
13
+ export interface CrossScopeInstall {
14
+ /** Each tool that has both copies and a known rule, and the copy it uses. */
15
+ clash: CrossScopeClash[];
16
+ name: string;
17
+ org?: string;
18
+ /** The other scope's root. */
19
+ root: string;
20
+ /** The scope that already has it. */
21
+ scope: Scope;
22
+ type: AssetType;
23
+ /** The version the other scope has. */
24
+ version: string;
25
+ }
26
+ /**
27
+ * The `CrossScopeInstall` for `installed`, an entry of the other scope's lockfile: its version
28
+ * there, and the clash rule of each of `tools` (the tools that have both copies) that has one.
29
+ */
30
+ export declare function crossScopeInstall(installed: InstalledAsset, { root, scope }: ResolvedScope, tools: string[]): Promise<CrossScopeInstall>;
31
+ /** The one `cross-scope` notice for an install's duplicates, which all sit at the same other scope. */
32
+ export declare function crossScopeNotice(installs: [CrossScopeInstall, ...CrossScopeInstall[]]): Notice;
33
+ /** The tools' rules for which copy they use, as one clause: `Claude Code uses the user copy; …`. */
34
+ export declare function describeClashes(clash: CrossScopeClash[]): string;
35
+ /** One line on an asset installed at both scopes: where the other copy is, its version, and each tool's rule. */
36
+ export declare function describeCrossScope(install: CrossScopeInstall): string;
37
+ /**
38
+ * The assets among `assets` that the other scope already has: the user scope for a project install,
39
+ * and the cwd's project for a user-scope install (none when the cwd is in no project but the user
40
+ * root). Matched on (type, org, name). `tools` are the install's tools; each result's rules are for
41
+ * those that have both copies. An asset's `excludedTools` (from the lockfile, after an install) and
42
+ * the other entry's leave out the tools a copy isn't placed for, and a copy placed for none of its
43
+ * scope's tools doesn't count. The other scope is optional, so one that is missing or can't be read
44
+ * gives none, never an error.
45
+ */
46
+ export declare function findCrossScopeInstalls(assets: ReadonlyArray<Pick<InstalledAsset, 'excludedTools' | 'name' | 'org' | 'type'>>, { scope, tools }: {
47
+ scope: Scope;
48
+ tools: string[];
49
+ }): Promise<CrossScopeInstall[]>;
50
+ //# sourceMappingURL=cross-scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-scope.d.ts","sourceRoot":"","sources":["../../src/lib/cross-scope.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAGL,KAAK,aAAa,EAElB,KAAK,KAAK,EAEX,MAAM,YAAY,CAAC;AAEpB,qEAAqE;AACrE,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,8EAA8E;AAC9E,MAAM,WAAW,iBAAiB;IAChC,6EAA6E;IAC7E,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,cAAc,EACzB,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,aAAa,EAC9B,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,iBAAiB,CAAC,CAU5B;AAED,uGAAuG;AACvG,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,CAAC,iBAAiB,EAAE,GAAG,iBAAiB,EAAE,CAAC,GAAG,MAAM,CAY9F;AAED,oGAAoG;AACpG,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,MAAM,CAMhE;AAED,iHAAiH;AACjH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAGrE;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,EACtF,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GAClD,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA6B9B"}
@@ -0,0 +1,132 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { loadAdapter } from './adapter.js';
3
+ import { isExcludedForTool, isExcludedForTools } from './asset-tools.js';
4
+ import { identityKey, lockfileExists, readLockfile } from './lockfile.js';
5
+ import {} from './notices.js';
6
+ import { formatOrgName } from './org.js';
7
+ import { findProjectRoot } from './paths.js';
8
+ import {} from './schemas/adapter.js';
9
+ import { isUserRoot, loadScopeConfig, resolveUserRoot, scopedCommand, } from './scope.js';
10
+ /**
11
+ * The `CrossScopeInstall` for `installed`, an entry of the other scope's lockfile: its version
12
+ * there, and the clash rule of each of `tools` (the tools that have both copies) that has one.
13
+ */
14
+ export async function crossScopeInstall(installed, { root, scope }, tools) {
15
+ return {
16
+ clash: await clashRules(installed.type, tools),
17
+ name: installed.name,
18
+ ...(installed.org ? { org: installed.org } : {}),
19
+ root,
20
+ scope,
21
+ type: installed.type,
22
+ version: installed.version,
23
+ };
24
+ }
25
+ /** The one `cross-scope` notice for an install's duplicates, which all sit at the same other scope. */
26
+ export function crossScopeNotice(installs) {
27
+ if (installs.length === 1) {
28
+ const [install] = installs;
29
+ return { command: uninstallCommand(install), kind: 'cross-scope', text: describeCrossScope(install) };
30
+ }
31
+ const list = installs.map((i) => `${formatOrgName(i.org, i.name)} (${i.type}) v${i.version}`).join(', ');
32
+ return {
33
+ command: 'atk list',
34
+ kind: 'cross-scope',
35
+ text: `${installs.length} assets are also installed ${scopePhrase(installs[0].scope)}: ${list}. Each tool that has both copies follows its own rule for which one it uses.`,
36
+ };
37
+ }
38
+ /** The tools' rules for which copy they use, as one clause: `Claude Code uses the user copy; …`. */
39
+ export function describeClashes(clash) {
40
+ return clash
41
+ .map(({ displayName, uses }) => uses === 'both' ? `${displayName} loads both copies` : `${displayName} uses the ${uses} copy`)
42
+ .join('; ');
43
+ }
44
+ /** One line on an asset installed at both scopes: where the other copy is, its version, and each tool's rule. */
45
+ export function describeCrossScope(install) {
46
+ const head = `${formatOrgName(install.org, install.name)} (${install.type}) is also installed ${scopePhrase(install.scope)} (v${install.version})`;
47
+ return install.clash.length === 0 ? `${head}.` : `${head}. ${describeClashes(install.clash)}.`;
48
+ }
49
+ /**
50
+ * The assets among `assets` that the other scope already has: the user scope for a project install,
51
+ * and the cwd's project for a user-scope install (none when the cwd is in no project but the user
52
+ * root). Matched on (type, org, name). `tools` are the install's tools; each result's rules are for
53
+ * those that have both copies. An asset's `excludedTools` (from the lockfile, after an install) and
54
+ * the other entry's leave out the tools a copy isn't placed for, and a copy placed for none of its
55
+ * scope's tools doesn't count. The other scope is optional, so one that is missing or can't be read
56
+ * gives none, never an error.
57
+ */
58
+ export async function findCrossScopeInstalls(assets, { scope, tools }) {
59
+ const other = await otherScope(scope);
60
+ if (!other)
61
+ return [];
62
+ let otherAssets;
63
+ let otherTools;
64
+ try {
65
+ otherAssets = (await readLockfile(other.root)).assets ?? [];
66
+ // Without a config, the other scope names no tools, so no rule applies (as in `atk doctor`).
67
+ otherTools = (await loadScopeConfig(other.root))?.tools ?? [];
68
+ }
69
+ catch {
70
+ return [];
71
+ }
72
+ const byKey = new Map(otherAssets.map((a) => [identityKey(a), a]));
73
+ const seen = new Set();
74
+ const installs = [];
75
+ for (const asset of assets) {
76
+ const key = identityKey(asset);
77
+ const installed = byKey.get(key);
78
+ if (!installed || seen.has(key))
79
+ continue;
80
+ if (isExcludedForTools(asset, tools) || isExcludedForTools(installed, otherTools))
81
+ continue;
82
+ seen.add(key);
83
+ const shared = tools.filter((t) => otherTools.includes(t) && !isExcludedForTool(asset, t) && !isExcludedForTool(installed, t));
84
+ installs.push(await crossScopeInstall(installed, other, shared));
85
+ }
86
+ return installs;
87
+ }
88
+ /** Each tool's rule for `type`; a tool without one, or whose adapter doesn't load, is left out. */
89
+ async function clashRules(type, tools) {
90
+ const rules = [];
91
+ for (const tool of tools) {
92
+ try {
93
+ const adapter = await loadAdapter(tool);
94
+ const uses = adapter.scopeClash?.[type];
95
+ if (uses) {
96
+ rules.push({ displayName: adapter.displayName, tool, uses });
97
+ }
98
+ }
99
+ catch {
100
+ // The install itself reports an adapter that doesn't load.
101
+ }
102
+ }
103
+ return rules;
104
+ }
105
+ /** The scope opposite `scope`, when it exists and has a lockfile. */
106
+ async function otherScope(scope) {
107
+ let root;
108
+ try {
109
+ if (scope === 'project') {
110
+ root = await resolveUserRoot();
111
+ }
112
+ else {
113
+ root = findProjectRoot();
114
+ if (await isUserRoot(root))
115
+ return undefined;
116
+ }
117
+ }
118
+ catch {
119
+ return undefined;
120
+ }
121
+ if (!existsSync(root) || !lockfileExists(root))
122
+ return undefined;
123
+ return { root, scope: scope === 'project' ? 'user' : 'project' };
124
+ }
125
+ function scopePhrase(scope) {
126
+ return scope === 'user' ? 'at the user scope' : 'in the project';
127
+ }
128
+ /** The command that removes the other scope's copy. */
129
+ function uninstallCommand({ name, org, scope, type }) {
130
+ return scopedCommand(`atk uninstall ${name} --type ${type}${org ? ` --org ${org}` : ''}`, scope);
131
+ }
132
+ //# sourceMappingURL=cross-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-scope.js","sourceRoot":"","sources":["../../src/lib/cross-scope.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,24 @@ import type { ProjectConfig } from './schemas/config.js';
3
3
  import type { Registry } from './schemas/index.js';
4
4
  import type { InstalledAsset } from './schemas/lockfile.js';
5
5
  import { type Scope } from './scope.js';
6
+ /**
7
+ * Check for assets installed both in the project and at the user scope, with the version at each and
8
+ * which copy each tool that has both uses. A copy uninstalled for every tool of its scope doesn't
9
+ * count. Returns undefined when there are none.
10
+ */
11
+ export declare function checkBothScopes(project: {
12
+ assets: InstalledAsset[];
13
+ tools: string[];
14
+ }, user: {
15
+ assets: InstalledAsset[];
16
+ root: string;
17
+ tools: string[];
18
+ }): Promise<DiagnosticCheck | undefined>;
6
19
  /**
7
20
  * Check that the hook scripts a configured tool runs directly are executable. Returns
8
21
  * undefined when there is nothing to check: on Windows, which has no exec bit, or when
9
- * no installed hook places a script for any configured tool. The sync command it suggests runs in
10
- * `scope`.
22
+ * no installed hook places a script for any configured tool. Scripts are looked for where `scope`
23
+ * places them, and the sync command it suggests runs in `scope`.
11
24
  */
12
25
  export declare function checkHookScripts(projectDir: string, tools: string[], assets: InstalledAsset[], platform?: NodeJS.Platform, scope?: Scope): Promise<DiagnosticCheck | undefined>;
13
26
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/lib/diagnostics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,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,EAAiC,KAAK,KAAK,EAAiB,MAAM,YAAY,CAAC;AAEtF;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,EAAE,cAAc,EAAE,EACxB,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,KAAK,CAAC,EAAE,KAAK,GACZ,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CA0CtC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,cAAc,EAAE,EACxB,QAAQ,EAAE,QAAQ,EAClB,KAAK,CAAC,EAAE,KAAK,GACZ,eAAe,GAAG,SAAS,CAmB7B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAqBjE;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EACnC,EAAE,WAAW,EAAE,IAAI,EAAE,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GACnE,OAAO,CAAC,eAAe,EAAE,CAAC,CAoL5B"}
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/lib/diagnostics.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,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;AAgB5D,OAAO,EAAkD,KAAK,KAAK,EAAiB,MAAM,YAAY,CAAC;AAEvG;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE;IAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,EACtD,IAAI,EAAE;IAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GAChE,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAyBtC;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,EAAE,cAAc,EAAE,EACxB,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,KAAK,CAAC,EAAE,KAAK,GACZ,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CA0CtC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,cAAc,EAAE,EACxB,QAAQ,EAAE,QAAQ,EAClB,KAAK,CAAC,EAAE,KAAK,GACZ,eAAe,GAAG,SAAS,CAmB7B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAqBjE;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EACnC,EAAE,WAAW,EAAE,IAAI,EAAE,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GACnE,OAAO,CAAC,eAAe,EAAE,CAAC,CAsM5B"}