@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,173 +1,167 @@
1
1
  # Persona Reviews
2
2
 
3
- A persona review catalog is a shared setup source that publishes profiles representing the kinds of people who might use a product, service, internal tool, or documentation site. Teams can launch these personas to get structured feedback on docs, onboarding, website copy, setup flows, and UX before asking real prospects or customers to spend time on a review.
3
+ A persona review catalog gathers structured feedback on a product, docs, onboarding flow, or UX from the points of view of the people who might use it before asking real prospects to spend time. It uses the [persona convention](../personas.md): **one base review agent** plus a **directory of persona description documents**, run once per document.
4
4
 
5
- The example below uses Outfitter itself as the product being reviewed, but the pattern is meant for your own product. Replace the persona files, concerns, and review prompts with the customer types you care about.
5
+ There is no `personas:` map and no agent per customer type. The review rules live in a single agent; each persona is a cheap markdown file you feed it as input.
6
6
 
7
7
  ```text
8
- customer-persona-reviews/
8
+ customer-review/ # standalone .agents repo; root is the payload
9
+ agents/
10
+ reviewer/agent.md # the base review agent
9
11
  settings.yml
10
- personas/
11
- base-customer-persona.yml
12
- founder-operator.yml
13
- staff-engineer.yml
14
- engineering-manager.yml
15
- platform-lead.yml
16
- agency-consultant.yml
12
+ docs/user-personas/
13
+ roles/ # reusable job archetypes (shared segment priorities)
14
+ staff-engineer.md
15
+ founder-operator.md
16
+ platform-lead.md
17
+ individuals/ # specific named people, each naming one or more roles
18
+ marcus-bell.md # roles: [staff-engineer]
19
+ dana-okafor.md # roles: [founder-operator]
20
+ priya-nair.md # roles: [platform-lead]
17
21
  ```
18
22
 
19
- ## Catalog settings
23
+ Personas come in two kinds of file, and a review **mixes and matches** them: a **role** carries the priorities everyone in a customer segment shares, and an **individual** is one named person who inherits one or more roles and adds their own demographics and voice. Keep roles reusable and individuals concrete, and you can cover a lot of viewpoints from a small set of files.
20
24
 
21
- ```yaml
22
- # customer-persona-reviews/settings.yml
23
- profile_sources:
24
- - path: ./personas
25
- only:
26
- - founder-operator
27
- - staff-engineer
28
- - engineering-manager
29
- - platform-lead
30
- - agency-consultant
31
- ```
25
+ ## Settings
32
26
 
33
- ## Shared base profile
27
+ Settings only names the default agent and where resources resolve from — no persona list:
34
28
 
35
29
  ```yaml
36
- # personas/base-customer-persona.yml
37
- id: base-customer-persona
38
- label: Customer Persona Base
39
- template: true
40
- description: Shared rules for reviewing an artifact from a customer persona's point of view.
41
- controls:
42
- append_system_prompt: |
43
- Review as the assigned customer persona. Read or experience the provided artifact
44
- from that persona's point of view: docs, screenshots, website, prototype, product
45
- flow, or onboarding path. Distinguish evidence from assumptions, cite the exact
46
- page or UI moment that shaped your reaction, and do not invent real customer research.
30
+ # settings.yml
31
+ default_agent: reviewer
47
32
  ```
48
33
 
49
- ## Persona profiles
34
+ ## The base review agent
50
35
 
51
- Persona review catalogs SHOULD make each potential customer's job, anxieties, buying triggers, and expected feedback shape explicit. These examples use Outfitter as the reviewed product so the pattern is concrete; replace the product references with your own product, audience, and UX.
36
+ One agent holds the review method and the output shape. It does not name any customer type; it reads the persona files it is told to adopt, in order.
52
37
 
53
- ```yaml
54
- # personas/founder-operator.yml
55
- id: founder-operator
56
- label: Founder Operator
57
- description: Reviews whether a product helps a hands-on founder get leverage quickly.
58
- inherits:
59
- - base-customer-persona
60
- controls:
61
- provider: anthropic
62
- model: anthropic/claude-sonnet-4
63
- thinking: high
64
- append_system_prompt: |
65
- You are a technical founder who writes product specs, edits docs, ships small
66
- features, and manages a thin team. For this example, review Outfitter as the
67
- product. Say whether the first hour feels obviously valuable. Flag jargon, setup
68
- friction, unclear pricing or trust boundaries, and anything that delays the first
69
- useful outcome.
70
38
  ```
