@ai-outfitter/outfitter 0.11.0 → 1.0.2

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 (308) hide show
  1. package/.outfitter/skills/outfitter/SKILL.md +67 -37
  2. package/README.md +63 -35
  3. package/code/enterprise/cli/privateCatalogSettings.cjs +2 -2
  4. package/code/enterprise/pi-extension/privateCatalogOnboarding.js +5 -8
  5. package/code/enterprise/shared/privateCatalogPolicy.cjs +5 -5
  6. package/code/pi-extension/src/outfitter-extension.js +353 -553
  7. package/code/pi-extension/src/outfitter-runtime-extension.js +160 -0
  8. package/dist/agents/AgentLaunch.d.ts +9 -1
  9. package/dist/agents/AgentLaunch.js +19 -0
  10. package/dist/agents/AgentLaunch.js.map +1 -1
  11. package/dist/agents/PiCredentialPersistence.d.ts +6 -0
  12. package/dist/agents/PiCredentialPersistence.js +33 -0
  13. package/dist/agents/PiCredentialPersistence.js.map +1 -0
  14. package/dist/cli/OutfitterCli.js +10 -18
  15. package/dist/cli/OutfitterCli.js.map +1 -1
  16. package/dist/cli/commands/CommandObject.d.ts +0 -5
  17. package/dist/cli/commands/CommandObject.js +1 -4
  18. package/dist/cli/commands/CommandObject.js.map +1 -1
  19. package/dist/cli/commands/DumpCommand.d.ts +19 -0
  20. package/dist/cli/commands/DumpCommand.js +54 -0
  21. package/dist/cli/commands/DumpCommand.js.map +1 -0
  22. package/dist/cli/commands/ListCommand.d.ts +17 -0
  23. package/dist/cli/commands/ListCommand.js +77 -0
  24. package/dist/cli/commands/ListCommand.js.map +1 -0
  25. package/dist/cli/commands/PiRuntimeLaunch.d.ts +8 -0
  26. package/dist/cli/commands/PiRuntimeLaunch.js +47 -0
  27. package/dist/cli/commands/PiRuntimeLaunch.js.map +1 -0
  28. package/dist/cli/commands/ProcessDefaults.d.ts +2 -0
  29. package/dist/cli/commands/ProcessDefaults.js +5 -0
  30. package/dist/cli/commands/ProcessDefaults.js.map +1 -0
  31. package/dist/cli/commands/RunAgentCommand.d.ts +46 -0
  32. package/dist/cli/commands/RunAgentCommand.js +176 -0
  33. package/dist/cli/commands/RunAgentCommand.js.map +1 -0
  34. package/dist/cli/commands/SetupCommand.d.ts +38 -6
  35. package/dist/cli/commands/SetupCommand.js +194 -232
  36. package/dist/cli/commands/SetupCommand.js.map +1 -1
  37. package/dist/cli/commands/ValidateCommand.d.ts +20 -0
  38. package/dist/cli/commands/ValidateCommand.js +54 -0
  39. package/dist/cli/commands/ValidateCommand.js.map +1 -0
  40. package/dist/composer/Composer.d.ts +11 -0
  41. package/dist/composer/Composer.js +72 -0
  42. package/dist/composer/Composer.js.map +1 -0
  43. package/dist/composer/Composition.d.ts +33 -0
  44. package/dist/composer/Composition.js +2 -0
  45. package/dist/composer/Composition.js.map +1 -0
  46. package/dist/dump/Containment.d.ts +8 -0
  47. package/dist/dump/Containment.js +22 -0
  48. package/dist/dump/Containment.js.map +1 -0
  49. package/dist/dump/Dump.d.ts +8 -0
  50. package/dist/dump/Dump.js +182 -0
  51. package/dist/dump/Dump.js.map +1 -0
  52. package/dist/extensions/PiExtensionCache.d.ts +30 -0
  53. package/dist/extensions/PiExtensionCache.js +92 -0
  54. package/dist/extensions/PiExtensionCache.js.map +1 -0
  55. package/dist/fs/TypeConflict.d.ts +6 -0
  56. package/dist/fs/TypeConflict.js +21 -0
  57. package/dist/fs/TypeConflict.js.map +1 -0
  58. package/dist/paths/OutfitterCache.d.ts +6 -0
  59. package/dist/paths/OutfitterCache.js +17 -0
  60. package/dist/paths/OutfitterCache.js.map +1 -0
  61. package/dist/projection/Materialize.d.ts +24 -0
  62. package/dist/projection/Materialize.js +83 -0
  63. package/dist/projection/Materialize.js.map +1 -0
  64. package/dist/projection/ProjectHarness.d.ts +5 -0
  65. package/dist/projection/ProjectHarness.js +77 -0
  66. package/dist/projection/ProjectHarness.js.map +1 -0
  67. package/dist/projection/Projection.d.ts +23 -0
  68. package/dist/projection/Projection.js +2 -0
  69. package/dist/projection/Projection.js.map +1 -0
  70. package/dist/resolver/AgentDefinition.d.ts +30 -0
  71. package/dist/resolver/AgentDefinition.js +123 -0
  72. package/dist/resolver/AgentDefinition.js.map +1 -0
  73. package/dist/resolver/Layer.d.ts +12 -0
  74. package/dist/resolver/Layer.js +30 -0
  75. package/dist/resolver/Layer.js.map +1 -0
  76. package/dist/resolver/Resolver.d.ts +3 -0
  77. package/dist/resolver/Resolver.js +163 -0
  78. package/dist/resolver/Resolver.js.map +1 -0
  79. package/dist/resolver/ResolverContext.d.ts +15 -0
  80. package/dist/resolver/ResolverContext.js +11 -0
  81. package/dist/resolver/ResolverContext.js.map +1 -0
  82. package/dist/resolver/ResolverValidation.d.ts +11 -0
  83. package/dist/resolver/ResolverValidation.js +112 -0
  84. package/dist/resolver/ResolverValidation.js.map +1 -0
  85. package/dist/resolver/Resource.d.ts +88 -0
  86. package/dist/resolver/Resource.js +34 -0
  87. package/dist/resolver/Resource.js.map +1 -0
  88. package/dist/schemas/agent.schema.json +48 -0
  89. package/dist/schemas/settings.schema.json +32 -9
  90. package/dist/settings/Settings.d.ts +34 -5
  91. package/dist/settings/Settings.js +3 -1
  92. package/dist/settings/Settings.js.map +1 -1
  93. package/dist/settings/SettingsLoader.d.ts +1 -1
  94. package/dist/settings/SettingsLoader.js +23 -22
  95. package/dist/settings/SettingsLoader.js.map +1 -1
  96. package/dist/settings/SettingsMerger.js +12 -10
  97. package/dist/settings/SettingsMerger.js.map +1 -1
  98. package/dist/setup/DefaultCatalog.d.ts +20 -0
  99. package/dist/setup/DefaultCatalog.js +89 -0
  100. package/dist/setup/DefaultCatalog.js.map +1 -0
  101. package/dist/setup/Setup.d.ts +43 -0
  102. package/dist/setup/Setup.js +261 -0
  103. package/dist/setup/Setup.js.map +1 -0
  104. package/dist/skills/SkillDocument.d.ts +6 -1
  105. package/dist/skills/SkillDocument.js.map +1 -1
  106. package/dist/sources/SourceCache.d.ts +19 -0
  107. package/dist/{profiles/ProfileCache.js → sources/SourceCache.js} +22 -18
  108. package/dist/sources/SourceCache.js.map +1 -0
  109. package/dist/validation/SchemaValidator.d.ts +1 -1
  110. package/dist/validation/SchemaValidator.js +4 -13
  111. package/dist/validation/SchemaValidator.js.map +1 -1
  112. package/docs/architecture/state_writeback_strategy.md +54 -122
  113. package/docs/documentation/README.md +33 -12
  114. package/docs/documentation/actions.md +35 -52
  115. package/docs/documentation/agents.md +109 -0
  116. package/docs/documentation/best-practices.md +25 -63
  117. package/docs/documentation/catalogs.md +126 -0
  118. package/docs/documentation/cli.md +39 -41
  119. package/docs/documentation/concepts.md +66 -23
  120. package/docs/documentation/dump-and-bake.md +30 -0
  121. package/docs/documentation/first-time-cli-agent-users.md +8 -8
  122. package/docs/documentation/getting-started.md +28 -8
  123. package/docs/documentation/hooks.md +20 -0
  124. package/docs/documentation/iterating-on-profiles.md +56 -70
  125. package/docs/documentation/local-development.md +84 -0
  126. package/docs/documentation/migration.md +39 -0
  127. package/docs/documentation/personas.md +41 -0
  128. package/docs/documentation/porting-claude.md +54 -0
  129. package/docs/documentation/profiles.md +16 -169
  130. package/docs/documentation/settings.md +61 -0
  131. package/docs/documentation/skills.md +93 -334
  132. package/docs/documentation/state.md +24 -62
  133. package/docs/documentation/subagents.md +37 -0
  134. package/docs/documentation/support-matrix.md +40 -35
  135. package/docs/documentation/switching-to-outfitter.md +75 -81
  136. package/docs/documentation/tasks.md +13 -0
  137. package/docs/documentation/usecases/engineering.md +67 -84
  138. package/docs/documentation/usecases/organization-profile-catalog.md +83 -111
  139. package/docs/documentation/usecases/persona-reviews.md +133 -139
  140. package/docs/philosophy.md +2 -2
  141. package/package.json +3 -3
  142. package/src/schemas/agent.schema.json +48 -0
  143. package/src/schemas/settings.schema.json +32 -9
  144. package/dist/agents/AdapterProfileControls.d.ts +0 -21
  145. package/dist/agents/AdapterProfileControls.js +0 -76
  146. package/dist/agents/AdapterProfileControls.js.map +0 -1
  147. package/dist/agents/AdapterStatePaths.d.ts +0 -12
  148. package/dist/agents/AdapterStatePaths.js +0 -46
  149. package/dist/agents/AdapterStatePaths.js.map +0 -1
  150. package/dist/agents/AgentAdapter.d.ts +0 -44
  151. package/dist/agents/AgentAdapter.js +0 -2
  152. package/dist/agents/AgentAdapter.js.map +0 -1
  153. package/dist/agents/AgentRegistry.d.ts +0 -6
  154. package/dist/agents/AgentRegistry.js +0 -17
  155. package/dist/agents/AgentRegistry.js.map +0 -1
  156. package/dist/agents/LaunchResources.d.ts +0 -17
  157. package/dist/agents/LaunchResources.js +0 -61
  158. package/dist/agents/LaunchResources.js.map +0 -1
  159. package/dist/agents/OutfitterSkill.d.ts +0 -11
  160. package/dist/agents/OutfitterSkill.js +0 -128
  161. package/dist/agents/OutfitterSkill.js.map +0 -1
  162. package/dist/agents/ResourceIdentity.d.ts +0 -2
  163. package/dist/agents/ResourceIdentity.js +0 -51
  164. package/dist/agents/ResourceIdentity.js.map +0 -1
  165. package/dist/agents/claude/ClaudeAdapter.d.ts +0 -2
  166. package/dist/agents/claude/ClaudeAdapter.js +0 -148
  167. package/dist/agents/claude/ClaudeAdapter.js.map +0 -1
  168. package/dist/agents/claude/ClaudeCompositeProfileWriter.d.ts +0 -5
  169. package/dist/agents/claude/ClaudeCompositeProfileWriter.js +0 -7
  170. package/dist/agents/claude/ClaudeCompositeProfileWriter.js.map +0 -1
  171. package/dist/agents/pi/PiAdapter.d.ts +0 -2
  172. package/dist/agents/pi/PiAdapter.js +0 -363
  173. package/dist/agents/pi/PiAdapter.js.map +0 -1
  174. package/dist/agents/pi/PiArgs.d.ts +0 -2
  175. package/dist/agents/pi/PiArgs.js +0 -15
  176. package/dist/agents/pi/PiArgs.js.map +0 -1
  177. package/dist/agents/pi/PiCompositeProfileWriter.d.ts +0 -5
  178. package/dist/agents/pi/PiCompositeProfileWriter.js +0 -7
  179. package/dist/agents/pi/PiCompositeProfileWriter.js.map +0 -1
  180. package/dist/agents/pi/PiExtensionCache.d.ts +0 -12
  181. package/dist/agents/pi/PiExtensionCache.js +0 -195
  182. package/dist/agents/pi/PiExtensionCache.js.map +0 -1
  183. package/dist/agents/pi/PiMcpConfig.d.ts +0 -2
  184. package/dist/agents/pi/PiMcpConfig.js +0 -114
  185. package/dist/agents/pi/PiMcpConfig.js.map +0 -1
  186. package/dist/agents/pi/PiSettingsMergePolicy.d.ts +0 -17
  187. package/dist/agents/pi/PiSettingsMergePolicy.js +0 -59
  188. package/dist/agents/pi/PiSettingsMergePolicy.js.map +0 -1
  189. package/dist/agents/pi/PiSkillSources.d.ts +0 -8
  190. package/dist/agents/pi/PiSkillSources.js +0 -73
  191. package/dist/agents/pi/PiSkillSources.js.map +0 -1
  192. package/dist/cli/commands/FirstRunWelcomeProfile.d.ts +0 -11
  193. package/dist/cli/commands/FirstRunWelcomeProfile.js +0 -110
  194. package/dist/cli/commands/FirstRunWelcomeProfile.js.map +0 -1
  195. package/dist/cli/commands/PiLoginLaunch.d.ts +0 -22
  196. package/dist/cli/commands/PiLoginLaunch.js +0 -170
  197. package/dist/cli/commands/PiLoginLaunch.js.map +0 -1
  198. package/dist/cli/commands/RunCommand.d.ts +0 -36
  199. package/dist/cli/commands/RunCommand.js +0 -345
  200. package/dist/cli/commands/RunCommand.js.map +0 -1
  201. package/dist/cli/commands/SyncCommand.d.ts +0 -46
  202. package/dist/cli/commands/SyncCommand.js +0 -244
  203. package/dist/cli/commands/SyncCommand.js.map +0 -1
  204. package/dist/cli/commands/WelcomeCommand.d.ts +0 -56
  205. package/dist/cli/commands/WelcomeCommand.js +0 -224
  206. package/dist/cli/commands/WelcomeCommand.js.map +0 -1
  207. package/dist/cli/commands/assets/outfitter-ascii.txt +0 -5
  208. package/dist/cli/commands/profile/Command.d.ts +0 -7
  209. package/dist/cli/commands/profile/Command.js +0 -24
  210. package/dist/cli/commands/profile/Command.js.map +0 -1
  211. package/dist/cli/commands/profile/CreateCommand.d.ts +0 -19
  212. package/dist/cli/commands/profile/CreateCommand.js +0 -115
  213. package/dist/cli/commands/profile/CreateCommand.js.map +0 -1
  214. package/dist/cli/commands/profile/LintCommand.d.ts +0 -19
  215. package/dist/cli/commands/profile/LintCommand.js +0 -155
  216. package/dist/cli/commands/profile/LintCommand.js.map +0 -1
  217. package/dist/cli/commands/profile/ListCommand.d.ts +0 -19
  218. package/dist/cli/commands/profile/ListCommand.js +0 -91
  219. package/dist/cli/commands/profile/ListCommand.js.map +0 -1
  220. package/dist/cli/commands/profile/Shared.d.ts +0 -9
  221. package/dist/cli/commands/profile/Shared.js +0 -10
  222. package/dist/cli/commands/profile/Shared.js.map +0 -1
  223. package/dist/cli/commands/run/RunFirstRunOnboarding.d.ts +0 -7
  224. package/dist/cli/commands/run/RunFirstRunOnboarding.js +0 -52
  225. package/dist/cli/commands/run/RunFirstRunOnboarding.js.map +0 -1
  226. package/dist/cli/commands/run/RunLaunchSummary.d.ts +0 -2
  227. package/dist/cli/commands/run/RunLaunchSummary.js +0 -35
  228. package/dist/cli/commands/run/RunLaunchSummary.js.map +0 -1
  229. package/dist/cli/commands/run/RunProfileResolution.d.ts +0 -39
  230. package/dist/cli/commands/run/RunProfileResolution.js +0 -128
  231. package/dist/cli/commands/run/RunProfileResolution.js.map +0 -1
  232. package/dist/cli/commands/run/RunStateWritePrompt.d.ts +0 -2
  233. package/dist/cli/commands/run/RunStateWritePrompt.js +0 -29
  234. package/dist/cli/commands/run/RunStateWritePrompt.js.map +0 -1
  235. package/dist/cli/commands/setup/SetupPrompts.d.ts +0 -14
  236. package/dist/cli/commands/setup/SetupPrompts.js +0 -296
  237. package/dist/cli/commands/setup/SetupPrompts.js.map +0 -1
  238. package/dist/cli/commands/setup/SetupSourceImport.d.ts +0 -5
  239. package/dist/cli/commands/setup/SetupSourceImport.js +0 -177
  240. package/dist/cli/commands/setup/SetupSourceImport.js.map +0 -1
  241. package/dist/cli/commands/setup/SetupSourceLaunch.d.ts +0 -4
  242. package/dist/cli/commands/setup/SetupSourceLaunch.js +0 -65
  243. package/dist/cli/commands/setup/SetupSourceLaunch.js.map +0 -1
  244. package/dist/cli/commands/setup/SetupStarterSource.d.ts +0 -21
  245. package/dist/cli/commands/setup/SetupStarterSource.js +0 -133
  246. package/dist/cli/commands/setup/SetupStarterSource.js.map +0 -1
  247. package/dist/cli/commands/setup/SetupTypes.d.ts +0 -91
  248. package/dist/cli/commands/setup/SetupTypes.js +0 -26
  249. package/dist/cli/commands/setup/SetupTypes.js.map +0 -1
  250. package/dist/compositeProfile/CompositeProfile.d.ts +0 -8
  251. package/dist/compositeProfile/CompositeProfile.js +0 -6
  252. package/dist/compositeProfile/CompositeProfile.js.map +0 -1
  253. package/dist/compositeProfile/CompositeProfileAssembler.d.ts +0 -12
  254. package/dist/compositeProfile/CompositeProfileAssembler.js +0 -32
  255. package/dist/compositeProfile/CompositeProfileAssembler.js.map +0 -1
  256. package/dist/compositeProfile/CompositeProfileCleanup.d.ts +0 -9
  257. package/dist/compositeProfile/CompositeProfileCleanup.js +0 -87
  258. package/dist/compositeProfile/CompositeProfileCleanup.js.map +0 -1
  259. package/dist/compositeProfile/CompositeProfileFile.d.ts +0 -16
  260. package/dist/compositeProfile/CompositeProfileFile.js +0 -16
  261. package/dist/compositeProfile/CompositeProfileFile.js.map +0 -1
  262. package/dist/compositeProfile/CompositeProfileTemplate.d.ts +0 -15
  263. package/dist/compositeProfile/CompositeProfileTemplate.js +0 -65
  264. package/dist/compositeProfile/CompositeProfileTemplate.js.map +0 -1
  265. package/dist/compositeProfile/CompositeProfileWatcher.d.ts +0 -18
  266. package/dist/compositeProfile/CompositeProfileWatcher.js +0 -46
  267. package/dist/compositeProfile/CompositeProfileWatcher.js.map +0 -1
  268. package/dist/compositeProfile/StatePersistence.d.ts +0 -39
  269. package/dist/compositeProfile/StatePersistence.js +0 -249
  270. package/dist/compositeProfile/StatePersistence.js.map +0 -1
  271. package/dist/fs/SafeSymlink.d.ts +0 -13
  272. package/dist/fs/SafeSymlink.js +0 -50
  273. package/dist/fs/SafeSymlink.js.map +0 -1
  274. package/dist/profiles/Profile.d.ts +0 -60
  275. package/dist/profiles/Profile.js +0 -7
  276. package/dist/profiles/Profile.js.map +0 -1
  277. package/dist/profiles/ProfileCache.d.ts +0 -8
  278. package/dist/profiles/ProfileCache.js.map +0 -1
  279. package/dist/profiles/ProfileLoader.d.ts +0 -28
  280. package/dist/profiles/ProfileLoader.js +0 -299
  281. package/dist/profiles/ProfileLoader.js.map +0 -1
  282. package/dist/profiles/ProfileMerger.d.ts +0 -19
  283. package/dist/profiles/ProfileMerger.js +0 -112
  284. package/dist/profiles/ProfileMerger.js.map +0 -1
  285. package/dist/profiles/ProfileSource.d.ts +0 -35
  286. package/dist/profiles/ProfileSource.js +0 -13
  287. package/dist/profiles/ProfileSource.js.map +0 -1
  288. package/dist/profiles/PromptIncludes.d.ts +0 -32
  289. package/dist/profiles/PromptIncludes.js +0 -147
  290. package/dist/profiles/PromptIncludes.js.map +0 -1
  291. package/dist/prompts/SystemPromptExport.d.ts +0 -16
  292. package/dist/prompts/SystemPromptExport.js +0 -81
  293. package/dist/prompts/SystemPromptExport.js.map +0 -1
  294. package/dist/schemas/profile-source.schema.json +0 -29
  295. package/dist/schemas/profile.schema.json +0 -200
  296. package/dist/skills/ProfileSkillResolution.d.ts +0 -21
  297. package/dist/skills/ProfileSkillResolution.js +0 -88
  298. package/dist/skills/ProfileSkillResolution.js.map +0 -1
  299. package/dist/skills/SkillCatalog.d.ts +0 -41
  300. package/dist/skills/SkillCatalog.js +0 -119
  301. package/dist/skills/SkillCatalog.js.map +0 -1
  302. package/dist/skills/SkillResolution.d.ts +0 -34
  303. package/dist/skills/SkillResolution.js +0 -369
  304. package/dist/skills/SkillResolution.js.map +0 -1
  305. package/docs/documentation/profile-repository.md +0 -179
  306. package/src/schemas/SchemaDocument.ts +0 -20
  307. package/src/schemas/profile-source.schema.json +0 -29
  308. package/src/schemas/profile.schema.json +0 -200
