@a1st/aix-core 0.0.3 → 0.0.6
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 +39 -0
- package/dist/cache/index.d.ts +1 -1
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +1 -1
- package/dist/cache/index.js.map +1 -1
- package/dist/cache/paths.d.ts +13 -8
- package/dist/cache/paths.d.ts.map +1 -1
- package/dist/cache/paths.js +19 -12
- package/dist/cache/paths.js.map +1 -1
- package/dist/editors/adapters/base.d.ts +9 -1
- package/dist/editors/adapters/base.d.ts.map +1 -1
- package/dist/editors/adapters/base.js +7 -5
- package/dist/editors/adapters/base.js.map +1 -1
- package/dist/editors/adapters/claude-code.d.ts +2 -1
- package/dist/editors/adapters/claude-code.d.ts.map +1 -1
- package/dist/editors/adapters/claude-code.js +13 -5
- package/dist/editors/adapters/claude-code.js.map +1 -1
- package/dist/editors/adapters/codex.d.ts +1 -0
- package/dist/editors/adapters/codex.d.ts.map +1 -1
- package/dist/editors/adapters/codex.js +9 -1
- package/dist/editors/adapters/codex.js.map +1 -1
- package/dist/editors/adapters/cursor.d.ts +1 -0
- package/dist/editors/adapters/cursor.d.ts.map +1 -1
- package/dist/editors/adapters/cursor.js +9 -1
- package/dist/editors/adapters/cursor.js.map +1 -1
- package/dist/editors/adapters/vscode.d.ts +1 -0
- package/dist/editors/adapters/vscode.d.ts.map +1 -1
- package/dist/editors/adapters/vscode.js +9 -1
- package/dist/editors/adapters/vscode.js.map +1 -1
- package/dist/editors/adapters/windsurf.d.ts +1 -0
- package/dist/editors/adapters/windsurf.d.ts.map +1 -1
- package/dist/editors/adapters/windsurf.js +9 -1
- package/dist/editors/adapters/windsurf.js.map +1 -1
- package/dist/editors/adapters/zed.d.ts +1 -0
- package/dist/editors/adapters/zed.d.ts.map +1 -1
- package/dist/editors/adapters/zed.js +9 -1
- package/dist/editors/adapters/zed.js.map +1 -1
- package/dist/editors/import.d.ts +2 -1
- package/dist/editors/import.d.ts.map +1 -1
- package/dist/editors/import.js +12 -9
- package/dist/editors/import.js.map +1 -1
- package/dist/editors/install.d.ts.map +1 -1
- package/dist/editors/install.js +1 -36
- package/dist/editors/install.js.map +1 -1
- package/dist/editors/strategies/claude-code/mcp.d.ts +6 -2
- package/dist/editors/strategies/claude-code/mcp.d.ts.map +1 -1
- package/dist/editors/strategies/claude-code/mcp.js +40 -2
- package/dist/editors/strategies/claude-code/mcp.js.map +1 -1
- package/dist/editors/strategies/claude-code/prompts.d.ts +11 -1
- package/dist/editors/strategies/claude-code/prompts.d.ts.map +1 -1
- package/dist/editors/strategies/claude-code/prompts.js +29 -0
- package/dist/editors/strategies/claude-code/prompts.js.map +1 -1
- package/dist/editors/strategies/claude-code/rules.d.ts +12 -1
- package/dist/editors/strategies/claude-code/rules.d.ts.map +1 -1
- package/dist/editors/strategies/claude-code/rules.js +49 -5
- package/dist/editors/strategies/claude-code/rules.js.map +1 -1
- package/dist/editors/strategies/codex/prompts.d.ts +11 -1
- package/dist/editors/strategies/codex/prompts.d.ts.map +1 -1
- package/dist/editors/strategies/codex/prompts.js +34 -0
- package/dist/editors/strategies/codex/prompts.js.map +1 -1
- package/dist/editors/strategies/cursor/rules.d.ts +14 -1
- package/dist/editors/strategies/cursor/rules.d.ts.map +1 -1
- package/dist/editors/strategies/cursor/rules.js +51 -5
- package/dist/editors/strategies/cursor/rules.js.map +1 -1
- package/dist/editors/strategies/shared/standard-mcp.d.ts +3 -1
- package/dist/editors/strategies/shared/standard-mcp.d.ts.map +1 -1
- package/dist/editors/strategies/shared/standard-mcp.js +5 -1
- package/dist/editors/strategies/shared/standard-mcp.js.map +1 -1
- package/dist/editors/strategies/types.d.ts +48 -2
- package/dist/editors/strategies/types.d.ts.map +1 -1
- package/dist/editors/strategies/vscode/prompts.d.ts +11 -1
- package/dist/editors/strategies/vscode/prompts.d.ts.map +1 -1
- package/dist/editors/strategies/vscode/prompts.js +29 -0
- package/dist/editors/strategies/vscode/prompts.js.map +1 -1
- package/dist/editors/strategies/windsurf/prompts.d.ts +11 -1
- package/dist/editors/strategies/windsurf/prompts.d.ts.map +1 -1
- package/dist/editors/strategies/windsurf/prompts.js +29 -0
- package/dist/editors/strategies/windsurf/prompts.js.map +1 -1
- package/dist/editors/strategies/windsurf/rules.d.ts +14 -1
- package/dist/editors/strategies/windsurf/rules.d.ts.map +1 -1
- package/dist/editors/strategies/windsurf/rules.js +43 -5
- package/dist/editors/strategies/windsurf/rules.js.map +1 -1
- package/dist/editors/types.d.ts +12 -0
- package/dist/editors/types.d.ts.map +1 -1
- package/dist/frontmatter-parser.d.ts +24 -0
- package/dist/frontmatter-parser.d.ts.map +1 -0
- package/dist/frontmatter-parser.js +137 -0
- package/dist/frontmatter-parser.js.map +1 -0
- package/dist/frontmatter-utils.d.ts +36 -0
- package/dist/frontmatter-utils.d.ts.map +1 -0
- package/dist/frontmatter-utils.js +109 -0
- package/dist/frontmatter-utils.js.map +1 -0
- package/dist/git-download.d.ts +18 -0
- package/dist/git-download.d.ts.map +1 -0
- package/dist/git-download.js +49 -0
- package/dist/git-download.js.map +1 -0
- package/dist/import-writer.d.ts +54 -10
- package/dist/import-writer.d.ts.map +1 -1
- package/dist/import-writer.js +305 -44
- package/dist/import-writer.js.map +1 -1
- package/dist/inheritance.d.ts +2 -0
- package/dist/inheritance.d.ts.map +1 -1
- package/dist/inheritance.js +172 -41
- package/dist/inheritance.js.map +1 -1
- package/dist/loader.d.ts +13 -0
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +5 -1
- package/dist/loader.js.map +1 -1
- package/dist/prompts/loader.d.ts.map +1 -1
- package/dist/prompts/loader.js +11 -39
- package/dist/prompts/loader.js.map +1 -1
- package/dist/remote-loader.d.ts +17 -1
- package/dist/remote-loader.d.ts.map +1 -1
- package/dist/remote-loader.js +76 -44
- package/dist/remote-loader.js.map +1 -1
- package/dist/rules/loader.d.ts.map +1 -1
- package/dist/rules/loader.js +23 -13
- package/dist/rules/loader.js.map +1 -1
- package/dist/skills/parser.d.ts +3 -1
- package/dist/skills/parser.d.ts.map +1 -1
- package/dist/skills/parser.js +22 -10
- package/dist/skills/parser.js.map +1 -1
- package/dist/skills/resolvers/git.d.ts.map +1 -1
- package/dist/skills/resolvers/git.js +10 -2
- package/dist/skills/resolvers/git.js.map +1 -1
- package/dist/skills/validate.js +1 -1
- package/dist/skills/validate.js.map +1 -1
- package/dist/updater.d.ts.map +1 -1
- package/dist/updater.js +5 -12
- package/dist/updater.js.map +1 -1
- package/dist/url-parsing.d.ts +1 -4
- package/dist/url-parsing.d.ts.map +1 -1
- package/dist/url-parsing.js +2 -6
- package/dist/url-parsing.js.map +1 -1
- package/package.json +11 -1
package/dist/inheritance.js
CHANGED
|
@@ -1,17 +1,27 @@
|
|
|
1
|
-
import { resolve, dirname } from 'pathe';
|
|
1
|
+
import { resolve, dirname, join, isAbsolute } from 'pathe';
|
|
2
2
|
import { existsSync, readFileSync } from 'node:fs';
|
|
3
|
+
import { cp, mkdir, rm } from 'node:fs/promises';
|
|
3
4
|
import { fileURLToPath } from 'node:url';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
5
|
+
import { parseJsonc, detectSourceType, isLocalPath } from '@a1st/aix-schema';
|
|
6
|
+
import { withGitDownload, createDownloadKey } from './git-download.js';
|
|
7
|
+
import { getExtendsDir } from './cache/paths.js';
|
|
6
8
|
import { parseConfigContent } from './discovery.js';
|
|
7
9
|
import { CircularDependencyError, ConfigParseError, RemoteFetchError } from './errors.js';
|
|
8
|
-
import { convertBlobToRawUrl
|
|
10
|
+
import { convertBlobToRawUrl } from './url-parsing.js';
|
|
9
11
|
import { deepMergeJson } from './json.js';
|
|
10
12
|
export async function resolveExtends(config, options) {
|
|
11
|
-
const { baseDir, visited = new Set(), isRemote = false } = options;
|
|
13
|
+
const { baseDir, projectRoot, visited = new Set(), isRemote = false } = options, isTopLevel = !options.visited;
|
|
12
14
|
if (!config.extends) {
|
|
13
15
|
return config;
|
|
14
16
|
}
|
|
17
|
+
// On the top-level call, wipe the extends directory so it exactly reflects the current config.
|
|
18
|
+
// This prevents orphaned directories from accumulating when the extends URL changes.
|
|
19
|
+
if (isTopLevel) {
|
|
20
|
+
const extendsDir = getExtendsDir(projectRoot);
|
|
21
|
+
if (existsSync(extendsDir)) {
|
|
22
|
+
await rm(extendsDir, { recursive: true, force: true });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
15
25
|
const extendsValue = config.extends, extendsList = Array.isArray(extendsValue) ? extendsValue : [extendsValue];
|
|
16
26
|
let merged = {};
|
|
17
27
|
// Process extends sequentially - order matters for proper inheritance chain
|
|
@@ -20,39 +30,46 @@ export async function resolveExtends(config, options) {
|
|
|
20
30
|
continue;
|
|
21
31
|
}
|
|
22
32
|
// eslint-disable-next-line no-await-in-loop -- Sequential: inheritance chain order matters
|
|
23
|
-
const resolvedConfig = await resolveExtendsPath(extendPath,
|
|
33
|
+
const resolvedConfig = await resolveExtendsPath(extendPath, {
|
|
34
|
+
baseDir,
|
|
35
|
+
projectRoot,
|
|
36
|
+
visited,
|
|
37
|
+
isRemote,
|
|
38
|
+
});
|
|
24
39
|
merged = deepMergeJson(merged, resolvedConfig, { resolver: aiJsonMergeResolver });
|
|
25
40
|
}
|
|
26
41
|
const { extends: _, ...currentConfig } = config;
|
|
27
42
|
merged = deepMergeJson(merged, currentConfig, { resolver: aiJsonMergeResolver });
|
|
28
43
|
return merged;
|
|
29
44
|
}
|
|
30
|
-
async function resolveExtendsPath(extendPath,
|
|
45
|
+
async function resolveExtendsPath(extendPath, options) {
|
|
46
|
+
const { baseDir, projectRoot, visited, isRemote } = options;
|
|
31
47
|
// If base is a remote URL and extend is a relative path, resolve as remote URL
|
|
32
48
|
if (isRemote && isRelativePath(extendPath)) {
|
|
33
|
-
return resolveRemoteExtends(new URL(extendPath, baseDir).href, visited);
|
|
34
|
-
}
|
|
35
|
-
if (isLocalPath(extendPath)) {
|
|
36
|
-
return resolveLocalExtends(extendPath, baseDir, visited);
|
|
49
|
+
return resolveRemoteExtends(new URL(extendPath, baseDir).href, projectRoot, visited);
|
|
37
50
|
}
|
|
38
|
-
|
|
39
|
-
|
|
51
|
+
const sourceType = detectSourceType(extendPath);
|
|
52
|
+
switch (sourceType) {
|
|
53
|
+
case 'local':
|
|
54
|
+
return resolveLocalExtends(extendPath, baseDir, projectRoot, visited);
|
|
55
|
+
case 'https-file':
|
|
56
|
+
return resolveRemoteExtends(extendPath, projectRoot, visited);
|
|
57
|
+
case 'git-shorthand':
|
|
58
|
+
case 'https-repo':
|
|
59
|
+
return resolveGitExtends(extendPath, projectRoot, visited);
|
|
60
|
+
case 'npm':
|
|
61
|
+
return resolveNpmExtends(extendPath, projectRoot, visited);
|
|
62
|
+
case 'http-unsupported':
|
|
63
|
+
throw new ConfigParseError('HTTP URLs are not supported (use HTTPS)', extendPath);
|
|
40
64
|
}
|
|
41
|
-
return resolveNpmExtends(extendPath, visited);
|
|
42
65
|
}
|
|
43
66
|
function isRelativePath(path) {
|
|
44
67
|
return path.startsWith('./') || path.startsWith('../');
|
|
45
68
|
}
|
|
46
|
-
function isGitPath(path) {
|
|
47
|
-
return (path.startsWith('github:') ||
|
|
48
|
-
path.startsWith('gitlab:') ||
|
|
49
|
-
path.startsWith('bitbucket:') ||
|
|
50
|
-
path.startsWith('https://'));
|
|
51
|
-
}
|
|
52
69
|
/**
|
|
53
70
|
* Resolve extends from a remote URL (fetch the file directly).
|
|
54
71
|
*/
|
|
55
|
-
async function resolveRemoteExtends(url, visited) {
|
|
72
|
+
async function resolveRemoteExtends(url, projectRoot, visited) {
|
|
56
73
|
if (visited.has(url)) {
|
|
57
74
|
throw new CircularDependencyError([...visited, url]);
|
|
58
75
|
}
|
|
@@ -75,9 +92,9 @@ async function resolveRemoteExtends(url, visited) {
|
|
|
75
92
|
throw new ConfigParseError(`Parse error: ${result.errors[0]?.message}`, url);
|
|
76
93
|
}
|
|
77
94
|
const parsed = result.data, newBaseUrl = rawUrl.substring(0, rawUrl.lastIndexOf('/') + 1);
|
|
78
|
-
return resolveExtends(parsed, { baseDir: newBaseUrl, visited, isRemote: true });
|
|
95
|
+
return resolveExtends(parsed, { baseDir: newBaseUrl, projectRoot, visited, isRemote: true });
|
|
79
96
|
}
|
|
80
|
-
async function resolveLocalExtends(extendPath, baseDir, visited) {
|
|
97
|
+
async function resolveLocalExtends(extendPath, baseDir, projectRoot, visited) {
|
|
81
98
|
const absolutePath = resolve(baseDir, extendPath);
|
|
82
99
|
if (visited.has(absolutePath)) {
|
|
83
100
|
throw new CircularDependencyError([...visited, absolutePath]);
|
|
@@ -86,38 +103,46 @@ async function resolveLocalExtends(extendPath, baseDir, visited) {
|
|
|
86
103
|
throw new ConfigParseError(`Extended config not found: ${extendPath}`, absolutePath);
|
|
87
104
|
}
|
|
88
105
|
visited.add(absolutePath);
|
|
89
|
-
const content = readFileSync(absolutePath, 'utf-8'), parsed = parseConfigContent(content), newBaseDir = dirname(absolutePath);
|
|
90
|
-
|
|
106
|
+
const content = readFileSync(absolutePath, 'utf-8'), parsed = parseConfigContent(content), newBaseDir = dirname(absolutePath), resolved = await resolveExtends(parsed, { baseDir: newBaseDir, projectRoot, visited });
|
|
107
|
+
// Normalize local paths to absolute so they remain valid after merging into the parent config,
|
|
108
|
+
// which may be in a different directory.
|
|
109
|
+
return normalizeLocalPaths(resolved, newBaseDir);
|
|
91
110
|
}
|
|
92
|
-
async function resolveGitExtends(extendPath, visited) {
|
|
111
|
+
async function resolveGitExtends(extendPath, projectRoot, visited) {
|
|
93
112
|
if (visited.has(extendPath)) {
|
|
94
113
|
throw new CircularDependencyError([...visited, extendPath]);
|
|
95
114
|
}
|
|
96
115
|
visited.add(extendPath);
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
116
|
+
return withGitDownload(extendPath, projectRoot, async (dir) => {
|
|
117
|
+
const configPath = resolve(dir, 'ai.json');
|
|
118
|
+
if (!existsSync(configPath)) {
|
|
119
|
+
throw new ConfigParseError(`No ai.json found in git repository: ${extendPath}`, configPath);
|
|
120
|
+
}
|
|
121
|
+
const content = readFileSync(configPath, 'utf-8'), parsed = parseConfigContent(content), resolved = await resolveExtends(parsed, { baseDir: dir, projectRoot, visited });
|
|
122
|
+
// Copy the downloaded content to a permanent location under .aix/extends/ so that skill,
|
|
123
|
+
// rule, and prompt paths remain resolvable after the ephemeral temp dir is cleaned up.
|
|
124
|
+
const extendsKey = createDownloadKey(extendPath), permanentDir = join(getExtendsDir(projectRoot), extendsKey);
|
|
125
|
+
await mkdir(dirname(permanentDir), { recursive: true });
|
|
126
|
+
await cp(dir, permanentDir, { recursive: true, force: true });
|
|
127
|
+
// Normalize local paths to point at the permanent copy
|
|
128
|
+
return normalizeLocalPaths(resolved, permanentDir);
|
|
100
129
|
});
|
|
101
|
-
const configPath = resolve(dir, 'ai.json');
|
|
102
|
-
if (!existsSync(configPath)) {
|
|
103
|
-
throw new ConfigParseError(`No ai.json found in git repository: ${extendPath}`, configPath);
|
|
104
|
-
}
|
|
105
|
-
const content = readFileSync(configPath, 'utf-8'), parsed = parseConfigContent(content);
|
|
106
|
-
return resolveExtends(parsed, { baseDir: dir, visited });
|
|
107
130
|
}
|
|
108
|
-
async function resolveNpmExtends(packageName, visited) {
|
|
131
|
+
async function resolveNpmExtends(packageName, projectRoot, visited) {
|
|
109
132
|
if (visited.has(packageName)) {
|
|
110
133
|
throw new CircularDependencyError([...visited, packageName]);
|
|
111
134
|
}
|
|
112
135
|
visited.add(packageName);
|
|
113
136
|
try {
|
|
114
137
|
// Use ESM-compatible import.meta.resolve to find the package
|
|
115
|
-
const resolvedUrl = import.meta.resolve(`${packageName}/ai.json`, `file://${process.cwd()}/`);
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
return resolveExtends(parsed, { baseDir, visited });
|
|
138
|
+
const resolvedUrl = import.meta.resolve(`${packageName}/ai.json`, `file://${process.cwd()}/`), packagePath = fileURLToPath(resolvedUrl), content = readFileSync(packagePath, 'utf-8'), parsed = parseConfigContent(content), baseDir = dirname(packagePath), resolved = await resolveExtends(parsed, { baseDir, projectRoot, visited });
|
|
139
|
+
// Normalize local paths to absolute so they remain valid after merging into the parent config
|
|
140
|
+
return normalizeLocalPaths(resolved, baseDir);
|
|
119
141
|
}
|
|
120
|
-
catch (
|
|
142
|
+
catch (error) {
|
|
143
|
+
if (error instanceof ConfigParseError || error instanceof CircularDependencyError) {
|
|
144
|
+
throw error;
|
|
145
|
+
}
|
|
121
146
|
throw new ConfigParseError(`Failed to resolve npm package: ${packageName}. Make sure it's installed.`, packageName);
|
|
122
147
|
}
|
|
123
148
|
}
|
|
@@ -130,4 +155,110 @@ function aiJsonMergeResolver({ key }) {
|
|
|
130
155
|
}
|
|
131
156
|
return undefined;
|
|
132
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* Normalize local paths in a config to absolute paths. This ensures that skills, rules, and prompts
|
|
160
|
+
* from extended configs (git, npm) remain resolvable after merging into the parent config.
|
|
161
|
+
*/
|
|
162
|
+
function normalizeLocalPaths(config, baseDir) {
|
|
163
|
+
const result = { ...config };
|
|
164
|
+
// Normalize skills
|
|
165
|
+
if (result.skills && typeof result.skills === 'object') {
|
|
166
|
+
result.skills = normalizeSkillPaths(result.skills, baseDir);
|
|
167
|
+
}
|
|
168
|
+
// Normalize rules
|
|
169
|
+
if (result.rules && typeof result.rules === 'object') {
|
|
170
|
+
result.rules = normalizeRulePaths(result.rules, baseDir);
|
|
171
|
+
}
|
|
172
|
+
// Normalize prompts
|
|
173
|
+
if (result.prompts && typeof result.prompts === 'object') {
|
|
174
|
+
result.prompts = normalizePromptPaths(result.prompts, baseDir);
|
|
175
|
+
}
|
|
176
|
+
return result;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Normalize skill reference paths to absolute paths.
|
|
180
|
+
*/
|
|
181
|
+
function normalizeSkillPaths(skills, baseDir) {
|
|
182
|
+
const result = {};
|
|
183
|
+
for (const [name, ref] of Object.entries(skills)) {
|
|
184
|
+
result[name] = normalizeSourceRef(ref, baseDir);
|
|
185
|
+
}
|
|
186
|
+
return result;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Normalize a source reference (skill, rule, prompt) to use absolute paths for local refs.
|
|
190
|
+
*/
|
|
191
|
+
function normalizeSourceRef(ref, baseDir) {
|
|
192
|
+
if (ref === false || ref === null || ref === undefined) {
|
|
193
|
+
return ref;
|
|
194
|
+
}
|
|
195
|
+
// String shorthand (version range, local path, or git shorthand)
|
|
196
|
+
if (typeof ref === 'string') {
|
|
197
|
+
return normalizePathString(ref, baseDir);
|
|
198
|
+
}
|
|
199
|
+
// Object with path property (local ref)
|
|
200
|
+
if (typeof ref === 'object' && ref !== null) {
|
|
201
|
+
const obj = ref;
|
|
202
|
+
// { path: "./skills/foo" } → { path: "/abs/path/skills/foo" }
|
|
203
|
+
if ('path' in obj && typeof obj.path === 'string') {
|
|
204
|
+
return { ...obj, path: normalizePathString(obj.path, baseDir) };
|
|
205
|
+
}
|
|
206
|
+
// { source: "./skills/foo" } or { source: { path: "..." } }
|
|
207
|
+
if ('source' in obj) {
|
|
208
|
+
return { ...obj, source: normalizeSourceRef(obj.source, baseDir) };
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return ref;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Normalize a path string to absolute if it's a local path.
|
|
215
|
+
*/
|
|
216
|
+
function normalizePathString(value, baseDir) {
|
|
217
|
+
// Skip if already absolute
|
|
218
|
+
if (isAbsolute(value)) {
|
|
219
|
+
return value;
|
|
220
|
+
}
|
|
221
|
+
// Only normalize local paths (not git refs, npm packages, URLs, etc.)
|
|
222
|
+
if (!isLocalPath(value)) {
|
|
223
|
+
return value;
|
|
224
|
+
}
|
|
225
|
+
return resolve(baseDir, value);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Normalize rule paths to absolute paths.
|
|
229
|
+
*/
|
|
230
|
+
function normalizeRulePaths(rules, baseDir) {
|
|
231
|
+
const result = {};
|
|
232
|
+
for (const [key, value] of Object.entries(rules)) {
|
|
233
|
+
if (Array.isArray(value)) {
|
|
234
|
+
// Array of rule strings or paths
|
|
235
|
+
result[key] = value.map((item) => typeof item === 'string' ? normalizePathString(item, baseDir) : item);
|
|
236
|
+
}
|
|
237
|
+
else if (typeof value === 'string') {
|
|
238
|
+
result[key] = normalizePathString(value, baseDir);
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
result[key] = value;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return result;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Normalize prompt paths to absolute paths.
|
|
248
|
+
*/
|
|
249
|
+
function normalizePromptPaths(prompts, baseDir) {
|
|
250
|
+
const result = {};
|
|
251
|
+
for (const [key, value] of Object.entries(prompts)) {
|
|
252
|
+
if (Array.isArray(value)) {
|
|
253
|
+
result[key] = value.map((item) => typeof item === 'string' ? normalizePathString(item, baseDir) : item);
|
|
254
|
+
}
|
|
255
|
+
else if (typeof value === 'string') {
|
|
256
|
+
result[key] = normalizePathString(value, baseDir);
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
result[key] = value;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return result;
|
|
263
|
+
}
|
|
133
264
|
//# sourceMappingURL=inheritance.js.map
|
package/dist/inheritance.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inheritance.js","sourceRoot":"","sources":["../src/inheritance.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"inheritance.js","sourceRoot":"","sources":["../src/inheritance.ts"],"names":[],"mappings":"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"}
|
package/dist/loader.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type AiJsonConfig } from '@a1st/aix-schema';
|
|
2
|
+
import { type GitSourceInfo } from './remote-loader.js';
|
|
2
3
|
export interface LoadedConfig {
|
|
3
4
|
path: string;
|
|
4
5
|
config: AiJsonConfig;
|
|
@@ -9,6 +10,18 @@ export interface LoadedConfig {
|
|
|
9
10
|
localPath?: string;
|
|
10
11
|
/** Whether local overrides were applied */
|
|
11
12
|
hasLocalOverrides?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Base directory/URL for resolving relative paths in the config (skills, rules, etc.). For local
|
|
15
|
+
* configs, this is the directory containing the config file. For remote URL configs, this is the
|
|
16
|
+
* remote URL directory. For git shorthand configs, this is the local temp directory where the
|
|
17
|
+
* repo was downloaded.
|
|
18
|
+
*/
|
|
19
|
+
configBaseDir?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Git source metadata when the config was loaded from a git source. Used for creating git
|
|
22
|
+
* references when saving configs with --save.
|
|
23
|
+
*/
|
|
24
|
+
gitSource?: GitSourceInfo;
|
|
12
25
|
}
|
|
13
26
|
export interface LoadConfigOptions {
|
|
14
27
|
/** Explicit path to local config file (existing behavior) */
|
package/dist/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AACA,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AACA,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMpF,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxE,MAAM,WAAW,YAAY;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,QAAQ,CAAC;IAC3C,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAC/B,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC7B,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,EACpC,QAAQ,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CA4BnC;AAsID;;;;;GAKG;AACH,wBAAsB,aAAa,CAChC,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,EACpC,QAAQ,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,CAAC,CAWvB"}
|
package/dist/loader.js
CHANGED
|
@@ -42,6 +42,7 @@ export async function loadConfig(options, startDir) {
|
|
|
42
42
|
async function loadFromRemoteSource(source, cwd) {
|
|
43
43
|
const remote = await loadFromSource(source, cwd), resolved = await resolveExtends(remote.content, {
|
|
44
44
|
baseDir: remote.baseUrl,
|
|
45
|
+
projectRoot: cwd,
|
|
45
46
|
isRemote: remote.isRemote,
|
|
46
47
|
});
|
|
47
48
|
let validated;
|
|
@@ -61,6 +62,8 @@ async function loadFromRemoteSource(source, cwd) {
|
|
|
61
62
|
path: source,
|
|
62
63
|
config: validated,
|
|
63
64
|
source: sourceType,
|
|
65
|
+
configBaseDir: remote.baseUrl,
|
|
66
|
+
gitSource: remote.gitSource,
|
|
64
67
|
};
|
|
65
68
|
}
|
|
66
69
|
/**
|
|
@@ -92,7 +95,7 @@ function mergeLocalOverrides(baseConfig, localContent, localPath) {
|
|
|
92
95
|
*/
|
|
93
96
|
async function loadFromDiscovered(discovered) {
|
|
94
97
|
try {
|
|
95
|
-
const parsed = parseConfigContent(discovered.content), baseDir = dirname(discovered.path), resolved = await resolveExtends(parsed, { baseDir });
|
|
98
|
+
const parsed = parseConfigContent(discovered.content), baseDir = dirname(discovered.path), resolved = await resolveExtends(parsed, { baseDir, projectRoot: baseDir });
|
|
96
99
|
let validated = parseConfig(resolved);
|
|
97
100
|
const warnings = [];
|
|
98
101
|
if (discovered.packageJsonAlsoHasAi) {
|
|
@@ -111,6 +114,7 @@ async function loadFromDiscovered(discovered) {
|
|
|
111
114
|
path: discovered.path,
|
|
112
115
|
config: validated,
|
|
113
116
|
source: discovered.source,
|
|
117
|
+
configBaseDir: baseDir,
|
|
114
118
|
...(warnings.length > 0 && { warnings }),
|
|
115
119
|
...(localPath && { localPath }),
|
|
116
120
|
...(hasLocalOverrides && { hasLocalOverrides }),
|
package/dist/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAqB,MAAM,kBAAkB,CAAC;AAEpF,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/prompts/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAgB,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/prompts/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAgB,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOjF,MAAM,WAAW,YAAY;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC7B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,CAAC,CAqEvB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC9B,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAavC"}
|
package/dist/prompts/loader.js
CHANGED
|
@@ -5,27 +5,7 @@ import { normalizeSourceRef } from '@a1st/aix-schema';
|
|
|
5
5
|
import { getPromptsCacheDir } from '../cache/paths.js';
|
|
6
6
|
import { loadFromGit } from '../git-loader.js';
|
|
7
7
|
import { resolveNpmPath } from '../npm/resolve.js';
|
|
8
|
-
|
|
9
|
-
* Strip YAML frontmatter from markdown content and optionally extract metadata.
|
|
10
|
-
* Returns the content without frontmatter and any extracted metadata.
|
|
11
|
-
*/
|
|
12
|
-
function stripFrontmatter(content) {
|
|
13
|
-
const frontmatterMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n/);
|
|
14
|
-
if (!frontmatterMatch) {
|
|
15
|
-
return { content };
|
|
16
|
-
}
|
|
17
|
-
const frontmatterContent = frontmatterMatch[1];
|
|
18
|
-
const contentWithoutFrontmatter = content.slice(frontmatterMatch[0].length);
|
|
19
|
-
// Parse simple key: value pairs from frontmatter
|
|
20
|
-
const metadata = {};
|
|
21
|
-
for (const line of frontmatterContent.split('\n')) {
|
|
22
|
-
const match = line.match(/^([\w-]+):\s*["']?([^"']*)["']?\s*$/);
|
|
23
|
-
if (match) {
|
|
24
|
-
metadata[match[1]] = match[2];
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return { content: contentWithoutFrontmatter.trim(), metadata };
|
|
28
|
-
}
|
|
8
|
+
import { parsePromptFrontmatter } from '../frontmatter-parser.js';
|
|
29
9
|
/**
|
|
30
10
|
* Load a single prompt from any source.
|
|
31
11
|
* @param name - The prompt name (key from the prompts object)
|
|
@@ -49,31 +29,25 @@ export async function loadPrompt(name, value, basePath) {
|
|
|
49
29
|
}
|
|
50
30
|
// Local file
|
|
51
31
|
if (promptObj.path) {
|
|
52
|
-
const fullPath = resolve(dirname(basePath), promptObj.path);
|
|
53
|
-
const rawContent = await readFile(fullPath, 'utf-8');
|
|
54
|
-
const { content, metadata } = stripFrontmatter(rawContent.trim());
|
|
32
|
+
const fullPath = resolve(dirname(basePath), promptObj.path), rawContent = await readFile(fullPath, 'utf-8'), parsed = parsePromptFrontmatter(rawContent.trim());
|
|
55
33
|
return {
|
|
56
34
|
...base,
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
content,
|
|
35
|
+
description: base.description ?? parsed.description,
|
|
36
|
+
content: parsed.content,
|
|
60
37
|
sourcePath: fullPath,
|
|
61
38
|
};
|
|
62
39
|
}
|
|
63
40
|
// Git repository
|
|
64
41
|
if (promptObj.git) {
|
|
65
|
-
const baseDir = dirname(basePath) || tmpdir()
|
|
66
|
-
const result = await loadFromGit({
|
|
42
|
+
const baseDir = dirname(basePath) || tmpdir(), result = await loadFromGit({
|
|
67
43
|
git: promptObj.git,
|
|
68
44
|
cacheDir: getPromptsCacheDir(baseDir),
|
|
69
45
|
defaultFilePath: 'prompt.md',
|
|
70
|
-
});
|
|
71
|
-
const { content, metadata } = stripFrontmatter(result.content);
|
|
46
|
+
}), parsed = parsePromptFrontmatter(result.content);
|
|
72
47
|
return {
|
|
73
48
|
...base,
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
content,
|
|
49
|
+
description: base.description ?? parsed.description,
|
|
50
|
+
content: parsed.content,
|
|
77
51
|
sourcePath: result.sourcePath,
|
|
78
52
|
};
|
|
79
53
|
}
|
|
@@ -84,13 +58,11 @@ export async function loadPrompt(name, value, basePath) {
|
|
|
84
58
|
subpath: promptObj.npm.path,
|
|
85
59
|
version: promptObj.npm.version,
|
|
86
60
|
projectRoot: dirname(basePath),
|
|
87
|
-
});
|
|
88
|
-
const rawContent = await readFile(filePath, 'utf-8');
|
|
89
|
-
const { content, metadata } = stripFrontmatter(rawContent.trim());
|
|
61
|
+
}), rawContent = await readFile(filePath, 'utf-8'), parsed = parsePromptFrontmatter(rawContent.trim());
|
|
90
62
|
return {
|
|
91
63
|
...base,
|
|
92
|
-
description: base.description ??
|
|
93
|
-
content,
|
|
64
|
+
description: base.description ?? parsed.description,
|
|
65
|
+
content: parsed.content,
|
|
94
66
|
sourcePath: filePath,
|
|
95
67
|
};
|
|
96
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/prompts/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/prompts/loader.ts"],"names":[],"mappings":"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"}
|
package/dist/remote-loader.d.ts
CHANGED
|
@@ -1,4 +1,17 @@
|
|
|
1
1
|
export type RemoteSourceType = 'url' | 'git' | 'local';
|
|
2
|
+
/** Git source metadata for creating git references when saving configs */
|
|
3
|
+
export interface GitSourceInfo {
|
|
4
|
+
/** Git provider */
|
|
5
|
+
provider: 'github' | 'gitlab' | 'bitbucket';
|
|
6
|
+
/** Repository owner/user */
|
|
7
|
+
owner: string;
|
|
8
|
+
/** Repository name */
|
|
9
|
+
repo: string;
|
|
10
|
+
/** Git ref (branch, tag, commit) */
|
|
11
|
+
ref?: string;
|
|
12
|
+
/** Path to the config file within the repo (e.g., "ai.json" or "configs/ai.json") */
|
|
13
|
+
configPath?: string;
|
|
14
|
+
}
|
|
2
15
|
export interface RemoteLoadResult {
|
|
3
16
|
/** Parsed config content */
|
|
4
17
|
content: Record<string, unknown>;
|
|
@@ -8,9 +21,12 @@ export interface RemoteLoadResult {
|
|
|
8
21
|
source: RemoteSourceType;
|
|
9
22
|
/** Whether the base is a remote URL (for extends resolution) */
|
|
10
23
|
isRemote: boolean;
|
|
24
|
+
/** Git source metadata (present when source is 'git') */
|
|
25
|
+
gitSource?: GitSourceInfo;
|
|
11
26
|
}
|
|
12
27
|
/**
|
|
13
|
-
* Load config from a remote URL (direct or blob URL).
|
|
28
|
+
* Load config from a remote URL (direct or blob URL). For blob URLs from GitHub/GitLab/Bitbucket,
|
|
29
|
+
* downloads the entire repo so relative paths can be resolved.
|
|
14
30
|
*/
|
|
15
31
|
export declare function loadFromUrl(url: string): Promise<RemoteLoadResult>;
|
|
16
32
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-loader.d.ts","sourceRoot":"","sources":["../src/remote-loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"remote-loader.d.ts","sourceRoot":"","sources":["../src/remote-loader.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;AAEvD,0EAA0E;AAC1E,MAAM,WAAW,aAAa;IAC3B,mBAAmB;IACnB,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC5C,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC9B,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,gEAAgE;IAChE,QAAQ,EAAE,OAAO,CAAC;IAClB,yDAAyD;IACzD,SAAS,CAAC,EAAE,aAAa,CAAC;CAC5B;AAqFD;;;GAGG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoCxE;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAkEnF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,gBAAgB,CAoB7F;AAiDD;;GAEG;AACH,wBAAsB,cAAc,CACjC,MAAM,EAAE,MAAM,EACd,GAAG,GAAE,MAAsB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAuB3B"}
|