71
-
72
- ```yaml
73
- # personas/staff-engineer.yml
74
- id: staff-engineer
75
- label: Staff Engineer
76
- description: Reviews whether a product is credible for complex technical work.
77
- inherits:
78
- - base-customer-persona
79
- controls:
80
- provider: anthropic
81
- model: anthropic/claude-sonnet-4
82
- thinking: high
83
- append_system_prompt: |
84
- You are a staff engineer responsible for large codebases, architecture decisions,
85
- reviews, and cross-team technical quality. For this example, review Outfitter as
86
- the product. Say whether the docs explain how the product improves real engineering
87
- work. Flag missing examples, weak verification paths, and claims that need evidence.
39
+ <!-- agents/reviewer/agent.md -->
40
+ ---
41
+ name: reviewer
42
+ description: Reviews an artifact from the point of view of an assigned customer persona.
43
+ ---
44
+
45
+ Adopt the persona files named in your instructions, in order: a role file
46
+ establishes the segment's priorities, and an individual file layers that
47
+ person's demographics and voice on top (later files refine earlier ones). If
48
+ an individual names roles in its frontmatter, treat those as its baseline.
49
+
50
+ Read or experience the provided artifact from that persona's point of view:
51
+ docs, screenshots, website, prototype, product flow, or onboarding path.
52
+ Distinguish evidence from assumptions, cite the exact page or UI moment that
53
+ shaped your reaction, and do not invent real customer research.
54
+
55
+ Return feedback as: persona, artifact reviewed, first impression, top blocker,
56
+ strongest value signal, confusing language, suggested change, and confidence.
57
+ If you need more context, ask for the smallest missing artifact.
88
58
  ```
89
59
 
90
- ```yaml
91
- # personas/engineering-manager.yml
92
- id: engineering-manager
93
- label: Engineering Manager
94
- description: Reviews whether a product helps a team standardize work safely.
95
- inherits:
96
- - base-customer-persona
97
- controls:
98
- provider: openai
99
- model: openai/gpt-4.1
100
- thinking: medium
101
- append_system_prompt: |
102
- You manage engineers with different tool habits. For this example, review Outfitter
103
- as the product. Say whether team defaults, onboarding, review expectations, and
104
- governance are understandable. Flag anything that makes rollout, support, training,
105
- or risk ownership unclear.
106
- ```
60
+ ## Roles: reusable job archetypes
61
+
62
+ A role captures what everyone in a customer segment shares — the job, its goals, anxieties, buying triggers, and what its feedback focuses on — with no personal detail. Roles are reused across many individuals.
107
63
 
