@ai-outfitter/outfitter 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -7
- package/dist/agents/AdapterProfileControls.d.ts +1 -0
- package/dist/agents/AdapterProfileControls.js +6 -0
- package/dist/agents/AdapterProfileControls.js.map +1 -1
- package/dist/agents/claude/ClaudeAdapter.js +2 -2
- package/dist/agents/claude/ClaudeAdapter.js.map +1 -1
- package/dist/agents/pi/PiAdapter.js +16 -12
- package/dist/agents/pi/PiAdapter.js.map +1 -1
- package/dist/cli/OutfitterCli.js +7 -2
- package/dist/cli/OutfitterCli.js.map +1 -1
- package/dist/cli/commands/RunCommand.js +4 -1
- package/dist/cli/commands/RunCommand.js.map +1 -1
- package/dist/cli/commands/SetupCommand.d.ts +15 -0
- package/dist/cli/commands/SetupCommand.js +355 -32
- package/dist/cli/commands/SetupCommand.js.map +1 -1
- package/dist/cli/commands/WelcomeCommand.d.ts +1 -0
- package/dist/cli/commands/WelcomeCommand.js +10 -7
- package/dist/cli/commands/WelcomeCommand.js.map +1 -1
- package/dist/cli/commands/profile/ListCommand.d.ts +2 -0
- package/dist/cli/commands/profile/ListCommand.js +9 -3
- package/dist/cli/commands/profile/ListCommand.js.map +1 -1
- package/dist/merge/ArrayMergePolicy.d.ts +2 -1
- package/dist/merge/ArrayMergePolicy.js +14 -11
- package/dist/merge/ArrayMergePolicy.js.map +1 -1
- package/dist/merge/SettingsValueMerger.js +27 -2
- package/dist/merge/SettingsValueMerger.js.map +1 -1
- package/dist/profiles/Profile.d.ts +3 -1
- package/dist/profiles/Profile.js.map +1 -1
- package/dist/profiles/ProfileLoader.js +15 -2
- package/dist/profiles/ProfileLoader.js.map +1 -1
- package/dist/profiles/ProfileMerger.d.ts +0 -1
- package/dist/profiles/ProfileMerger.js +20 -9
- package/dist/profiles/ProfileMerger.js.map +1 -1
- package/dist/schemas/profile.schema.json +16 -4
- package/doc/architecture.md +28 -7
- package/package.json +1 -1
- package/requirements/OFTR-001-project-foundation.md +1 -1
- package/requirements/OFTR-003-profiles.md +13 -5
- package/requirements/OFTR-004-sync-and-setup.md +11 -1
- package/requirements/OFTR-006-agent-adapters.md +2 -0
- package/requirements/OFTR-009-release-publishing.md +11 -2
- package/requirements/OFTR-010-onboarding-welcome.md +1 -0
- package/src/schemas/profile.schema.json +16 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WelcomeCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/WelcomeCommand.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA8DlC,MAAM,iBAAiB,GAAG;IACxB,MAAM,CAAC,GAAG,CAAA,
|
|
1
|
+
{"version":3,"file":"WelcomeCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/WelcomeCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,12 @@ export interface ListedProfile {
|
|
|
4
4
|
readonly id: string;
|
|
5
5
|
readonly label?: string;
|
|
6
6
|
readonly profilePath: string;
|
|
7
|
+
readonly template: boolean;
|
|
7
8
|
}
|
|
8
9
|
export interface ListProfilesInput {
|
|
9
10
|
readonly homeDirectory: string;
|
|
10
11
|
readonly projectDirectory: string;
|
|
12
|
+
readonly includeTemplates?: boolean;
|
|
11
13
|
}
|
|
12
14
|
export interface ListProfilesResult {
|
|
13
15
|
readonly profiles: readonly ListedProfile[];
|
|
@@ -15,12 +15,16 @@ export const createProfileListCommand = (dependencies) => {
|
|
|
15
15
|
};
|
|
16
16
|
return command;
|
|
17
17
|
};
|
|
18
|
-
const createProfileListCommander = (dependencies) => new Command('list')
|
|
18
|
+
const createProfileListCommander = (dependencies) => new Command('list')
|
|
19
|
+
.description('List available Outfitter profiles.')
|
|
20
|
+
.option('--all', 'Include template profiles that are intended only for inheritance.')
|
|
21
|
+
.action((options) => {
|
|
19
22
|
const result = executeListProfilesCommand({
|
|
20
23
|
/* v8 ignore next -- default process home is exercised by the direct CLI entrypoint, not unit tests. */
|
|
21
24
|
homeDirectory: dependencies.homeDirectory ?? homedir(),
|
|
22
25
|
/* v8 ignore next -- default process cwd is exercised by the direct CLI entrypoint, not unit tests. */
|
|
23
26
|
projectDirectory: dependencies.projectDirectory ?? process.cwd(),
|
|
27
|
+
includeTemplates: options.all,
|
|
24
28
|
});
|
|
25
29
|
emitMessages(result.messages, dependencies.writeLine);
|
|
26
30
|
});
|
|
@@ -33,10 +37,10 @@ export const executeListProfilesCommand = (input) => {
|
|
|
33
37
|
if (profileLoadResult.issues.length > 0) {
|
|
34
38
|
throw new Error(`Cannot list profiles with invalid profiles: ${profileLoadResult.issues.map(formatProfileIssue).join('; ')}`);
|
|
35
39
|
}
|
|
36
|
-
const profiles = listHighestPrecedenceProfiles(profileLoadResult.profiles);
|
|
40
|
+
const profiles = listHighestPrecedenceProfiles(profileLoadResult.profiles).filter((profile) => input.includeTemplates === true || !profile.template);
|
|
37
41
|
return {
|
|
38
42
|
profiles,
|
|
39
|
-
messages: profiles.length === 0 ? ['No profiles found.'] : profiles.map(
|
|
43
|
+
messages: profiles.length === 0 ? ['No profiles found.'] : profiles.map(formatListedProfile),
|
|
40
44
|
};
|
|
41
45
|
};
|
|
42
46
|
const emitMessages = (messages, writeLine) => {
|
|
@@ -76,10 +80,12 @@ const listHighestPrecedenceProfiles = (loadedProfiles) => {
|
|
|
76
80
|
id: loadedProfile.profile.id,
|
|
77
81
|
label: loadedProfile.profile.label,
|
|
78
82
|
profilePath: loadedProfile.profilePath,
|
|
83
|
+
template: loadedProfile.profile.template === true,
|
|
79
84
|
});
|
|
80
85
|
}
|
|
81
86
|
return [...profilesById.values()].sort((left, right) => left.id.localeCompare(right.id));
|
|
82
87
|
};
|
|
88
|
+
const formatListedProfile = (profile) => profile.template ? `${profile.id} (template)` : profile.id;
|
|
83
89
|
const formatSettingsIssue = (issue) => `${issue.filePath}#${issue.path} ${issue.message}`;
|
|
84
90
|
const formatProfileIssue = (issue) => `${issue.path} ${issue.message}`;
|
|
85
91
|
//# sourceMappingURL=ListCommand.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListCommand.js","sourceRoot":"","sources":["../../../../src/cli/commands/profile/ListCommand.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,EAC/B,8BAA8B,GAC/B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAG5E,OAAO,EAAE,oCAAoC,EAAE,MAAM,qCAAqC,CAAC;AAG3F,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ListCommand.js","sourceRoot":"","sources":["../../../../src/cli/commands/profile/ListCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export type ArrayMergeKey<T> = (item: T) => string;
|
|
2
|
-
export type
|
|
2
|
+
export type StringArrayMergePolicy = 'replace' | 'append' | 'prepend' | 'appendUnique' | 'prependUnique' | 'appendList' | 'prependList';
|
|
3
|
+
export type ArrayMergePolicy<T = unknown> = StringArrayMergePolicy | {
|
|
3
4
|
readonly mode: 'uniqueBy';
|
|
4
5
|
readonly key: ArrayMergeKey<T>;
|
|
5
6
|
readonly order: 'append' | 'prepend';
|
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
export const mergeArrayByPolicy = (lowerPrecedence, higherPrecedence, policy = 'replace') => {
|
|
2
2
|
const lower = lowerPrecedence ?? [];
|
|
3
|
+
if (typeof policy === 'string') {
|
|
4
|
+
return mergeArrayByStringPolicy(lower, higherPrecedence, policy);
|
|
5
|
+
}
|
|
6
|
+
const ordered = policy.order === 'append' ? [...lower, ...higherPrecedence] : [...higherPrecedence, ...lower];
|
|
7
|
+
return uniqueBy(ordered, policy.key, policy.winner);
|
|
8
|
+
};
|
|
9
|
+
const mergeArrayByStringPolicy = (lower, higher, policy) => {
|
|
3
10
|
if (policy === 'replace') {
|
|
4
|
-
return [...
|
|
11
|
+
return [...higher];
|
|
5
12
|
}
|
|
6
|
-
if (policy === 'append') {
|
|
7
|
-
return [...lower, ...
|
|
13
|
+
if (policy === 'append' || policy === 'appendList') {
|
|
14
|
+
return [...lower, ...higher];
|
|
8
15
|
}
|
|
9
|
-
if (policy === 'prepend') {
|
|
10
|
-
return [...
|
|
16
|
+
if (policy === 'prepend' || policy === 'prependList') {
|
|
17
|
+
return [...higher, ...lower];
|
|
11
18
|
}
|
|
12
19
|
if (policy === 'appendUnique') {
|
|
13
|
-
return uniqueBy([...lower, ...
|
|
20
|
+
return uniqueBy([...lower, ...higher], defaultArrayMergeKey, 'first');
|
|
14
21
|
}
|
|
15
|
-
|
|
16
|
-
return uniqueBy([...higherPrecedence, ...lower], defaultArrayMergeKey, 'first');
|
|
17
|
-
}
|
|
18
|
-
const ordered = policy.order === 'append' ? [...lower, ...higherPrecedence] : [...higherPrecedence, ...lower];
|
|
19
|
-
return uniqueBy(ordered, policy.key, policy.winner);
|
|
22
|
+
return uniqueBy([...higher, ...lower], defaultArrayMergeKey, 'first');
|
|
20
23
|
};
|
|
21
24
|
const uniqueBy = (items, key, winner) => {
|
|
22
25
|
if (winner === 'first') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArrayMergePolicy.js","sourceRoot":"","sources":["../../src/merge/ArrayMergePolicy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ArrayMergePolicy.js","sourceRoot":"","sources":["../../src/merge/ArrayMergePolicy.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,14 +12,32 @@ const mergeObjectValue = (lowerPrecedence, higherPrecedence, path, options) => (
|
|
|
12
12
|
])),
|
|
13
13
|
});
|
|
14
14
|
const mergeMemberValue = (lowerPrecedence, higherPrecedence, path, options) => {
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
const arrayPolicy = options.arrayPolicyForPath?.(path);
|
|
16
|
+
const listMergedValue = mergeListMemberValue(lowerPrecedence, higherPrecedence, arrayPolicy);
|
|
17
|
+
if (listMergedValue !== undefined) {
|
|
18
|
+
return listMergedValue;
|
|
19
|
+
}
|
|
20
|
+
const arrayMergedValue = mergeArrayMemberValue(lowerPrecedence, higherPrecedence, arrayPolicy);
|
|
21
|
+
if (arrayMergedValue !== undefined) {
|
|
22
|
+
return arrayMergedValue;
|
|
17
23
|
}
|
|
18
24
|
if (isPlainMergeableObject(lowerPrecedence) && isPlainMergeableObject(higherPrecedence)) {
|
|
19
25
|
return mergeObjectValue(lowerPrecedence, higherPrecedence, path, options);
|
|
20
26
|
}
|
|
21
27
|
return cloneMergeableValue(higherPrecedence);
|
|
22
28
|
};
|
|
29
|
+
const mergeListMemberValue = (lowerPrecedence, higherPrecedence, arrayPolicy) => {
|
|
30
|
+
if (arrayPolicy !== 'appendList' && arrayPolicy !== 'prependList') {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
return mergeArrayByPolicy(coerceMergeableList(lowerPrecedence), coerceDefinedMergeableList(higherPrecedence), arrayPolicy === 'appendList' ? 'append' : 'prepend');
|
|
34
|
+
};
|
|
35
|
+
const mergeArrayMemberValue = (lowerPrecedence, higherPrecedence, arrayPolicy) => {
|
|
36
|
+
if (!Array.isArray(higherPrecedence)) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
return mergeArrayByPolicy(isMergeableArray(lowerPrecedence) ? lowerPrecedence : undefined, higherPrecedence, arrayPolicy ?? 'replace');
|
|
40
|
+
};
|
|
23
41
|
const cloneMergeableValue = (value) => {
|
|
24
42
|
if (isMergeableArray(value)) {
|
|
25
43
|
return value.map(cloneMergeableValue);
|
|
@@ -31,4 +49,11 @@ const cloneMergeableValue = (value) => {
|
|
|
31
49
|
};
|
|
32
50
|
const isPlainMergeableObject = (value) => value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
33
51
|
const isMergeableArray = (value) => Array.isArray(value);
|
|
52
|
+
const coerceMergeableList = (value) => {
|
|
53
|
+
if (value === undefined) {
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
return coerceDefinedMergeableList(value);
|
|
57
|
+
};
|
|
58
|
+
const coerceDefinedMergeableList = (value) => isMergeableArray(value) ? value : [value];
|
|
34
59
|
//# sourceMappingURL=SettingsValueMerger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsValueMerger.js","sourceRoot":"","sources":["../../src/merge/SettingsValueMerger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAmB3D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,eAA8B,EAC9B,gBAAmB,EACnB,UAA6B,EAAE,EAC5B,EAAE,CAAC,gBAAgB,CAAC,eAAe,IAAI,EAAE,EAAE,gBAAmC,EAAE,EAAE,EAAE,OAAO,CAAM,CAAC;AAEvG,MAAM,gBAAgB,GAAG,CACvB,eAAgC,EAChC,gBAAiC,EACjC,IAAe,EACf,OAA0B,EACT,EAAE,CAAC,CAAC;IACrB,GAAG,eAAe;IAClB,GAAG,MAAM,CAAC,WAAW,CACnB,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;SAC7B,MAAM,CAAC,CAAC,KAAK,EAAqC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;SAC5E,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QACrB,GAAG;QACH,GAAG,IAAI,eAAe;YACpB,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC;YACxE,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC;KAC/B,CAAC,CACL;CACF,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CACvB,eAA2C,EAC3C,gBAAgC,EAChC,IAAe,EACf,OAA0B,EACV,EAAE;IAClB,
|
|
1
|
+
{"version":3,"file":"SettingsValueMerger.js","sourceRoot":"","sources":["../../src/merge/SettingsValueMerger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAmB3D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,eAA8B,EAC9B,gBAAmB,EACnB,UAA6B,EAAE,EAC5B,EAAE,CAAC,gBAAgB,CAAC,eAAe,IAAI,EAAE,EAAE,gBAAmC,EAAE,EAAE,EAAE,OAAO,CAAM,CAAC;AAEvG,MAAM,gBAAgB,GAAG,CACvB,eAAgC,EAChC,gBAAiC,EACjC,IAAe,EACf,OAA0B,EACT,EAAE,CAAC,CAAC;IACrB,GAAG,eAAe;IAClB,GAAG,MAAM,CAAC,WAAW,CACnB,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;SAC7B,MAAM,CAAC,CAAC,KAAK,EAAqC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;SAC5E,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QACrB,GAAG;QACH,GAAG,IAAI,eAAe;YACpB,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC;YACxE,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC;KAC/B,CAAC,CACL;CACF,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CACvB,eAA2C,EAC3C,gBAAgC,EAChC,IAAe,EACf,OAA0B,EACV,EAAE;IAClB,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,eAAe,GAAG,oBAAoB,CAAC,eAAe,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAE7F,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,eAAe,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAE/F,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,IAAI,sBAAsB,CAAC,eAAe,CAAC,IAAI,sBAAsB,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACxF,OAAO,gBAAgB,CAAC,eAAe,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAC3B,eAA2C,EAC3C,gBAAgC,EAChC,WAAyD,EAC7B,EAAE;IAC9B,IAAI,WAAW,KAAK,YAAY,IAAI,WAAW,KAAK,aAAa,EAAE,CAAC;QAClE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,kBAAkB,CACvB,mBAAmB,CAAC,eAAe,CAAC,EACpC,0BAA0B,CAAC,gBAAgB,CAAC,EAC5C,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CACpD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAC5B,eAA2C,EAC3C,gBAAgC,EAChC,WAAyD,EAC7B,EAAE;IAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,kBAAkB,CACvB,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,EAC/D,gBAAgB,EAChB,WAAW,IAAI,SAAS,CACzB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,KAAqB,EAAkB,EAAE;IACpE,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAAC,KAAc,EAA4B,EAAE,CAC1E,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEvE,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAAsC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEtG,MAAM,mBAAmB,GAAG,CAAC,KAAiC,EAAyC,EAAE;IACvG,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,0BAA0B,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,CAAC,KAAqB,EAA6B,EAAE,CACtF,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { StatePersistenceStrategy } from '../compositeProfile/StatePersistence.js';
|
|
2
2
|
export type StatePersistenceOverrides = Readonly<Record<string, StatePersistenceStrategy>>;
|
|
3
|
+
export type AppendSystemPromptControl = string | readonly string[];
|
|
3
4
|
interface BaseProfileControls {
|
|
4
5
|
readonly [controlName: string]: unknown;
|
|
5
6
|
readonly model?: string;
|
|
@@ -12,7 +13,7 @@ interface BaseProfileControls {
|
|
|
12
13
|
readonly skills?: readonly string[];
|
|
13
14
|
readonly promptTemplate?: string;
|
|
14
15
|
readonly systemPrompt?: string;
|
|
15
|
-
readonly appendSystemPrompt?:
|
|
16
|
+
readonly appendSystemPrompt?: AppendSystemPromptControl;
|
|
16
17
|
}
|
|
17
18
|
export type AgentSpecificProfileControls = BaseProfileControls;
|
|
18
19
|
export type PiProfileControls = AgentSpecificProfileControls;
|
|
@@ -24,6 +25,7 @@ export interface ProfileControls extends BaseProfileControls {
|
|
|
24
25
|
export interface Profile {
|
|
25
26
|
readonly id: string;
|
|
26
27
|
readonly label?: string;
|
|
28
|
+
readonly template?: boolean;
|
|
27
29
|
readonly inherits: readonly string[];
|
|
28
30
|
readonly controls: ProfileControls;
|
|
29
31
|
readonly statePersistence?: StatePersistenceOverrides;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Profile.js","sourceRoot":"","sources":["../../src/profiles/Profile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Profile.js","sourceRoot":"","sources":["../../src/profiles/Profile.ts"],"names":[],"mappings":"AAuCA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAAU,EAAW,EAAE,CAAC,CAAC;IAC1D,EAAE;IACF,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,gBAAgB,EAAE,EAAE;CACrB,CAAC,CAAC"}
|
|
@@ -24,6 +24,7 @@ export const parseProfileDocument = (document, fallbackId) => {
|
|
|
24
24
|
return omitUndefined({
|
|
25
25
|
id,
|
|
26
26
|
label: readOptionalString(record.label),
|
|
27
|
+
template: readOptionalBoolean(record.template),
|
|
27
28
|
inherits: readStringArray(record.inherits),
|
|
28
29
|
controls: readControls(record.controls),
|
|
29
30
|
statePersistence: Object.keys(statePersistence).length > 0 ? statePersistence : undefined,
|
|
@@ -91,6 +92,12 @@ const readOptionalString = (value) => {
|
|
|
91
92
|
}
|
|
92
93
|
return undefined;
|
|
93
94
|
};
|
|
95
|
+
const readOptionalBoolean = (value) => {
|
|
96
|
+
if (typeof value === 'boolean') {
|
|
97
|
+
return value;
|
|
98
|
+
}
|
|
99
|
+
return undefined;
|
|
100
|
+
};
|
|
94
101
|
const readStringArray = (value) => {
|
|
95
102
|
if (Array.isArray(value)) {
|
|
96
103
|
return value.filter((item) => typeof item === 'string');
|
|
@@ -103,6 +110,12 @@ const readOptionalStringArray = (value) => {
|
|
|
103
110
|
}
|
|
104
111
|
return undefined;
|
|
105
112
|
};
|
|
113
|
+
const readOptionalStringOrStringArray = (value) => {
|
|
114
|
+
if (typeof value === 'string') {
|
|
115
|
+
return value;
|
|
116
|
+
}
|
|
117
|
+
return readOptionalStringArray(value);
|
|
118
|
+
};
|
|
106
119
|
const readControls = (value) => {
|
|
107
120
|
const controls = readObject(value);
|
|
108
121
|
if (controls === undefined) {
|
|
@@ -120,7 +133,7 @@ const readControls = (value) => {
|
|
|
120
133
|
skills: readOptionalStringArray(controls.skills),
|
|
121
134
|
promptTemplate: readOptionalString(controls.prompt_template),
|
|
122
135
|
systemPrompt: readOptionalString(controls.system_prompt),
|
|
123
|
-
appendSystemPrompt:
|
|
136
|
+
appendSystemPrompt: readOptionalStringOrStringArray(controls.append_system_prompt),
|
|
124
137
|
pi: readAgentSpecificControls(controls.pi),
|
|
125
138
|
claude: readAgentSpecificControls(controls.claude),
|
|
126
139
|
});
|
|
@@ -142,7 +155,7 @@ const readAgentSpecificControls = (value) => {
|
|
|
142
155
|
skills: readOptionalStringArray(controls.skills),
|
|
143
156
|
promptTemplate: readOptionalString(controls.prompt_template),
|
|
144
157
|
systemPrompt: readOptionalString(controls.system_prompt),
|
|
145
|
-
appendSystemPrompt:
|
|
158
|
+
appendSystemPrompt: readOptionalStringOrStringArray(controls.append_system_prompt),
|
|
146
159
|
});
|
|
147
160
|
};
|
|
148
161
|
const omitUndefined = (record) => Object.fromEntries(Object.entries(record).filter((entry) => entry[1] !== undefined));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProfileLoader.js","sourceRoot":"","sources":["../../src/profiles/ProfileLoader.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ProfileLoader.js","sourceRoot":"","sources":["../../src/profiles/ProfileLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,6 @@ export interface ProfileResolutionInput {
|
|
|
5
5
|
/** Profiles ordered from lowest precedence to highest precedence. */
|
|
6
6
|
readonly profiles: readonly LoadedProfile[];
|
|
7
7
|
readonly profileId: string;
|
|
8
|
-
readonly defaultProfileId?: string;
|
|
9
8
|
}
|
|
10
9
|
export interface ProfileResolutionIssue {
|
|
11
10
|
readonly path: string;
|
|
@@ -2,7 +2,14 @@ import { mergeObjectsWithPolicy } from '../merge/SettingsValueMerger.js';
|
|
|
2
2
|
import { normalizeExtensionResourceIdentity, normalizeLaunchResourceIdentity } from '../agents/ResourceIdentity.js';
|
|
3
3
|
export const mergeProfileStack = (profileStack) => {
|
|
4
4
|
const [baseProfile, ...higherPrecedenceProfiles] = profileStack;
|
|
5
|
-
|
|
5
|
+
const mergedProfile = higherPrecedenceProfiles.reduce((mergedProfile, profile) => mergeObjectsWithPolicy(mergedProfile, profile, { arrayPolicyForPath: profileArrayPolicy }), baseProfile);
|
|
6
|
+
return withProfileTemplateFromTopProfile(mergedProfile, profileStack[profileStack.length - 1]);
|
|
7
|
+
};
|
|
8
|
+
const withProfileTemplateFromTopProfile = (profile, topProfile) => {
|
|
9
|
+
if (topProfile.template === true) {
|
|
10
|
+
return { ...profile, template: true };
|
|
11
|
+
}
|
|
12
|
+
return Object.fromEntries(Object.entries(profile).filter(([key]) => key !== 'template'));
|
|
6
13
|
};
|
|
7
14
|
const profileArrayPolicy = (path) => {
|
|
8
15
|
const pathKey = path.join('.');
|
|
@@ -12,6 +19,9 @@ const profileArrayPolicy = (path) => {
|
|
|
12
19
|
if (['controls.args', 'controls.pi.args', 'controls.claude.args'].includes(pathKey)) {
|
|
13
20
|
return 'prepend';
|
|
14
21
|
}
|
|
22
|
+
if (isAppendSystemPromptPath(pathKey)) {
|
|
23
|
+
return 'prependList';
|
|
24
|
+
}
|
|
15
25
|
if (['controls.extensions', 'controls.pi.extensions', 'controls.claude.extensions'].includes(pathKey)) {
|
|
16
26
|
return {
|
|
17
27
|
mode: 'uniqueBy',
|
|
@@ -30,17 +40,18 @@ const profileArrayPolicy = (path) => {
|
|
|
30
40
|
}
|
|
31
41
|
return undefined;
|
|
32
42
|
};
|
|
43
|
+
const isAppendSystemPromptPath = (pathKey) => [
|
|
44
|
+
'controls.appendSystemPrompt',
|
|
45
|
+
'controls.append_system_prompt',
|
|
46
|
+
'controls.pi.appendSystemPrompt',
|
|
47
|
+
'controls.pi.append_system_prompt',
|
|
48
|
+
'controls.claude.appendSystemPrompt',
|
|
49
|
+
'controls.claude.append_system_prompt',
|
|
50
|
+
].includes(pathKey);
|
|
33
51
|
export const resolveProfile = (input) => {
|
|
34
52
|
const definitions = createProfileDefinitions(input.profiles);
|
|
35
53
|
const issues = [];
|
|
36
|
-
const
|
|
37
|
-
const defaultStack = input.defaultProfileId === undefined || input.defaultProfileId === input.profileId
|
|
38
|
-
? []
|
|
39
|
-
: resolveProfileStack(input.defaultProfileId, definitions, [], issues);
|
|
40
|
-
const profileStack = uniqueProfileStack([
|
|
41
|
-
...defaultStack.filter((profile) => profile.id !== input.profileId),
|
|
42
|
-
...explicitStack,
|
|
43
|
-
]);
|
|
54
|
+
const profileStack = uniqueProfileStack(resolveProfileStack(input.profileId, definitions, [], issues));
|
|
44
55
|
return {
|
|
45
56
|
profile: issues.length === 0 && profileStack.length > 0
|
|
46
57
|
? mergeProfileStack(profileStack)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProfileMerger.js","sourceRoot":"","sources":["../../src/profiles/ProfileMerger.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,kCAAkC,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"ProfileMerger.js","sourceRoot":"","sources":["../../src/profiles/ProfileMerger.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"pattern": "^[a-z0-9][a-z0-9._-]*[a-z0-9]$|^[a-z0-9]$"
|
|
10
10
|
},
|
|
11
11
|
"label": { "type": "string" },
|
|
12
|
+
"template": { "type": "boolean" },
|
|
12
13
|
"inherits": {
|
|
13
14
|
"type": "array",
|
|
14
15
|
"items": {
|
|
@@ -43,7 +44,7 @@
|
|
|
43
44
|
},
|
|
44
45
|
"prompt_template": { "type": "string" },
|
|
45
46
|
"system_prompt": { "type": "string" },
|
|
46
|
-
"append_system_prompt": { "
|
|
47
|
+
"append_system_prompt": { "$ref": "#/$defs/appendSystemPrompt" },
|
|
47
48
|
"environment": {
|
|
48
49
|
"type": "object",
|
|
49
50
|
"additionalProperties": { "type": "string" }
|
|
@@ -69,7 +70,7 @@
|
|
|
69
70
|
},
|
|
70
71
|
"prompt_template": { "type": "string" },
|
|
71
72
|
"system_prompt": { "type": "string" },
|
|
72
|
-
"append_system_prompt": { "
|
|
73
|
+
"append_system_prompt": { "$ref": "#/$defs/appendSystemPrompt" },
|
|
73
74
|
"allow_external_deepwork_jobs": { "type": "boolean" },
|
|
74
75
|
"environment": {
|
|
75
76
|
"type": "object",
|
|
@@ -99,7 +100,7 @@
|
|
|
99
100
|
},
|
|
100
101
|
"prompt_template": { "type": "string" },
|
|
101
102
|
"system_prompt": { "type": "string" },
|
|
102
|
-
"append_system_prompt": { "
|
|
103
|
+
"append_system_prompt": { "$ref": "#/$defs/appendSystemPrompt" },
|
|
103
104
|
"environment": {
|
|
104
105
|
"type": "object",
|
|
105
106
|
"additionalProperties": { "type": "string" }
|
|
@@ -111,5 +112,16 @@
|
|
|
111
112
|
"additionalProperties": true
|
|
112
113
|
}
|
|
113
114
|
},
|
|
114
|
-
"additionalProperties": true
|
|
115
|
+
"additionalProperties": true,
|
|
116
|
+
"$defs": {
|
|
117
|
+
"appendSystemPrompt": {
|
|
118
|
+
"oneOf": [
|
|
119
|
+
{ "type": "string" },
|
|
120
|
+
{
|
|
121
|
+
"type": "array",
|
|
122
|
+
"items": { "type": "string" }
|
|
123
|
+
}
|
|
124
|
+
]
|
|
125
|
+
}
|
|
126
|
+
}
|
|
115
127
|
}
|
package/doc/architecture.md
CHANGED
|
@@ -362,6 +362,8 @@ profiles/
|
|
|
362
362
|
prompts/
|
|
363
363
|
skills/
|
|
364
364
|
extensions/
|
|
365
|
+
deepwork/
|
|
366
|
+
jobs/
|
|
365
367
|
cli_specific/
|
|
366
368
|
pi/
|
|
367
369
|
claude/
|
|
@@ -372,6 +374,7 @@ Example `profile.yml`:
|
|
|
372
374
|
```yaml
|
|
373
375
|
id: engineering
|
|
374
376
|
label: Engineering
|
|
377
|
+
template: false
|
|
375
378
|
inherits:
|
|
376
379
|
- base-typescript
|
|
377
380
|
|
|
@@ -396,10 +399,14 @@ Rules:
|
|
|
396
399
|
|
|
397
400
|
- Every `profile.yml` MUST validate against `profile.schema.json`.
|
|
398
401
|
- `inherits` is an ordered array of profile names.
|
|
399
|
-
- `
|
|
400
|
-
-
|
|
401
|
-
-
|
|
402
|
+
- `template: true` marks a profile as inheritance-only: it may contribute controls to runnable profiles through `inherits`, but `outfitter run --profile <id>` and `default_profile: <id>` launches reject it directly.
|
|
403
|
+
- `skills/` contains profile-bundled Agent Skills. Outfitter exposes valid skills from contributing profile folders when launching Pi.
|
|
404
|
+
- `deepwork/jobs/` contains profile-bundled DeepWork jobs. Outfitter appends contributing profile job folders to `DEEPWORK_ADDITIONAL_JOBS_FOLDERS` when launching Pi so DeepWork can discover profile-owned workflows.
|
|
402
405
|
Profile-bundled jobs are isolated by default: inherited `DEEPWORK_ADDITIONAL_JOBS_FOLDERS` entries are included only when the profile sets `controls.pi.allow_external_deepwork_jobs: true`.
|
|
406
|
+
- `cli_specific/<cli-name>/` contains files copied or translated directly into the generated composite profile for that CLI, plus resources that intentionally apply only to one adapter.
|
|
407
|
+
- Pi profiles may provide `cli_specific/pi/.mcp.json`; Outfitter merges contributing profile fragments into the composite profile with unique array entries by identity and last writer wins for duplicate identities.
|
|
408
|
+
- Pi-specific skills and DeepWork jobs may also live under `cli_specific/pi/skills/` and `cli_specific/pi/deepwork/jobs/` when they should not be exposed to other adapters.
|
|
409
|
+
- `append_system_prompt` accepts a string or an ordered string array. When multiple resolved profile layers provide it, Outfitter composes the values into repeated agent append-prompt inputs in profile precedence order so shared prompt profiles do not need to use raw CLI `args`.
|
|
403
410
|
- CLI-specific configuration wins over generic controls when both apply to the same generated artifact.
|
|
404
411
|
|
|
405
412
|
### Profile Directory Examples
|
|
@@ -435,12 +442,23 @@ controls:
|
|
|
435
442
|
NODE_ENV: development
|
|
436
443
|
```
|
|
437
444
|
|
|
445
|
+
```yaml
|
|
446
|
+
# ~/.outfitter/profiles/shared-prose/profile.yml
|
|
447
|
+
id: shared-prose
|
|
448
|
+
label: Shared Prose
|
|
449
|
+
template: true
|
|
450
|
+
|
|
451
|
+
controls:
|
|
452
|
+
append_system_prompt: ./prompts/prose.md
|
|
453
|
+
```
|
|
454
|
+
|
|
438
455
|
```yaml
|
|
439
456
|
# ~/.outfitter/profiles/personal-engineering/profile.yml
|
|
440
457
|
id: personal-engineering
|
|
441
458
|
label: Personal Engineering
|
|
442
459
|
inherits:
|
|
443
460
|
- base-typescript
|
|
461
|
+
- shared-prose
|
|
444
462
|
|
|
445
463
|
controls:
|
|
446
464
|
append_system_prompt: ./prompts/system.md
|
|
@@ -696,15 +714,16 @@ Responsibilities:
|
|
|
696
714
|
|
|
697
715
|
- create `~/.outfitter/settings.yml` when missing;
|
|
698
716
|
- accept an optional setup source URI, for example `outfitter setup https://github.com/example/outfitter-config`, and clone/update it under `~/.outfitter/cache/repos/<encoded-uri-and-ref>/`;
|
|
699
|
-
|
|
717
|
+
|
|
718
|
+
- when a setup source is provided, use its root `settings.yml` or `.outfitter/settings.yml` and `profiles/` or `.outfitter/profiles/` as the initial non-overwriting setup starting point for the selected import target;
|
|
719
|
+
- during interactive setup-source onboarding, show the Outfitter welcome first, explain the source being imported, ask whether to install into user home or the current project, then ask exactly one source-profile/default prompt;
|
|
700
720
|
- require an interactive TTY on both stdin and stdout before running setup prompts;
|
|
701
721
|
- create a default profile when missing;
|
|
702
722
|
- validate all discovered settings files and any starter settings file;
|
|
703
723
|
- run `outfitter sync` behavior for URI profile sources before profile selection;
|
|
704
|
-
|
|
705
|
-
- outside that initial welcome handoff, show a setup wizard with synced profile choices, preserve display labels where available, validate the selected profile ID, and write the selected default profile to user settings;
|
|
724
|
+
|
|
725
|
+
- outside that initial welcome handoff and outside setup-source import onboarding, show a setup wizard with synced profile choices, preserve display labels where available, validate the selected profile ID, and write the selected default profile to user settings;
|
|
706
726
|
- create any missing fallback default profile file for the final selected default profile;
|
|
707
|
-
- run welcome onboarding after interactive setup completes;
|
|
708
727
|
- report actionable next steps.
|
|
709
728
|
|
|
710
729
|
### `outfitter welcome`
|
|
@@ -745,6 +764,8 @@ Responsibilities:
|
|
|
745
764
|
|
|
746
765
|
- read and validate settings;
|
|
747
766
|
- load configured local and cached remote profile sources;
|
|
767
|
+
- hide template profiles by default because they are inheritance-only;
|
|
768
|
+
- include template profiles when `--all` is requested and mark them as templates in output;
|
|
748
769
|
- report unique profile IDs deterministically;
|
|
749
770
|
- use the highest-precedence loaded definition when duplicate profile IDs exist.
|
|
750
771
|
|
package/package.json
CHANGED
|
@@ -22,7 +22,7 @@ This document specifies the baseline runtime, language, test, lint, and document
|
|
|
22
22
|
1. The project MUST use Vitest as its test framework before implementing substantial runtime behavior.
|
|
23
23
|
2. The test command MUST be runnable from package scripts.
|
|
24
24
|
3. The coverage command MUST use `@vitest/coverage-v8`.
|
|
25
|
-
4. The test configuration MUST enforce
|
|
25
|
+
4. The test configuration MUST enforce at least 99% global coverage for statements, branches, functions, and lines.
|
|
26
26
|
5. The coverage configuration MUST include all `src/**/*.ts` files even when a source file is not imported by any test.
|
|
27
27
|
6. Tests that validate formal requirements MUST follow the traceability format required by OFTR-008.3.
|
|
28
28
|
|