@ai-outfitter/outfitter 0.3.0 → 0.4.0

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 (43) hide show
  1. package/README.md +13 -7
  2. package/dist/agents/AdapterProfileControls.d.ts +1 -0
  3. package/dist/agents/AdapterProfileControls.js +6 -0
  4. package/dist/agents/AdapterProfileControls.js.map +1 -1
  5. package/dist/agents/claude/ClaudeAdapter.js +2 -2
  6. package/dist/agents/claude/ClaudeAdapter.js.map +1 -1
  7. package/dist/agents/pi/PiAdapter.js +16 -12
  8. package/dist/agents/pi/PiAdapter.js.map +1 -1
  9. package/dist/cli/OutfitterCli.js +7 -2
  10. package/dist/cli/OutfitterCli.js.map +1 -1
  11. package/dist/cli/commands/RunCommand.js +4 -1
  12. package/dist/cli/commands/RunCommand.js.map +1 -1
  13. package/dist/cli/commands/SetupCommand.d.ts +15 -0
  14. package/dist/cli/commands/SetupCommand.js +355 -32
  15. package/dist/cli/commands/SetupCommand.js.map +1 -1
  16. package/dist/cli/commands/WelcomeCommand.d.ts +1 -0
  17. package/dist/cli/commands/WelcomeCommand.js +10 -7
  18. package/dist/cli/commands/WelcomeCommand.js.map +1 -1
  19. package/dist/cli/commands/profile/ListCommand.d.ts +2 -0
  20. package/dist/cli/commands/profile/ListCommand.js +9 -3
  21. package/dist/cli/commands/profile/ListCommand.js.map +1 -1
  22. package/dist/merge/ArrayMergePolicy.d.ts +2 -1
  23. package/dist/merge/ArrayMergePolicy.js +14 -11
  24. package/dist/merge/ArrayMergePolicy.js.map +1 -1
  25. package/dist/merge/SettingsValueMerger.js +27 -2
  26. package/dist/merge/SettingsValueMerger.js.map +1 -1
  27. package/dist/profiles/Profile.d.ts +3 -1
  28. package/dist/profiles/Profile.js.map +1 -1
  29. package/dist/profiles/ProfileLoader.js +15 -2
  30. package/dist/profiles/ProfileLoader.js.map +1 -1
  31. package/dist/profiles/ProfileMerger.d.ts +0 -1
  32. package/dist/profiles/ProfileMerger.js +20 -9
  33. package/dist/profiles/ProfileMerger.js.map +1 -1
  34. package/dist/schemas/profile.schema.json +16 -4
  35. package/doc/architecture.md +28 -7
  36. package/package.json +1 -1
  37. package/requirements/OFTR-001-project-foundation.md +1 -1
  38. package/requirements/OFTR-003-profiles.md +13 -5
  39. package/requirements/OFTR-004-sync-and-setup.md +11 -1
  40. package/requirements/OFTR-006-agent-adapters.md +2 -0
  41. package/requirements/OFTR-009-release-publishing.md +11 -2
  42. package/requirements/OFTR-010-onboarding-welcome.md +1 -0
  43. package/src/schemas/profile.schema.json +16 -4
@@ -5,12 +5,25 @@ import { createInterface } from 'node:readline/promises';
5
5
  import { homedir } from 'node:os';
6
6
  import { dirname, join } from 'node:path';
7
7
  import spawn from 'cross-spawn';
8
+ import { parse, stringify } from 'yaml';
8
9
  import { createProfileSourceCachePath, createRemoteRepositoryCachePath, normalizeGitUri, redactProfileSourceUriCredentials, resolveRemoteRepositorySubpath, } from '../../profiles/ProfileCache.js';
9
10
  import { isValidProfileId, loadLocalProfileSource } from '../../profiles/ProfileLoader.js';
10
11
  import { createSettingsLoadPlan, discoverSettingsLoadPlan, loadSettings, loadSettingsFiles, loadSettingsWithCachedRemoteSettings, } from '../../settings/SettingsLoader.js';
11
12
  import { persistFirstRunWelcomeProfile, updateSettingsDefaultProfile, } from './FirstRunWelcomeProfile.js';
12
13
  import { executeSyncCommand } from './SyncCommand.js';