108
- ```yaml
109
- # personas/platform-lead.yml
110
- id: platform-lead
111
- label: Platform Lead
112
- description: Reviews whether a product can fit into internal developer platform workflows.
113
- inherits:
114
- - base-customer-persona
115
- controls:
116
- provider: anthropic
117
- model: anthropic/claude-opus-4
118
- thinking: xhigh
119
- append_system_prompt: |
120
- You own internal developer tooling, CI, secrets, and fleet-wide standards. For this
121
- example, review Outfitter as the product. Focus on trust boundaries, credential
122
- handling, catalog governance, private repo assumptions, reproducibility, and
123
- operational failure modes. Prioritize risks that would block enterprise rollout.
64
+ ```
65
+ <!-- docs/user-personas/roles/staff-engineer.md -->
66
+ ---
67
+ kind: role
68
+ title: Staff Engineer
69
+ segment: large-eng-org
70
+ goals: [reduce cross-team friction, raise technical quality, adopt tools that survive scrutiny]
71
+ anxieties: [tools that demo well but fail on a real codebase, unproven claims]
72
+ buying_triggers: [credible examples, verifiable outcomes, a clean migration path]
73
+ feedback_focus: [depth, verification paths, missing examples, evidence behind claims]
74
+ ---
75
+
76
+ Responsible for large codebases, architecture decisions, reviews, and
77
+ cross-team technical quality. Cares whether the docs explain how the product
78
+ improves real engineering work. Flags missing examples, weak verification
79
+ paths, and claims that need evidence.
124
80
  ```
125
81
 
126
- ```yaml
127
- # personas/agency-consultant.yml
128
- id: agency-consultant
129
- label: Agency Consultant
130
- description: Reviews whether a product helps switch between multiple client contexts cleanly.
131
- inherits:
132
- - base-customer-persona
133
- controls:
134
- provider: openai
135
- model: openai/gpt-4.1-mini
136
- thinking: low
137
- append_system_prompt: |
138
- You work across multiple client contexts and need repeatable setup without leaking
139
- one client's context into another. For this example, review Outfitter as the product.
140
- Say whether the docs and UX make isolation, project settings, and switching contexts
141
- obvious.
82
+ ```
83
+ <!-- docs/user-personas/roles/founder-operator.md -->
84
+ ---
85
+ kind: role
86
+ title: Founder-operator
87
+ segment: seed-stage-startup
88
+ goals: [ship weekly, keep the team small, reach the next milestone before the runway ends]
89
+ anxieties: [tool sprawl, hidden pricing, time lost to setup]
90
+ buying_triggers: [obvious value in the first hour, no credit card to try]
91
+ feedback_focus: [time-to-first-value, jargon, trust boundaries, pricing clarity]
92
+ ---
93
+
94
+ A hands-on founder who writes product specs, edits docs, ships small features,
95
+ and manages a thin team. Cares whether the first hour feels obviously valuable.
142
96
  ```
143
97
 
144
- ## Review workflows
98
+ ## Individuals: named people who inherit roles
145
99
 
