@detergent-software/atk 1.2.0-dev.3 → 2.0.0-dev.1

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 (76) hide show
  1. package/build/commands/browse.js +2 -2
  2. package/build/commands/browse.js.map +1 -1
  3. package/build/commands/diff.js +1 -1
  4. package/build/commands/diff.js.map +1 -1
  5. package/build/commands/freeze.js +1 -1
  6. package/build/commands/freeze.js.map +1 -1
  7. package/build/commands/index.js +1 -1
  8. package/build/commands/index.js.map +1 -1
  9. package/build/commands/info.d.ts.map +1 -1
  10. package/build/commands/info.js +2 -18
  11. package/build/commands/info.js.map +1 -1
  12. package/build/commands/install.js +2 -3
  13. package/build/commands/install.js.map +1 -1
  14. package/build/commands/pin.js +1 -1
  15. package/build/commands/pin.js.map +1 -1
  16. package/build/commands/prune.js +2 -2
  17. package/build/commands/prune.js.map +1 -1
  18. package/build/commands/publish.js +1 -1
  19. package/build/commands/publish.js.map +1 -1
  20. package/build/commands/search.d.ts.map +1 -1
  21. package/build/commands/search.js +1 -13
  22. package/build/commands/search.js.map +1 -1
  23. package/build/commands/setup.d.ts +3 -2
  24. package/build/commands/setup.d.ts.map +1 -1
  25. package/build/commands/setup.js +396 -72
  26. package/build/commands/setup.js.map +1 -1
  27. package/build/commands/sync.d.ts.map +1 -1
  28. package/build/commands/sync.js +32 -6
  29. package/build/commands/sync.js.map +1 -1
  30. package/build/commands/thaw.js +1 -1
  31. package/build/commands/thaw.js.map +1 -1
  32. package/build/commands/uninstall.js +1 -1
  33. package/build/commands/uninstall.js.map +1 -1
  34. package/build/commands/unpin.js +1 -1
  35. package/build/commands/unpin.js.map +1 -1
  36. package/build/commands/update.js +1 -1
  37. package/build/commands/update.js.map +1 -1
  38. package/build/lib/config.d.ts +19 -1
  39. package/build/lib/config.d.ts.map +1 -1
  40. package/build/lib/config.js +52 -1
  41. package/build/lib/config.js.map +1 -1
  42. package/build/lib/diagnostics.d.ts.map +1 -1
  43. package/build/lib/diagnostics.js +48 -11
  44. package/build/lib/diagnostics.js.map +1 -1
  45. package/build/lib/gitignore.d.ts.map +1 -1
  46. package/build/lib/gitignore.js +4 -0
  47. package/build/lib/gitignore.js.map +1 -1
  48. package/build/lib/lockfile.d.ts +13 -5
  49. package/build/lib/lockfile.d.ts.map +1 -1
  50. package/build/lib/lockfile.js +38 -16
  51. package/build/lib/lockfile.js.map +1 -1
  52. package/build/lib/org.d.ts +2 -2
  53. package/build/lib/org.d.ts.map +1 -1
  54. package/build/lib/org.js +3 -3
  55. package/build/lib/org.js.map +1 -1
  56. package/build/lib/paths.d.ts +1 -1
  57. package/build/lib/paths.js +2 -2
  58. package/build/lib/paths.js.map +1 -1
  59. package/build/lib/schemas/config.d.ts +6 -0
  60. package/build/lib/schemas/config.d.ts.map +1 -1
  61. package/build/lib/schemas/config.js +5 -0
  62. package/build/lib/schemas/config.js.map +1 -1
  63. package/build/lib/schemas/index.d.ts +1 -1
  64. package/build/lib/schemas/index.d.ts.map +1 -1
  65. package/build/lib/schemas/index.js +1 -1
  66. package/build/lib/schemas/index.js.map +1 -1
  67. package/build/lib/schemas/lockfile.d.ts +0 -1
  68. package/build/lib/schemas/lockfile.d.ts.map +1 -1
  69. package/build/lib/schemas/lockfile.js +0 -1
  70. package/build/lib/schemas/lockfile.js.map +1 -1
  71. package/build/lib/tool-resolver.d.ts.map +1 -1
  72. package/build/lib/tool-resolver.js +4 -3
  73. package/build/lib/tool-resolver.js.map +1 -1
  74. package/build/lib/uninstaller.js +1 -1
  75. package/build/lib/uninstaller.js.map +1 -1
  76. package/package.json +1 -1