13
- import { executeWelcomeCommand } from './WelcomeCommand.js';
14
+ import { executeWelcomeCommand, writeWelcomeIntro } from './WelcomeCommand.js';
15
+ const setupSourceImportTargetChoices = [
16
+ {
17
+ target: 'home',
18
+ label: 'User home',
19
+ description: 'install profiles into ~/.outfitter for all repositories on this machine',
20
+ },
21
+ {
22
+ target: 'project',
23
+ label: 'Current project',
24
+ description: 'install profiles into this project .outfitter folder only',
25
+ },
26
+ ];
14
27
  const builtInSetupProfileChoices = [
15
28
  { id: 'engineer', label: 'Engineer' },
16
29
  { id: 'data_analyst', label: 'Data Analyst' },
@@ -31,6 +44,16 @@ export const executeSetupCommand = async (input, dependencies = {}) => {
31
44
  ? readStarterDefaultProfileId(starterLayout?.settingsPath)
32
45
  : readUserDefaultProfileId(loadedSettings.files);
33
46
  assertValidDefaultProfileId(defaultProfileId);
47
+ if (input.setupSourceUri !== undefined && dependencies.interactive === true && starterLayout !== undefined) {
48
+ return executeInteractiveSetupSourceCommand({
49
+ input: { ...input, setupSourceUri: input.setupSourceUri },
50
+ dependencies,
51
+ homeSettingsPath: settingsPath,
52
+ initialSettingsMissing,
53
+ starterLayout,
54
+ currentDefaultProfileId: defaultProfileId,
55
+ });
56
+ }
34
57
  const createdSettings = createInitialSettingsIfMissing(settingsPath, starterLayout?.settingsPath);
35
58
  ensureExistingUserSettingsDefaultProfile(settingsPath, loadedSettings.files, defaultProfileId);
36
59
  const copiedStarterProfileFiles = copyStarterProfileFilesIfPresent(starterLayout?.profilesPath, join(input.homeDirectory, '.outfitter', 'profiles'));
@@ -39,7 +62,7 @@ export const executeSetupCommand = async (input, dependencies = {}) => {
39
62
  failOnInitialDefaultProfileSyncFailure(initialSettingsMissing, rollbackCreatedSettings, syncResult);
40
63
  const selectedDefaultProfileId = shouldSkipInitialDefaultProfilePrompt(initialSettingsMissing, dependencies)
41
64
  ? defaultProfileId
42
- : await selectDefaultProfileIfInteractive(input, settingsPath, defaultProfileId, dependencies);
65
+ : await selectDefaultProfileIfInteractive(input, settingsPath, defaultProfileId, dependencies, starterLayout);
43
66
  const welcomeResult = await runWelcomeAfterInteractiveSetup(input, dependencies);
44
67
  const welcomeProfile = persistWelcomeProfileForSetup(input, settingsPath, welcomeResult);
45
68
  const finalDefaultProfile = prepareFinalDefaultProfile(input.homeDirectory, selectedDefaultProfileId, welcomeProfile);
@@ -62,6 +85,7 @@ export const executeSetupCommand = async (input, dependencies = {}) => {
62
85
  createdDefaultProfile: finalDefaultProfile.created,
63
86
  syncResult,
64
87
  welcomeProfileMessages: welcomeProfile?.messages ?? [],
88
+ runExampleMessages: input.setupSourceUri === undefined ? [] : [formatRunProfileExample(finalDefaultProfile.id)],
65
89
  }),
66
90
  };
67
91
  };
@@ -79,6 +103,42 @@ const failOnInitialDefaultProfileSyncFailure = (initialSettingsMissing, rollback
79
103
  throw new Error(`Cannot complete first-run setup because the default profiles source failed to sync: ${failedDefaultProfilesSource.message}. ` +
80
104
  'Fix the network/git issue and rerun `outfitter setup` once the source is reachable.');
81
105
  };
