faceted-prompting 0.3.1 → 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 +1 -1
- package/dist/cli/compose-command.d.ts +2 -2
- package/dist/cli/compose-command.d.ts.map +1 -1
- package/dist/cli/compose-command.js +15 -145
- package/dist/cli/compose-command.js.map +1 -1
- package/dist/cli/compose-definition-resolution.d.ts +12 -0
- package/dist/cli/compose-definition-resolution.d.ts.map +1 -0
- package/dist/cli/compose-definition-resolution.js +50 -0
- package/dist/cli/compose-definition-resolution.js.map +1 -0
- package/dist/cli/compose-execution.d.ts +18 -0
- package/dist/cli/compose-execution.d.ts.map +1 -0
- package/dist/cli/compose-execution.js +165 -0
- package/dist/cli/compose-execution.js.map +1 -0
- package/dist/cli/compose-options.d.ts +4 -0
- package/dist/cli/compose-options.d.ts.map +1 -0
- package/dist/cli/compose-options.js +64 -0
- package/dist/cli/compose-options.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/install-skill/flow.d.ts +2 -1
- package/dist/cli/install-skill/flow.d.ts.map +1 -1
- package/dist/cli/install-skill/flow.js +7 -2
- package/dist/cli/install-skill/flow.js.map +1 -1
- package/dist/cli/install-skill/modes.d.ts +3 -1
- package/dist/cli/install-skill/modes.d.ts.map +1 -1
- package/dist/cli/install-skill/modes.js +14 -13
- package/dist/cli/install-skill/modes.js.map +1 -1
- package/dist/cli/install-skill/targets.d.ts +4 -3
- package/dist/cli/install-skill/targets.d.ts.map +1 -1
- package/dist/cli/install-skill/targets.js +18 -4
- package/dist/cli/install-skill/targets.js.map +1 -1
- package/dist/cli/path-guard.d.ts +5 -0
- package/dist/cli/path-guard.d.ts.map +1 -1
- package/dist/cli/path-guard.js +25 -0
- package/dist/cli/path-guard.js.map +1 -1
- package/dist/cli/skill-commands.d.ts +8 -0
- package/dist/cli/skill-commands.d.ts.map +1 -1
- package/dist/cli/skill-commands.js +22 -6
- package/dist/cli/skill-commands.js.map +1 -1
- package/dist/cli/skill-file-ops.d.ts +1 -2
- package/dist/cli/skill-file-ops.d.ts.map +1 -1
- package/dist/cli/skill-file-ops.js +12 -38
- package/dist/cli/skill-file-ops.js.map +1 -1
- package/dist/cli/skill-types.d.ts +0 -1
- package/dist/cli/skill-types.d.ts.map +1 -1
- package/dist/cli/types.d.ts +6 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/config/index.d.ts +12 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +44 -2
- package/dist/config/index.js.map +1 -1
- package/dist/config/install-targets.d.ts +6 -0
- package/dist/config/install-targets.d.ts.map +1 -0
- package/dist/config/install-targets.js +71 -0
- package/dist/config/install-targets.js.map +1 -0
- package/dist/install-targets.d.ts +2 -0
- package/dist/install-targets.d.ts.map +1 -0
- package/dist/install-targets.js +2 -0
- package/dist/install-targets.js.map +1 -0
- package/package.json +1 -1
package/dist/cli/types.d.ts
CHANGED
|
@@ -4,6 +4,12 @@ export interface FacetCliOptions {
|
|
|
4
4
|
readonly select: (candidates: string[], prompt?: string) => Promise<string>;
|
|
5
5
|
readonly input: (prompt: string, defaultValue: string) => Promise<string>;
|
|
6
6
|
}
|
|
7
|
+
export interface ComposeCliOptions {
|
|
8
|
+
readonly composition?: string;
|
|
9
|
+
readonly outputMode?: 'split' | 'combined';
|
|
10
|
+
readonly output?: string;
|
|
11
|
+
readonly overwrite?: boolean;
|
|
12
|
+
}
|
|
7
13
|
export type FacetCliResult = {
|
|
8
14
|
readonly kind: 'path';
|
|
9
15
|
readonly path: string;
|
package/dist/cli/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5E,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3E;AAED,MAAM,MAAM,cAAc,GACtB;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5E,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,MAAM,cAAc,GACtB;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC"}
|
package/dist/config/index.d.ts
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
|
+
export interface CodexInstallTargetConfig {
|
|
2
|
+
readonly roots: readonly string[];
|
|
3
|
+
}
|
|
4
|
+
export interface InstallTargetsConfig {
|
|
5
|
+
readonly codex: CodexInstallTargetConfig;
|
|
6
|
+
}
|
|
7
|
+
export interface InstallConfig {
|
|
8
|
+
readonly targets: InstallTargetsConfig;
|
|
9
|
+
}
|
|
1
10
|
export interface FacetedConfig {
|
|
2
11
|
readonly version: number;
|
|
3
12
|
readonly skillPaths?: readonly string[];
|
|
13
|
+
readonly install: InstallConfig;
|
|
4
14
|
}
|
|
5
15
|
export declare function getFacetedRoot(homeDir: string): string;
|
|
6
16
|
export declare function getConfigPath(homeDir: string): string;
|
|
7
17
|
export declare function ensureConfigFile(homeDir: string): void;
|
|
18
|
+
export declare function createDefaultFacetedConfig(): FacetedConfig;
|
|
19
|
+
export declare function readFacetedConfigOrDefault(homeDir: string): Promise<FacetedConfig>;
|
|
8
20
|
export declare function readFacetedConfig(homeDir: string): Promise<FacetedConfig>;
|
|
9
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC;CAC1C;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;CACxC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;CACjC;AAID,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAQtD;AAsBD,wBAAgB,0BAA0B,IAAI,aAAa,CAY1D;AAED,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAOxF;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAuE/E"}
|
package/dist/config/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import { tracedConfig } from 'traced-config';
|
|
4
4
|
import { parse } from 'yaml';
|
|
5
|
+
import { getBuiltInInstallRootTemplates, readInstallRootTemplatesFromConfigValue, } from './install-targets.js';
|
|
5
6
|
const DEFAULT_CONFIG = ['version: 1', 'skillPaths: []'].join('\n');
|
|
6
7
|
export function getFacetedRoot(homeDir) {
|
|
7
8
|
return join(homeDir, '.faceted');
|
|
@@ -31,11 +32,35 @@ function hasErrorCode(error) {
|
|
|
31
32
|
const withCode = error;
|
|
32
33
|
return typeof withCode.code === 'string';
|
|
33
34
|
}
|
|
35
|
+
function readCodexInstallRoots(configRoot) {
|
|
36
|
+
return readInstallRootTemplatesFromConfigValue('codex', configRoot);
|
|
37
|
+
}
|
|
38
|
+
export function createDefaultFacetedConfig() {
|
|
39
|
+
return {
|
|
40
|
+
version: 1,
|
|
41
|
+
skillPaths: [],
|
|
42
|
+
install: {
|
|
43
|
+
targets: {
|
|
44
|
+
codex: {
|
|
45
|
+
roots: getBuiltInInstallRootTemplates('codex'),
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export async function readFacetedConfigOrDefault(homeDir) {
|
|
52
|
+
const configPath = getConfigPath(homeDir);
|
|
53
|
+
if (!existsSync(configPath)) {
|
|
54
|
+
return createDefaultFacetedConfig();
|
|
55
|
+
}
|
|
56
|
+
return readFacetedConfig(homeDir);
|
|
57
|
+
}
|
|
34
58
|
export async function readFacetedConfig(homeDir) {
|
|
35
59
|
const configPath = getConfigPath(homeDir);
|
|
36
60
|
if (!existsSync(configPath)) {
|
|
37
61
|
throw new Error(`Missing faceted config: ${configPath}`);
|
|
38
62
|
}
|
|
63
|
+
let parsedConfigRoot;
|
|
39
64
|
const resolver = tracedConfig({
|
|
40
65
|
schema: {
|
|
41
66
|
version: {
|
|
@@ -55,8 +80,14 @@ export async function readFacetedConfig(homeDir) {
|
|
|
55
80
|
resolver.addFormat('string-list', value => {
|
|
56
81
|
return Array.isArray(value) && value.every(item => typeof item === 'string');
|
|
57
82
|
});
|
|
58
|
-
resolver.addParser('yaml',
|
|
59
|
-
|
|
83
|
+
resolver.addParser('yaml', content => {
|
|
84
|
+
parsedConfigRoot = parseConfigRootAsObject(content);
|
|
85
|
+
return parsedConfigRoot;
|
|
86
|
+
});
|
|
87
|
+
resolver.addParser('yml', content => {
|
|
88
|
+
parsedConfigRoot = parseConfigRootAsObject(content);
|
|
89
|
+
return parsedConfigRoot;
|
|
90
|
+
});
|
|
60
91
|
try {
|
|
61
92
|
await resolver.loadFile([{ path: configPath, label: 'local' }]);
|
|
62
93
|
}
|
|
@@ -74,9 +105,20 @@ export async function readFacetedConfig(homeDir) {
|
|
|
74
105
|
}
|
|
75
106
|
throw new Error('Invalid faceted config field');
|
|
76
107
|
}
|
|
108
|
+
if (!parsedConfigRoot) {
|
|
109
|
+
throw new Error(`Invalid faceted config file: ${configPath}`);
|
|
110
|
+
}
|
|
111
|
+
const codexRoots = readCodexInstallRoots(parsedConfigRoot);
|
|
77
112
|
return {
|
|
78
113
|
version: resolver.get('version'),
|
|
79
114
|
skillPaths: resolver.get('skillPaths'),
|
|
115
|
+
install: {
|
|
116
|
+
targets: {
|
|
117
|
+
codex: {
|
|
118
|
+
roots: codexRoots,
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
},
|
|
80
122
|
};
|
|
81
123
|
}
|
|
82
124
|
//# sourceMappingURL=index.js.map
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAsB,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { InstallTarget } from '../install-targets.js';
|
|
2
|
+
export declare function getBuiltInInstallRootTemplates(target: InstallTarget): readonly string[];
|
|
3
|
+
export declare function hasNonEmptyInstallRootTemplate(root: string): boolean;
|
|
4
|
+
export declare function readInstallRootTemplatesFromConfigValue(target: InstallTarget, configValue: unknown): readonly string[];
|
|
5
|
+
export declare function resolveInstallRootTemplates(homeDir: string, rootTemplates: readonly string[]): readonly string[];
|
|
6
|
+
//# sourceMappingURL=install-targets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-targets.d.ts","sourceRoot":"","sources":["../../src/config/install-targets.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAO3D,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,MAAM,EAAE,CAEvF;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpE;AAwCD,wBAAgB,uCAAuC,CACrD,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,OAAO,GACnB,SAAS,MAAM,EAAE,CAiCnB;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B,SAAS,MAAM,EAAE,CAKnB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { resolve } from 'node:path';
|
|
2
|
+
const BUILTIN_INSTALL_ROOT_TEMPLATES = {
|
|
3
|
+
cc: ['{homeDir}/.claude/skills'],
|
|
4
|
+
codex: ['{homeDir}/.agents/skills'],
|
|
5
|
+
};
|
|
6
|
+
export function getBuiltInInstallRootTemplates(target) {
|
|
7
|
+
return [...BUILTIN_INSTALL_ROOT_TEMPLATES[target]];
|
|
8
|
+
}
|
|
9
|
+
export function hasNonEmptyInstallRootTemplate(root) {
|
|
10
|
+
return root.trim().length > 0;
|
|
11
|
+
}
|
|
12
|
+
function invalidInstallRootField(target) {
|
|
13
|
+
throw new Error(`Invalid faceted config field: install.targets.${target}.roots`);
|
|
14
|
+
}
|
|
15
|
+
function isRecord(value) {
|
|
16
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
17
|
+
}
|
|
18
|
+
function validateInstallRootTemplates(target, rootTemplates) {
|
|
19
|
+
if (!Array.isArray(rootTemplates)
|
|
20
|
+
|| rootTemplates.length === 0
|
|
21
|
+
|| rootTemplates.some(root => typeof root !== 'string' || !hasNonEmptyInstallRootTemplate(root))) {
|
|
22
|
+
invalidInstallRootField(target);
|
|
23
|
+
}
|
|
24
|
+
return [...rootTemplates];
|
|
25
|
+
}
|
|
26
|
+
function readNestedConfigValue(parent, key, target) {
|
|
27
|
+
const value = parent[key];
|
|
28
|
+
if (value === undefined) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
if (!isRecord(value)) {
|
|
32
|
+
invalidInstallRootField(target);
|
|
33
|
+
}
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
export function readInstallRootTemplatesFromConfigValue(target, configValue) {
|
|
37
|
+
const defaultRootTemplates = getBuiltInInstallRootTemplates(target);
|
|
38
|
+
if (target !== 'codex') {
|
|
39
|
+
return defaultRootTemplates;
|
|
40
|
+
}
|
|
41
|
+
if (configValue === undefined) {
|
|
42
|
+
return defaultRootTemplates;
|
|
43
|
+
}
|
|
44
|
+
if (!isRecord(configValue)) {
|
|
45
|
+
invalidInstallRootField(target);
|
|
46
|
+
}
|
|
47
|
+
const installValue = readNestedConfigValue(configValue, 'install', target);
|
|
48
|
+
if (!installValue) {
|
|
49
|
+
return defaultRootTemplates;
|
|
50
|
+
}
|
|
51
|
+
const targetsValue = readNestedConfigValue(installValue, 'targets', target);
|
|
52
|
+
if (!targetsValue) {
|
|
53
|
+
return defaultRootTemplates;
|
|
54
|
+
}
|
|
55
|
+
const targetValue = readNestedConfigValue(targetsValue, target, target);
|
|
56
|
+
if (!targetValue) {
|
|
57
|
+
return defaultRootTemplates;
|
|
58
|
+
}
|
|
59
|
+
const rootsValue = targetValue.roots;
|
|
60
|
+
if (rootsValue === undefined) {
|
|
61
|
+
return defaultRootTemplates;
|
|
62
|
+
}
|
|
63
|
+
return validateInstallRootTemplates(target, rootsValue);
|
|
64
|
+
}
|
|
65
|
+
export function resolveInstallRootTemplates(homeDir, rootTemplates) {
|
|
66
|
+
if (rootTemplates.some(root => !hasNonEmptyInstallRootTemplate(root))) {
|
|
67
|
+
throw new Error('Install root template must not be empty');
|
|
68
|
+
}
|
|
69
|
+
return rootTemplates.map(root => resolve(root.replaceAll('{homeDir}', homeDir)));
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=install-targets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-targets.js","sourceRoot":"","sources":["../../src/config/install-targets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-targets.d.ts","sourceRoot":"","sources":["../src/install-targets.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-targets.js","sourceRoot":"","sources":["../src/install-targets.ts"],"names":[],"mappings":""}
|