@@ -1,128 +0,0 @@
1
- // Resolves the effective profile, layers, and profile sources for a run command launch.
2
- import { existsSync, mkdirSync } from 'node:fs';
3
- import { dirname, join } from 'node:path';
4
- import { createEmptyProfile } from '../../../profiles/Profile.js';
5
- import { createProfileSourceCachePath, createRemoteRepositoryCachePath, resolveRemoteRepositorySubpath, } from '../../../profiles/ProfileCache.js';
6
- import { loadLocalProfileSource } from '../../../profiles/ProfileLoader.js';
7
- import { resolveProfile } from '../../../profiles/ProfileMerger.js';
8
- import { defaultAgentId as registryDefaultAgentId } from '../../../agents/AgentRegistry.js';
9
- import { emptySettings } from '../../../settings/Settings.js';
10
- import { loadSettingsWithCachedRemoteSettings } from '../../../settings/SettingsLoader.js';
11
- export const createFirstRunBootstrapProfile = (input) => ({
12
- profile: {
13
- ...createEmptyProfile('outfitter-bootstrap'),
14
- label: 'Outfitter Bootstrap',
15
- description: 'Temporary first-run profile that starts Pi before Outfitter settings exist.',
16
- },
17
- profilePaths: [],
18
- profileFolders: [],
19
- homeDirectory: input.homeDirectory,
20
- cacheDirectory: join(input.homeDirectory, '.outfitter', 'cache'),
21
- projectDirectory: input.projectDirectory,
22
- settings: emptySettings(),
23
- settingsPaths: [],
24
- profileLayers: [],
25
- });
26
- export const loadResolvedProfile = (input) => {
27
- const loadedSettings = loadSettingsWithCachedRemoteSettings(input);
28
- if (loadedSettings.issues.length > 0) {
29
- throw new Error(`Cannot run with invalid settings: ${loadedSettings.issues.map(formatSettingsIssue).join('; ')}`);
30
- }
31
- ensureConventionalLocalProfileSourceDirectories(loadedSettings.files);
32
- const loadedProfiles = loadProfileSources(input.homeDirectory, loadedSettings.settings.profileSources);
33
- if (loadedProfiles.issues.length > 0) {
34
- throw new Error(`Cannot run with invalid profiles: ${loadedProfiles.issues.map(formatProfileIssue).join('; ')}`);
35
- }
36
- const profileId = selectRunProfileId(input.profileId, loadedSettings.settings.defaultProfile);
37
- const resolution = resolveProfile({
38
- profiles: loadedProfiles.profiles,
39
- profileId,
40
- });
41
- if (resolution.profile === undefined || resolution.issues.length > 0) {
42
- throw new Error(`Cannot resolve profile '${profileId}': ${resolution.issues.map(formatProfileIssue).join('; ')}`);
43
- }
44
- const selectedProfile = resolution.profileStack.find((profile) => profile.id === profileId);
45
- if (selectedProfile.template === true) {
46
- throw new Error(`Profile '${profileId}' is a template profile and must be inherited by a runnable profile.`);
47
- }
48
- return {
49
- profile: resolution.profile,
50
- profileLayers: findContributingLoadedProfiles(resolution.profileStack, loadedProfiles.profiles),
51
- profilePaths: findContributingProfilePaths(resolution.profileStack, loadedProfiles.profiles),
52
- profileFolders: findContributingProfileFolders(resolution.profileStack, loadedProfiles.profiles),
53
- homeDirectory: input.homeDirectory,
54
- cacheDirectory: loadedSettings.settings.cacheDirectory ?? join(input.homeDirectory, '.outfitter', 'cache'),
55
- projectDirectory: input.projectDirectory,
56
- settings: loadedSettings.settings,
57
- settingsPaths: loadedSettings.files.map((file) => file.location.path),
58
- };
59
- };
60
- const ensureConventionalLocalProfileSourceDirectories = (files) => {
61
- for (const file of files) {
62
- const settingsProfilesPath = join(dirname(file.location.path), 'profiles');
63
- const hasConventionalLocalSource = file.settings.profileSources?.some((source) => source.uri === undefined && source.github === undefined && source.path === settingsProfilesPath);
64
- if (hasConventionalLocalSource === true) {
65
- mkdirSync(settingsProfilesPath, { recursive: true });
66
- }
67
- }
68
- };
69
- export const selectRunAgentId = (selectedAgentId, defaultAgentId) => selectedAgentId ?? defaultAgentId ?? registryDefaultAgentId;
70
- const selectRunProfileId = (selectedProfileId, defaultProfileId) => {
71
- if (selectedProfileId !== undefined) {
72
- return selectedProfileId;
73
- }
74
- if (defaultProfileId !== undefined) {
75
- return defaultProfileId;
76
- }
77
- throw new Error('Cannot run without a selected profile or default_profile in settings.yml; pass --profile or run `outfitter setup`.');
78
- };
79
- const findContributingProfilePaths = (profileStack, loadedProfiles) => findContributingLoadedProfiles(profileStack, loadedProfiles).map((loadedProfile) => loadedProfile.profilePath);
80
- const findContributingProfileFolders = (profileStack, loadedProfiles) => findContributingLoadedProfiles(profileStack, loadedProfiles).flatMap((loadedProfile) => loadedProfile.resourceRootPath === undefined ? [] : [loadedProfile.resourceRootPath]);
81
- export const createLaunchProfileLayers = (loadedProfiles) => loadedProfiles.map((loadedProfile) => ({
82
- profile: loadedProfile.profile,
83
- profilePath: loadedProfile.profilePath,
84
- sourceRootPath: loadedProfile.sourceRootPath,
85
- resourceRootPath: loadedProfile.resourceRootPath,
86
- layout: loadedProfile.layout,
87
- }));
88
- const findContributingLoadedProfiles = (profileStack, loadedProfiles) => profileStack.flatMap((profile) => loadedProfiles.filter((loadedProfile) => loadedProfile.profile.id === profile.id));
89
- export const loadProfileSources = (homeDirectory, sources) => {
90
- const profiles = [];
91
- const issues = [];
92
- for (const source of sources) {
93
- const materializedSource = materializeSource(homeDirectory, source);
94
- // A remote source whose cache has never synced (degraded-offline onboarding, blocked
95
- // network) contributes no profiles instead of failing the launch; a later successful
96
- // `outfitter sync` upgrades it to the full catalog.
97
- if (isUnsyncedRemoteProfileSource(source, materializedSource.path)) {
98
- continue;
99
- }
100
- const result = loadLocalProfileSource(materializedSource);
101
- profiles.push(...result.profiles.map((profile) => ({ ...profile, source })));
102
- issues.push(...result.issues);
103
- }
104
- return { profiles, issues };
105
- };
106
- /** Materialized on-disk paths for configured sources, in configured (precedence) order. */
107
- export const materializeProfileSourcePaths = (homeDirectory, sources) => sources
108
- .map((source) => materializeSource(homeDirectory, source).path)
109
- .filter((path) => path !== undefined && existsSync(path));
110
- const isUnsyncedRemoteProfileSource = (source, materializedPath) => (source.uri !== undefined || source.github !== undefined) &&
111
- materializedPath !== undefined &&
112
- !existsSync(materializedPath);
113
- const materializeSource = (homeDirectory, source) => {
114
- if (source.uri === undefined && source.github === undefined) {
115
- return source;
116
- }
117
- if (source.uri !== undefined && source.ref === undefined && source.path === undefined) {
118
- return { path: createProfileSourceCachePath(homeDirectory, source.uri), only: source.only, except: source.except };
119
- }
120
- return {
121
- path: resolveRemoteRepositorySubpath(createRemoteRepositoryCachePath(homeDirectory, source), source.path),
122
- only: source.only,
123
- except: source.except,
124
- };
125
- };
126
- const formatSettingsIssue = (issue) => `${issue.filePath}#${issue.path} ${issue.message}`;
127
- const formatProfileIssue = (issue) => `${issue.path} ${issue.message}`;
128
- //# sourceMappingURL=RunProfileResolution.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RunProfileResolution.js","sourceRoot":"","sources":["../../../../src/cli/commands/run/RunProfileResolution.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import type { CompositeProfileStateWritePrompt } from '../../../compositeProfile/StatePersistence.js';
2
- export declare const createTerminalStateWritePrompt: (input: NodeJS.ReadableStream, output: NodeJS.WritableStream) => CompositeProfileStateWritePrompt;
@@ -1,29 +0,0 @@
1
- // Provides the readline-based terminal prompt for state_persistence 'prompt' decisions.
2
- import { createInterface } from 'node:readline/promises';
3
- /* v8 ignore start -- readline prompting is direct terminal behavior; tests inject a prompt. */
4
- export const createTerminalStateWritePrompt = (input, output) => async (request) => {
5
- const readline = createInterface({ input, output });
6
- try {
7
- for (;;) {
8
- const answer = (await readline.question(`${request.agentId} wrote state path '${request.relativePath}' (state_persistence 'prompt'). ` +
9
- `[p]ersist to ${request.sourcePath ?? 'its durable source'} / [d]iscard / ` +
10
- `[a]lways persist for this profile: `))
11
- .trim()
12
- .toLowerCase();
13
- if (answer === 'p' || answer === 'persist') {
14
- return 'persist';
15
- }
16
- if (answer === 'd' || answer === 'discard') {
17
- return 'discard';
18
- }
19
- if (answer === 'a' || answer === 'always') {
20
- return 'always';
21
- }
22
- }
23
- }
24
- finally {
25
- readline.close();
26
- }
27
- };
28
- /* v8 ignore stop */
29
- //# sourceMappingURL=RunStateWritePrompt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RunStateWritePrompt.js","sourceRoot":"","sources":["../../../../src/cli/commands/run/RunStateWritePrompt.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAIzD,+FAA+F;AAC/F,MAAM,CAAC,MAAM,8BAA8B,GACzC,CAAC,KAA4B,EAAE,MAA6B,EAAoC,EAAE,CAClG,KAAK,EAAE,OAAO,EAAE,EAAE;IAChB,MAAM,QAAQ,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAEpD,IAAI,CAAC;QACH,SAAS,CAAC;YACR,MAAM,MAAM,GAAG,CACb,MAAM,QAAQ,CAAC,QAAQ,CACrB,GAAG,OAAO,CAAC,OAAO,sBAAsB,OAAO,CAAC,YAAY,kCAAkC;gBAC5F,gBAAgB,OAAO,CAAC,UAAU,IAAI,oBAAoB,iBAAiB;gBAC3E,qCAAqC,CACxC,CACF;iBACE,IAAI,EAAE;iBACN,WAAW,EAAE,CAAC;YAEjB,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC3C,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC3C,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC1C,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AACJ,oBAAoB"}
@@ -1,14 +0,0 @@
1
- import { type SetupCommandDependencies, type SetupCommandInput, type SetupSourceOnboardingResult, type SetupSourcePostImportAction, type SetupSourcePostImportLaunchTarget, type StarterLayout } from './SetupTypes.js';
2
- export declare const resolveReadlineOutput: (dependencies: SetupCommandDependencies) => NodeJS.WritableStream;
3
- export declare const resolvePromptOutput: (dependencies: SetupCommandDependencies) => Pick<NodeJS.WritableStream, "write">;
4
- export declare const runSetupSourceOnboarding: (input: SetupCommandInput & {
5
- readonly setupSourceUri: string;
6
- }, dependencies: SetupCommandDependencies, starterLayout: StarterLayout, currentDefault: string) => Promise<SetupSourceOnboardingResult>;
7
- export declare const promptForSetupSourceLaunchAction: (profileId: string, launchTarget: SetupSourcePostImportLaunchTarget, dependencies: SetupCommandDependencies) => Promise<SetupSourcePostImportAction>;
8
- export declare const selectDefaultProfileIfInteractive: (input: SetupCommandInput, settingsPath: string, currentDefault: string, dependencies: SetupCommandDependencies, starterLayout?: StarterLayout) => Promise<string>;
9
- export declare const materializeSetupProfileSource: (homeDirectory: string, source: {
10
- readonly path?: string;
11
- readonly uri?: string;
12
- readonly github?: string;
13
- readonly ref?: string;
14
- }) => string;
@@ -1,296 +0,0 @@
1
- // Interactive prompt and profile-discovery helpers for the Outfitter setup command.
2
- import { createInterface } from 'node:readline/promises';
3
- import { createProfileSourceCachePath, createRemoteRepositoryCachePath, redactProfileSourceUriCredentials, resolveRemoteRepositorySubpath, } from '../../../profiles/ProfileCache.js';
4
- import { loadLocalProfileSource } from '../../../profiles/ProfileLoader.js';
5
- import { loadSettingsWithCachedRemoteSettings } from '../../../settings/SettingsLoader.js';
6
- import { updateSettingsDefaultProfile } from '../FirstRunWelcomeProfile.js';
7
- import { writeWelcomeIntro } from '../WelcomeCommand.js';
8
- import { assertValidDefaultProfileId, readStarterExplicitDefaultProfileId, resolveLocalSetupSourceOutfitterPath, } from './SetupStarterSource.js';
9
- import { setupSourceImportModeChoices, setupSourceImportTargetChoices, } from './SetupTypes.js';
10
- /* v8 ignore next -- default process stdout is direct terminal behavior; tests inject writable streams. */
11
- export const resolveReadlineOutput = (dependencies) => typeof dependencies.output?.write === 'function' ? dependencies.output : process.stdout;
12
- export const resolvePromptOutput = (dependencies) => {
13
- if (typeof dependencies.output?.write === 'function') {
14
- return dependencies.output;
15
- }
16
- if (dependencies.writeLine !== undefined) {
17
- return {
18
- write(message) {
19
- dependencies.writeLine?.(message.replace(/\n$/u, ''));
20
- return true;
21
- },
22
- };
23
- }
24
- /* v8 ignore next 7 -- defensive non-writable injected output fallback; normal tests inject writeLine or writable output. */
25
- if (dependencies.output !== undefined) {
26
- return {
27
- write() {
28
- return true;
29
- },
30
- };
31
- }
32
- return process.stdout;
33
- };
34
- export const runSetupSourceOnboarding = async (input, dependencies, starterLayout, currentDefault) => {
35
- const discoveredProfiles = discoverSetupProfileChoices(input, starterLayout);
36
- const sourceDefault = discoverSetupSourcePromptDefault(input, starterLayout, discoveredProfiles);
37
- const promptDefault = chooseSetupPromptDefault(discoveredProfiles, sourceDefault, currentDefault);
38
- const profiles = selectSetupPromptProfiles(discoveredProfiles, currentDefault, promptDefault);
39
- const localSymlinkAvailable = resolveLocalSetupSourceOutfitterPath(input) !== undefined;
40
- if (dependencies.selectSetupSourceImportTarget === undefined &&
41
- dependencies.selectDefaultProfile === undefined &&
42
- dependencies.selectSetupSourceImportMode === undefined) {
43
- return promptForSetupSourceOnboarding(input, profiles, promptDefault, localSymlinkAvailable, dependencies);
44
- }
45
- writeSetupSourceWelcome(input, profiles, resolvePromptOutput(dependencies));
46
- const importTarget = await selectSetupSourceImportTarget(dependencies);
47
- const importMode = await selectSetupSourceImportMode(dependencies, localSymlinkAvailable);
48
- const selectedProfileId = await selectSetupProfile(profiles, promptDefault, dependencies);
49
- assertValidSelectedDefaultProfile(selectedProfileId, profiles);
50
- return { importTarget, selectedProfileId, importMode };
51
- };
52
- /* v8 ignore start -- readline fallback is smoke-tested through terminal streams; injected selector paths carry deterministic setup-source coverage. */
53
- const promptForSetupSourceOnboarding = async (input, profiles, currentDefault, localSymlinkAvailable, dependencies) => {
54
- const output = resolvePromptOutput(dependencies);
55
- /* v8 ignore next -- default process streams are direct terminal behavior; tests inject streams. */
56
- const readline = createInterface({
57
- input: dependencies.input ?? process.stdin,
58
- output: resolveReadlineOutput(dependencies),
59
- });
60
- try {
61
- writeSetupSourceWelcome(input, profiles, output);
62
- const importTarget = await promptForSetupSourceImportTargetWithReadline(readline, output, setupSourceImportTargetChoices, 'home');
63
- const importMode = await promptForSetupSourceImportModeWithReadline(readline, output, localSymlinkAvailable);
64
- const selectedProfileId = await promptForSetupProfileWithReadline(readline, output, profiles, currentDefault, 'Choose the default profile from this setup source:');
65
- assertValidSelectedDefaultProfile(selectedProfileId, profiles);
66
- return { importTarget, selectedProfileId, importMode };
67
- }
68
- finally {
69
- readline.close();
70
- }
71
- };
72
- const writeSetupSourceWelcome = (input, profiles, output) => {
73
- writeWelcomeIntro(output);
74
- output.write(`\nYou're importing Outfitter profiles from ${redactProfileSourceUriCredentials(input.setupSourceUri)}.\n`);
75
- output.write(`Found ${profiles.length} profile(s)${formatSetupSourceProfileList(profiles)}.\n`);
76
- if (resolveLocalSetupSourceOutfitterPath(input) !== undefined) {
77
- output.write('Local setup source detected. Copy snapshot setup is safest; symlink setup links your target .outfitter to the local source .outfitter so shared-profile edits apply immediately during development.\n');
78
- }
79
- };
80
- const formatSetupSourceProfileList = (profiles) => {
81
- /* v8 ignore next -- setup-source profile prompts normally require discovered source profiles. */
82
- if (profiles.length === 0) {
83
- return '';
84
- }
85
- return `: ${profiles.map((profile) => profile.id).join(', ')}`;
86
- };
87
- const selectSetupSourceImportTarget = async (dependencies) => {
88
- /* v8 ignore else -- mixed dependency injection path; the full readline path prompts with one shared readline. */
89
- if (dependencies.selectSetupSourceImportTarget !== undefined) {
90
- const selectedTarget = await dependencies.selectSetupSourceImportTarget(setupSourceImportTargetChoices, 'home');
91
- assertValidSetupSourceImportTarget(selectedTarget);
92
- return selectedTarget;
93
- }
94
- return 'home';
95
- };
96
- const selectSetupSourceImportMode = async (dependencies, localSymlinkAvailable) => {
97
- if (!localSymlinkAvailable) {
98
- return 'copy';
99
- }
100
- if (dependencies.selectSetupSourceImportMode !== undefined) {
101
- const selectedMode = await dependencies.selectSetupSourceImportMode(setupSourceImportModeChoices, 'copy');
102
- assertValidSetupSourceImportMode(selectedMode);
103
- return selectedMode;
104
- }
105
- return 'copy';
106
- };
107
- const assertValidSetupSourceImportMode = (mode) => {
108
- if (setupSourceImportModeChoices.every((choice) => choice.mode !== mode)) {
109
- throw new Error(`Selected setup-source import mode '${mode}' is not available.`);
110
- }
111
- };
112
- const assertValidSetupSourceImportTarget = (target) => {
113
- /* v8 ignore next -- defensive validation for custom dependency injection. */
114
- if (setupSourceImportTargetChoices.every((choice) => choice.target !== target)) {
115
- throw new Error(`Selected setup-source import target '${target}' is not available.`);
116
- }
117
- };
118
- const promptForSetupSourceImportTargetWithReadline = async (readline, output, choices, defaultTarget) => {
119
- output.write('\nChoose where to install these profiles:\n');
120
- choices.forEach((choice, index) => {
121
- output.write(`${index + 1}. ${choice.label}\n`);
122
- output.write(` ${choice.description}.\n`);
123
- });
124
- const defaultIndex = Math.max(choices.findIndex((choice) => choice.target === defaultTarget), 0);
125
- const answer = await readline.question(`Import target [${defaultIndex + 1}]: `);
126
- const selectedIndex = Number.parseInt(answer.trim() || String(defaultIndex + 1), 10) - 1;
127
- const selectedChoice = choices[selectedIndex];
128
- if (selectedChoice === undefined) {
129
- throw new Error('Selected setup-source import target number is out of range.');
130
- }
131
- return selectedChoice.target;
132
- };
133
- const promptForSetupSourceImportModeWithReadline = async (readline, output, localSymlinkAvailable) => {
134
- if (!localSymlinkAvailable) {
135
- return 'copy';
136
- }
137
- output.write('\nChoose how to install this local setup source:\n');
138
- setupSourceImportModeChoices.forEach((choice, index) => {
139
- output.write(`${index + 1}. ${choice.label}\n`);
140
- output.write(` ${choice.description}.\n`);
141
- });
142
- const answer = await readline.question('Import mode [1]: ');
143
- const selectedIndex = Number.parseInt(answer.trim() || '1', 10) - 1;
144
- const selectedChoice = setupSourceImportModeChoices[selectedIndex];
145
- if (selectedChoice === undefined) {
146
- throw new Error('Selected setup-source import mode number is out of range.');
147
- }
148
- return selectedChoice.mode;
149
- };
150
- /* v8 ignore next -- covered by interactive CLI smoke tests; unit tests inject the launch choice. */
151
- export const promptForSetupSourceLaunchAction = async (profileId, launchTarget, dependencies) => {
152
- const readline = createInterface({
153
- input: dependencies.input ?? process.stdin,
154
- output: resolveReadlineOutput(dependencies),
155
- });
156
- try {
157
- const prompt = launchTarget === 'selected'
158
- ? `Start Outfitter with profile '${profileId}' now? [Y/n]: `
159
- : 'Start Outfitter with the current default profile now? [Y/n]: ';
160
- const answer = await readline.question(prompt);
161
- return answer.trim().toLowerCase().startsWith('n') ? 'exit' : 'start';
162
- }
163
- finally {
164
- readline.close();
165
- }
166
- };
167
- /* v8 ignore stop */
168
- export const selectDefaultProfileIfInteractive = async (input, settingsPath, currentDefault, dependencies, starterLayout) => {
169
- if (dependencies.interactive !== true) {
170
- return currentDefault;
171
- }
172
- const discoveredProfiles = discoverSetupProfileChoices(input, starterLayout);
173
- const sourceDefault = discoverSetupSourcePromptDefault(input, starterLayout, discoveredProfiles);
174
- const promptDefault = chooseSetupPromptDefault(discoveredProfiles, sourceDefault, currentDefault);
175
- const profiles = selectSetupPromptProfiles(discoveredProfiles, currentDefault, promptDefault);
176
- writeWelcomeIntro(resolvePromptOutput(dependencies));
177
- const selectedProfile = await selectSetupProfile(profiles, promptDefault, dependencies);
178
- assertValidSelectedDefaultProfile(selectedProfile, profiles);
179
- updateSettingsDefaultProfile(settingsPath, selectedProfile);
180
- return selectedProfile;
181
- };
182
- const assertValidSelectedDefaultProfile = (selectedProfile, profiles) => {
183
- assertValidDefaultProfileId(selectedProfile);
184
- if (profiles.length > 0 && profiles.every((profile) => profile.id !== selectedProfile)) {
185
- throw new Error(`Selected default profile '${selectedProfile}' was not one of the available setup profiles.`);
186
- }
187
- };
188
- const discoverSetupSourcePromptDefault = (input, starterLayout, profiles) => {
189
- if (input.setupSourceUri === undefined) {
190
- return undefined;
191
- }
192
- const sourceDefault = readStarterExplicitDefaultProfileId(starterLayout?.settingsPath);
193
- return profiles.some((profile) => profile.id === sourceDefault) ? sourceDefault : undefined;
194
- };
195
- const selectSetupPromptProfiles = (discoveredProfiles, currentDefault, promptDefault) => {
196
- const profiles = discoveredProfiles.length > 0 ? discoveredProfiles : [{ id: currentDefault }];
197
- return prioritizeSetupProfileChoice(profiles, promptDefault);
198
- };
199
- const chooseSetupPromptDefault = (profiles, sourceDefault, fallbackDefault) => {
200
- if (sourceDefault !== undefined && profiles.some((profile) => profile.id === sourceDefault)) {
201
- return sourceDefault;
202
- }
203
- if (profiles.some((profile) => profile.id === fallbackDefault)) {
204
- return fallbackDefault;
205
- }
206
- return profiles[0]?.id ?? fallbackDefault;
207
- };
208
- const prioritizeSetupProfileChoice = (profiles, profileId) => [
209
- ...profiles.filter((profile) => profile.id === profileId),
210
- ...profiles.filter((profile) => profile.id !== profileId),
211
- ];
212
- const discoverSetupProfileChoices = (input, starterLayout) => {
213
- if (input.setupSourceUri !== undefined && starterLayout?.profilesPath !== undefined) {
214
- return discoverSetupProfileChoicesFromLocalSource(starterLayout.profilesPath);
215
- }
216
- return discoverSetupProfileChoicesFromEffectiveSettings(input);
217
- };
218
- const discoverSetupProfileChoicesFromLocalSource = (path) => {
219
- const loadedProfiles = loadLocalProfileSource({ path });
220
- return loadedProfiles.profiles
221
- .map((profile) => ({
222
- id: profile.profile.id,
223
- label: profile.profile.label,
224
- description: profile.profile.description,
225
- }))
226
- .sort((left, right) => left.id.localeCompare(right.id));
227
- };
228
- const discoverSetupProfileChoicesFromEffectiveSettings = (input) => {
229
- const loadedSettings = loadSettingsWithCachedRemoteSettings(input);
230
- const choices = new Map();
231
- for (const source of loadedSettings.settings.profileSources) {
232
- const materializedPath = materializeSetupProfileSource(input.homeDirectory, source);
233
- const loadedProfiles = loadLocalProfileSource({ path: materializedPath, only: source.only, except: source.except });
234
- for (const profile of loadedProfiles.profiles) {
235
- const existingChoice = choices.get(profile.profile.id);
236
- choices.set(profile.profile.id, {
237
- id: profile.profile.id,
238
- label: profile.profile.label ?? existingChoice?.label,
239
- description: profile.profile.description ?? existingChoice?.description,
240
- });
241
- }
242
- }
243
- return [...choices.values()].sort((left, right) => left.id.localeCompare(right.id));
244
- };
245
- export const materializeSetupProfileSource = (homeDirectory, source) => {
246
- if (source.path !== undefined && source.uri === undefined && source.github === undefined) {
247
- return source.path;
248
- }
249
- if (source.uri !== undefined && source.ref === undefined && source.path === undefined) {
250
- return createProfileSourceCachePath(homeDirectory, source.uri);
251
- }
252
- if (source.uri !== undefined) {
253
- return resolveRemoteRepositorySubpath(createRemoteRepositoryCachePath(homeDirectory, { uri: source.uri, ref: source.ref }), source.path);
254
- }
255
- return resolveRemoteRepositorySubpath(createRemoteRepositoryCachePath(homeDirectory, { github: source.github, ref: source.ref }), source.path);
256
- };
257
- const selectSetupProfile = async (profiles, currentDefault, dependencies) => {
258
- if (dependencies.selectDefaultProfile !== undefined) {
259
- return dependencies.selectDefaultProfile(profiles, currentDefault);
260
- }
261
- return promptForSetupProfile(profiles, currentDefault, dependencies);
262
- };
263
- const promptForSetupProfile = async (profiles, currentDefault, dependencies) => {
264
- const output = resolvePromptOutput(dependencies);
265
- /* v8 ignore next -- default process streams are direct terminal behavior; tests inject streams. */
266
- const readline = createInterface({
267
- input: dependencies.input ?? process.stdin,
268
- output: resolveReadlineOutput(dependencies),
269
- });
270
- try {
271
- return await promptForSetupProfileWithReadline(readline, output, profiles, currentDefault, 'Choose the default profile for your sessions:');
272
- }
273
- finally {
274
- readline.close();
275
- }
276
- };
277
- const promptForSetupProfileWithReadline = async (readline, output, profiles, currentDefault, heading) => {
278
- const candidates = profiles.length > 0 ? profiles : [{ id: currentDefault }];
279
- output.write(`\n${heading}\n`);
280
- candidates.forEach((profile, index) => {
281
- const label = profile.label === undefined ? '' : ` - ${profile.label}`;
282
- output.write(`${index + 1}. ${profile.id}${label}\n`);
283
- if (profile.description !== undefined) {
284
- output.write(` ${profile.description}\n`);
285
- }
286
- });
287
- const currentIndex = Math.max(candidates.findIndex((profile) => profile.id === currentDefault), 0);
288
- const answer = await readline.question(`Default profile [${currentIndex + 1}]: `);
289
- const selectedIndex = Number.parseInt(answer.trim() || String(currentIndex + 1), 10) - 1;
290
- const selectedProfile = candidates[selectedIndex];
291
- if (selectedProfile === undefined) {
292
- throw new Error('Selected default profile number is out of range.');
293
- }
294
- return selectedProfile.id;
295
- };
296
- //# sourceMappingURL=SetupPrompts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SetupPrompts.js","sourceRoot":"","sources":["../../../../src/cli/commands/setup/SetupPrompts.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import type { AppliedSetupSourceImport, SetupCommandInput, SetupSourceOnboardingResult, StarterLayout } from './SetupTypes.js';
2
- export declare const applySetupSourceImport: (input: SetupCommandInput, starterLayout: StarterLayout, onboarding: SetupSourceOnboardingResult) => AppliedSetupSourceImport;
3
- export declare const copyStarterProfileFilesIfPresent: (sourceProfilesPath: string | undefined, targetProfilesPath: string) => number;
4
- export declare const findSetupProfilePath: (profilesPath: string, profileId: string) => string;
5
- export declare const createDefaultProfileIfMissing: (profilePath: string, profileId: string) => boolean;