106
+ const executeInteractiveSetupSourceCommand = async ({ input, dependencies, homeSettingsPath, initialSettingsMissing, starterLayout, currentDefaultProfileId, }) => {
107
+ const onboarding = await runSetupSourceOnboarding(input, dependencies, starterLayout, currentDefaultProfileId);
108
+ const appliedImport = applySetupSourceImport(input, starterLayout, onboarding);
109
+ /* v8 ignore next -- setup-source rollback only runs when a home import creates settings and default-profile sync fails. */
110
+ const rollbackCreatedSettings = appliedImport.createdSettings
111
+ ? () => rmSync(appliedImport.settingsPath, { force: true })
112
+ : () => undefined;
113
+ const syncResult = executeSyncCommand(input, dependencies);
114
+ failOnInitialDefaultProfileSyncFailure(initialSettingsMissing && appliedImport.settingsPath === homeSettingsPath, rollbackCreatedSettings, syncResult);
115
+ const defaultProfilePath = join(appliedImport.profilesPath, onboarding.selectedProfileId, 'profile.yml');
116
+ const createdDefaultProfile = createDefaultProfileIfMissing(defaultProfilePath, onboarding.selectedProfileId);
117
+ const postImportAction = await runSetupSourcePostImportAction(input, dependencies, onboarding.selectedProfileId);
118
+ return {
119
+ settingsPath: appliedImport.settingsPath,
120
+ defaultProfilePath,
121
+ createdSettings: appliedImport.createdSettings,
122
+ copiedStarterProfileFiles: appliedImport.copiedStarterProfileFiles,
123
+ createdDefaultProfile,
124
+ syncResult,
125
+ messages: buildSetupMessages({
126
+ input,
127
+ starterLayout,
128
+ settingsPath: appliedImport.settingsPath,
129
+ settingsDescription: appliedImport.settingsDescription,
130
+ profileTargetPath: appliedImport.profilesPath,
131
+ createdSettings: appliedImport.createdSettings,
132
+ copiedStarterProfileFiles: appliedImport.copiedStarterProfileFiles,
133
+ defaultProfileId: onboarding.selectedProfileId,
134
+ defaultProfilePath,
135
+ createdDefaultProfile,
136
+ syncResult,
137
+ welcomeProfileMessages: [],
138
+ runExampleMessages: postImportAction === 'exit' ? [formatRunProfileExample(onboarding.selectedProfileId)] : [],
139
+ }),
140
+ };
141
+ };
82
142
  const prepareFinalDefaultProfile = (homeDirectory, selectedDefaultProfileId, welcomeProfile) => {
83
143
  const finalDefaultProfileId = welcomeProfile?.profileId ?? selectedDefaultProfileId;
84
144
  const finalDefaultProfilePath = join(homeDirectory, '.outfitter', 'profiles', finalDefaultProfileId, 'profile.yml');
@@ -90,17 +150,51 @@ const buildSetupMessages = (input) => {
90
150
  if (input.input.setupSourceUri !== undefined && input.starterLayout !== undefined) {
91
151
  messages.push(`Prepared setup source ${redactProfileSourceUriCredentials(input.input.setupSourceUri)} at ${input.starterLayout.cachePath}.`);
92
152
  }
153
+ const settingsDescription = input.settingsDescription ?? 'user';
154
+ const profileTargetPath = input.profileTargetPath ?? join(input.input.homeDirectory, '.outfitter', 'profiles');
93
155
  messages.push(input.createdSettings
94
- ? `Created user settings at ${input.settingsPath}.`
95
- : `User settings already exist at ${input.settingsPath}; left unchanged.`);
156
+ ? `Created ${settingsDescription} settings at ${input.settingsPath}.`
157
+ : `${capitalize(settingsDescription)} settings already exist at ${input.settingsPath}; left unchanged.`);
96
158
  if (input.starterLayout?.profilesPath !== undefined) {
97
- messages.push(`Copied ${input.copiedStarterProfileFiles} starter profile file(s) into ${join(input.input.homeDirectory, '.outfitter', 'profiles')}.`);
159
+ messages.push(`Copied ${input.copiedStarterProfileFiles} starter profile file(s) into ${profileTargetPath}.`);
160
+ }
161
+ if (shouldReportDefaultProfileStatus(input)) {
162
+ messages.push(input.createdDefaultProfile
163
+ ? `Created default user profile at ${input.defaultProfilePath}.`
164
+ : `Default user profile at ${input.defaultProfilePath} already exists; left unchanged.`);
98
165
  }
99
- messages.push(input.createdDefaultProfile
100
- ? `Created default user profile at ${input.defaultProfilePath}.`
101
- : `Default user profile at ${input.defaultProfilePath} already exists; left unchanged.`, `Selected default profile '${input.defaultProfileId}'.`, ...input.welcomeProfileMessages, ...input.syncResult.messages);
166
+ messages.push(`Selected default profile '${input.defaultProfileId}'.`, ...input.welcomeProfileMessages, ...input.runExampleMessages, ...input.syncResult.messages);
102
167
  return messages;
103
168
  };