@@ -1,13 +1,14 @@
1
1
  import { z } from 'zod';
2
- export declare const description = "Initialize ATK in a project by creating an empty lockfile";
2
+ export declare const description = "Initialize ATK in a project \u2014 select tools and create lockfiles";
3
3
  export declare const options: z.ZodObject<{
4
4
  org: z.ZodOptional<z.ZodString>;
5
5
  projectRoot: z.ZodOptional<z.ZodString>;
6
6
  tool: z.ZodOptional<z.ZodString>;
7
+ yes: z.ZodDefault<z.ZodBoolean>;
7
8
  }, z.core.$strip>;
8
9
  type Props = {
9
10
  options: z.infer<typeof options>;
10
11
  };
11
- export default function Setup({ options: { org, projectRoot, tool } }: Props): import("react/jsx-runtime").JSX.Element;
12
+ export default function Setup({ options: { org: orgFlag, projectRoot, tool: toolFlag, yes } }: Props): import("react/jsx-runtime").JSX.Element | null;
12
13
  export {};
13
14
  //# sourceMappingURL=setup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,WAAW,8DAA8D,CAAC;AAEvF,eAAO,MAAM,OAAO;;;;iBA4BlB,CAAC;AAEH,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC,CAAC;AAOF,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,2CA+H3E"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,WAAW,yEAAoE,CAAC;AAE7F,eAAO,MAAM,OAAO;;;;;iBAqClB,CAAC;AAEH,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC,CAAC;AASF,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,kDAkenG"}
@@ -1,14 +1,17 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Text } from 'ink';
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text, useApp, useInput, useStdin } from 'ink';
3
+ import TextInput from 'ink-text-input';
3
4
  import { existsSync } from 'node:fs';
4
5
  import { option } from 'pastel';
6
+ import { useCallback, useEffect, useState } from 'react';
5
7
  import { z } from 'zod';
6
8
  import { Spinner } from '../components/index.js';
7
- import { useCommand } from '../hooks/useCommand.js';
8
- import { getLockfilePath, LockfileLockedError, readLockfile, withLockfileLock, writeLockfile, } from '../lib/lockfile.js';
9
+ import { loadAdapter, loadAllAdapters } from '../lib/adapter.js';
10
+ import { loadConfig, loadProjectConfig, saveProjectConfig } from '../lib/config.js';
11
+ import { ensureGitignoreEntries } from '../lib/gitignore.js';
12
+ import { discoverToolLockfiles, getLockfilePath, readLockfile, writeLockfile } from '../lib/lockfile.js';
9
13
  import { findProjectRoot } from '../lib/paths.js';
10
- import { resolveTool } from '../lib/tool-resolver.js';
11
- export const description = 'Initialize ATK in a project by creating an empty lockfile';
14
+ export const description = 'Initialize ATK in a project — select tools and create lockfiles';
12
15
  export const options = z.object({
13
16
  org: z
14
17
  .string()
@@ -31,88 +34,409 @@ export const options = z.object({
31
34
  alias: 'T',
32
35
  description: 'Target tool (e.g., claude-code)',
33
36
  })),
37
+ yes: z
38
+ .boolean()
39
+ .default(false)
40
+ .describe(option({
41
+ alias: 'y',
42
+ description: 'Skip interactive prompts (use defaults)',
43
+ })),
34
44
  });
