@detergent-software/atk 8.9.0-dev.29 → 8.9.0-dev.30

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [8.9.0-dev.30](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.29&targetVersion=GTv8.9.0-dev.30) (2026-10-19)
2
+
3
+ ### Bug Fixes
4
+
5
+ * **cli:** hold the lock over setup's .atkrc.json write too ([8ae955a](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/8ae955a2e9575f53e71d002a02cb9e3f1142c5c6))
6
+ * **cli:** take the lockfile lock in atk setup and setup --user ([557ec69](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/557ec695efa1a6d42e67e3495d3cbf54236a3469))
7
+
1
8
  ## [8.9.0-dev.29](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.28&targetVersion=GTv8.9.0-dev.29) (2026-10-19)
2
9
 
3
10
  ### Bug Fixes
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"AAaA,OAAO,EAAc,KAAK,aAAa,EAAgB,MAAM,YAAY,CAAC;AAM1E;;;GAGG;AACH,eAAO,MAAM,WAAW,QAA4B,CAAC;AAMrD,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAMD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAa1D;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA6GtG;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAWxF;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,WAAW,EACX,IAAY,GACb,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,aAAa,CAAC,CAOzB"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"AAaA,OAAO,EAAc,KAAK,aAAa,EAAgB,MAAM,YAAY,CAAC;AAM1E;;;GAGG;AACH,eAAO,MAAM,WAAW,QAA4B,CAAC;AAMrD,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAMD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAa1D;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAkHtG;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAWxF;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,WAAW,EACX,IAAY,GACb,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,aAAa,CAAC,CAOzB"}
@@ -5,7 +5,7 @@ import { loadAdapter } from './adapter.js';
5
5
  import { loadProjectConfig, saveProjectConfig } from './config.js';
6
6
  import { errorMessage } from './errors.js';
7
7
  import { ensureGitignoreEntries, ensureGitignorePatterns } from './gitignore.js';
8
- import { getLockfilePath, readLockfile, writeLockfile } from './lockfile.js';
8
+ import { getLockfilePath, readLockfile, withLockfileErrorHandling, writeLockfile } from './lockfile.js';
9
9
  import { resolveSetupRoot } from './paths.js';
10
10
  import { isUserRoot, resolveScope } from './scope.js';
11
11
  // ---------------------------------------------------------------------------