169
+ const shouldReportDefaultProfileStatus = (input) => {
170
+ if (input.createdDefaultProfile) {
171
+ return true;
172
+ }
173
+ return input.input.setupSourceUri === undefined || input.starterLayout?.profilesPath === undefined;
174
+ };
175
+ const formatRunProfileExample = (profileId) => `Start the selected default profile either way:\n outfitter\n outfitter --profile ${profileId}`;
176
+ const runSetupSourcePostImportAction = async (input, dependencies, profileId) => {
177
+ if (dependencies.interactive !== true ||
178
+ (dependencies.launchSetupSourceProfile === undefined && dependencies.selectSetupSourceLaunchAction === undefined)) {
179
+ return 'exit';
180
+ }
181
+ const action = await selectSetupSourceLaunchAction(profileId, dependencies);
182
+ if (action === 'start') {
183
+ await dependencies.launchSetupSourceProfile?.({
184
+ homeDirectory: input.homeDirectory,
185
+ projectDirectory: input.projectDirectory,
186
+ profileId,
187
+ });
188
+ }
189
+ return action;
190
+ };
191
+ const selectSetupSourceLaunchAction = async (profileId, dependencies) => {
192
+ if (dependencies.selectSetupSourceLaunchAction !== undefined) {
193
+ return dependencies.selectSetupSourceLaunchAction(profileId);
194
+ }
195
+ return promptForSetupSourceLaunchAction(profileId, dependencies);
196
+ };
197
+ const capitalize = (value) => `${value.slice(0, 1).toUpperCase()}${value.slice(1)}`;
104
198
  export const createSetupCommand = (dependencies = {}) => {
105
199
  const command = {
106
200
  name: 'setup',
@@ -177,6 +271,13 @@ const readStarterDefaultProfileId = (settingsPath) => {
177
271
  const loaded = loadSettingsFiles(createSettingsLoadPlan([{ scope: 'user', path: settingsPath }]));
178
272
  return loaded.files[0]?.settings.defaultProfile ?? 'engineer';
179
273
  };
274
+ const readStarterExplicitDefaultProfileId = (settingsPath) => {
275
+ if (settingsPath === undefined) {
276
+ return undefined;
277
+ }
278
+ const loaded = loadSettingsFiles(createSettingsLoadPlan([{ scope: 'user', path: settingsPath }]));
279
+ return loaded.files[0]?.settings.defaultProfile;
280
+ };
180
281
  const readUserDefaultProfileId = (files) => files.find((file) => file.location.scope === 'user')?.settings.defaultProfile ?? 'engineer';
181
282
  const ensureExistingUserSettingsDefaultProfile = (settingsPath, files, defaultProfileId) => {
182
283
  const userSettings = files.find((file) => file.location.scope === 'user');
@@ -217,6 +318,62 @@ const readStarterSettingsContent = (starterSettingsPath) => {
217
318
  }
218
319
  return `default_profile: engineer\n${content}`;
219
320
  };
321
+ const applySetupSourceImport = (input, starterLayout, onboarding) => {
322
+ const target = createSetupSourceImportTargetLayout(input, onboarding.importTarget);
323
+ const createdSettings = createImportSettingsIfMissing(target.settingsPath, starterLayout.settingsPath, onboarding.selectedProfileId);
324
+ ensureLocalProfileSource(target.settingsPath, target.profilesPath);
325
+ updateSettingsDefaultProfile(target.settingsPath, onboarding.selectedProfileId);
326
+ return {
327
+ ...target,
328
+ createdSettings,
329
+ copiedStarterProfileFiles: copyStarterProfileFilesIfPresent(starterLayout.profilesPath, target.profilesPath),
330
+ };
331
+ };
332
+ const createSetupSourceImportTargetLayout = (input, target) => {
333
+ if (target === 'project') {
334
+ return {
335
+ settingsPath: join(input.projectDirectory, '.outfitter', 'settings.yml'),
336
+ settingsDescription: 'project',
337
+ profilesPath: join(input.projectDirectory, '.outfitter', 'profiles'),
338
+ };
339
+ }
340
+ return {
341
+ settingsPath: join(input.homeDirectory, '.outfitter', 'settings.yml'),
342
+ settingsDescription: 'user',
343
+ profilesPath: join(input.homeDirectory, '.outfitter', 'profiles'),
344
+ };
345
+ };
346
+ const createImportSettingsIfMissing = (settingsPath, starterSettingsPath, selectedProfileId) => {
347
+ if (existsSync(settingsPath)) {
348
+ return false;
349
+ }
350
+ mkdirSync(dirname(settingsPath), { recursive: true });
351
+ writeFileSync(settingsPath,
352
+ /* v8 ignore next -- setup-source tests exercise starter settings; missing starter settings is defensive fallback. */
353
+ starterSettingsPath === undefined
354
+ ? createLocalProfileSettingsContent(selectedProfileId)
355
+ : readStarterSettingsContent(starterSettingsPath));
356
+ return true;
357
+ };
358
+ const createLocalProfileSettingsContent = (defaultProfileId) => ['default_profile: ' + defaultProfileId, 'profile_sources:', ' - path: ./profiles', ''].join('\n');
359
+ const ensureLocalProfileSource = (settingsPath, profilesPath) => {
360
+ const loaded = loadSettingsFiles(createSettingsLoadPlan([{ scope: 'user', path: settingsPath }]));
361
+ const sources = loaded.files[0]?.settings.profileSources ?? [];
362
+ if (sources.some((source) => source.path === profilesPath)) {
363
+ return;
364
+ }
365
+ const document = readYamlRecord(settingsPath);
366
+ /* v8 ignore next -- appending to existing non-local source lists is equivalent to the covered empty-source case. */
367
+ const existingSources = Array.isArray(document.profile_sources) ? document.profile_sources : [];
368
+ writeFileSync(settingsPath, stringify({ ...document, profile_sources: [...existingSources, { path: './profiles' }] }));
369
+ };
370
+ const readYamlRecord = (path) => {
371
+ const parsed = parse(readFileSync(path, 'utf8'));
372
+ /* v8 ignore next -- settings schema validation guarantees object documents before this helper mutates them. */
373
+ return parsed !== null && typeof parsed === 'object' && !Array.isArray(parsed)
374
+ ? { ...parsed }
375
+ : {};
376
+ };
220
377
  const copyStarterProfileFilesIfPresent = (sourceProfilesPath, targetProfilesPath) => {
221
378
  if (sourceProfilesPath === undefined) {
222
379
  return 0;
@@ -293,18 +450,145 @@ const requireInteractiveTerminalIfNeeded = (dependencies) => {
293
450
  }
294
451
  };
295
452
  const shouldSkipInitialDefaultProfilePrompt = (initialSettingsMissing, dependencies) => initialSettingsMissing && dependencies.interactive === true;
296
- const selectDefaultProfileIfInteractive = async (input, settingsPath, currentDefault, dependencies) => {
453
+ /* v8 ignore next -- default process stdout is direct terminal behavior; tests inject writable streams. */
454
+ const resolveReadlineOutput = (dependencies) => typeof dependencies.output?.write === 'function' ? dependencies.output : process.stdout;
455
+ const resolvePromptOutput = (dependencies) => {
456
+ if (typeof dependencies.output?.write === 'function') {
457
+ return dependencies.output;
458
+ }
459
+ if (dependencies.writeLine !== undefined) {
460
+ return {
461
+ write(message) {
462
+ dependencies.writeLine?.(message.replace(/\n$/u, ''));
463
+ return true;
464
+ },
465
+ };
466
+ }
467
+ /* v8 ignore next 7 -- defensive non-writable injected output fallback; normal tests inject writeLine or writable output. */
468
+ if (dependencies.output !== undefined) {
469
+ return {
470
+ write() {
471
+ return true;
472
+ },
473
+ };
474
+ }
475
+ return process.stdout;
476
+ };
477
+ const runSetupSourceOnboarding = async (input, dependencies, starterLayout, currentDefault) => {
478
+ const discoveredProfiles = discoverSetupProfileChoices(input, starterLayout);
479
+ const sourceDefault = discoverSetupSourcePromptDefault(input, starterLayout, discoveredProfiles);
480
+ const promptDefault = sourceDefault ?? currentDefault;
481
+ const profiles = selectSetupPromptProfiles(input, discoveredProfiles, currentDefault, sourceDefault);
482
+ if (dependencies.selectSetupSourceImportTarget === undefined && dependencies.selectDefaultProfile === undefined) {
483
+ return promptForSetupSourceOnboarding(input, profiles, promptDefault, dependencies);
484
+ }
485
+ writeSetupSourceWelcome(input, profiles, resolvePromptOutput(dependencies));
486
+ const importTarget = await selectSetupSourceImportTarget(dependencies);
487
+ const selectedProfileId = await selectSetupProfile(profiles, promptDefault, dependencies);
488
+ assertValidSelectedDefaultProfile(selectedProfileId, profiles);
489
+ return { importTarget, selectedProfileId };
490
+ };
491
+ const promptForSetupSourceOnboarding = async (input, profiles, currentDefault, dependencies) => {
492
+ const output = resolvePromptOutput(dependencies);
493
+ /* v8 ignore next -- default process streams are direct terminal behavior; tests inject streams. */
494
+ const readline = createInterface({
495
+ input: dependencies.input ?? process.stdin,
496
+ output: resolveReadlineOutput(dependencies),
497
+ });
498
+ try {
499
+ writeSetupSourceWelcome(input, profiles, output);
500
+ const importTarget = await promptForSetupSourceImportTargetWithReadline(readline, output);
501
+ const selectedProfileId = await promptForSetupProfileWithReadline(readline, output, profiles, currentDefault, 'Choose the default profile from this setup source:');
502
+ assertValidSelectedDefaultProfile(selectedProfileId, profiles);
503
+ return { importTarget, selectedProfileId };
504
+ }
505
+ finally {
506
+ readline.close();
507
+ }
508
+ };
509
+ const writeSetupSourceWelcome = (input, profiles, output) => {
510
+ writeWelcomeIntro(output);
511
+ output.write(`\nYou're importing Outfitter profiles from ${redactProfileSourceUriCredentials(input.setupSourceUri)}.\n`);
512
+ output.write(`Found ${profiles.length} profile(s)${formatSetupSourceProfileList(profiles)}.\n`);
513
+ };
514
+ const formatSetupSourceProfileList = (profiles) => {
515
+ /* v8 ignore next -- setup-source profile prompts normally require discovered source profiles. */
516
+ if (profiles.length === 0) {
517
+ return '';
518
+ }
519
+ return `: ${profiles.map((profile) => profile.id).join(', ')}`;
520
+ };
521
+ const selectSetupSourceImportTarget = async (dependencies) => {
522
+ /* v8 ignore else -- mixed dependency injection path; the full readline path prompts with one shared readline. */
523
+ if (dependencies.selectSetupSourceImportTarget !== undefined) {
524
+ const selectedTarget = await dependencies.selectSetupSourceImportTarget(setupSourceImportTargetChoices, 'home');
525
+ assertValidSetupSourceImportTarget(selectedTarget);
526
+ return selectedTarget;
527
+ }
528
+ /* v8 ignore next -- mixed dependency injection path; the full readline path prompts with one shared readline. */
529
+ return promptForSetupSourceImportTarget(dependencies);
530
+ };
531
+ /* v8 ignore next -- covered by the shared readline setup-source onboarding prompt in normal CLI usage. */
532
+ const promptForSetupSourceImportTarget = async (dependencies) => {
533
+ const output = resolvePromptOutput(dependencies);
534
+ /* v8 ignore next -- default process streams are direct terminal behavior; tests inject streams. */
535
+ const readline = createInterface({
536
+ input: dependencies.input ?? process.stdin,
537
+ output: resolveReadlineOutput(dependencies),
538
+ });
539
+ try {
540
+ return await promptForSetupSourceImportTargetWithReadline(readline, output);
541
+ }
542
+ finally {
543
+ readline.close();
544
+ }
545
+ };
546
+ const promptForSetupSourceImportTargetWithReadline = async (readline, output) => {
547
+ output.write('\nChoose where to install these profiles:\n');
548
+ setupSourceImportTargetChoices.forEach((choice, index) => {
549
+ output.write(`${index + 1}. ${choice.label} - ${choice.description}\n`);
550
+ });
551
+ const answer = await readline.question('Import target [1]: ');
552
+ const selectedIndex = Number.parseInt(answer.trim() || '1', 10) - 1;
553
+ const selectedTarget = setupSourceImportTargetChoices[selectedIndex]?.target;
554
+ /* v8 ignore next -- defensive terminal validation; profile prompt range handling is covered separately. */
555
+ if (selectedTarget === undefined) {
556
+ throw new Error('Selected setup-source import target number is out of range.');
557
+ }
558
+ return selectedTarget;
559
+ };
560
+ const assertValidSetupSourceImportTarget = (target) => {
561
+ /* v8 ignore next -- defensive validation for custom dependency injection. */
562
+ if (setupSourceImportTargetChoices.every((choice) => choice.target !== target)) {
563
+ throw new Error(`Selected setup-source import target '${target}' is not available.`);
564
+ }
565
+ };
566
+ /* v8 ignore next -- covered by interactive CLI smoke tests; unit tests inject the launch choice. */
567
+ const promptForSetupSourceLaunchAction = async (profileId, dependencies) => {
568
+ const readline = createInterface({
569
+ input: dependencies.input ?? process.stdin,
570
+ output: resolveReadlineOutput(dependencies),
571
+ });
572
+ try {
573
+ const answer = await readline.question(`Start Outfitter with profile '${profileId}' now? [Y/n]: `);
574
+ return answer.trim().toLowerCase().startsWith('n') ? 'exit' : 'start';
575
+ }
576
+ finally {
577
+ readline.close();
578
+ }
579
+ };
580
+ const selectDefaultProfileIfInteractive = async (input, settingsPath, currentDefault, dependencies, starterLayout) => {
297
581
  if (dependencies.interactive !== true) {
298
582
  return currentDefault;
299
583
  }
300
- const discoveredProfiles = discoverSetupProfileChoices(input);
301
- const profiles = discoveredProfiles.length > 0 || builtInSetupProfileChoices.every((profile) => profile.id !== currentDefault)
302
- ? discoveredProfiles
303
- : builtInSetupProfileChoices;
584
+ const discoveredProfiles = discoverSetupProfileChoices(input, starterLayout);
585
+ const sourceDefault = discoverSetupSourcePromptDefault(input, starterLayout, discoveredProfiles);
586
+ const promptDefault = sourceDefault ?? currentDefault;
587
+ const profiles = selectSetupPromptProfiles(input, discoveredProfiles, currentDefault, sourceDefault);
304
588
  const writer = dependencies.writeLine ?? console.log;
305
589
  writer('Welcome to Outfitter. Outfitter is the easiest way to run Pi.');
306
590
  writer('Outfitter manages full pi configurations for you, so you can use different profiles in different situations.');
307
- const selectedProfile = await selectSetupProfile(profiles, currentDefault, dependencies);
591
+ const selectedProfile = await selectSetupProfile(profiles, promptDefault, dependencies);
308
592
  assertValidSelectedDefaultProfile(selectedProfile, profiles);
309
593
  updateSettingsDefaultProfile(settingsPath, selectedProfile);
310
594
  return selectedProfile;
@@ -315,7 +599,41 @@ const assertValidSelectedDefaultProfile = (selectedProfile, profiles) => {
315
599
  throw new Error(`Selected default profile '${selectedProfile}' was not one of the available setup profiles.`);
316
600
  }
317
601
  };
318
- const discoverSetupProfileChoices = (input) => {
602
+ const discoverSetupSourcePromptDefault = (input, starterLayout, profiles) => {
603
+ if (input.setupSourceUri === undefined) {
604
+ return undefined;
605
+ }
606
+ const sourceDefault = readStarterExplicitDefaultProfileId(starterLayout?.settingsPath);
607
+ return profiles.some((profile) => profile.id === sourceDefault) ? sourceDefault : undefined;
608
+ };
609
+ const selectSetupPromptProfiles = (input, discoveredProfiles, currentDefault, sourceDefault) => {
610
+ const profiles = discoveredProfiles.length > 0 ||
611
+ input.setupSourceUri !== undefined ||
612
+ builtInSetupProfileChoices.every((profile) => profile.id !== currentDefault)
613
+ ? discoveredProfiles
614
+ : builtInSetupProfileChoices;
615
+ return sourceDefault === undefined ? profiles : prioritizeSetupProfileChoice(profiles, sourceDefault);
616
+ };
617
+ const prioritizeSetupProfileChoice = (profiles, profileId) => [
618
+ ...profiles.filter((profile) => profile.id === profileId),
619
+ ...profiles.filter((profile) => profile.id !== profileId),
620
+ ];
621
+ const discoverSetupProfileChoices = (input, starterLayout) => {
622
+ if (input.setupSourceUri !== undefined && starterLayout?.profilesPath !== undefined) {
623
+ return discoverSetupProfileChoicesFromLocalSource(starterLayout.profilesPath);
624
+ }
625
+ return discoverSetupProfileChoicesFromEffectiveSettings(input);
626
+ };
627
+ const discoverSetupProfileChoicesFromLocalSource = (path) => {
628
+ const loadedProfiles = loadLocalProfileSource({ path });
629
+ return loadedProfiles.profiles
630
+ .map((profile) => ({
631
+ id: profile.profile.id,
632
+ label: profile.profile.label,
633
+ }))
634
+ .sort((left, right) => left.id.localeCompare(right.id));
635
+ };
636
+ const discoverSetupProfileChoicesFromEffectiveSettings = (input) => {
319
637
  const loadedSettings = loadSettingsWithCachedRemoteSettings(input);
320
638
  const choices = new Map();
321
639
  for (const source of loadedSettings.settings.profileSources) {
@@ -350,30 +668,35 @@ const selectSetupProfile = async (profiles, currentDefault, dependencies) => {
350
668
  return promptForSetupProfile(profiles, currentDefault, dependencies);
351
669
  };
352
670
  const promptForSetupProfile = async (profiles, currentDefault, dependencies) => {
353
- const candidates = profiles.length > 0 ? profiles : [{ id: currentDefault }];
354
- /* v8 ignore next -- default process streams are direct terminal behavior; tests inject streams. */
355
- const output = dependencies.output ?? process.stdout;
671
+ const output = resolvePromptOutput(dependencies);
356
672
  /* v8 ignore next -- default process streams are direct terminal behavior; tests inject streams. */
357
- const readline = createInterface({ input: dependencies.input ?? process.stdin, output });
673
+ const readline = createInterface({
674
+ input: dependencies.input ?? process.stdin,
675
+ output: resolveReadlineOutput(dependencies),
676
+ });
358
677
  try {
359
- output.write('\nChoose the default profile for your sessions:\n');
360
- candidates.forEach((profile, index) => {
361
- const label = profile.label === undefined ? '' : ` - ${profile.label}`;
362
- output.write(`${index + 1}. ${profile.id}${label}\n`);
363
- });
364
- const currentIndex = Math.max(candidates.findIndex((profile) => profile.id === currentDefault), 0);
365
- const answer = await readline.question(`Default profile [${currentIndex + 1}]: `);
366
- const selectedIndex = Number.parseInt(answer.trim() || String(currentIndex + 1), 10) - 1;
367
- const selectedProfile = candidates[selectedIndex];
368
- if (selectedProfile === undefined) {
369
- throw new Error('Selected default profile number is out of range.');
370
- }
371
- return selectedProfile.id;
678
+ return await promptForSetupProfileWithReadline(readline, output, profiles, currentDefault, 'Choose the default profile for your sessions:');
372
679
  }
373
680
  finally {
374
681
  readline.close();
375
682
  }
376
683
  };
684
+ const promptForSetupProfileWithReadline = async (readline, output, profiles, currentDefault, heading) => {
685
+ const candidates = profiles.length > 0 ? profiles : [{ id: currentDefault }];
686
+ output.write(`\n${heading}\n`);
687
+ candidates.forEach((profile, index) => {
688
+ const label = profile.label === undefined ? '' : ` - ${profile.label}`;
689
+ output.write(`${index + 1}. ${profile.id}${label}\n`);
690
+ });
691
+ const currentIndex = Math.max(candidates.findIndex((profile) => profile.id === currentDefault), 0);
692
+ const answer = await readline.question(`Default profile [${currentIndex + 1}]: `);
693
+ const selectedIndex = Number.parseInt(answer.trim() || String(currentIndex + 1), 10) - 1;
694
+ const selectedProfile = candidates[selectedIndex];
695
+ if (selectedProfile === undefined) {
696
+ throw new Error('Selected default profile number is out of range.');
697
+ }
698
+ return selectedProfile.id;
699
+ };
377
700
  export { updateSettingsDefaultProfile };
378
701
  const formatSettingsIssue = (issue) => `${issue.filePath}#${issue.path} ${issue.message}`;
379
702
  //# sourceMappingURL=SetupCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SetupCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/SetupCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SetupCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/SetupCommand.ts"],"names":[],"mappings":"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"}
@@ -50,5 +50,6 @@ export interface WelcomeCommandDependencies {
50
50
  readonly writeLine?: (message: string) => void;
51
51
  readonly selectWelcomePlan?: (input: WelcomeCommandInput) => Promise<WelcomePlan>;
52
52
  }
53
+ export declare const writeWelcomeIntro: (output: Pick<NodeJS.WritableStream, "write">) => void;
53
54
  export declare const executeWelcomeCommand: (input: WelcomeCommandInput, dependencies?: WelcomeCommandDependencies) => Promise<WelcomeCommandResult>;
54
55
  export declare const createWelcomeCommand: (dependencies?: WelcomeCommandDependencies) => CommandObject;
@@ -2,16 +2,19 @@
2
2
  import { createInterface } from 'node:readline/promises';
3
3
  import { homedir } from 'node:os';
4
4
  const welcomeIntroLines = [
5
- String.raw ` _ _ ____ _`,
6
- String.raw ` / \ _ __ _ __ | | ___ | _ \(_)`,
7
- String.raw ` / _ \ | '_ \| '_ \| |/ _ \ | |_) | |`,
8
- String.raw ` / ___ \| |_) | |_) | | __/ | __/| |`,
9
- String.raw `/_/ \_\ .__/| .__/|_|\___| |_| |_|`,
10
- String.raw ` |_| |_|`,
5
+ String.raw ` ____ _ __ _ _ _ `,
6
+ String.raw ` / __ \ | | / _(_) | | | `,
7
+ String.raw `| | | |_ _| |_| |_ _| |_| |_ ___ _ __ `,
8
+ String.raw `| | | | | | | __| _| | __| __/ _ \ '__|`,
9
+ String.raw `| |__| | |_| | |_| | | | |_| || __/ | `,
10
+ String.raw ` \____/ \__,_|\__|_| |_|\__|\__\___|_| `,
11
11
  '',
12
12
  'Welcome to Outfitter.',
13
13
  'Pi is a heavily customizable coding harness. The next few questions will configure Outfitter to best suit your workflow.',
14
14
  ];
15
+ export const writeWelcomeIntro = (output) => {
16
+ output.write(`\n${welcomeIntroLines.join('\n')}\n`);
17
+ };
15
18
  const defaultProfileRoleChoices = [
16
19
  { id: 'engineer', label: 'Engineer' },
17
20
  { id: 'data_analyst', label: 'Data Analyst' },
@@ -104,7 +107,7 @@ const promptForWelcomePlan = async (dependencies) => {
104
107
  /* v8 ignore next -- default process streams are direct terminal behavior; tests inject streams. */
105
108
  const readline = createInterface({ input: dependencies.input ?? process.stdin, output });
106
109
  try {
107
- output.write(`\n${welcomeIntroLines.join('\n')}\n`);
110
+ writeWelcomeIntro(output);
108
111
  const answerQuestions = await promptForYesNo(readline, 'Choose a role and recommended Pi loadout now? [Y/n]: ', true);
109
112
  if (!answerQuestions) {
110
113
  return { answerQuestions: false };