35
- export default function Setup({ options: { org, projectRoot, tool } }) {
36
- const state = useCommand(async (progress) => {
37
- const projectDir = findProjectRoot(projectRoot);
38
- const { config, tool: resolvedTool } = await resolveTool(tool);
39
- const resolvedOrg = org ?? config.org;
40
- const lockfilePath = getLockfilePath(projectDir);
41
- const lockfileExists = existsSync(lockfilePath);
42
- if (!lockfileExists) {
43
- progress('Creating lockfile...');
44
- try {
45
- await withLockfileLock(projectDir, async () => {
46
- const lockfile = {
47
- assets: [],
48
- lockVersion: 1,
49
- ...(resolvedOrg && { org: resolvedOrg }),
50
- tool: resolvedTool,
51
- };
52
- await writeLockfile(projectDir, lockfile);
53
- });
45
+ export default function Setup({ options: { org: orgFlag, projectRoot, tool: toolFlag, yes } }) {
46
+ const { exit } = useApp();
47
+ const { isRawModeSupported: isTTY } = useStdin();
48
+ // Step state machine
49
+ const [step, setStep] = useState('loading');
50
+ // Data collected across steps
51
+ const [projectDir, setProjectDir] = useState('');
52
+ const [adapters, setAdapters] = useState([]);
53
+ const [existingLockfileTools, setExistingLockfileTools] = useState([]);
54
+ const [projectConfig, setProjectConfig] = useState({});
55
+ // Tool selection state
56
+ const [selectedTools, setSelectedTools] = useState(new Set());
57
+ const [cursorIndex, setCursorIndex] = useState(0);
58
+ // Org input state
59
+ const [orgValue, setOrgValue] = useState('');
60
+ // Bootstrap state
61
+ const [newTools, setNewTools] = useState([]);
62
+ const [bootstrapSourceTool, setBootstrapSourceTool] = useState('');
63
+ const [bootstrapAssetCount, setBootstrapAssetCount] = useState(0);
64
+ // Summary state
65
+ const [summaryActions, setSummaryActions] = useState([]);
66
+ // Error state
67
+ const [errorMessage, setErrorMessage] = useState('');
68
+ // ---------------------------------------------------------------------------
69
+ // Step 1: Loading — detect state
70
+ // ---------------------------------------------------------------------------
71
+ useEffect(() => {
72
+ if (step !== 'loading')
73
+ return;
74
+ let cancelled = false;
75
+ const load = async () => {
76
+ const resolvedDir = findProjectRoot(projectRoot);
77
+ const [allAdapters, existingLockfiles, config, projConfig] = await Promise.all([
78
+ loadAllAdapters(),
79
+ discoverToolLockfiles(resolvedDir),
80
+ loadConfig(),
81
+ loadProjectConfig(resolvedDir),
82
+ ]);
83
+ if (cancelled)
84
+ return;
85
+ setProjectDir(resolvedDir);
86
+ setAdapters(allAdapters);
87
+ setProjectConfig(projConfig);
88
+ const existingTools = existingLockfiles.map((lf) => lf.tool);
89
+ setExistingLockfileTools(existingTools);
90
+ // Pre-fill org from flags or existing config
91
+ const prefillOrg = orgFlag ?? projConfig.org ?? config.org ?? '';
92
+ setOrgValue(prefillOrg);
93
+ // Determine initial tool selection
94
+ if (toolFlag) {
95
+ // --tool flag: use only the specified tool, skip interactive selection
96
+ setSelectedTools(new Set([toolFlag]));
97
+ if (yes || orgFlag !== undefined) {
98
+ // Non-interactive: skip all prompts
99
+ setStep('creating');
100
+ }
101
+ else if (isTTY) {
102
+ setStep('org-input');
103
+ }
104
+ else {
105
+ setStep('creating');
106
+ }
107
+ return;
54
108
  }
55
- catch (error) {
56
- if (error instanceof LockfileLockedError) {
57
- throw new Error('Another ATK process is currently modifying this project. Please wait and try again.');
109
+ if (yes) {
110
+ // --yes: use defaultTool from user config or auto-detected, skip all prompts
111
+ const defaultTool = config.defaultTool ?? 'claude-code';
112
+ const preSelected = new Set();
113
+ // Include existing lockfile tools
114
+ for (const t of existingTools) {
115
+ preSelected.add(t);
58
116
  }
59
- throw error;
117
+ // Include default tool
118
+ preSelected.add(defaultTool);
119
+ setSelectedTools(preSelected);
120
+ setStep('creating');
121
+ return;
122
+ }
123
+ // Interactive mode: build pre-selected set for the tool selection step
124
+ const preSelected = new Set();
125
+ for (const t of existingTools) {
126
+ preSelected.add(t);
60
127
  }
61
- return { org: resolvedOrg, outcome: 'created', projectDir, tool: resolvedTool };
128
+ if (config.defaultTool) {
129
+ preSelected.add(config.defaultTool);
130
+ }
131
+ setSelectedTools(preSelected);
132
+ if (allAdapters.length === 0) {
133
+ setErrorMessage('No tool adapters found. Cannot proceed with setup.');
134
+ setStep('error');
135
+ return;
136
+ }
137
+ if (!isTTY) {
138
+ // Non-interactive without --yes: use pre-selected or default
139
+ if (preSelected.size === 0) {
140
+ preSelected.add('claude-code');
141
+ setSelectedTools(preSelected);
142
+ }
143
+ setStep('creating');
144
+ return;
145
+ }
146
+ setStep('select-tools');
147
+ };
148
+ load().catch((err) => {
149
+ if (!cancelled) {
150
+ setErrorMessage(err instanceof Error ? err.message : String(err));
151
+ setStep('error');
152
+ }
153
+ });
154
+ return () => {
155
+ cancelled = true;
156
+ };
157
+ }, [step, projectRoot, toolFlag, orgFlag, yes, isTTY]);
158
+ // ---------------------------------------------------------------------------
159
+ // Step 2: Tool selection — keyboard handling
160
+ // ---------------------------------------------------------------------------
161
+ useInput((input, key) => {
162
+ if (key.upArrow) {
163
+ setCursorIndex((prev) => (prev > 0 ? prev - 1 : adapters.length - 1));
62
164
  }
63
- // Lockfile exists — check if flags provided to update
64
- if (org !== undefined || tool !== undefined) {
65
- progress('Updating lockfile...');
66
- try {
67
- return await withLockfileLock(projectDir, async () => {
68
- const lockfile = await readLockfile(projectDir, resolvedTool);
69
- const changes = [];
70
- let updatedTool = lockfile.tool;
71
- let updatedOrg = lockfile.org;
72
- if (tool !== undefined && tool !== lockfile.tool) {
73
- updatedTool = resolvedTool;
74
- changes.push(`tool: ${lockfile.tool} -> ${resolvedTool}`);
75
- }
76
- if (org !== undefined && org !== lockfile.org) {
77
- updatedOrg = org || undefined;
78
- changes.push(org ? `org: ${lockfile.org ?? '(none)'} -> ${org}` : `org: ${lockfile.org} -> (none)`);
165
+ else if (key.downArrow) {
166
+ setCursorIndex((prev) => (prev < adapters.length - 1 ? prev + 1 : 0));
167
+ }
168
+ else if (input === ' ') {
169
+ // Toggle selection
170
+ const tool = adapters[cursorIndex]?.tool;
171
+ if (tool) {
172
+ setSelectedTools((prev) => {
173
+ const next = new Set(prev);
174
+ if (next.has(tool)) {
175
+ next.delete(tool);
79
176
  }
80
- if (changes.length === 0) {
81
- return { org: updatedOrg, outcome: 'already-setup', projectDir, tool: updatedTool };
177
+ else {
178
+ next.add(tool);
82
179
  }
180
+ return next;
181
+ });
182
+ }
183
+ }
184
+ else if (key.return) {
185
+ // Confirm selection — must have at least 1 selected
186
+ if (selectedTools.size > 0) {
187
+ setStep('org-input');
188
+ }
189
+ }
190
+ }, { isActive: step === 'select-tools' && isTTY });
191
+ // ---------------------------------------------------------------------------
192
+ // Step 3: Org input — submission handler
193
+ // ---------------------------------------------------------------------------
194
+ const handleOrgSubmit = useCallback((_value) => {
195
+ // orgValue is already kept in sync via onChange; just advance
196
+ setStep('creating');
197
+ }, []);
198
+ // ---------------------------------------------------------------------------
199
+ // Step 4: Creating — write project config, lockfiles, gitignore
200
+ // ---------------------------------------------------------------------------
201
+ useEffect(() => {
202
+ if (step !== 'creating')
203
+ return;
204
+ let cancelled = false;
205
+ const create = async () => {
206
+ const actions = [];
207
+ const resolvedOrg = orgValue.trim() || undefined;
208
+ const toolsArray = [...selectedTools];
209
+ // Write project config
210
+ const newProjectConfig = {
211
+ ...projectConfig,
212
+ ...(resolvedOrg !== undefined ? { org: resolvedOrg } : {}),
213
+ };
214
+ // Only remove org from config if it was explicitly cleared (user submitted empty when there was a value)
215
+ if (resolvedOrg === undefined && projectConfig.org !== undefined && orgFlag === undefined && !yes) {
216
+ // User cleared the org interactively
217
+ delete newProjectConfig.org;
218
+ }
219
+ await saveProjectConfig(projectDir, newProjectConfig);
220
+ actions.push({ detail: resolvedOrg ? `org: ${resolvedOrg}` : 'no org', label: 'Wrote .atkrc.json' });
221
+ // Track which tools are newly added
222
+ const createdTools = [];
223
+ // Create lockfiles for each selected tool
224
+ for (const tool of toolsArray) {
225
+ const lockfilePath = getLockfilePath(projectDir, tool);
226
+ if (!existsSync(lockfilePath)) {
83
227
  await writeLockfile(projectDir, {
84
- ...lockfile,
85
- ...(updatedOrg ? { org: updatedOrg } : { org: undefined }),
86
- tool: updatedTool,
228
+ assets: [],
229
+ lockVersion: 1,
230
+ tool,
87
231
  });
88
- return { changes, org: updatedOrg, outcome: 'updated', projectDir, tool: updatedTool };
89
- });
232
+ createdTools.push(tool);
233
+ actions.push({ label: `Created .atk-lock.${tool}.json` });
234
+ }
235
+ else {
236
+ actions.push({ label: `.atk-lock.${tool}.json already exists` });
237
+ }
90
238
  }
91
- catch (error) {
92
- if (error instanceof LockfileLockedError) {
93
- throw new Error('Another ATK process is currently modifying this project. Please wait and try again.');
239
+ // Ensure gitignore entries for each selected tool's adapter
240
+ for (const tool of toolsArray) {
241
+ try {
242
+ const adapter = await loadAdapter(tool);
243
+ const { added } = await ensureGitignoreEntries(projectDir, adapter);
244
+ if (added.length > 0) {
245
+ actions.push({ detail: added.join(', '), label: `Updated .gitignore for ${tool}` });
246
+ }
247
+ }
248
+ catch {
249
+ // Adapter may not exist for a manually specified tool — skip gitignore
94
250
  }
95
- throw error;
96
251
  }
252
+ // Ensure .atk-lock.*.json.lock sentinel pattern is in gitignore
253
+ // We do this by checking manually since ensureGitignoreEntries works with adapters
254
+ try {
255
+ const { readFile: readFileAsync, writeFile: writeFileAsync } = await import('node:fs/promises');
256
+ const { join } = await import('node:path');
257
+ const gitignorePath = join(projectDir, '.gitignore');
258
+ let content = '';
259
+ if (existsSync(gitignorePath)) {
260
+ content = await readFileAsync(gitignorePath, 'utf-8');
261
+ }
262
+ const lockPattern = '.atk-lock.*.json.lock';
263
+ if (!content.includes(lockPattern)) {
264
+ const atkHeader = '# ATK managed assets';
265
+ if (content.includes(atkHeader)) {
266
+ // Append after the ATK section
267
+ const lines = content.split('\n');
268
+ const headerIndex = lines.findIndex((line) => line.trim() === atkHeader);
269
+ let insertIndex = headerIndex + 1;
270
+ while (insertIndex < lines.length && lines[insertIndex].trim() !== '' && !lines[insertIndex].startsWith('#')) {
271
+ insertIndex++;
272
+ }
273
+ lines.splice(insertIndex, 0, lockPattern);
274
+ await writeFileAsync(gitignorePath, lines.join('\n'), 'utf-8');
275
+ }
276
+ else {
277
+ const separator = content.length > 0 && !content.endsWith('\n') ? '\n\n' : content.length > 0 ? '\n' : '';
278
+ await writeFileAsync(gitignorePath, `${content}${separator}# ATK managed assets\n${lockPattern}\n`, 'utf-8');
279
+ }
280
+ actions.push({ label: 'Added .atk-lock.*.json.lock to .gitignore' });
281
+ }
282
+ }
283
+ catch {
284
+ // Non-fatal — gitignore update for sentinels is best-effort
285
+ }
286
+ if (cancelled)
287
+ return;
288
+ setSummaryActions(actions);
289
+ // Check if bootstrapping is needed
290
+ if (createdTools.length > 0 && existingLockfileTools.length > 0) {
291
+ // Find an existing lockfile with assets to bootstrap from
292
+ for (const existingTool of existingLockfileTools) {
293
+ if (selectedTools.has(existingTool) && !createdTools.includes(existingTool)) {
294
+ try {
295
+ const lockfile = await readLockfile(projectDir, existingTool);
296
+ const assetCount = (lockfile.assets ?? []).length;
297
+ if (assetCount > 0) {
298
+ setNewTools(createdTools);
299
+ setBootstrapSourceTool(existingTool);
300
+ setBootstrapAssetCount(assetCount);
301
+ if (yes) {
302
+ // Auto-bootstrap in --yes mode
303
+ await bootstrapLockfiles(projectDir, existingTool, createdTools);
304
+ actions.push({
305
+ detail: `${assetCount} assets from ${existingTool}`,
306
+ label: `Bootstrapped ${createdTools.join(', ')}`,
307
+ });
308
+ setSummaryActions([...actions]);
309
+ setStep('done');
310
+ return;
311
+ }
312
+ if (!isTTY) {
313
+ // Non-interactive: skip bootstrap
314
+ setStep('done');
315
+ return;
316
+ }
317
+ setStep('bootstrap-prompt');
318
+ return;
319
+ }
320
+ }
321
+ catch {
322
+ // Skip this tool if we can't read its lockfile
323
+ }
324
+ }
325
+ }
326
+ }
327
+ setStep('done');
328
+ };
329
+ create().catch((err) => {
330
+ if (!cancelled) {
331
+ setErrorMessage(err instanceof Error ? err.message : String(err));
332
+ setStep('error');
333
+ }
334
+ });
335
+ return () => {
336
+ cancelled = true;
337
+ };
338
+ }, [step, projectDir, selectedTools, orgValue, projectConfig, orgFlag, yes, existingLockfileTools, isTTY]);
339
+ // ---------------------------------------------------------------------------
340
+ // Step 5: Bootstrap prompt — keyboard handling
341
+ // ---------------------------------------------------------------------------
342
+ const [bootstrapDecided, setBootstrapDecided] = useState(false);
343
+ useInput((input) => {
344
+ if (bootstrapDecided)
345
+ return;
346
+ if (input === 'y' || input === 'Y' || input === '\r') {
347
+ setBootstrapDecided(true);
348
+ bootstrapLockfiles(projectDir, bootstrapSourceTool, newTools)
349
+ .then(() => {
350
+ setSummaryActions((prev) => [
351
+ ...prev,
352
+ {
353
+ detail: `${bootstrapAssetCount} assets from ${bootstrapSourceTool}`,
354
+ label: `Bootstrapped ${newTools.join(', ')}`,
355
+ },
356
+ ]);
357
+ setStep('done');
358
+ })
359
+ .catch((err) => {
360
+ setErrorMessage(err instanceof Error ? err.message : String(err));
361
+ setStep('error');
362
+ });
363
+ }
364
+ else if (input === 'n' || input === 'N') {
365
+ setBootstrapDecided(true);
366
+ setStep('done');
367
+ }
368
+ }, { isActive: step === 'bootstrap-prompt' && isTTY && !bootstrapDecided });
369
+ // ---------------------------------------------------------------------------
370
+ // Exit handlers
371
+ // ---------------------------------------------------------------------------
372
+ useEffect(() => {
373
+ if (step === 'error') {
374
+ const timer = setTimeout(() => {
375
+ process.exitCode = 1;
376
+ exit();
377
+ }, 100);
378
+ return () => {
379
+ clearTimeout(timer);
380
+ };
97
381
  }
98
- // Lockfile exists, no flags — show current state
99
- const lockfile = await readLockfile(projectDir, resolvedTool);
100
- return { org: lockfile.org, outcome: 'already-setup', projectDir, tool: lockfile.tool };
101
- }, [org, projectRoot, tool]);
102
- if (state.status === 'loading') {
103
- return _jsx(Spinner, { message: state.message });
382
+ }, [step, exit]);
383
+ useEffect(() => {
384
+ if (step === 'done') {
385
+ const timer = setTimeout(() => {
386
+ exit();
387
+ }, 100);
388
+ return () => {
389
+ clearTimeout(timer);
390
+ };
391
+ }
392
+ }, [step, exit]);
393
+ // ---------------------------------------------------------------------------
394
+ // Render
395
+ // ---------------------------------------------------------------------------
396
+ if (step === 'error') {
397
+ return _jsxs(Text, { color: 'red', children: ["Error: ", errorMessage] });
398
+ }
399
+ if (step === 'loading') {
400
+ return _jsx(Spinner, { message: 'Detecting project state...' });
401
+ }
402
+ if (step === 'select-tools') {
403
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { bold: true, children: "Select tools to configure" }), _jsx(Text, { dimColor: true, children: " (space to toggle, enter to confirm)" })] }), adapters.map((adapter, index) => {
404
+ const isSelected = selectedTools.has(adapter.tool);
405
+ const isCursor = index === cursorIndex;
406
+ const hasExistingLockfile = existingLockfileTools.includes(adapter.tool);
407
+ return (_jsx(Box, { children: _jsxs(Text, { color: isCursor ? 'cyan' : undefined, children: [isCursor ? '>' : ' ', " [", isSelected ? 'x' : ' ', "] ", adapter.displayName, _jsxs(Text, { dimColor: true, children: [" (", adapter.tool, ")"] }), hasExistingLockfile && _jsx(Text, { color: 'green', children: " [lockfile exists]" })] }) }, adapter.tool));
408
+ }), selectedTools.size === 0 && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: 'yellow', children: "Select at least one tool to continue." }) }))] }));
104
409
  }