@@ -48,56 +48,61 @@ export async function performSetupCreation(options) {
48
48
  const actions = [];
49
49
  const warnings = [];
50
50
  const resolvedOrg = resolveSetupOrg(orgValue, orgLocked);
51
- // 1. Write .atkrc.json with { tools: [...] }. Setup replaces the tools list, so say which
52
- // list it replaced and which tools dropped out of it.
53
- // Frozen assets are not setup's to change, so they carry over.
54
- const previousConfig = await loadPreviousConfig(projectDir);
55
- const previousTools = previousConfig?.tools ?? [];
56
- await saveProjectConfig(projectDir, {
57
- ...(previousConfig?.frozenAssets?.length ? { frozenAssets: previousConfig.frozenAssets } : {}),
58
- tools: selectedTools,
59
- });
60
- const listChanged = previousTools.length > 0 &&
61
- (previousTools.length !== selectedTools.length || previousTools.some((t, i) => t !== selectedTools[i]));
62
- actions.push({
63
- detail: `tools: ${selectedTools.join(', ')}${listChanged ? ` — replaced: ${previousTools.join(', ')}` : ''}`,
64
- label: 'Wrote .atkrc.json',
65
- });
66
- const removedTools = previousTools.filter((t) => !selectedTools.includes(t));
67
- if (removedTools.length > 0) {
68
- actions.push({
69
- detail: `${removedTools.join(', ')} — installed files and config directories were left in place`,
70
- label: 'Removed from tools list',
51
+ // Steps 1 and 2 run under the lockfile lock, so a concurrent install's or move's write isn't
52
+ // lost, and a lock that stays held fails setup before it changes anything.
53
+ await withLockfileErrorHandling(projectDir, async () => {
54
+ // 1. Write .atkrc.json with { tools: [...] }. Setup replaces the tools list, so say which
55
+ // list it replaced and which tools dropped out of it.
56
+ // Frozen assets are not setup's to change, so they carry over.
57
+ const previousConfig = await loadPreviousConfig(projectDir);
58
+ const previousTools = previousConfig?.tools ?? [];
59
+ await saveProjectConfig(projectDir, {
60
+ ...(previousConfig?.frozenAssets?.length ? { frozenAssets: previousConfig.frozenAssets } : {}),
61
+ tools: selectedTools,
71
62
  });
72
- }
73
- // 2. Write/update .atk-lock.json
74
- const lockfilePath = getLockfilePath(projectDir);
75
- if (existsSync(lockfilePath)) {
76
- // Preserve existing assets and org
77
- const existing = await readLockfile(projectDir);
78
- // Only update org if it's not already set and we have a new one
79
- const updatedLockfile = {
80
- ...existing,
81
- lockVersion: 1,
82
- ...(resolvedOrg !== undefined && !existing.org ? { org: resolvedOrg } : {}),
83
- };
84
- await writeLockfile(projectDir, updatedLockfile);
63
+ const listChanged = previousTools.length > 0 &&
64
+ (previousTools.length !== selectedTools.length || previousTools.some((t, i) => t !== selectedTools[i]));
85
65
  actions.push({
86
- detail: `${(existing.assets ?? []).length} existing asset(s) preserved`,
87
- label: 'Updated .atk-lock.json',
66
+ detail: `tools: ${selectedTools.join(', ')}${listChanged ? ` — replaced: ${previousTools.join(', ')}` : ''}`,
67
+ label: 'Wrote .atkrc.json',
88
68
  });
89
- }
90
- else {
91
- await writeLockfile(projectDir, {
92
- assets: [],
93
- lockVersion: 1,
94
- ...(resolvedOrg !== undefined ? { org: resolvedOrg } : {}),
95
- });
96
- actions.push({
97
- detail: resolvedOrg ? `org: ${resolvedOrg}` : 'no org',
98
- label: 'Created .atk-lock.json',
99
- });
100
- }
69
+ const removedTools = previousTools.filter((t) => !selectedTools.includes(t));
70
+ if (removedTools.length > 0) {
71
+ actions.push({
72
+ detail: `${removedTools.join(', ')} — installed files and config directories were left in place`,
73
+ label: 'Removed from tools list',
74
+ });
75
+ }
76
+ // 2. Write/update .atk-lock.json. The existence check is under the lock too: an install
77
+ // may create the lockfile meanwhile.
78
+ const lockfilePath = getLockfilePath(projectDir);
79
+ if (existsSync(lockfilePath)) {
80
+ // Preserve existing assets and org
81
+ const existing = await readLockfile(projectDir);
82
+ // Only update org if it's not already set and we have a new one
83
+ const updatedLockfile = {
84
+ ...existing,
85
+ lockVersion: 1,
86
+ ...(resolvedOrg !== undefined && !existing.org ? { org: resolvedOrg } : {}),
87
+ };
88
+ await writeLockfile(projectDir, updatedLockfile);
89
+ actions.push({
90
+ detail: `${(existing.assets ?? []).length} existing asset(s) preserved`,
91
+ label: 'Updated .atk-lock.json',
92
+ });
93
+ }
94
+ else {
95
+ await writeLockfile(projectDir, {
96
+ assets: [],
97
+ lockVersion: 1,
98
+ ...(resolvedOrg !== undefined ? { org: resolvedOrg } : {}),
99
+ });
100
+ actions.push({
101
+ detail: resolvedOrg ? `org: ${resolvedOrg}` : 'no org',
102
+ label: 'Created .atk-lock.json',
103
+ });
104
+ }
105
+ });
101
106
  // 3. Ensure each selected tool's marker directory exists and .atkrc.json is
102
107
  // in .gitignore via the adapters' gitignore entries
103
108
  const allAdded = [];
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACxG,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAsB,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1E,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,yBAAyB,CAAC;AAuBrD,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAgB;IAC9C,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAA6B;IACtE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IACnE,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEzD,6FAA6F;IAC7F,2EAA2E;IAC3E,MAAM,yBAAyB,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;QACrD,0FAA0F;QAC1F,yDAAyD;QACzD,kEAAkE;QAClE,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,iBAAiB,CAAC,UAAU,EAAE;YAClC,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9F,KAAK,EAAE,aAAa;SACrB,CAAC,CAAC;QAEH,MAAM,WAAW,GACf,aAAa,CAAC,MAAM,GAAG,CAAC;YACxB,CAAC,aAAa,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1G,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,UAAU,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,gBAAgB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YAC5G,KAAK,EAAE,mBAAmB;SAC3B,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,8DAA8D;gBAChG,KAAK,EAAE,yBAAyB;aACjC,CAAC,CAAC;QACL,CAAC;QAED,wFAAwF;QACxF,wCAAwC;QACxC,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7B,mCAAmC;YACnC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;YAChD,gEAAgE;YAChE,MAAM,eAAe,GAAG;gBACtB,GAAG,QAAQ;gBACX,WAAW,EAAE,CAAU;gBACvB,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;YACF,MAAM,aAAa,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,8BAA8B;gBACvE,KAAK,EAAE,wBAAwB;aAChC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,aAAa,CAAC,UAAU,EAAE;gBAC9B,MAAM,EAAE,EAAE;gBACV,WAAW,EAAE,CAAC;gBACd,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC3D,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ;gBACtD,KAAK,EAAE,wBAAwB;aAChC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,uDAAuD;IACvD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAE7B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YACxC,gBAAgB,GAAG,IAAI,CAAC;YAExB,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBACrE,IAAI,aAAa,EAAE,CAAC;oBAClB,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,mBAAmB,EAAE,KAAK,EAAE,WAAW,aAAa,EAAE,EAAE,CAAC,CAAC;gBACzG,CAAC;YACH,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,qEAAqE;gBACrE,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;gBAClC,QAAQ,CAAC,IAAI,CAAC,0CAA0C,IAAI,MAAM,OAAO,EAAE,CAAC,CAAC;YAC/E,CAAC;YAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACpE,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,4EAA4E;YAC5E,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC,+BAA+B,IAAI,MAAM,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,gFAAgF;QAChF,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,uBAAuB,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC,CAAC;YACpG,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC,gCAAgC,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,sBAAsB;QACtB,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,SAAkB;IAClE,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;IAE/E,qCAAqC;IACrC,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CACb,gBAAgB,WAAW,2EAA2E,CACvG,CAAC;IACJ,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EACtC,WAAW,EACX,IAAI,GAAG,KAAK,GAIb;IACC,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,YAAY,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC3C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AACxE,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,KAAK,UAAU,mBAAmB,CAAC,UAAkB,EAAE,OAAgB;IACrE,MAAM,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACjH,IAAI,mBAAmB;QAAE,OAAO,IAAI,CAAC;IAErC,yEAAyE;IACzE,8CAA8C;IAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1F,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5C,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,2EAA2E;AAC3E,KAAK,UAAU,kBAAkB,CAAC,UAAkB;IAClD,IAAI,CAAC;QACH,OAAO,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"user-setup.d.ts","sourceRoot":"","sources":["../../src/lib/user-setup.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAiB,MAAM,YAAY,CAAC;AASrE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,4FAA4F;IAC5F,OAAO,EAAE,OAAO,CAAC;CAClB;AAKD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAiF1F"}
1
+ {"version":3,"file":"user-setup.d.ts","sourceRoot":"","sources":["../../src/lib/user-setup.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAiB,MAAM,YAAY,CAAC;AASrE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,4FAA4F;IAC5F,OAAO,EAAE,OAAO,CAAC;CAClB;AAKD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAqF1F"}
@@ -4,7 +4,7 @@ import { homedir } from 'node:os';
4
4
  import { join, resolve } from 'node:path';
5
5
  import { getConfigPath, hasUserScopeSection, loadUserScopeConfig, writeUserScopeSection } from './config.js';
6
6
  import { hasAtkGitignoreBlock } from './gitignore.js';
7
- import { getLockfilePath, readLockfile, writeLockfile } from './lockfile.js';
7
+ import { getLockfilePath, readLockfile, withLockfileErrorHandling, writeLockfile } from './lockfile.js';
8
8
  import { formatOrgName } from './org.js';
9
9
  import { isSamePath } from './same-path.js';
10
10
  import { resolveSetupOrg } from './setup.js';
@@ -25,68 +25,71 @@ export async function performUserSetup(options) {
25
25
  const actions = [];
26
26
  const warnings = [];
27
27
  const org = resolveSetupOrg(orgValue, orgLocked);
28
- const lockfilePath = getLockfilePath(userRoot);
29
- const configPath = getConfigPath();
30
- const before = await Promise.all([readIfExists(lockfilePath), readIfExists(configPath)]);
31
- const lockfileExisted = before[0] !== undefined;
32
- const adopting = lockfileExisted && !(await hasUserScopeSection());
33
- // Read both files before writing either, so a config that doesn't load fails before any change.
34
- const lockfile = await readLockfile(userRoot);
35
- const assets = lockfile.assets ?? [];
36
- const previous = await loadUserScopeConfig(userRoot);
37
- const previousTools = previous?.tools ?? [];
38
- // 1. The user lockfile. An existing one keeps its assets, and its org once set.
39
- if (!lockfileExisted) {
40
- await writeLockfile(userRoot, { assets: [], lockVersion: 1, ...(org !== undefined ? { org } : {}) });
41
- actions.push({ detail: org ? `org: ${org}` : 'no org', label: 'Created .atk-lock.json' });
42
- }
43
- else if (org && !lockfile.org) {
44
- await writeLockfile(userRoot, { ...lockfile, org });
45
- actions.push({ detail: `org: ${org}`, label: 'Set the org in .atk-lock.json' });
46
- }
47
- // 2. The `user` section. Frozen assets aren't setup's to change, so they carry over, from the
48
- // legacy top-level keys when the home directory still holds them.
49
- const { droppedLegacy } = await writeUserScopeSection({ ...(previous?.frozenAssets?.length ? { frozenAssets: previous.frozenAssets } : {}), tools: selectedTools }, { dropLegacy: isSamePath(resolve(userRoot), resolve(homedir())) });
50
- if ((await readIfExists(configPath)) !== before[1]) {
51
- const replaced = previousTools.length > 0 && previousTools.join(',') !== selectedTools.join(',');
28
+ // The lockfile is read and written under its lock, so a concurrent user-scope install's write isn't lost.
29
+ return withLockfileErrorHandling(userRoot, async () => {
30
+ const lockfilePath = getLockfilePath(userRoot);
31
+ const configPath = getConfigPath();
32
+ const before = await Promise.all([readIfExists(lockfilePath), readIfExists(configPath)]);
33
+ const lockfileExisted = before[0] !== undefined;
34
+ const adopting = lockfileExisted && !(await hasUserScopeSection());
35
+ // Read both files before writing either, so a config that doesn't load fails before any change.
36
+ const lockfile = await readLockfile(userRoot);
37
+ const assets = lockfile.assets ?? [];
38
+ const previous = await loadUserScopeConfig(userRoot);
39
+ const previousTools = previous?.tools ?? [];
40
+ // 1. The user lockfile. An existing one keeps its assets, and its org once set.
41
+ if (!lockfileExisted) {
42
+ await writeLockfile(userRoot, { assets: [], lockVersion: 1, ...(org !== undefined ? { org } : {}) });
43
+ actions.push({ detail: org ? `org: ${org}` : 'no org', label: 'Created .atk-lock.json' });
44
+ }
45
+ else if (org && !lockfile.org) {
46
+ await writeLockfile(userRoot, { ...lockfile, org });
47
+ actions.push({ detail: `org: ${org}`, label: 'Set the org in .atk-lock.json' });
48
+ }
49
+ // 2. The `user` section. Frozen assets aren't setup's to change, so they carry over, from the
50
+ // legacy top-level keys when the home directory still holds them.
51
+ const { droppedLegacy } = await writeUserScopeSection({ ...(previous?.frozenAssets?.length ? { frozenAssets: previous.frozenAssets } : {}), tools: selectedTools }, { dropLegacy: isSamePath(resolve(userRoot), resolve(homedir())) });
52
+ if ((await readIfExists(configPath)) !== before[1]) {
53
+ const replaced = previousTools.length > 0 && previousTools.join(',') !== selectedTools.join(',');
54
+ actions.push({
55
+ detail: `tools: ${selectedTools.join(', ')}${replaced ? ` — replaced: ${previousTools.join(', ')}` : ''}`,
56
+ label: `Wrote the user section of ${configPath}`,
57
+ });
58
+ }
59
+ const removedTools = previousTools.filter((tool) => !selectedTools.includes(tool));
60
+ if (removedTools.length > 0) {
61
+ actions.push({
62
+ detail: `${removedTools.join(', ')} — installed files and config directories were left in place`,
63
+ label: 'Removed from tools list',
64
+ });
65
+ }
66
+ if (droppedLegacy) {
67
+ actions.push({
68
+ detail: 'tools and frozen assets of the home directory setup',
69
+ label: `Moved the top-level keys of ${configPath} into its user section`,
70
+ });
71
+ }
72
+ if (!adopting) {
73
+ return { actions, changed: await changedSince(before, [lockfilePath, configPath]), warnings };
74
+ }
52
75
  actions.push({
53
- detail: `tools: ${selectedTools.join(', ')}${replaced ? ` — replaced: ${previousTools.join(', ')}` : ''}`,
54
- label: `Wrote the user section of ${configPath}`,
76
+ detail: `${assets.length} existing asset(s) kept${lockfile.org ? `, org: ${lockfile.org}` : ''}`,
77
+ label: 'Adopted .atk-lock.json',
55
78
  });
56
- }
57
- const removedTools = previousTools.filter((tool) => !selectedTools.includes(tool));
58
- if (removedTools.length > 0) {
59
- actions.push({
60
- detail: `${removedTools.join(', ')} — installed files and config directories were left in place`,
61
- label: 'Removed from tools list',
62
- });
63
- }
64
- if (droppedLegacy) {
65
- actions.push({
66
- detail: 'tools and frozen assets of the home directory setup',
67
- label: `Moved the top-level keys of ${configPath} into its user section`,
68
- });
69
- }
70
- if (!adopting) {
79
+ // 3. Reports. Nothing here is changed: the assets need a sync, and the .gitignore may be a dotfiles repo's.
80
+ const placedDifferently = assets.filter((asset) => PLACED_DIFFERENTLY_TYPES.has(asset.type));
81
+ if (placedDifferently.length > 0) {
82
+ const names = placedDifferently.map((asset) => `${formatOrgName(asset.org, asset.name)} (${asset.type})`);
83
+ const [verb, pronoun] = placedDifferently.length === 1 ? ['was', 'it'] : ['were', 'them'];
84
+ warnings.push(`${names.join(', ')} ${verb} placed with project-scope rules, which user scope places differently. ` +
85
+ `Run \`atk sync --user\` to place ${pronoun} for the user scope.`);
86
+ }
87
+ if (await hasAtkGitignoreBlock(userRoot)) {
88
+ warnings.push(`${join(userRoot, '.gitignore')} still has the "# ATK managed assets" block from a project setup there. ` +
89
+ 'User scope does not use it, and ATK leaves it in place in case a dotfiles repo needs it.');
90
+ }
71
91
  return { actions, changed: await changedSince(before, [lockfilePath, configPath]), warnings };
72
- }
73
- actions.push({
74
- detail: `${assets.length} existing asset(s) kept${lockfile.org ? `, org: ${lockfile.org}` : ''}`,
75
- label: 'Adopted .atk-lock.json',
76
92
  });
77
- // 3. Reports. Nothing here is changed: the assets need a sync, and the .gitignore may be a dotfiles repo's.
78
- const placedDifferently = assets.filter((asset) => PLACED_DIFFERENTLY_TYPES.has(asset.type));
79
- if (placedDifferently.length > 0) {
80
- const names = placedDifferently.map((asset) => `${formatOrgName(asset.org, asset.name)} (${asset.type})`);
81
- const [verb, pronoun] = placedDifferently.length === 1 ? ['was', 'it'] : ['were', 'them'];
82
- warnings.push(`${names.join(', ')} ${verb} placed with project-scope rules, which user scope places differently. ` +
83
- `Run \`atk sync --user\` to place ${pronoun} for the user scope.`);
84
- }
85
- if (await hasAtkGitignoreBlock(userRoot)) {
86
- warnings.push(`${join(userRoot, '.gitignore')} still has the "# ATK managed assets" block from a project setup there. ` +
87
- 'User scope does not use it, and ATK leaves it in place in case a dotfiles repo needs it.');
88
- }
89
- return { actions, changed: await changedSince(before, [lockfilePath, configPath]), warnings };
90
93
  }
91
94
  /** Whether any of `paths` differs from its content in `before` (undefined: it didn't exist). */
92
95
  async function changedSince(before, paths) {
@@ -1 +1 @@
1
- {"version":3,"file":"user-setup.js","sourceRoot":"","sources":["../../src/lib/user-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAI1C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC7G,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAc7C,mFAAmF;AACnF,MAAM,wBAAwB,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;AAEtF;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAyB;IAC9D,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACjE,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,MAAM,GAAG,GAAG,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACzF,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;IAChD,MAAM,QAAQ,GAAG,eAAe,IAAI,CAAC,CAAC,MAAM,mBAAmB,EAAE,CAAC,CAAC;IAEnE,gGAAgG;IAChG,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC;IAE5C,gFAAgF;IAChF,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,aAAa,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACrG,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAC5F,CAAC;SAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,aAAa,CAAC,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,8FAA8F;IAC9F,qEAAqE;IACrE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,qBAAqB,CACnD,EAAE,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,EAC5G,EAAE,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAClE,CAAC;IAEF,IAAI,CAAC,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjG,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,UAAU,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,gBAAgB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YACzG,KAAK,EAAE,6BAA6B,UAAU,EAAE;SACjD,CAAC,CAAC;IACL,CAAC;IACD,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACnF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,8DAA8D;YAChG,KAAK,EAAE,yBAAyB;SACjC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,qDAAqD;YAC7D,KAAK,EAAE,+BAA+B,UAAU,wBAAwB;SACzE,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;IAChG,CAAC;IAED,OAAO,CAAC,IAAI,CAAC;QACX,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,0BAA0B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QAChG,KAAK,EAAE,wBAAwB;KAChC,CAAC,CAAC;IAEH,4GAA4G;IAC5G,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,wBAAwB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7F,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;QAC1G,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,iBAAiB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1F,QAAQ,CAAC,IAAI,CACX,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,yEAAyE;YAClG,oCAAoC,OAAO,sBAAsB,CACpE,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,QAAQ,CAAC,IAAI,CACX,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,0EAA0E;YACvG,0FAA0F,CAC7F,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;AAChG,CAAC;AAED,gGAAgG;AAChG,KAAK,UAAU,YAAY,CAAC,MAAiC,EAAE,KAAe;IAC5E,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;IACzD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY;IACtC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"user-setup.js","sourceRoot":"","sources":["../../src/lib/user-setup.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@detergent-software/atk",
3
- "version": "8.9.0-dev.29",
3
+ "version": "8.9.0-dev.30",
4
4
  "description": "Agentic Tool Kit — CLI for managing AI coding tool assets.",
5
5
  "type": "module",
6
6
  "bin": {