@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.
- package/.outfitter/skills/outfitter/SKILL.md +67 -37
- package/README.md +63 -35
- package/code/enterprise/cli/privateCatalogSettings.cjs +2 -2
- package/code/enterprise/pi-extension/privateCatalogOnboarding.js +5 -8
- package/code/enterprise/shared/privateCatalogPolicy.cjs +5 -5
- package/code/pi-extension/src/outfitter-extension.js +353 -553
- package/code/pi-extension/src/outfitter-runtime-extension.js +160 -0
- package/dist/agents/AgentLaunch.d.ts +9 -1
- package/dist/agents/AgentLaunch.js +19 -0
- package/dist/agents/AgentLaunch.js.map +1 -1
- package/dist/agents/PiCredentialPersistence.d.ts +6 -0
- package/dist/agents/PiCredentialPersistence.js +33 -0
- package/dist/agents/PiCredentialPersistence.js.map +1 -0
- package/dist/cli/OutfitterCli.js +10 -18
- package/dist/cli/OutfitterCli.js.map +1 -1
- package/dist/cli/commands/CommandObject.d.ts +0 -5
- package/dist/cli/commands/CommandObject.js +1 -4
- package/dist/cli/commands/CommandObject.js.map +1 -1
- package/dist/cli/commands/DumpCommand.d.ts +19 -0
- package/dist/cli/commands/DumpCommand.js +54 -0
- package/dist/cli/commands/DumpCommand.js.map +1 -0
- package/dist/cli/commands/ListCommand.d.ts +17 -0
- package/dist/cli/commands/ListCommand.js +77 -0
- package/dist/cli/commands/ListCommand.js.map +1 -0
- package/dist/cli/commands/PiRuntimeLaunch.d.ts +8 -0
- package/dist/cli/commands/PiRuntimeLaunch.js +47 -0
- package/dist/cli/commands/PiRuntimeLaunch.js.map +1 -0
- package/dist/cli/commands/ProcessDefaults.d.ts +2 -0
- package/dist/cli/commands/ProcessDefaults.js +5 -0
- package/dist/cli/commands/ProcessDefaults.js.map +1 -0
- package/dist/cli/commands/RunAgentCommand.d.ts +46 -0
- package/dist/cli/commands/RunAgentCommand.js +176 -0
- package/dist/cli/commands/RunAgentCommand.js.map +1 -0
- package/dist/cli/commands/SetupCommand.d.ts +38 -6
- package/dist/cli/commands/SetupCommand.js +194 -232
- package/dist/cli/commands/SetupCommand.js.map +1 -1
- package/dist/cli/commands/ValidateCommand.d.ts +20 -0
- package/dist/cli/commands/ValidateCommand.js +54 -0
- package/dist/cli/commands/ValidateCommand.js.map +1 -0
- package/dist/composer/Composer.d.ts +11 -0
- package/dist/composer/Composer.js +72 -0
- package/dist/composer/Composer.js.map +1 -0
- package/dist/composer/Composition.d.ts +33 -0
- package/dist/composer/Composition.js +2 -0
- package/dist/composer/Composition.js.map +1 -0
- package/dist/dump/Containment.d.ts +8 -0
- package/dist/dump/Containment.js +22 -0
- package/dist/dump/Containment.js.map +1 -0
- package/dist/dump/Dump.d.ts +8 -0
- package/dist/dump/Dump.js +182 -0
- package/dist/dump/Dump.js.map +1 -0
- package/dist/extensions/PiExtensionCache.d.ts +30 -0
- package/dist/extensions/PiExtensionCache.js +92 -0
- package/dist/extensions/PiExtensionCache.js.map +1 -0
- package/dist/fs/TypeConflict.d.ts +6 -0
- package/dist/fs/TypeConflict.js +21 -0
- package/dist/fs/TypeConflict.js.map +1 -0
- package/dist/paths/OutfitterCache.d.ts +6 -0
- package/dist/paths/OutfitterCache.js +17 -0
- package/dist/paths/OutfitterCache.js.map +1 -0
- package/dist/projection/Materialize.d.ts +24 -0
- package/dist/projection/Materialize.js +83 -0
- package/dist/projection/Materialize.js.map +1 -0
- package/dist/projection/ProjectHarness.d.ts +5 -0
- package/dist/projection/ProjectHarness.js +77 -0
- package/dist/projection/ProjectHarness.js.map +1 -0
- package/dist/projection/Projection.d.ts +23 -0
- package/dist/projection/Projection.js +2 -0
- package/dist/projection/Projection.js.map +1 -0
- package/dist/resolver/AgentDefinition.d.ts +30 -0
- package/dist/resolver/AgentDefinition.js +123 -0
- package/dist/resolver/AgentDefinition.js.map +1 -0
- package/dist/resolver/Layer.d.ts +12 -0
- package/dist/resolver/Layer.js +30 -0
- package/dist/resolver/Layer.js.map +1 -0
- package/dist/resolver/Resolver.d.ts +3 -0
- package/dist/resolver/Resolver.js +163 -0
- package/dist/resolver/Resolver.js.map +1 -0
- package/dist/resolver/ResolverContext.d.ts +15 -0
- package/dist/resolver/ResolverContext.js +11 -0
- package/dist/resolver/ResolverContext.js.map +1 -0
- package/dist/resolver/ResolverValidation.d.ts +11 -0
- package/dist/resolver/ResolverValidation.js +112 -0
- package/dist/resolver/ResolverValidation.js.map +1 -0
- package/dist/resolver/Resource.d.ts +88 -0
- package/dist/resolver/Resource.js +34 -0
- package/dist/resolver/Resource.js.map +1 -0
- package/dist/schemas/agent.schema.json +48 -0
- package/dist/schemas/settings.schema.json +32 -9
- package/dist/settings/Settings.d.ts +34 -5
- package/dist/settings/Settings.js +3 -1
- package/dist/settings/Settings.js.map +1 -1
- package/dist/settings/SettingsLoader.d.ts +1 -1
- package/dist/settings/SettingsLoader.js +23 -22
- package/dist/settings/SettingsLoader.js.map +1 -1
- package/dist/settings/SettingsMerger.js +12 -10
- package/dist/settings/SettingsMerger.js.map +1 -1
- package/dist/setup/DefaultCatalog.d.ts +20 -0
- package/dist/setup/DefaultCatalog.js +89 -0
- package/dist/setup/DefaultCatalog.js.map +1 -0
- package/dist/setup/Setup.d.ts +43 -0
- package/dist/setup/Setup.js +261 -0
- package/dist/setup/Setup.js.map +1 -0
- package/dist/skills/SkillDocument.d.ts +6 -1
- package/dist/skills/SkillDocument.js.map +1 -1
- package/dist/sources/SourceCache.d.ts +19 -0
- package/dist/{profiles/ProfileCache.js → sources/SourceCache.js} +22 -18
- package/dist/sources/SourceCache.js.map +1 -0
- package/dist/validation/SchemaValidator.d.ts +1 -1
- package/dist/validation/SchemaValidator.js +4 -13
- package/dist/validation/SchemaValidator.js.map +1 -1
- package/docs/architecture/state_writeback_strategy.md +54 -122
- package/docs/documentation/README.md +33 -12
- package/docs/documentation/actions.md +35 -52
- package/docs/documentation/agents.md +109 -0
- package/docs/documentation/best-practices.md +25 -63
- package/docs/documentation/catalogs.md +126 -0
- package/docs/documentation/cli.md +39 -41
- package/docs/documentation/concepts.md +66 -23
- package/docs/documentation/dump-and-bake.md +30 -0
- package/docs/documentation/first-time-cli-agent-users.md +8 -8
- package/docs/documentation/getting-started.md +28 -8
- package/docs/documentation/hooks.md +20 -0
- package/docs/documentation/iterating-on-profiles.md +56 -70
- package/docs/documentation/local-development.md +84 -0
- package/docs/documentation/migration.md +39 -0
- package/docs/documentation/personas.md +41 -0
- package/docs/documentation/porting-claude.md +54 -0
- package/docs/documentation/profiles.md +16 -169
- package/docs/documentation/settings.md +61 -0
- package/docs/documentation/skills.md +93 -334
- package/docs/documentation/state.md +24 -62
- package/docs/documentation/subagents.md +37 -0
- package/docs/documentation/support-matrix.md +40 -35
- package/docs/documentation/switching-to-outfitter.md +75 -81
- package/docs/documentation/tasks.md +13 -0
- package/docs/documentation/usecases/engineering.md +67 -84
- package/docs/documentation/usecases/organization-profile-catalog.md +83 -111
- package/docs/documentation/usecases/persona-reviews.md +133 -139
- package/docs/philosophy.md +2 -2
- package/package.json +3 -3
- package/src/schemas/agent.schema.json +48 -0
- package/src/schemas/settings.schema.json +32 -9
- package/dist/agents/AdapterProfileControls.d.ts +0 -21
- package/dist/agents/AdapterProfileControls.js +0 -76
- package/dist/agents/AdapterProfileControls.js.map +0 -1
- package/dist/agents/AdapterStatePaths.d.ts +0 -12
- package/dist/agents/AdapterStatePaths.js +0 -46
- package/dist/agents/AdapterStatePaths.js.map +0 -1
- package/dist/agents/AgentAdapter.d.ts +0 -44
- package/dist/agents/AgentAdapter.js +0 -2
- package/dist/agents/AgentAdapter.js.map +0 -1
- package/dist/agents/AgentRegistry.d.ts +0 -6
- package/dist/agents/AgentRegistry.js +0 -17
- package/dist/agents/AgentRegistry.js.map +0 -1
- package/dist/agents/LaunchResources.d.ts +0 -17
- package/dist/agents/LaunchResources.js +0 -61
- package/dist/agents/LaunchResources.js.map +0 -1
- package/dist/agents/OutfitterSkill.d.ts +0 -11
- package/dist/agents/OutfitterSkill.js +0 -128
- package/dist/agents/OutfitterSkill.js.map +0 -1
- package/dist/agents/ResourceIdentity.d.ts +0 -2
- package/dist/agents/ResourceIdentity.js +0 -51
- package/dist/agents/ResourceIdentity.js.map +0 -1
- package/dist/agents/claude/ClaudeAdapter.d.ts +0 -2
- package/dist/agents/claude/ClaudeAdapter.js +0 -148
- package/dist/agents/claude/ClaudeAdapter.js.map +0 -1
- package/dist/agents/claude/ClaudeCompositeProfileWriter.d.ts +0 -5
- package/dist/agents/claude/ClaudeCompositeProfileWriter.js +0 -7
- package/dist/agents/claude/ClaudeCompositeProfileWriter.js.map +0 -1
- package/dist/agents/pi/PiAdapter.d.ts +0 -2
- package/dist/agents/pi/PiAdapter.js +0 -363
- package/dist/agents/pi/PiAdapter.js.map +0 -1
- package/dist/agents/pi/PiArgs.d.ts +0 -2
- package/dist/agents/pi/PiArgs.js +0 -15
- package/dist/agents/pi/PiArgs.js.map +0 -1
- package/dist/agents/pi/PiCompositeProfileWriter.d.ts +0 -5
- package/dist/agents/pi/PiCompositeProfileWriter.js +0 -7
- package/dist/agents/pi/PiCompositeProfileWriter.js.map +0 -1
- package/dist/agents/pi/PiExtensionCache.d.ts +0 -12
- package/dist/agents/pi/PiExtensionCache.js +0 -195
- package/dist/agents/pi/PiExtensionCache.js.map +0 -1
- package/dist/agents/pi/PiMcpConfig.d.ts +0 -2
- package/dist/agents/pi/PiMcpConfig.js +0 -114
- package/dist/agents/pi/PiMcpConfig.js.map +0 -1
- package/dist/agents/pi/PiSettingsMergePolicy.d.ts +0 -17
- package/dist/agents/pi/PiSettingsMergePolicy.js +0 -59
- package/dist/agents/pi/PiSettingsMergePolicy.js.map +0 -1
- package/dist/agents/pi/PiSkillSources.d.ts +0 -8
- package/dist/agents/pi/PiSkillSources.js +0 -73
- package/dist/agents/pi/PiSkillSources.js.map +0 -1
- package/dist/cli/commands/FirstRunWelcomeProfile.d.ts +0 -11
- package/dist/cli/commands/FirstRunWelcomeProfile.js +0 -110
- package/dist/cli/commands/FirstRunWelcomeProfile.js.map +0 -1
- package/dist/cli/commands/PiLoginLaunch.d.ts +0 -22
- package/dist/cli/commands/PiLoginLaunch.js +0 -170
- package/dist/cli/commands/PiLoginLaunch.js.map +0 -1
- package/dist/cli/commands/RunCommand.d.ts +0 -36
- package/dist/cli/commands/RunCommand.js +0 -345
- package/dist/cli/commands/RunCommand.js.map +0 -1
- package/dist/cli/commands/SyncCommand.d.ts +0 -46
- package/dist/cli/commands/SyncCommand.js +0 -244
- package/dist/cli/commands/SyncCommand.js.map +0 -1
- package/dist/cli/commands/WelcomeCommand.d.ts +0 -56
- package/dist/cli/commands/WelcomeCommand.js +0 -224
- package/dist/cli/commands/WelcomeCommand.js.map +0 -1
- package/dist/cli/commands/assets/outfitter-ascii.txt +0 -5
- package/dist/cli/commands/profile/Command.d.ts +0 -7
- package/dist/cli/commands/profile/Command.js +0 -24
- package/dist/cli/commands/profile/Command.js.map +0 -1
- package/dist/cli/commands/profile/CreateCommand.d.ts +0 -19
- package/dist/cli/commands/profile/CreateCommand.js +0 -115
- package/dist/cli/commands/profile/CreateCommand.js.map +0 -1
- package/dist/cli/commands/profile/LintCommand.d.ts +0 -19
- package/dist/cli/commands/profile/LintCommand.js +0 -155
- package/dist/cli/commands/profile/LintCommand.js.map +0 -1
- package/dist/cli/commands/profile/ListCommand.d.ts +0 -19
- package/dist/cli/commands/profile/ListCommand.js +0 -91
- package/dist/cli/commands/profile/ListCommand.js.map +0 -1
- package/dist/cli/commands/profile/Shared.d.ts +0 -9
- package/dist/cli/commands/profile/Shared.js +0 -10
- package/dist/cli/commands/profile/Shared.js.map +0 -1
- package/dist/cli/commands/run/RunFirstRunOnboarding.d.ts +0 -7
- package/dist/cli/commands/run/RunFirstRunOnboarding.js +0 -52
- package/dist/cli/commands/run/RunFirstRunOnboarding.js.map +0 -1
- package/dist/cli/commands/run/RunLaunchSummary.d.ts +0 -2
- package/dist/cli/commands/run/RunLaunchSummary.js +0 -35
- package/dist/cli/commands/run/RunLaunchSummary.js.map +0 -1
- package/dist/cli/commands/run/RunProfileResolution.d.ts +0 -39
- package/dist/cli/commands/run/RunProfileResolution.js +0 -128
- package/dist/cli/commands/run/RunProfileResolution.js.map +0 -1
- package/dist/cli/commands/run/RunStateWritePrompt.d.ts +0 -2
- package/dist/cli/commands/run/RunStateWritePrompt.js +0 -29
- package/dist/cli/commands/run/RunStateWritePrompt.js.map +0 -1
- package/dist/cli/commands/setup/SetupPrompts.d.ts +0 -14
- package/dist/cli/commands/setup/SetupPrompts.js +0 -296
- package/dist/cli/commands/setup/SetupPrompts.js.map +0 -1
- package/dist/cli/commands/setup/SetupSourceImport.d.ts +0 -5
- package/dist/cli/commands/setup/SetupSourceImport.js +0 -177
- package/dist/cli/commands/setup/SetupSourceImport.js.map +0 -1
- package/dist/cli/commands/setup/SetupSourceLaunch.d.ts +0 -4
- package/dist/cli/commands/setup/SetupSourceLaunch.js +0 -65
- package/dist/cli/commands/setup/SetupSourceLaunch.js.map +0 -1
- package/dist/cli/commands/setup/SetupStarterSource.d.ts +0 -21
- package/dist/cli/commands/setup/SetupStarterSource.js +0 -133
- package/dist/cli/commands/setup/SetupStarterSource.js.map +0 -1
- package/dist/cli/commands/setup/SetupTypes.d.ts +0 -91
- package/dist/cli/commands/setup/SetupTypes.js +0 -26
- package/dist/cli/commands/setup/SetupTypes.js.map +0 -1
- package/dist/compositeProfile/CompositeProfile.d.ts +0 -8
- package/dist/compositeProfile/CompositeProfile.js +0 -6
- package/dist/compositeProfile/CompositeProfile.js.map +0 -1
- package/dist/compositeProfile/CompositeProfileAssembler.d.ts +0 -12
- package/dist/compositeProfile/CompositeProfileAssembler.js +0 -32
- package/dist/compositeProfile/CompositeProfileAssembler.js.map +0 -1
- package/dist/compositeProfile/CompositeProfileCleanup.d.ts +0 -9
- package/dist/compositeProfile/CompositeProfileCleanup.js +0 -87
- package/dist/compositeProfile/CompositeProfileCleanup.js.map +0 -1
- package/dist/compositeProfile/CompositeProfileFile.d.ts +0 -16
- package/dist/compositeProfile/CompositeProfileFile.js +0 -16
- package/dist/compositeProfile/CompositeProfileFile.js.map +0 -1
- package/dist/compositeProfile/CompositeProfileTemplate.d.ts +0 -15
- package/dist/compositeProfile/CompositeProfileTemplate.js +0 -65
- package/dist/compositeProfile/CompositeProfileTemplate.js.map +0 -1
- package/dist/compositeProfile/CompositeProfileWatcher.d.ts +0 -18
- package/dist/compositeProfile/CompositeProfileWatcher.js +0 -46
- package/dist/compositeProfile/CompositeProfileWatcher.js.map +0 -1
- package/dist/compositeProfile/StatePersistence.d.ts +0 -39
- package/dist/compositeProfile/StatePersistence.js +0 -249
- package/dist/compositeProfile/StatePersistence.js.map +0 -1
- package/dist/fs/SafeSymlink.d.ts +0 -13
- package/dist/fs/SafeSymlink.js +0 -50
- package/dist/fs/SafeSymlink.js.map +0 -1
- package/dist/profiles/Profile.d.ts +0 -60
- package/dist/profiles/Profile.js +0 -7
- package/dist/profiles/Profile.js.map +0 -1
- package/dist/profiles/ProfileCache.d.ts +0 -8
- package/dist/profiles/ProfileCache.js.map +0 -1
- package/dist/profiles/ProfileLoader.d.ts +0 -28
- package/dist/profiles/ProfileLoader.js +0 -299
- package/dist/profiles/ProfileLoader.js.map +0 -1
- package/dist/profiles/ProfileMerger.d.ts +0 -19
- package/dist/profiles/ProfileMerger.js +0 -112
- package/dist/profiles/ProfileMerger.js.map +0 -1
- package/dist/profiles/ProfileSource.d.ts +0 -35
- package/dist/profiles/ProfileSource.js +0 -13
- package/dist/profiles/ProfileSource.js.map +0 -1
- package/dist/profiles/PromptIncludes.d.ts +0 -32
- package/dist/profiles/PromptIncludes.js +0 -147
- package/dist/profiles/PromptIncludes.js.map +0 -1
- package/dist/prompts/SystemPromptExport.d.ts +0 -16
- package/dist/prompts/SystemPromptExport.js +0 -81
- package/dist/prompts/SystemPromptExport.js.map +0 -1
- package/dist/schemas/profile-source.schema.json +0 -29
- package/dist/schemas/profile.schema.json +0 -200
- package/dist/skills/ProfileSkillResolution.d.ts +0 -21
- package/dist/skills/ProfileSkillResolution.js +0 -88
- package/dist/skills/ProfileSkillResolution.js.map +0 -1
- package/dist/skills/SkillCatalog.d.ts +0 -41
- package/dist/skills/SkillCatalog.js +0 -119
- package/dist/skills/SkillCatalog.js.map +0 -1
- package/dist/skills/SkillResolution.d.ts +0 -34
- package/dist/skills/SkillResolution.js +0 -369
- package/dist/skills/SkillResolution.js.map +0 -1
- package/docs/documentation/profile-repository.md +0 -179
- package/src/schemas/SchemaDocument.ts +0 -20
- package/src/schemas/profile-source.schema.json +0 -29
- package/src/schemas/profile.schema.json +0 -200
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
// Shared helpers for adapter-declared composite profile state paths.
|
|
2
|
-
import { existsSync } from 'node:fs';
|
|
3
|
-
import { join } from 'node:path';
|
|
4
|
-
export const createDeclaredStatePaths = (input) => {
|
|
5
|
-
assertDeclaredStatePersistenceKeys(input.adapterId, input.declarations, input.profile);
|
|
6
|
-
return Object.entries(input.declarations).map(([relativePath, declaration]) => {
|
|
7
|
-
const strategy = resolveStateStrategy(input.profile, relativePath, declaration);
|
|
8
|
-
const directory = relativePath.endsWith('/');
|
|
9
|
-
return {
|
|
10
|
-
relativePath,
|
|
11
|
-
strategy,
|
|
12
|
-
directory,
|
|
13
|
-
// Prompt paths resolve a durable source too, so an interactive "persist" choice
|
|
14
|
-
// after the run has a destination to copy the change to.
|
|
15
|
-
sourcePath: (strategy === 'symlink' || strategy === 'prompt') && relativePath !== 'unknown'
|
|
16
|
-
? input.resolveSourcePath(relativePath, directory)
|
|
17
|
-
: undefined,
|
|
18
|
-
};
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
export const assertDeclaredStatePersistenceKeys = (adapterId, declarations, profile) => {
|
|
22
|
-
for (const relativePath of Object.keys(profile.statePersistence ?? {})) {
|
|
23
|
-
if (!Object.hasOwn(declarations, relativePath)) {
|
|
24
|
-
throw new Error(`state_persistence path '${relativePath}' is not declared by the ${adapterId} adapter`);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
export const resolveStateStrategy = (profile, relativePath, declaration) => {
|
|
29
|
-
const strategy = profile.statePersistence?.[relativePath] ?? declaration.defaultStrategy;
|
|
30
|
-
/* v8 ignore next -- Adapter declarations define defaults; this guards future declaration regressions. */
|
|
31
|
-
if (strategy === undefined) {
|
|
32
|
-
throw new Error(`missing state_persistence strategy for "${relativePath}"`);
|
|
33
|
-
}
|
|
34
|
-
if (!declaration.allowedStrategies.includes(strategy)) {
|
|
35
|
-
throw new Error(`state_persistence strategy '${strategy}' is not allowed for "${relativePath}"`);
|
|
36
|
-
}
|
|
37
|
-
return strategy;
|
|
38
|
-
};
|
|
39
|
-
export const findProfileStateSource = (profileFolders, adapterId, relativePath, directory) => {
|
|
40
|
-
const normalizedRelativePath = directory ? relativePath.slice(0, -1) : relativePath;
|
|
41
|
-
return [...profileFolders]
|
|
42
|
-
.reverse()
|
|
43
|
-
.map((profileFolder) => join(profileFolder, 'cli_specific', adapterId, normalizedRelativePath))
|
|
44
|
-
.find((candidate) => existsSync(candidate));
|
|
45
|
-
};
|
|
46
|
-
//# sourceMappingURL=AdapterStatePaths.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AdapterStatePaths.js","sourceRoot":"","sources":["../../src/agents/AdapterStatePaths.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAgBjC,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,KAA6B,EAAwC,EAAE;IAC9G,kCAAkC,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAEvF,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,EAAE;QAC5E,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAChF,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAE7C,OAAO;YACL,YAAY;YACZ,QAAQ;YACR,SAAS;YACT,gFAAgF;YAChF,yDAAyD;YACzD,UAAU,EACR,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,QAAQ,CAAC,IAAI,YAAY,KAAK,SAAS;gBAC7E,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,YAAY,EAAE,SAAS,CAAC;gBAClD,CAAC,CAAC,SAAS;SAChB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAChD,SAAiB,EACjB,YAA4D,EAC5D,OAAgB,EACV,EAAE;IACR,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC,EAAE,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,2BAA2B,YAAY,4BAA4B,SAAS,UAAU,CAAC,CAAC;QAC1G,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,OAAgB,EAChB,YAAoB,EACpB,WAAiC,EACP,EAAE;IAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,YAAY,CAAC,IAAI,WAAW,CAAC,eAAe,CAAC;IAEzF,yGAAyG;IACzG,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,2CAA2C,YAAY,GAAG,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,yBAAyB,YAAY,GAAG,CAAC,CAAC;IACnG,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,cAAiC,EACjC,SAAiB,EACjB,YAAoB,EACpB,SAAkB,EACE,EAAE;IACtB,MAAM,sBAAsB,GAAG,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IAEpF,OAAO,CAAC,GAAG,cAAc,CAAC;SACvB,OAAO,EAAE;SACT,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,sBAAsB,CAAC,CAAC;SAC9F,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import type { Profile } from '../profiles/Profile.js';
|
|
2
|
-
import type { Settings } from '../settings/Settings.js';
|
|
3
|
-
import type { StatePathDeclaration } from '../compositeProfile/StatePersistence.js';
|
|
4
|
-
import type { CompositeProfile } from '../compositeProfile/CompositeProfile.js';
|
|
5
|
-
export interface AgentLaunchPlan {
|
|
6
|
-
readonly command: string;
|
|
7
|
-
readonly args: readonly string[];
|
|
8
|
-
readonly env: Readonly<Record<string, string>>;
|
|
9
|
-
}
|
|
10
|
-
export interface AgentLaunchProfileLayer {
|
|
11
|
-
readonly profile: Profile;
|
|
12
|
-
readonly profilePath: string;
|
|
13
|
-
readonly sourceRootPath?: string;
|
|
14
|
-
readonly resourceRootPath?: string;
|
|
15
|
-
readonly layout?: 'directory' | 'flat-file';
|
|
16
|
-
}
|
|
17
|
-
export interface AgentLaunchContext {
|
|
18
|
-
readonly profileFolders?: readonly string[];
|
|
19
|
-
readonly profileLayers?: readonly AgentLaunchProfileLayer[];
|
|
20
|
-
readonly projectDirectory?: string;
|
|
21
|
-
readonly cacheDirectory?: string;
|
|
22
|
-
readonly onProgress?: (message: string) => void;
|
|
23
|
-
}
|
|
24
|
-
export interface AgentCompositeProfilePlan {
|
|
25
|
-
readonly compositeProfile: CompositeProfile;
|
|
26
|
-
readonly warnings: readonly string[];
|
|
27
|
-
}
|
|
28
|
-
export interface AgentAdapter {
|
|
29
|
-
readonly id: string;
|
|
30
|
-
readonly supportedControls: readonly string[];
|
|
31
|
-
readonly statePaths?: Readonly<Record<string, StatePathDeclaration>>;
|
|
32
|
-
createCompositeProfile(profile: Profile, input: {
|
|
33
|
-
readonly rootDirectory: string;
|
|
34
|
-
readonly profilePaths: readonly string[];
|
|
35
|
-
readonly profileFolders?: readonly string[];
|
|
36
|
-
readonly profileLayers?: readonly AgentLaunchProfileLayer[];
|
|
37
|
-
readonly homeDirectory?: string;
|
|
38
|
-
readonly cacheDirectory?: string;
|
|
39
|
-
readonly settings?: Settings;
|
|
40
|
-
readonly projectDirectory?: string;
|
|
41
|
-
}): AgentCompositeProfilePlan;
|
|
42
|
-
createLaunchPlan(compositeProfile: CompositeProfile, profile?: Profile, passThroughArgs?: readonly string[], context?: AgentLaunchContext): AgentLaunchPlan;
|
|
43
|
-
getUnsupportedControls(profile: Profile): readonly string[];
|
|
44
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AgentAdapter.js","sourceRoot":"","sources":["../../src/agents/AgentAdapter.ts"],"names":[],"mappings":""}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { AgentAdapter } from './AgentAdapter.js';
|
|
2
|
-
export type SupportedAgentId = 'pi' | 'claude';
|
|
3
|
-
export declare const defaultAgentId: SupportedAgentId;
|
|
4
|
-
export declare const supportedAgentIds: readonly ["pi", "claude"];
|
|
5
|
-
export declare const isSupportedAgentId: (agentId: string) => agentId is SupportedAgentId;
|
|
6
|
-
export declare const createAgentAdapter: (agentId: string | undefined) => AgentAdapter;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { createClaudeAdapter } from './claude/ClaudeAdapter.js';
|
|
2
|
-
import { createPiAdapter } from './pi/PiAdapter.js';
|
|
3
|
-
export const defaultAgentId = 'pi';
|
|
4
|
-
export const supportedAgentIds = [defaultAgentId, 'claude'];
|
|
5
|
-
export const isSupportedAgentId = (agentId) => supportedAgentIds.includes(agentId);
|
|
6
|
-
export const createAgentAdapter = (agentId) => {
|
|
7
|
-
const selectedAgentId = agentId ?? defaultAgentId;
|
|
8
|
-
switch (selectedAgentId) {
|
|
9
|
-
case 'pi':
|
|
10
|
-
return createPiAdapter();
|
|
11
|
-
case 'claude':
|
|
12
|
-
return createClaudeAdapter();
|
|
13
|
-
default:
|
|
14
|
-
throw new Error(`Unknown agent '${selectedAgentId}'. Expected one of: ${supportedAgentIds.join(', ')}.`);
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
//# sourceMappingURL=AgentRegistry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AgentRegistry.js","sourceRoot":"","sources":["../../src/agents/AgentRegistry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIpD,MAAM,CAAC,MAAM,cAAc,GAAqB,IAAI,CAAC;AAErD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAgD,CAAC;AAE3G,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAA+B,EAAE,CACjF,iBAAiB,CAAC,QAAQ,CAAC,OAA2B,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAA2B,EAAgB,EAAE;IAC9E,MAAM,eAAe,GAAG,OAAO,IAAI,cAAc,CAAC;IAElD,QAAQ,eAAe,EAAE,CAAC;QACxB,KAAK,IAAI;YACP,OAAO,eAAe,EAAE,CAAC;QAC3B,KAAK,QAAQ;YACX,OAAO,mBAAmB,EAAE,CAAC;QAC/B;YACE,MAAM,IAAI,KAAK,CAAC,kBAAkB,eAAe,uBAAuB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7G,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { SkillControlEntry } from '../profiles/Profile.js';
|
|
2
|
-
export type LaunchResourceKind = 'extension' | 'skill';
|
|
3
|
-
export type LaunchResourceOrigin = 'generic-controls' | 'agent-controls' | 'profile-controls' | 'settings';
|
|
4
|
-
export interface LaunchResourceEntry {
|
|
5
|
-
readonly kind: LaunchResourceKind;
|
|
6
|
-
readonly source: string;
|
|
7
|
-
readonly identity: string;
|
|
8
|
-
readonly origin: LaunchResourceOrigin;
|
|
9
|
-
/** Higher values win ties for the same identity. */
|
|
10
|
-
readonly precedence: number;
|
|
11
|
-
}
|
|
12
|
-
export declare const createLaunchResourceEntries: (kind: LaunchResourceKind, sources: readonly string[] | undefined, origin: LaunchResourceOrigin, precedence: number) => readonly LaunchResourceEntry[];
|
|
13
|
-
export declare const mergeLaunchResourceEntries: (entries: readonly LaunchResourceEntry[]) => readonly LaunchResourceEntry[];
|
|
14
|
-
export declare const mergeLaunchResourceSources: (kind: LaunchResourceKind, lowerPrecedence: readonly string[] | undefined, higherPrecedence: readonly string[] | undefined) => readonly string[] | undefined;
|
|
15
|
-
/** Identity for `controls.skills` entries: bare IDs and `{ id }` objects dedupe together. */
|
|
16
|
-
export declare const skillControlEntryIdentity: (entry: unknown) => string;
|
|
17
|
-
export declare const mergeSkillControlSources: (lowerPrecedence: readonly SkillControlEntry[] | undefined, higherPrecedence: readonly SkillControlEntry[] | undefined) => readonly SkillControlEntry[] | undefined;
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { isValidSkillId } from '../skills/SkillDocument.js';
|
|
2
|
-
import { normalizeExtensionResourceIdentity, normalizeLaunchResourceIdentity } from './ResourceIdentity.js';
|
|
3
|
-
export const createLaunchResourceEntries = (kind, sources = [], origin, precedence) => sources.map((source) => ({
|
|
4
|
-
kind,
|
|
5
|
-
source,
|
|
6
|
-
identity: createLaunchResourceIdentity(kind, source),
|
|
7
|
-
origin,
|
|
8
|
-
precedence,
|
|
9
|
-
}));
|
|
10
|
-
export const mergeLaunchResourceEntries = (entries) => {
|
|
11
|
-
const entriesByIdentity = new Map();
|
|
12
|
-
for (const entry of entries) {
|
|
13
|
-
const existing = entriesByIdentity.get(entry.identity);
|
|
14
|
-
if (existing === undefined || entry.precedence > existing.precedence) {
|
|
15
|
-
entriesByIdentity.set(entry.identity, entry);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
return entries.filter((entry) => entriesByIdentity.get(entry.identity) === entry);
|
|
19
|
-
};
|
|
20
|
-
export const mergeLaunchResourceSources = (kind, lowerPrecedence, higherPrecedence) => {
|
|
21
|
-
if (lowerPrecedence === undefined && higherPrecedence === undefined) {
|
|
22
|
-
return undefined;
|
|
23
|
-
}
|
|
24
|
-
return mergeLaunchResourceEntries([
|
|
25
|
-
...createLaunchResourceEntries(kind, higherPrecedence, 'agent-controls', 1),
|
|
26
|
-
...createLaunchResourceEntries(kind, lowerPrecedence, 'generic-controls', 0),
|
|
27
|
-
]).map((entry) => entry.source);
|
|
28
|
-
};
|
|
29
|
-
const createLaunchResourceIdentity = (kind, source) => {
|
|
30
|
-
if (kind === 'extension') {
|
|
31
|
-
return normalizeExtensionResourceIdentity(source);
|
|
32
|
-
}
|
|
33
|
-
return normalizeLaunchResourceIdentity(source);
|
|
34
|
-
};
|
|
35
|
-
/** Identity for `controls.skills` entries: bare IDs and `{ id }` objects dedupe together. */
|
|
36
|
-
export const skillControlEntryIdentity = (entry) => {
|
|
37
|
-
if (typeof entry === 'string') {
|
|
38
|
-
const trimmed = entry.trim();
|
|
39
|
-
return isValidSkillId(trimmed) ? `id:${trimmed}` : normalizeLaunchResourceIdentity(trimmed);
|
|
40
|
-
}
|
|
41
|
-
if (entry !== null && typeof entry === 'object' && typeof entry.id === 'string') {
|
|
42
|
-
return `id:${entry.id}`;
|
|
43
|
-
}
|
|
44
|
-
/* v8 ignore next -- schema validation rejects other entry shapes before merging. */
|
|
45
|
-
return normalizeLaunchResourceIdentity(String(entry));
|
|
46
|
-
};
|
|
47
|
-
export const mergeSkillControlSources = (lowerPrecedence, higherPrecedence) => {
|
|
48
|
-
if (lowerPrecedence === undefined && higherPrecedence === undefined) {
|
|
49
|
-
return undefined;
|
|
50
|
-
}
|
|
51
|
-
const merged = [...(higherPrecedence ?? []), ...(lowerPrecedence ?? [])];
|
|
52
|
-
const winners = new Map();
|
|
53
|
-
for (const entry of merged) {
|
|
54
|
-
const identity = skillControlEntryIdentity(entry);
|
|
55
|
-
if (!winners.has(identity)) {
|
|
56
|
-
winners.set(identity, entry);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return merged.filter((entry) => winners.get(skillControlEntryIdentity(entry)) === entry);
|
|
60
|
-
};
|
|
61
|
-
//# sourceMappingURL=LaunchResources.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LaunchResources.js","sourceRoot":"","sources":["../../src/agents/LaunchResources.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { CompositeProfileFile } from '../compositeProfile/CompositeProfileFile.js';
|
|
2
|
-
export interface OutfitterSkillSource {
|
|
3
|
-
/** Directory containing the authored SKILL.md. */
|
|
4
|
-
readonly skillDirectory: string;
|
|
5
|
-
/** Root that `file:` reference entries resolve from (the repository containing the skill). */
|
|
6
|
-
readonly referenceRootDirectory: string;
|
|
7
|
-
}
|
|
8
|
-
export declare const resolveOutfitterSkillSource: () => OutfitterSkillSource | undefined;
|
|
9
|
-
export declare const outfitterPluginCompositeRelativePath = "outfitter/plugin";
|
|
10
|
-
export declare const outfitterPluginSkillCompositeRelativePath = "outfitter/plugin/skills/outfitter";
|
|
11
|
-
export declare const createOutfitterPluginCompositeFiles: (rootDirectory: string, source?: OutfitterSkillSource | undefined) => readonly CompositeProfileFile[];
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
// Materializes Outfitter's own self-documentation skill into composite profiles.
|
|
2
|
-
//
|
|
3
|
-
// The skill is authored as a regular project skill at <repo>/.outfitter/skills/outfitter
|
|
4
|
-
// (see docs/documentation/skills.md) so Outfitter dogfoods the documented skill layout.
|
|
5
|
-
// Outfitter resolves the skill from the repository or packaged npm layout, materializes
|
|
6
|
-
// its declared `file:` references under the generated skill's references/ directory, and
|
|
7
|
-
// publishes the generated skill through each adapter's native skill mechanism. This
|
|
8
|
-
// replaces the earlier append-system-prompt documentation pointer, which only pi
|
|
9
|
-
// launches could read.
|
|
10
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
11
|
-
import { basename, dirname, join } from 'node:path';
|
|
12
|
-
import { fileURLToPath } from 'node:url';
|
|
13
|
-
import { parse } from 'yaml';
|
|
14
|
-
import { createCompositeProfileFile } from '../compositeProfile/CompositeProfileFile.js';
|
|
15
|
-
const packageRootDirectory = join(dirname(fileURLToPath(import.meta.url)), '..', '..');
|
|
16
|
-
const skillRelativePath = join('.outfitter', 'skills', 'outfitter');
|
|
17
|
-
// The skill lives at <repo>/.outfitter/skills/outfitter in the repository layout; the
|
|
18
|
-
// packaged npm layout stages the same relative path (with docs/documentation beside it)
|
|
19
|
-
// via scripts/sync-package-assets.mjs.
|
|
20
|
-
export const resolveOutfitterSkillSource = () => {
|
|
21
|
-
const repositoryRoot = join(packageRootDirectory, '..', '..');
|
|
22
|
-
/* v8 ignore else -- packaged npm layout is exercised after pack, not unit tests. */
|
|
23
|
-
if (existsSync(join(repositoryRoot, skillRelativePath, 'SKILL.md'))) {
|
|
24
|
-
return { skillDirectory: join(repositoryRoot, skillRelativePath), referenceRootDirectory: repositoryRoot };
|
|
25
|
-
}
|
|
26
|
-
/* v8 ignore next 6 -- packaged npm layout is exercised after pack, not unit tests. */
|
|
27
|
-
if (existsSync(join(packageRootDirectory, skillRelativePath, 'SKILL.md'))) {
|
|
28
|
-
return {
|
|
29
|
-
skillDirectory: join(packageRootDirectory, skillRelativePath),
|
|
30
|
-
referenceRootDirectory: packageRootDirectory,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
/* v8 ignore next -- defensive fallback for installs that exclude the bundled skill. */
|
|
34
|
-
return undefined;
|
|
35
|
-
};
|
|
36
|
-
const createOutfitterSkillCompositeFiles = (rootDirectory, skillCompositeRelativePath, source) => {
|
|
37
|
-
/* v8 ignore next 3 -- defensive fallback for installs that exclude the bundled skill. */
|
|
38
|
-
if (source === undefined) {
|
|
39
|
-
return [];
|
|
40
|
-
}
|
|
41
|
-
const skillPath = join(source.skillDirectory, 'SKILL.md');
|
|
42
|
-
const skillMarkdown = readFileSync(skillPath, 'utf8');
|
|
43
|
-
return [
|
|
44
|
-
createCompositeProfileFile({
|
|
45
|
-
rootDirectory,
|
|
46
|
-
relativePath: `${skillCompositeRelativePath}/SKILL.md`,
|
|
47
|
-
content: skillMarkdown,
|
|
48
|
-
sourceInputs: [skillPath],
|
|
49
|
-
strategy: 'transform',
|
|
50
|
-
}),
|
|
51
|
-
...createReferenceFiles(rootDirectory, skillCompositeRelativePath, source, skillMarkdown, skillPath),
|
|
52
|
-
];
|
|
53
|
-
};
|
|
54
|
-
// The generated skill lives inside a Claude-plugin-shaped bundle under the composite
|
|
55
|
-
// profile's outfitter/ namespace, so agent writes there are never mistaken for user
|
|
56
|
-
// state and profile-selected skills generated under outfitter/skills/ cannot collide
|
|
57
|
-
// with it. Claude launches load the bundle with --plugin-dir (the skills/ state path
|
|
58
|
-
// stays reserved for user skills); pi launches pass the inner skill directory with
|
|
59
|
-
// --skill.
|
|
60
|
-
export const outfitterPluginCompositeRelativePath = 'outfitter/plugin';
|
|
61
|
-
export const outfitterPluginSkillCompositeRelativePath = `${outfitterPluginCompositeRelativePath}/skills/outfitter`;
|
|
62
|
-
export const createOutfitterPluginCompositeFiles = (rootDirectory, source = resolveOutfitterSkillSource()) => {
|
|
63
|
-
/* v8 ignore next 3 -- defensive fallback for installs that exclude the bundled skill. */
|
|
64
|
-
if (source === undefined) {
|
|
65
|
-
return [];
|
|
66
|
-
}
|
|
67
|
-
return [
|
|
68
|
-
createCompositeProfileFile({
|
|
69
|
-
rootDirectory,
|
|
70
|
-
relativePath: `${outfitterPluginCompositeRelativePath}/.claude-plugin/plugin.json`,
|
|
71
|
-
content: `${JSON.stringify({
|
|
72
|
-
name: 'outfitter',
|
|
73
|
-
description: 'Outfitter self-documentation skill for Outfitter-managed launches.',
|
|
74
|
-
}, null, 2)}\n`,
|
|
75
|
-
sourceInputs: [join(source.skillDirectory, 'SKILL.md')],
|
|
76
|
-
strategy: 'transform',
|
|
77
|
-
}),
|
|
78
|
-
...createOutfitterSkillCompositeFiles(rootDirectory, outfitterPluginSkillCompositeRelativePath, source),
|
|
79
|
-
];
|
|
80
|
-
};
|
|
81
|
-
const createReferenceFiles = (rootDirectory, skillCompositeRelativePath, source, skillMarkdown, skillPath) => {
|
|
82
|
-
const seenBasenames = new Set();
|
|
83
|
-
return parseSkillFileReferences(skillMarkdown, skillPath).map((referencePath) => {
|
|
84
|
-
const sourcePath = join(source.referenceRootDirectory, referencePath);
|
|
85
|
-
const destinationName = basename(referencePath);
|
|
86
|
-
if (seenBasenames.has(destinationName)) {
|
|
87
|
-
throw new Error(`Outfitter skill references collide on basename '${destinationName}' in '${skillPath}'.`);
|
|
88
|
-
}
|
|
89
|
-
seenBasenames.add(destinationName);
|
|
90
|
-
if (!existsSync(sourcePath)) {
|
|
91
|
-
throw new Error(`Outfitter skill reference '${referencePath}' is missing at '${sourcePath}'.`);
|
|
92
|
-
}
|
|
93
|
-
return createCompositeProfileFile({
|
|
94
|
-
rootDirectory,
|
|
95
|
-
relativePath: `${skillCompositeRelativePath}/references/${destinationName}`,
|
|
96
|
-
content: readFileSync(sourcePath, 'utf8'),
|
|
97
|
-
sourceInputs: [sourcePath],
|
|
98
|
-
strategy: 'transform',
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
};
|
|
102
|
-
const parseSkillFileReferences = (skillMarkdown, skillPath) => {
|
|
103
|
-
const frontmatter = extractFrontmatter(skillMarkdown);
|
|
104
|
-
if (frontmatter === undefined) {
|
|
105
|
-
return [];
|
|
106
|
-
}
|
|
107
|
-
const parsed = parse(frontmatter);
|
|
108
|
-
const references = parsed !== null && typeof parsed === 'object' && 'references' in parsed ? parsed.references : undefined;
|
|
109
|
-
if (references === undefined) {
|
|
110
|
-
return [];
|
|
111
|
-
}
|
|
112
|
-
if (!Array.isArray(references)) {
|
|
113
|
-
throw new Error(`Outfitter skill frontmatter 'references' must be a list in '${skillPath}'.`);
|
|
114
|
-
}
|
|
115
|
-
const entries = references;
|
|
116
|
-
return entries.map((entry) => {
|
|
117
|
-
const file = entry !== null && typeof entry === 'object' ? entry.file : undefined;
|
|
118
|
-
if (typeof file !== 'string') {
|
|
119
|
-
throw new Error(`Outfitter skill references must be { file: <path> } entries in '${skillPath}'.`);
|
|
120
|
-
}
|
|
121
|
-
return file;
|
|
122
|
-
});
|
|
123
|
-
};
|
|
124
|
-
const extractFrontmatter = (skillMarkdown) => {
|
|
125
|
-
const match = /^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/.exec(skillMarkdown);
|
|
126
|
-
return match?.[1];
|
|
127
|
-
};
|
|
128
|
-
//# sourceMappingURL=OutfitterSkill.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OutfitterSkill.js","sourceRoot":"","sources":["../../src/agents/OutfitterSkill.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
// Normalizes launch resource identities so semantically equivalent entries can be deduplicated.
|
|
2
|
-
import { resolve } from 'node:path';
|
|
3
|
-
export const normalizeExtensionResourceIdentity = (source) => {
|
|
4
|
-
const trimmed = source.trim();
|
|
5
|
-
if (trimmed.startsWith('npm:')) {
|
|
6
|
-
return `npm:${normalizeNpmPackageName(trimmed.slice('npm:'.length))}`;
|
|
7
|
-
}
|
|
8
|
-
if (trimmed.startsWith('github:')) {
|
|
9
|
-
return normalizeGitResourceIdentity(`https://github.com/${trimmed.slice('github:'.length)}.git`);
|
|
10
|
-
}
|
|
11
|
-
if (trimmed.startsWith('git:')) {
|
|
12
|
-
return normalizeGitResourceIdentity(trimmed.slice('git:'.length));
|
|
13
|
-
}
|
|
14
|
-
if (trimmed.startsWith('git+')) {
|
|
15
|
-
return normalizeGitResourceIdentity(trimmed.slice('git+'.length));
|
|
16
|
-
}
|
|
17
|
-
if (trimmed.startsWith('https://') || trimmed.startsWith('http://') || trimmed.startsWith('ssh://')) {
|
|
18
|
-
return normalizeGitResourceIdentity(trimmed);
|
|
19
|
-
}
|
|
20
|
-
return normalizePathResourceIdentity(trimmed);
|
|
21
|
-
};
|
|
22
|
-
export const normalizeLaunchResourceIdentity = (source) => normalizePathResourceIdentity(source.trim());
|
|
23
|
-
const normalizeNpmPackageName = (source) => {
|
|
24
|
-
const withoutRange = source.split('#', 1)[0];
|
|
25
|
-
if (withoutRange.startsWith('@')) {
|
|
26
|
-
const separatorIndex = withoutRange.indexOf('@', 1);
|
|
27
|
-
return (separatorIndex === -1 ? withoutRange : withoutRange.slice(0, separatorIndex)).toLowerCase();
|
|
28
|
-
}
|
|
29
|
-
const separatorIndex = withoutRange.indexOf('@');
|
|
30
|
-
return (separatorIndex === -1 ? withoutRange : withoutRange.slice(0, separatorIndex)).toLowerCase();
|
|
31
|
-
};
|
|
32
|
-
const normalizeGitResourceIdentity = (source) => {
|
|
33
|
-
const withoutRef = source.split('#', 1)[0];
|
|
34
|
-
const urlLike = withoutRef.startsWith('github.com/') ? `https://${withoutRef}` : withoutRef;
|
|
35
|
-
try {
|
|
36
|
-
const url = new URL(urlLike);
|
|
37
|
-
const host = url.hostname.toLowerCase();
|
|
38
|
-
const path = url.pathname.replace(/\/$/u, '').replace(/\.git$/u, '');
|
|
39
|
-
return `git:${url.protocol}//${host}${path}.git`;
|
|
40
|
-
}
|
|
41
|
-
catch {
|
|
42
|
-
return `git:${urlLike.replace(/\/$/u, '').replace(/\.git$/u, '')}.git`;
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
const normalizePathResourceIdentity = (source) => {
|
|
46
|
-
if (source.startsWith('.') || source.startsWith('/')) {
|
|
47
|
-
return `path:${resolve(source)}`;
|
|
48
|
-
}
|
|
49
|
-
return `resource:${source}`;
|
|
50
|
-
};
|
|
51
|
-
//# sourceMappingURL=ResourceIdentity.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceIdentity.js","sourceRoot":"","sources":["../../src/agents/ResourceIdentity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
// Provides the Claude Code adapter for composite profile generation and native launch plans.
|
|
2
|
-
import { homedir } from 'node:os';
|
|
3
|
-
import { join } from 'node:path';
|
|
4
|
-
import { findUnsupportedControlNames, flagValue, mergeAgentSpecificControls, repeatFlag, repeatFlagValue, supportedControlNames, } from '../AdapterProfileControls.js';
|
|
5
|
-
import { createDeclaredStatePaths, findProfileStateSource } from '../AdapterStatePaths.js';
|
|
6
|
-
import { createOutfitterPluginCompositeFiles, outfitterPluginCompositeRelativePath, resolveOutfitterSkillSource, } from '../OutfitterSkill.js';
|
|
7
|
-
import { resolveAppendSystemPromptControl } from '../../profiles/PromptIncludes.js';
|
|
8
|
-
import { createCompositeProfile } from '../../compositeProfile/CompositeProfile.js';
|
|
9
|
-
import { createCompositeProfileFile } from '../../compositeProfile/CompositeProfileFile.js';
|
|
10
|
-
const supportedClaudeGenericControls = new Set([
|
|
11
|
-
'model',
|
|
12
|
-
'thinking',
|
|
13
|
-
'environment',
|
|
14
|
-
'args',
|
|
15
|
-
'sessionDirectory',
|
|
16
|
-
'session_directory',
|
|
17
|
-
'extensions',
|
|
18
|
-
'systemPrompt',
|
|
19
|
-
'system_prompt',
|
|
20
|
-
'appendSystemPrompt',
|
|
21
|
-
'append_system_prompt',
|
|
22
|
-
'pi',
|
|
23
|
-
'claude',
|
|
24
|
-
]);
|
|
25
|
-
const claudeControlNames = new Set([
|
|
26
|
-
'model',
|
|
27
|
-
'thinking',
|
|
28
|
-
'environment',
|
|
29
|
-
'args',
|
|
30
|
-
'sessionDirectory',
|
|
31
|
-
'session_directory',
|
|
32
|
-
'extensions',
|
|
33
|
-
'systemPrompt',
|
|
34
|
-
'system_prompt',
|
|
35
|
-
'appendSystemPrompt',
|
|
36
|
-
'append_system_prompt',
|
|
37
|
-
]);
|
|
38
|
-
const claudeStatePathDeclarations = {
|
|
39
|
-
'settings.json': { defaultStrategy: 'symlink', allowedStrategies: ['symlink', 'warn', 'error', 'prompt'] },
|
|
40
|
-
'agents/': { defaultStrategy: 'symlink', allowedStrategies: ['symlink', 'discard', 'warn', 'error', 'prompt'] },
|
|
41
|
-
'skills/': { defaultStrategy: 'symlink', allowedStrategies: ['symlink', 'discard', 'warn', 'error', 'prompt'] },
|
|
42
|
-
'commands/': { defaultStrategy: 'symlink', allowedStrategies: ['symlink', 'discard', 'warn', 'error', 'prompt'] },
|
|
43
|
-
'plugins/': { defaultStrategy: 'symlink', allowedStrategies: ['symlink', 'discard', 'warn', 'error', 'prompt'] },
|
|
44
|
-
'projects/': { defaultStrategy: 'symlink', allowedStrategies: ['symlink', 'discard', 'warn', 'error'] },
|
|
45
|
-
'debug/': { defaultStrategy: 'symlink', allowedStrategies: ['symlink', 'discard', 'warn', 'error'] },
|
|
46
|
-
unknown: { defaultStrategy: 'warn', allowedStrategies: ['discard', 'warn', 'error', 'prompt'] },
|
|
47
|
-
};
|
|
48
|
-
export const createClaudeAdapter = () => ({
|
|
49
|
-
id: 'claude',
|
|
50
|
-
supportedControls: supportedControlNames(supportedClaudeGenericControls),
|
|
51
|
-
statePaths: claudeStatePathDeclarations,
|
|
52
|
-
createCompositeProfile(profile, input) {
|
|
53
|
-
const compositeProfile = createCompositeProfile(input.rootDirectory, [
|
|
54
|
-
createCompositeProfileFile({
|
|
55
|
-
rootDirectory: input.rootDirectory,
|
|
56
|
-
relativePath: 'outfitter/profile.json',
|
|
57
|
-
content: `${JSON.stringify({ id: profile.id, label: profile.label, controls: profile.controls }, null, 2)}\n`,
|
|
58
|
-
sourceInputs: input.profilePaths,
|
|
59
|
-
strategy: 'transform',
|
|
60
|
-
}),
|
|
61
|
-
...createOutfitterPluginCompositeFiles(input.rootDirectory),
|
|
62
|
-
], createClaudeStatePaths(profile, input));
|
|
63
|
-
return {
|
|
64
|
-
compositeProfile,
|
|
65
|
-
warnings: [
|
|
66
|
-
...this.getUnsupportedControls(profile).map((controlName) => `claude adapter cannot translate requested control '${controlName}'.`),
|
|
67
|
-
...resolveAppendSystemPromptControl({
|
|
68
|
-
fallback: mergeClaudeControls(profile.controls).appendSystemPrompt,
|
|
69
|
-
profileLayers: input.profileLayers,
|
|
70
|
-
agentKey: 'claude',
|
|
71
|
-
projectDirectory: input.projectDirectory,
|
|
72
|
-
}).diagnostics.map((diagnostic) => `claude ${diagnostic.message} (${diagnostic.path})`),
|
|
73
|
-
],
|
|
74
|
-
};
|
|
75
|
-
},
|
|
76
|
-
createLaunchPlan(compositeProfile, profile, passThroughArgs = [], context = {}) {
|
|
77
|
-
const controls = mergeClaudeControls(profile?.controls ?? {});
|
|
78
|
-
const appendPrompt = resolveAppendSystemPromptControl({
|
|
79
|
-
fallback: controls.appendSystemPrompt,
|
|
80
|
-
profileLayers: context.profileLayers,
|
|
81
|
-
agentKey: 'claude',
|
|
82
|
-
projectDirectory: context.projectDirectory,
|
|
83
|
-
});
|
|
84
|
-
return {
|
|
85
|
-
command: 'claude',
|
|
86
|
-
args: [
|
|
87
|
-
...createClaudeArgs({ ...controls, appendSystemPrompt: appendPrompt.prompts }),
|
|
88
|
-
// Publish the bundled Outfitter self-documentation skill through Claude's
|
|
89
|
-
// plugin channel; the skills/ state path stays reserved for user skills.
|
|
90
|
-
...createOutfitterPluginArgs(compositeProfile.rootDirectory),
|
|
91
|
-
...passThroughArgs,
|
|
92
|
-
],
|
|
93
|
-
env: {
|
|
94
|
-
...controls.environment,
|
|
95
|
-
CLAUDE_CONFIG_DIR: compositeProfile.rootDirectory,
|
|
96
|
-
},
|
|
97
|
-
};
|
|
98
|
-
},
|
|
99
|
-
getUnsupportedControls(profile) {
|
|
100
|
-
return findUnsupportedControls(profile.controls);
|
|
101
|
-
},
|
|
102
|
-
});
|
|
103
|
-
const createClaudeStatePaths = (profile, input) => {
|
|
104
|
-
const controls = mergeClaudeControls(profile.controls);
|
|
105
|
-
return createDeclaredStatePaths({
|
|
106
|
-
adapterId: 'claude',
|
|
107
|
-
declarations: claudeStatePathDeclarations,
|
|
108
|
-
profile,
|
|
109
|
-
resolveSourcePath: (relativePath, directory) => resolveClaudeStateSourcePath(input.profileFolders ?? [], input.homeDirectory, relativePath, directory, controls.sessionDirectory),
|
|
110
|
-
});
|
|
111
|
-
};
|
|
112
|
-
const resolveClaudeStateSourcePath = (profileFolders, homeDirectory, relativePath, directory, sessionDirectory) => {
|
|
113
|
-
const normalizedRelativePath = directory ? relativePath.slice(0, -1) : relativePath;
|
|
114
|
-
if (relativePath === 'projects/' && sessionDirectory !== undefined) {
|
|
115
|
-
return sessionDirectory;
|
|
116
|
-
}
|
|
117
|
-
const profileSource = findProfileStateSource(profileFolders, 'claude', relativePath, directory);
|
|
118
|
-
if (profileSource !== undefined) {
|
|
119
|
-
return profileSource;
|
|
120
|
-
}
|
|
121
|
-
return join(
|
|
122
|
-
/* v8 ignore next -- run command always passes homeDirectory; the os fallback is defensive. */
|
|
123
|
-
homeDirectory ?? homedir(), '.claude', normalizedRelativePath);
|
|
124
|
-
};
|
|
125
|
-
const createOutfitterPluginArgs = (rootDirectory) => {
|
|
126
|
-
/* v8 ignore next 3 -- defensive fallback for installs that exclude the bundled skill. */
|
|
127
|
-
if (resolveOutfitterSkillSource() === undefined) {
|
|
128
|
-
return [];
|
|
129
|
-
}
|
|
130
|
-
return ['--plugin-dir', join(rootDirectory, outfitterPluginCompositeRelativePath)];
|
|
131
|
-
};
|
|
132
|
-
const mergeClaudeControls = (controls) => mergeAgentSpecificControls(controls, 'claude');
|
|
133
|
-
const createClaudeArgs = (controls) => [
|
|
134
|
-
...flagValue('--model', controls.model),
|
|
135
|
-
...flagValue('--effort', controls.thinking),
|
|
136
|
-
...flagValue('--system-prompt', controls.systemPrompt),
|
|
137
|
-
...repeatFlagValue('--append-system-prompt', controls.appendSystemPrompt),
|
|
138
|
-
...repeatFlag('--plugin-dir', controls.extensions),
|
|
139
|
-
...(controls.args ?? []),
|
|
140
|
-
];
|
|
141
|
-
const findUnsupportedControls = (controls) => {
|
|
142
|
-
const unsupported = findUnsupportedControlNames(controls, supportedClaudeGenericControls);
|
|
143
|
-
if (controls.claude !== undefined) {
|
|
144
|
-
unsupported.push(...findUnsupportedControlNames(controls.claude, claudeControlNames).map((controlName) => `claude.${controlName}`));
|
|
145
|
-
}
|
|
146
|
-
return unsupported;
|
|
147
|
-
};
|
|
148
|
-
//# sourceMappingURL=ClaudeAdapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ClaudeAdapter.js","sourceRoot":"","sources":["../../../src/agents/claude/ClaudeAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// Defines Claude Code-specific compositeProfile path metadata.
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
export const createClaudeCompositeProfilePaths = (configDirectory) => ({
|
|
4
|
-
configDirectory,
|
|
5
|
-
profileMetadataPath: join(configDirectory, 'outfitter', 'profile.json'),
|
|
6
|
-
});
|
|
7
|
-
//# sourceMappingURL=ClaudeCompositeProfileWriter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ClaudeCompositeProfileWriter.js","sourceRoot":"","sources":["../../../src/agents/claude/ClaudeCompositeProfileWriter.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAOjC,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,eAAuB,EAA+B,EAAE,CAAC,CAAC;IAC1G,eAAe;IACf,mBAAmB,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,cAAc,CAAC;CACxE,CAAC,CAAC"}
|