105
- if (state.status === 'error') {
106
- return _jsxs(Text, { color: 'red', children: ["Error: ", state.message] });
410
+ if (step === 'org-input') {
411
+ return (_jsx(Box, { flexDirection: 'column', children: _jsxs(Box, { children: [_jsx(Text, { color: 'cyan', children: '> ' }), _jsx(Text, { children: "Organization (optional, leave empty for none): " }), _jsx(TextInput, { focus: true, onChange: setOrgValue, onSubmit: handleOrgSubmit, value: orgValue })] }) }));
107
412
  }
108
- const { data } = state;
109
- if (data.outcome === 'created') {
110
- return (_jsxs(Text, { color: 'green', children: ["Set up ATK in ", _jsx(Text, { bold: true, children: data.projectDir }), " (tool: ", data.tool, data.org ? `, org: ${data.org}` : '', ")"] }));
413
+ if (step === 'creating') {
414
+ return _jsx(Spinner, { message: 'Setting up project...' });
111
415
  }
112
- if (data.outcome === 'updated') {
113
- return (_jsxs(Text, { color: 'green', children: ["Updated ATK setup (tool: ", data.tool, data.org ? `, org: ${data.org}` : '', ")", '\n', data.changes.map((change, i) => (_jsxs(Text, { children: [' ', "- ", change, i < data.changes.length - 1 ? '\n' : ''] }, i)))] }));
416
+ if (step === 'bootstrap-prompt') {
417
+ return (_jsx(Box, { flexDirection: 'column', children: _jsxs(Text, { children: ["Found ", _jsx(Text, { bold: true, children: bootstrapAssetCount }), " asset", bootstrapAssetCount !== 1 ? 's' : '', " installed for", ' ', _jsx(Text, { bold: true, children: bootstrapSourceTool }), ". Install them for ", _jsx(Text, { bold: true, children: newTools.join(', ') }), "? [Y/n]"] }) }));
418
+ }
419
+ if (step === 'done') {
420
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsx(Text, { bold: true, color: 'green', children: "ATK setup complete!" }), _jsx(Text, { children: " " }), summaryActions.map((action, index) => (_jsxs(Text, { children: [' ', _jsx(Text, { color: 'green', children: "+" }), " ", action.label, action.detail && _jsxs(Text, { dimColor: true, children: [" (", action.detail, ")"] })] }, index))), _jsx(Text, { children: " " }), _jsxs(Text, { dimColor: true, children: ["Project: ", projectDir] }), _jsxs(Text, { dimColor: true, children: ["Tools: ", [...selectedTools].join(', ')] })] }));
421
+ }
422
+ return null;
423
+ }
424
+ // ---------------------------------------------------------------------------
425
+ // Helpers
426
+ // ---------------------------------------------------------------------------
427
+ /**
428
+ * Bootstrap new tool lockfiles by copying asset entries from an existing lockfile.
429
+ * This is a simple lockfile copy — it does not re-install or fetch from the registry.
430
+ */
431
+ async function bootstrapLockfiles(projectDir, sourceTool, targetTools) {
432
+ const sourceLockfile = await readLockfile(projectDir, sourceTool);
433
+ const sourceAssets = sourceLockfile.assets ?? [];
434
+ for (const targetTool of targetTools) {
435
+ const targetLockfile = await readLockfile(projectDir, targetTool);
436
+ await writeLockfile(projectDir, {
437
+ ...targetLockfile,
438
+ assets: [...(targetLockfile.assets ?? []), ...sourceAssets],
439
+ });
114
440
  }
115
- // data.outcome === 'already-setup'
116
- return (_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " ATK is already set up (tool: ", data.tool, data.org ? `, org: ${data.org}` : '', "). Use ", _jsx(Text, { bold: true, children: "--org" }), " or ", _jsx(Text, { bold: true, children: "--tool" }), " to update."] }));
117
441
  }
118
442
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgBxB,eAAO,MAAM,WAAW,8DAA8D,CAAC;AAEvF,eAAO,MAAM,OAAO;;;;;;iBA8ClB,CAAC;AAEH,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC,CAAC;AAmBF,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,2CAwU7F"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgBxB,eAAO,MAAM,WAAW,8DAA8D,CAAC;AAEvF,eAAO,MAAM,OAAO;;;;;;iBA8ClB,CAAC;AAEH,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC,CAAC;AAmBF,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,2CA2W7F"}