146
- A persona review can inspect static docs or interact with a running UX. The prompt should say which artifact is under review and what kind of feedback is useful. For your own product, swap in your own docs, prototype URL, screenshots, local app, or onboarding flow.
100
+ An individual is one concrete person with the demographics a [Lean Canvas](https://leanstack.com/lean-canvas) customer segment gets who names one or more roles to inherit and then adds their own attributes and voice. The named person **mixes and matches** roles: usually one, but a founder who also runs the platform can list both.
147
101
 
148
- ```text
149
- Read README.md, docs/getting-started.md, and docs/pricing.md for <your product>.
150
- As the staff-engineer persona, explain where the product feels credible, where it feels
151
- underspecified, and what one example would most improve your confidence.
102
+ ```
103
+ <!-- docs/user-personas/individuals/marcus-bell.md -->
104
+ ---
105
+ kind: individual
106
+ name: Marcus Bell
107
+ roles: [staff-engineer]
108
+ born: 1985-11-02
109
+ location: Seattle, WA
110
+ household_income: 265000
111
+ education: MS Computer Engineering
112
+ employer: ~400-engineer fintech
113
+ hobbies: [rock climbing, sci-fi novels, restoring old synths]
114
+ skills: [distributed systems, code review, architecture, mentoring]
115
+ tone: dry, skeptical, cites sources
116
+ ---
117
+
118
+ Reads new tooling the way he reads a design doc: looking for the failure mode
119
+ first. Warm once convinced, but will not take a benchmark on faith.
152
120
  ```
153
121
 
154
- ```text
155
- Browse <your product>'s local documentation site and try the first-run setup flow.
156
- As the founder-operator persona, report the first confusing moment, the first moment
157
- that felt valuable, and whether you would keep using the product after setup.
122
+ ```
123
+ <!-- docs/user-personas/individuals/dana-okafor.md -->
124
+ ---
125
+ kind: individual
126
+ name: Dana Okafor
127
+ roles: [founder-operator, platform-lead] # mixes two roles
128
+ born: 1989-03-14
129
+ location: Austin, TX
130
+ household_income: 180000
131
+ education: BS Computer Science
132
+ employer: 6-person seed-stage startup (also the de facto platform owner)
133
+ hobbies: [trail running, home espresso, mechanical keyboards]
134
+ skills: [product specs, TypeScript, fundraising, hiring]
135
+ tone: fast, pragmatic, allergic to jargon
136
+ ---
137
+
138
+ Wears the founder and the platform hat at once, so she weighs first-hour value
139
+ against fleet-wide safety in the same breath. Impatient with setup friction.
158
140
  ```
159
141
 
160
- ## Review output pattern
142
+ Keep the role attribute set consistent so reviews stay comparable, and let individuals vary freely in demographics and tone. Add more roles (`platform-lead`, `engineering-manager`, `agency-consultant`) and more individuals the same way.
161
143
 
162
- Persona profiles SHOULD define a repeatable response shape so feedback from different potential customers is comparable.
144
+ ## Running the reviews
163
145
 
164
- ```yaml
165
- # personas/founder-operator.yml excerpt
166
- controls:
167
- append_system_prompt: |
168
- Return feedback as: persona, artifact reviewed, first impression, top blocker,
169
- strongest value signal, confusing language, suggested change, and confidence.
170
- If you need more context, ask for the smallest missing artifact.
146
+ Run the base agent once per persona, naming the role and individual files to adopt and the artifact under review:
147
+
148
+ ```bash
149
+ outfitter run reviewer -- --print \
150
+ "Adopt docs/user-personas/roles/staff-engineer.md refined by \
151
+ docs/user-personas/individuals/marcus-bell.md. Read README.md, \
152
+ docs/getting-started.md, and docs/pricing.md, then return the standard \
153
+ review shape: where the product feels credible, where it feels \
154
+ underspecified, and the one example that would most improve your confidence."
171
155
  ```
172
156
 
173
- This gives a team a reusable customer-persona review catalog: each agent reads docs or experiences a UX from a distinct buyer/user viewpoint, then returns structured feedback without pretending to replace real customer discovery.
157
+ ```bash
158
+ outfitter run reviewer -- --print \
159
+ "Adopt docs/user-personas/individuals/dana-okafor.md and the roles it names. \
160
+ Browse the local docs site and try the first-run setup flow. Report the \
161
+ first confusing moment, the first moment that felt valuable, and whether \
162
+ you would keep using it."
163
+ ```
164
+
165
+ Model and thinking choices — cheaper models for high-volume routing reviews, deeper reasoning for platform-risk reviews — live in the reviewer agent's loadout, or a machine-local override, rather than being duplicated per persona.
166
+
167
+ Because the base agent fixes the output shape, feedback from every persona document is directly comparable. The result is a reusable customer-persona review catalog that reads docs or experiences a UX from many viewpoints without pretending to replace real customer discovery.
@@ -1,6 +1,6 @@
1
1
  # Outfitter Philosophy
2
2
 
3
- Make, share, and switch the profiles your coding agents use — manually or programmatically.
3
+ Make, share, and switch the agent profiles your coding agents use — manually or programmatically. A profile is just an agent and the loadout it composes; there is no separate profile format.
4
4
 
5
5
  ## Expeditious agents
6
6
 
@@ -12,7 +12,7 @@ Tight profiles also make delegation practical. When a role is small and well def
12
12
 
13
13
  ## Composition over accumulation
14
14
 
15
- The common failure mode is a single, ever-growing agent setup: one configuration that accretes every tool and instruction anyone has ever needed, serving no task particularly well. Outfitter takes the opposite approach. Profiles are small, purpose-built, and composable — you stack a personal baseline, a team convention, and a task-specific role, and switch between combinations as the work changes. Each profile stays sharp because it never has to be everything at once.
15
+ The common failure mode is a single, ever-growing agent setup: one configuration that accretes every tool and instruction anyone has ever needed, serving no task particularly well. Outfitter takes the opposite approach. Agent profiles are small, purpose-built, and composable — you stack a personal baseline, a team convention, and a project-specific role, and switch between agents as the work changes. Each stays sharp because it never has to be everything at once.
16
16
 
17
17
  ## Individual, team, enterprise
18
18
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-outfitter/outfitter",
3
- "version": "0.11.0",
3
+ "version": "1.0.2",
4
4
  "description": "Profile-oriented wrapper for launching pi, Claude Code, and future agent CLIs with reproducible configuration.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -26,7 +26,7 @@
26
26
  "LICENSE.md"
27
27
  ],
28
28
  "scripts": {
29
- "build": "tsc -p tsconfig.build.json && shx rm -rf dist/schemas && shx mkdir -p dist/schemas && shx cp src/schemas/*.json dist/schemas/ && shx mkdir -p dist/cli/commands/assets && shx cp src/cli/commands/assets/*.txt dist/cli/commands/assets/ && shx chmod +x dist/cli.js",
29
+ "build": "tsc -p tsconfig.build.json && shx rm -rf dist/schemas && shx mkdir -p dist/schemas && shx cp src/schemas/*.json dist/schemas/ && shx chmod +x dist/cli.js",
30
30
  "prepare": "npm run build",
31
31
  "prepack": "node scripts/sync-package-assets.mjs",
32
32
  "dev_install": "node scripts/dev-install.mjs",
@@ -60,7 +60,7 @@
60
60
  "vitest": "^4.1.7"
61
61
  },
62
62
  "engines": {
63
- "node": ">=22.19.0"
63
+ "node": ">=24.18.0 <25"
64
64
  },
65
65
  "keywords": [
66
66
  "agent",
@@ -0,0 +1,48 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://outfitter.dev/schemas/agent.schema.json",
4
+ "title": "Outfitter agent definition frontmatter",
5
+ "type": "object",
6
+ "required": ["name"],
7
+ "properties": {
8
+ "name": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$", "maxLength": 64 },
9
+ "description": { "type": "string" },
10
+ "skills": {
11
+ "$ref": "#/$defs/slugList",
12
+ "description": "Skill slugs resolved from agents/<name>/skills first, then catalog-wide skills."
13
+ },
14
+ "subagents": {
15
+ "$ref": "#/$defs/slugList",
16
+ "description": "Agent slugs delegated to. Resolved catalog-wide (a delegate is a shared agent, not nested under agents/<name>)."
17
+ },
18
+ "mcp": {
19
+ "$ref": "#/$defs/slugList",
20
+ "description": "MCP server ids. Per-agent agents/<name>/mcp.json is discovered and merges by id over the tree-root mcp.json; projection into the run is deferred (adapter parity, #183)."
21
+ },
22
+ "extensions": {
23
+ "$ref": "#/$defs/slugList",
24
+ "description": "Harness-native extension selections passed through to the launch; no on-disk agent-local namespace."
25
+ },
26
+ "plugins": {
27
+ "$ref": "#/$defs/slugList",
28
+ "description": "Harness-native plugin selections passed through to the launch; no on-disk agent-local namespace."
29
+ },
30
+ "model": { "type": "string", "minLength": 1 },
31
+ "thinking": { "type": "string", "minLength": 1 },
32
+ "tools": {
33
+ "type": "object",
34
+ "properties": {
35
+ "allow": { "type": "array", "items": { "type": "string", "minLength": 1 } },
36
+ "deny": { "type": "array", "items": { "type": "string", "minLength": 1 } }
37
+ },
38
+ "additionalProperties": false
39
+ }
40
+ },
41
+ "additionalProperties": true,
42
+ "$defs": {
43
+ "slugList": {
44
+ "type": "array",
45
+ "items": { "type": "string", "minLength": 1 }
46
+ }
47
+ }
48
+ }
@@ -4,10 +4,14 @@
4
4
  "title": "Outfitter settings",
5
5
  "type": "object",
6
6
  "properties": {
7
- "default_profile": { "type": "string", "minLength": 1 },
8
- "default_agent": { "enum": ["pi", "claude"] },
7
+ "default_agent": { "type": "string", "minLength": 1 },
8
+ "default_harness": { "enum": ["pi", "claude"] },
9
9
  "cache_directory": { "type": "string", "minLength": 1 },
10
- "profile_export": { "type": "boolean" },
10
+ "state_persistence": {
11
+ "type": "object",
12
+ "description": "Maps adapter-declared state paths to a persistence strategy.",
13
+ "additionalProperties": { "enum": ["symlink", "discard", "warn", "error", "prompt"] }
14
+ },
11
15
  "startup": {
12
16
  "type": "object",
13
17
  "description": "Controls Outfitter startup presentation inside launched agents.",
@@ -21,18 +25,37 @@
21
25
  },
22
26
  "enterprise": {
23
27
  "type": "object",
24
- "description": "Enterprise governance settings. User-home ~/.outfitter/settings.yml is the source of truth for these controls.",
28
+ "description": "Enterprise governance settings. User-home ~/.agents/settings.yml is the source of truth for these controls.",
25
29
  "properties": {
26
- "private_profile_catalogs": {
30
+ "private_catalogs": {
27
31
  "type": "boolean",
28
- "description": "Enable confirmed-private GitHub profile catalogs after reviewing the Outfitter Enterprise license or enterprise agreement."
32
+ "description": "Enable confirmed-private GitHub catalogs after reviewing the Outfitter Enterprise license or enterprise agreement."
29
33
  }
30
34
  },
31
35
  "additionalProperties": false
32
36
  },
33
- "profile_sources": {
37
+ "sources": {
34
38
  "type": "array",
35
- "items": { "$ref": "profile-source.schema.json" }
39
+ "items": {
40
+ "type": "object",
41
+ "oneOf": [
42
+ {
43
+ "required": ["path"],
44
+ "not": {
45
+ "anyOf": [{ "required": ["uri"] }, { "required": ["github"] }, { "required": ["ref"] }]
46
+ }
47
+ },
48
+ { "required": ["uri"], "not": { "required": ["github"] } },
49
+ { "required": ["github"], "not": { "required": ["uri"] } }
50
+ ],
51
+ "properties": {
52
+ "path": { "type": "string", "minLength": 1 },
53
+ "uri": { "type": "string", "minLength": 1 },
54
+ "github": { "type": "string", "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$" },
55
+ "ref": { "type": "string", "minLength": 1 }
56
+ },
57
+ "additionalProperties": false
58
+ }
36
59
  },
37
60
  "remote_settings": {
38
61
  "type": "array",
@@ -53,7 +76,7 @@
53
76
  },
54
77
  "custom_settings": {
55
78
  "type": "object",
56
- "description": "Arbitrary YAML-compatible values exposed to Outfitter compositeProfile templates as outfitter.custom_settings."
79
+ "description": "Arbitrary YAML-compatible values exposed to Outfitter composition templates as outfitter.custom_settings."
57
80
  }
58
81
  },
59
82
  "additionalProperties": true
@@ -1,21 +0,0 @@
1
- import type { AppendSystemPromptControl, ProfileControls } from '../profiles/Profile.js';
2
- export declare const genericControlNames: Set<string>;
3
- export declare const supportedControlNames: (controls: ReadonlySet<string>) => readonly string[];
4
- export declare const controlAliases: readonly [{
5
- readonly camelCase: "sessionDirectory";
6
- readonly snakeCase: "session_directory";
7
- }, {
8
- readonly camelCase: "promptTemplate";
9
- readonly snakeCase: "prompt_template";
10
- }, {
11
- readonly camelCase: "systemPrompt";
12
- readonly snakeCase: "system_prompt";
13
- }, {
14
- readonly camelCase: "appendSystemPrompt";
15
- readonly snakeCase: "append_system_prompt";
16
- }];
17
- export declare const mergeAgentSpecificControls: <T extends ProfileControls>(controls: ProfileControls, agentKey: "pi" | "claude") => T;
18
- export declare const flagValue: (flag: string, value: string | undefined) => readonly string[];
19
- export declare const repeatFlag: (flag: string, values: readonly string[] | undefined) => readonly string[];
20
- export declare const repeatFlagValue: (flag: string, value: AppendSystemPromptControl | undefined) => readonly string[];
21
- export declare const findUnsupportedControlNames: (controls: Readonly<Record<string, unknown>>, supportedControls: ReadonlySet<string>, knownControls?: ReadonlySet<string>) => string[];
@@ -1,76 +0,0 @@
1
- import { mergeLaunchResourceSources, mergeSkillControlSources } from './LaunchResources.js';
2
- export const genericControlNames = new Set([
3
- 'model',
4
- 'provider',
5
- 'thinking',
6
- 'environment',
7
- 'args',
8
- 'sessionDirectory',
9
- 'session_directory',
10
- 'extensions',
11
- 'skills',
12
- 'promptTemplate',
13
- 'prompt_template',
14
- 'systemPrompt',
15
- 'system_prompt',
16
- 'appendSystemPrompt',
17
- 'append_system_prompt',
18
- 'deepwork',
19
- 'pi',
20
- 'claude',
21
- ]);
22
- export const supportedControlNames = (controls) => [...controls].filter((controlName) => !controlName.includes('_') && controlName !== 'pi' && controlName !== 'claude');
23
- export const controlAliases = [
24
- { camelCase: 'sessionDirectory', snakeCase: 'session_directory' },
25
- { camelCase: 'promptTemplate', snakeCase: 'prompt_template' },
26
- { camelCase: 'systemPrompt', snakeCase: 'system_prompt' },
27
- { camelCase: 'appendSystemPrompt', snakeCase: 'append_system_prompt' },
28
- ];
29
- export const mergeAgentSpecificControls = (controls, agentKey) => {
30
- const agentControls = controls[agentKey];
31
- return {
32
- ...controls,
33
- ...definedControls(agentControls),
34
- environment: { ...controls.environment, ...agentControls?.environment },
35
- args: agentControls?.args ?? controls.args,
36
- extensions: mergeLaunchResourceSources('extension', controls.extensions, agentControls?.extensions),
37
- skills: mergeSkillControlSources(controls.skills, agentControls?.skills),
38
- };
39
- };
40
- export const flagValue = (flag, value) => value === undefined ? [] : [flag, value];
41
- export const repeatFlag = (flag, values) => values === undefined ? [] : values.flatMap((value) => [flag, value]);
42
- export const repeatFlagValue = (flag, value) => {
43
- if (value === undefined) {
44
- return [];
45
- }
46
- if (typeof value === 'string') {
47
- return [flag, value];
48
- }
49
- if (!Array.isArray(value)) {
50
- return [];
51
- }
52
- return repeatFlag(flag, value.filter((entry) => typeof entry === 'string'));
53
- };
54
- export const findUnsupportedControlNames = (controls, supportedControls, knownControls = genericControlNames) => {
55
- const controlNames = new Set(Object.keys(controls));
56
- const unsupported = [];
57
- for (const { camelCase, snakeCase } of controlAliases) {
58
- if (!controlNames.has(camelCase) && !controlNames.has(snakeCase)) {
59
- continue;
60
- }
61
- if (!supportedControls.has(camelCase) && !supportedControls.has(snakeCase)) {
62
- unsupported.push(controlNames.has(snakeCase) ? snakeCase : camelCase);
63
- }
64
- controlNames.delete(camelCase);
65
- controlNames.delete(snakeCase);
66
- }
67
- unsupported.push(...[...controlNames].filter((controlName) => !knownControls.has(controlName) || !supportedControls.has(controlName)));
68
- return unsupported;
69
- };
70
- const definedControls = (controls) => {
71
- if (controls === undefined) {
72
- return {};
73
- }
74
- return Object.fromEntries(Object.entries(controls).filter((entry) => entry[1] !== undefined));
75
- };
76
- //# sourceMappingURL=AdapterProfileControls.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AdapterProfileControls.js","sourceRoot":"","sources":["../../src/agents/AdapterProfileControls.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import type { Profile } from '../profiles/Profile.js';
2
- import type { StatePathDeclaration, StatePersistenceStrategy, CompositeProfileStatePath } from '../compositeProfile/StatePersistence.js';
3
- export interface DeclaredStatePathInput {
4
- readonly adapterId: string;
5
- readonly declarations: Readonly<Record<string, StatePathDeclaration>>;
6
- readonly profile: Profile;
7
- readonly resolveSourcePath: (relativePath: string, directory: boolean) => string;
8
- }
9
- export declare const createDeclaredStatePaths: (input: DeclaredStatePathInput) => readonly CompositeProfileStatePath[];
10
- export declare const assertDeclaredStatePersistenceKeys: (adapterId: string, declarations: Readonly<Record<string, StatePathDeclaration>>, profile: Profile) => void;
11
- export declare const resolveStateStrategy: (profile: Profile, relativePath: string, declaration: StatePathDeclaration) => StatePersistenceStrategy;
12
- export declare const findProfileStateSource: (profileFolders: readonly string[], adapterId: string, relativePath: string, directory: boolean) => string | undefined;