@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/remote-loader.js
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
* Remote config loading utilities for fetching ai.json from URLs, git repos, and local paths.
|
|
3
3
|
*/
|
|
4
4
|
import { existsSync, readFileSync } from 'node:fs';
|
|
5
|
+
import { tmpdir } from 'node:os';
|
|
5
6
|
import { resolve, dirname } from 'pathe';
|
|
6
7
|
import { downloadTemplate } from 'giget';
|
|
7
|
-
import { parseJsonc } from '@a1st/aix-schema';
|
|
8
|
-
import { convertBlobToRawUrl, parseGitShorthand, parseGitHubRepoUrl, parseGitHubBlobUrl,
|
|
8
|
+
import { parseJsonc, detectSourceType } from '@a1st/aix-schema';
|
|
9
|
+
import { convertBlobToRawUrl, parseGitShorthand, parseGitHubRepoUrl, parseGitHubBlobUrl, } from './url-parsing.js';
|
|
9
10
|
import { ConfigNotFoundError, ConfigParseError, RemoteFetchError, UnsupportedUrlError, } from './errors.js';
|
|
10
11
|
const FETCH_TIMEOUT_MS = 30000;
|
|
11
12
|
/**
|
|
@@ -31,9 +32,55 @@ async function fetchWithTimeout(url, timeoutMs = FETCH_TIMEOUT_MS) {
|
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
/**
|
|
34
|
-
* Load config from a
|
|
35
|
+
* Load config from a GitHub blob URL by downloading the repo. This ensures relative paths (skills,
|
|
36
|
+
* rules, etc.) can be resolved from the downloaded repo.
|
|
37
|
+
*/
|
|
38
|
+
async function loadFromGitHubBlobUrl(parsed) {
|
|
39
|
+
// Download the repo using giget to a temp directory
|
|
40
|
+
const template = `github:${parsed.owner}/${parsed.repo}#${parsed.ref}`;
|
|
41
|
+
let dir;
|
|
42
|
+
try {
|
|
43
|
+
const result = await downloadTemplate(template, { forceClean: true, cwd: tmpdir() });
|
|
44
|
+
dir = result.dir;
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
48
|
+
throw new RemoteFetchError(`https://github.com/${parsed.owner}/${parsed.repo}/blob/${parsed.ref}/${parsed.path}`, message);
|
|
49
|
+
}
|
|
50
|
+
// Read the config file from the downloaded repo
|
|
51
|
+
const configPath = resolve(dir, parsed.path);
|
|
52
|
+
if (!existsSync(configPath)) {
|
|
53
|
+
throw new ConfigNotFoundError(configPath);
|
|
54
|
+
}
|
|
55
|
+
const content = readFileSync(configPath, 'utf-8'), result = parseJsonc(content);
|
|
56
|
+
if (result.errors.length > 0) {
|
|
57
|
+
throw new ConfigParseError(`Parse error: ${result.errors[0]?.message}`, configPath);
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
content: result.data,
|
|
61
|
+
baseUrl: dirname(configPath),
|
|
62
|
+
source: 'git',
|
|
63
|
+
isRemote: false, // Local filesystem after download
|
|
64
|
+
gitSource: {
|
|
65
|
+
provider: 'github',
|
|
66
|
+
owner: parsed.owner,
|
|
67
|
+
repo: parsed.repo,
|
|
68
|
+
ref: parsed.ref,
|
|
69
|
+
configPath: parsed.path,
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Load config from a remote URL (direct or blob URL). For blob URLs from GitHub/GitLab/Bitbucket,
|
|
75
|
+
* downloads the entire repo so relative paths can be resolved.
|
|
35
76
|
*/
|
|
36
77
|
export async function loadFromUrl(url) {
|
|
78
|
+
// For GitHub blob URLs, download the repo so relative paths work
|
|
79
|
+
const ghBlob = parseGitHubBlobUrl(url);
|
|
80
|
+
if (ghBlob) {
|
|
81
|
+
return loadFromGitHubBlobUrl(ghBlob);
|
|
82
|
+
}
|
|
83
|
+
// For other URLs, fetch the raw content directly
|
|
37
84
|
const rawUrl = convertBlobToRawUrl(url);
|
|
38
85
|
let content;
|
|
39
86
|
try {
|
|
@@ -75,7 +122,7 @@ export async function loadFromGitShorthand(input) {
|
|
|
75
122
|
}
|
|
76
123
|
let dir;
|
|
77
124
|
try {
|
|
78
|
-
const result = await downloadTemplate(template, {
|
|
125
|
+
const result = await downloadTemplate(template, { forceClean: true, cwd: tmpdir() });
|
|
79
126
|
dir = result.dir;
|
|
80
127
|
}
|
|
81
128
|
catch (error) {
|
|
@@ -84,12 +131,15 @@ export async function loadFromGitShorthand(input) {
|
|
|
84
131
|
}
|
|
85
132
|
// Look for ai.json - if subpath ends with .json, use it directly; otherwise look for ai.json in dir
|
|
86
133
|
let configPath;
|
|
134
|
+
let configPathInRepo;
|
|
87
135
|
if (parsed.subpath?.endsWith('.json')) {
|
|
88
136
|
// The subpath itself is the config file
|
|
89
137
|
configPath = resolve(dir, parsed.subpath.split('/').pop());
|
|
138
|
+
configPathInRepo = parsed.subpath;
|
|
90
139
|
}
|
|
91
140
|
else {
|
|
92
141
|
configPath = resolve(dir, 'ai.json');
|
|
142
|
+
configPathInRepo = parsed.subpath ? `${parsed.subpath}/ai.json` : 'ai.json';
|
|
93
143
|
}
|
|
94
144
|
if (!existsSync(configPath)) {
|
|
95
145
|
throw new ConfigNotFoundError(configPath);
|
|
@@ -103,6 +153,13 @@ export async function loadFromGitShorthand(input) {
|
|
|
103
153
|
baseUrl: dirname(configPath),
|
|
104
154
|
source: 'git',
|
|
105
155
|
isRemote: false, // Local filesystem after download
|
|
156
|
+
gitSource: {
|
|
157
|
+
provider: parsed.provider,
|
|
158
|
+
owner: parsed.user,
|
|
159
|
+
repo: parsed.repo,
|
|
160
|
+
ref: parsed.ref,
|
|
161
|
+
configPath: configPathInRepo,
|
|
162
|
+
},
|
|
106
163
|
};
|
|
107
164
|
}
|
|
108
165
|
/**
|
|
@@ -124,20 +181,6 @@ export function loadFromLocalPath(path, cwd = process.cwd()) {
|
|
|
124
181
|
isRemote: false,
|
|
125
182
|
};
|
|
126
183
|
}
|
|
127
|
-
/**
|
|
128
|
-
* Check if a URL points directly to a file (blob URL or direct file URL).
|
|
129
|
-
*/
|
|
130
|
-
function isDirectFileUrl(url) {
|
|
131
|
-
// Check for blob URLs
|
|
132
|
-
if (parseGitHubBlobUrl(url) || parseGitLabBlobUrl(url) || parseBitbucketBlobUrl(url)) {
|
|
133
|
-
return true;
|
|
134
|
-
}
|
|
135
|
-
// Check for direct file URLs (ending in .json)
|
|
136
|
-
if (url.endsWith('.json')) {
|
|
137
|
-
return true;
|
|
138
|
-
}
|
|
139
|
-
return false;
|
|
140
|
-
}
|
|
141
184
|
/**
|
|
142
185
|
* Load config from a GitHub/GitLab/Bitbucket repo URL (not a blob URL).
|
|
143
186
|
* Downloads the repo and looks for ai.json at the root.
|
|
@@ -151,7 +194,7 @@ async function loadFromRepoUrl(url) {
|
|
|
151
194
|
// For other repo URLs, try using giget directly
|
|
152
195
|
let dir;
|
|
153
196
|
try {
|
|
154
|
-
const result = await downloadTemplate(url, {
|
|
197
|
+
const result = await downloadTemplate(url, { forceClean: true, cwd: tmpdir() });
|
|
155
198
|
dir = result.dir;
|
|
156
199
|
}
|
|
157
200
|
catch (error) {
|
|
@@ -177,32 +220,21 @@ async function loadFromRepoUrl(url) {
|
|
|
177
220
|
* Classify and load config from any source type.
|
|
178
221
|
*/
|
|
179
222
|
export async function loadFromSource(source, cwd = process.cwd()) {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
if (source.startsWith('https://')) {
|
|
186
|
-
// If it's a direct file URL (blob or .json), fetch it
|
|
187
|
-
if (isDirectFileUrl(source)) {
|
|
223
|
+
const sourceType = detectSourceType(source);
|
|
224
|
+
switch (sourceType) {
|
|
225
|
+
case 'git-shorthand':
|
|
226
|
+
return loadFromGitShorthand(source);
|
|
227
|
+
case 'https-file':
|
|
188
228
|
return loadFromUrl(source);
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
if (isLocalPath(source)) {
|
|
199
|
-
return loadFromLocalPath(source, cwd);
|
|
200
|
-
}
|
|
201
|
-
// If it looks like a file path without ./ prefix, try it as local
|
|
202
|
-
if (source.includes('/') || source.endsWith('.json')) {
|
|
203
|
-
return loadFromLocalPath(source, cwd);
|
|
229
|
+
case 'https-repo':
|
|
230
|
+
return loadFromRepoUrl(source);
|
|
231
|
+
case 'http-unsupported':
|
|
232
|
+
throw new UnsupportedUrlError(source);
|
|
233
|
+
case 'local':
|
|
234
|
+
return loadFromLocalPath(source, cwd);
|
|
235
|
+
case 'npm':
|
|
236
|
+
// npm packages are not supported as config sources (only for skills/rules)
|
|
237
|
+
throw new UnsupportedUrlError(source);
|
|
204
238
|
}
|
|
205
|
-
// Unknown format
|
|
206
|
-
throw new UnsupportedUrlError(source);
|
|
207
239
|
}
|
|
208
240
|
//# sourceMappingURL=remote-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-loader.js","sourceRoot":"","sources":["../src/remote-loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"remote-loader.js","sourceRoot":"","sources":["../src/remote-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/rules/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAc,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/rules/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAc,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAO3F,MAAM,WAAW,UAAU;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,cAAc,CAAC;QAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACJ;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAsFpG;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAC5B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAarC"}
|
package/dist/rules/loader.js
CHANGED
|
@@ -5,6 +5,7 @@ import { normalizeSourceRef } from '@a1st/aix-schema';
|
|
|
5
5
|
import { getRulesCacheDir } from '../cache/paths.js';
|
|
6
6
|
import { loadFromGit } from '../git-loader.js';
|
|
7
7
|
import { resolveNpmPath } from '../npm/resolve.js';
|
|
8
|
+
import { parseRuleFrontmatter } from '../frontmatter-parser.js';
|
|
8
9
|
/**
|
|
9
10
|
* Load a single rule from any source.
|
|
10
11
|
* @param name - The rule name (key from the rules object)
|
|
@@ -30,30 +31,36 @@ export async function loadRule(name, value, basePath) {
|
|
|
30
31
|
}
|
|
31
32
|
// Local file
|
|
32
33
|
if (ruleObj.path) {
|
|
33
|
-
const fullPath = resolve(dirname(basePath), ruleObj.path);
|
|
34
|
-
const content = await readFile(fullPath, 'utf-8');
|
|
34
|
+
const fullPath = resolve(dirname(basePath), ruleObj.path), rawContent = await readFile(fullPath, 'utf-8'), parsed = parseRuleFrontmatter(rawContent.trim());
|
|
35
35
|
return {
|
|
36
36
|
name,
|
|
37
|
-
content: content
|
|
37
|
+
content: parsed.content,
|
|
38
38
|
source: 'file',
|
|
39
39
|
sourcePath: fullPath,
|
|
40
|
-
metadata
|
|
40
|
+
metadata: {
|
|
41
|
+
description: metadata.description ?? parsed.metadata.description,
|
|
42
|
+
activation: metadata.activation !== 'always' ? metadata.activation : (parsed.metadata.activation ?? metadata.activation),
|
|
43
|
+
globs: metadata.globs ?? parsed.metadata.globs,
|
|
44
|
+
},
|
|
41
45
|
};
|
|
42
46
|
}
|
|
43
47
|
// Git repository
|
|
44
48
|
if (ruleObj.git) {
|
|
45
|
-
const baseDir = dirname(basePath) || tmpdir()
|
|
46
|
-
const result = await loadFromGit({
|
|
49
|
+
const baseDir = dirname(basePath) || tmpdir(), result = await loadFromGit({
|
|
47
50
|
git: ruleObj.git,
|
|
48
51
|
cacheDir: getRulesCacheDir(baseDir),
|
|
49
52
|
defaultFilePath: 'RULES.md',
|
|
50
|
-
});
|
|
53
|
+
}), parsed = parseRuleFrontmatter(result.content);
|
|
51
54
|
return {
|
|
52
55
|
name,
|
|
53
|
-
content:
|
|
56
|
+
content: parsed.content,
|
|
54
57
|
source: 'git',
|
|
55
58
|
sourcePath: result.sourcePath,
|
|
56
|
-
metadata
|
|
59
|
+
metadata: {
|
|
60
|
+
description: metadata.description ?? parsed.metadata.description,
|
|
61
|
+
activation: metadata.activation !== 'always' ? metadata.activation : (parsed.metadata.activation ?? metadata.activation),
|
|
62
|
+
globs: metadata.globs ?? parsed.metadata.globs,
|
|
63
|
+
},
|
|
57
64
|
};
|
|
58
65
|
}
|
|
59
66
|
// NPM package
|
|
@@ -63,14 +70,17 @@ export async function loadRule(name, value, basePath) {
|
|
|
63
70
|
subpath: ruleObj.npm.path,
|
|
64
71
|
version: ruleObj.npm.version,
|
|
65
72
|
projectRoot: dirname(basePath),
|
|
66
|
-
});
|
|
67
|
-
const content = await readFile(filePath, 'utf-8');
|
|
73
|
+
}), rawContent = await readFile(filePath, 'utf-8'), parsed = parseRuleFrontmatter(rawContent.trim());
|
|
68
74
|
return {
|
|
69
75
|
name,
|
|
70
|
-
content: content
|
|
76
|
+
content: parsed.content,
|
|
71
77
|
source: 'npm',
|
|
72
78
|
sourcePath: filePath,
|
|
73
|
-
metadata
|
|
79
|
+
metadata: {
|
|
80
|
+
description: metadata.description ?? parsed.metadata.description,
|
|
81
|
+
activation: metadata.activation !== 'always' ? metadata.activation : (parsed.metadata.activation ?? metadata.activation),
|
|
82
|
+
globs: metadata.globs ?? parsed.metadata.globs,
|
|
83
|
+
},
|
|
74
84
|
};
|
|
75
85
|
}
|
|
76
86
|
throw new Error(`Invalid rule "${name}": no content source found`);
|
package/dist/rules/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/rules/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,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,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/rules/loader.ts"],"names":[],"mappings":"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"}
|
package/dist/skills/parser.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { type ParsedSkill } from '@a1st/aix-schema';
|
|
2
2
|
/**
|
|
3
|
-
* Parse a SKILL.md file from a skill directory
|
|
3
|
+
* Parse a SKILL.md file from a skill directory. Frontmatter is optional - if missing, the entire
|
|
4
|
+
* content is treated as the body. If no name is provided in frontmatter, the parent folder name is
|
|
5
|
+
* used as the skill name.
|
|
4
6
|
*/
|
|
5
7
|
export declare function parseSkillMd(skillPath: string, source: ParsedSkill['source']): Promise<ParsedSkill>;
|
|
6
8
|
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/skills/parser.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0B,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/skills/parser.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0B,KAAK,WAAW,EAAyB,MAAM,kBAAkB,CAAC;AAInG;;;;GAIG;AACH,wBAAsB,YAAY,CAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,GAC7B,OAAO,CAAC,WAAW,CAAC,CAuCtB"}
|
package/dist/skills/parser.js
CHANGED
|
@@ -1,26 +1,38 @@
|
|
|
1
1
|
import { readFile } from 'node:fs/promises';
|
|
2
|
-
import { join } from 'pathe';
|
|
2
|
+
import { join, basename } from 'pathe';
|
|
3
3
|
import { parse as parseYaml } from 'yaml';
|
|
4
4
|
import { skillFrontmatterSchema } from '@a1st/aix-schema';
|
|
5
5
|
const FRONTMATTER_REGEX = /^---\n([\s\S]*?)\n---\n([\s\S]*)$/;
|
|
6
6
|
/**
|
|
7
|
-
* Parse a SKILL.md file from a skill directory
|
|
7
|
+
* Parse a SKILL.md file from a skill directory. Frontmatter is optional - if missing, the entire
|
|
8
|
+
* content is treated as the body. If no name is provided in frontmatter, the parent folder name is
|
|
9
|
+
* used as the skill name.
|
|
8
10
|
*/
|
|
9
11
|
export async function parseSkillMd(skillPath, source) {
|
|
10
|
-
const skillMdPath = join(skillPath, 'SKILL.md');
|
|
11
|
-
|
|
12
|
-
const match = content.match(FRONTMATTER_REGEX);
|
|
12
|
+
const skillMdPath = join(skillPath, 'SKILL.md'), content = await readFile(skillMdPath, 'utf-8'), match = content.match(FRONTMATTER_REGEX), folderName = basename(skillPath);
|
|
13
|
+
// No frontmatter - treat entire content as body, use folder name
|
|
13
14
|
if (!match) {
|
|
14
|
-
|
|
15
|
+
return {
|
|
16
|
+
frontmatter: { name: folderName },
|
|
17
|
+
body: content.trim(),
|
|
18
|
+
basePath: skillPath,
|
|
19
|
+
source,
|
|
20
|
+
};
|
|
15
21
|
}
|
|
16
22
|
const yamlContent = match[1], body = match[2];
|
|
17
|
-
|
|
18
|
-
|
|
23
|
+
// Empty frontmatter block (---\n---) - treat as no frontmatter
|
|
24
|
+
if (!yamlContent?.trim()) {
|
|
25
|
+
return {
|
|
26
|
+
frontmatter: { name: folderName },
|
|
27
|
+
body: (body ?? '').trim(),
|
|
28
|
+
basePath: skillPath,
|
|
29
|
+
source,
|
|
30
|
+
};
|
|
19
31
|
}
|
|
20
|
-
const rawFrontmatter = parseYaml(yamlContent),
|
|
32
|
+
const rawFrontmatter = parseYaml(yamlContent), parsed = skillFrontmatterSchema.parse(rawFrontmatter), frontmatter = parsed.name ? parsed : { ...parsed, name: folderName };
|
|
21
33
|
return {
|
|
22
34
|
frontmatter,
|
|
23
|
-
body: body.trim(),
|
|
35
|
+
body: (body ?? '').trim(),
|
|
24
36
|
basePath: skillPath,
|
|
25
37
|
source,
|
|
26
38
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/skills/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/skills/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAA2C,MAAM,kBAAkB,CAAC;AAEnG,MAAM,iBAAiB,GAAG,mCAAmC,CAAC;AAE9D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAC/B,SAAiB,EACjB,MAA6B;IAE7B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EACzC,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,EAC9C,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,EACxC,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAEvC,iEAAiE;IACjE,IAAI,CAAC,KAAK,EAAE,CAAC;QACV,OAAO;YACJ,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;YACjC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;YACpB,QAAQ,EAAE,SAAS;YACnB,MAAM;SACR,CAAC;IACL,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,EACtB,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAEtB,+DAA+D;IAC/D,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC;QACxB,OAAO;YACJ,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;YACjC,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YACzB,QAAQ,EAAE,SAAS;YACnB,MAAM;SACR,CAAC;IACL,CAAC;IAED,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,CAAY,EAClD,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC,cAAc,CAAC,EACrD,WAAW,GAAqB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAE7F,OAAO;QACJ,WAAW;QACX,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QACzB,QAAQ,EAAE,SAAS;QACnB,MAAM;KACR,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../src/skills/resolvers/git.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../src/skills/resolvers/git.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAsClE"}
|
|
@@ -9,15 +9,23 @@ import { parseSkillMd } from '../parser.js';
|
|
|
9
9
|
export async function resolveGit(ref) {
|
|
10
10
|
const cacheKey = createCacheKey(ref), cachePath = join(tmpdir(), 'aix-skills', 'git', cacheKey);
|
|
11
11
|
// Build giget source string
|
|
12
|
-
// giget supports: gh:user/repo, gitlab:user/repo, https://...
|
|
12
|
+
// giget supports: gh:user/repo, gitlab:user/repo, bitbucket:user/repo, https://...
|
|
13
13
|
let source = ref.url;
|
|
14
|
-
// Convert
|
|
14
|
+
// Convert various URL formats to giget format
|
|
15
15
|
if (source.startsWith('https://github.com/')) {
|
|
16
16
|
source = source.replace('https://github.com/', 'gh:');
|
|
17
17
|
}
|
|
18
18
|
else if (source.startsWith('https://gitlab.com/')) {
|
|
19
19
|
source = source.replace('https://gitlab.com/', 'gitlab:');
|
|
20
20
|
}
|
|
21
|
+
else if (source.startsWith('https://bitbucket.org/')) {
|
|
22
|
+
source = source.replace('https://bitbucket.org/', 'bitbucket:');
|
|
23
|
+
}
|
|
24
|
+
else if (source.startsWith('github:')) {
|
|
25
|
+
// Convert our shorthand to giget's format
|
|
26
|
+
source = source.replace('github:', 'gh:');
|
|
27
|
+
}
|
|
28
|
+
// gitlab: and bitbucket: are already in giget format
|
|
21
29
|
// Add subdirectory path if specified
|
|
22
30
|
if (ref.path) {
|
|
23
31
|
source = `${source}/${ref.path}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/skills/resolvers/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAI5C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW;IACzC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,EAC9B,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAEhE,4BAA4B;IAC5B,
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/skills/resolvers/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAI5C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW;IACzC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,EAC9B,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAEhE,4BAA4B;IAC5B,mFAAmF;IACnF,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC;IAErB,8CAA8C;IAC9C,IAAI,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAC5C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;SAAM,IAAI,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACnD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;SAAM,IAAI,MAAM,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAAE,CAAC;QACtD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;IACnE,CAAC;SAAM,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACvC,0CAA0C;QAC1C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IACD,qDAAqD;IAErD,qCAAqC;IACrC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,2CAA2C;IAC3C,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;IACnC,CAAC;IAED,uBAAuB;IACvB,MAAM,gBAAgB,CAAC,MAAM,EAAE;QAC5B,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,IAAI;KACb,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,GAAW;IAChC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EACjE,OAAO,GAAG,GAAG,CAAC,GAAG,IAAI,SAAS,EAC9B,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpE,OAAO,GAAG,OAAO,IAAI,OAAO,GAAG,QAAQ,EAAE,CAAC;AAC7C,CAAC"}
|
package/dist/skills/validate.js
CHANGED
|
@@ -31,7 +31,7 @@ export async function validateSkill(skill) {
|
|
|
31
31
|
}));
|
|
32
32
|
errors.push(...accessResults.filter((e) => e !== null));
|
|
33
33
|
// Check description quality
|
|
34
|
-
if (skill.frontmatter.description.length < 50) {
|
|
34
|
+
if (skill.frontmatter.description && skill.frontmatter.description.length < 50) {
|
|
35
35
|
warnings.push('Description is short - consider adding more detail for better AI discovery');
|
|
36
36
|
}
|
|
37
37
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/skills/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AASvC,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAkB;IACnD,MAAM,MAAM,GAAa,EAAE,EACrB,QAAQ,GAAa,EAAE,CAAC;IAE9B,wEAAwE;IACxE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAErD,IAAI,CAAC;QACF,MAAM,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACrC,CAAC;IAED,sDAAsD;IACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEzC,IAAI,OAAO,IAAI,OAAO,KAAK,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACjD,QAAQ,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,WAAW,CAAC,IAAI,oCAAoC,OAAO,GAAG,CAAC,CAAC;IACtG,CAAC;IAED,8CAA8C;IAC9C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EACrC,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAChE,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC3B,IAAI,CAAC;YACF,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACN,OAAO,iBAAiB,GAAG,aAAa,CAAC;QAC5C,CAAC;IACJ,CAAC,CAAC,CACJ,CAAC;IAER,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IAErE,4BAA4B;IAC5B,IAAI,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/skills/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AASvC,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAkB;IACnD,MAAM,MAAM,GAAa,EAAE,EACrB,QAAQ,GAAa,EAAE,CAAC;IAE9B,wEAAwE;IACxE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAErD,IAAI,CAAC;QACF,MAAM,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACrC,CAAC;IAED,sDAAsD;IACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEzC,IAAI,OAAO,IAAI,OAAO,KAAK,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACjD,QAAQ,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,WAAW,CAAC,IAAI,oCAAoC,OAAO,GAAG,CAAC,CAAC;IACtG,CAAC;IAED,8CAA8C;IAC9C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EACrC,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAChE,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC3B,IAAI,CAAC;YACF,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACN,OAAO,iBAAiB,GAAG,aAAa,CAAC;QAC5C,CAAC;IACJ,CAAC,CAAC,CACJ,CAAC;IAER,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IAErE,4BAA4B;IAC5B,IAAI,KAAK,CAAC,WAAW,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC9E,QAAQ,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;IAC/F,CAAC;IAED,OAAO;QACJ,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM;QACN,QAAQ;KACV,CAAC;AACL,CAAC"}
|
package/dist/updater.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updater.d.ts","sourceRoot":"","sources":["../src/updater.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"updater.d.ts","sourceRoot":"","sources":["../src/updater.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOpF,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,YAAY,KAAK,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAC3F,MAAM,MAAM,kBAAkB,GAAG,CAC9B,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,KAC3B,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC3B,sDAAsD;IACtD,MAAM,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,YAAY,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE,aAAkB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE,aAAkB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAyCf;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAU7D"}
|
package/dist/updater.js
CHANGED
|
@@ -3,30 +3,23 @@ import { existsSync } from 'node:fs';
|
|
|
3
3
|
import { resolve, dirname, join } from 'pathe';
|
|
4
4
|
import detectIndent from 'detect-indent';
|
|
5
5
|
import { parseConfig, parseLocalConfig } from '@a1st/aix-schema';
|
|
6
|
-
import { loadConfig } from './loader.js';
|
|
7
6
|
import { parseConfigContent } from './discovery.js';
|
|
8
7
|
import { createBackup } from './backup.js';
|
|
9
|
-
import { ConfigNotFoundError
|
|
8
|
+
import { ConfigNotFoundError } from './errors.js';
|
|
10
9
|
const DEFAULT_INDENT = 2;
|
|
11
10
|
export async function updateConfig(configPath, updater, options = {}) {
|
|
12
11
|
const { backup = true } = options, absolutePath = resolve(configPath);
|
|
13
12
|
if (!existsSync(absolutePath)) {
|
|
14
13
|
throw new ConfigNotFoundError(absolutePath);
|
|
15
14
|
}
|
|
16
|
-
const loaded = await loadConfig(absolutePath);
|
|
17
|
-
if (!loaded) {
|
|
18
|
-
throw new ConfigNotFoundError(absolutePath);
|
|
19
|
-
}
|
|
20
|
-
// Prevent overwriting package.json when config is embedded in it
|
|
21
|
-
if (loaded.source === 'package.json') {
|
|
22
|
-
throw new EmbeddedConfigUpdateError(absolutePath);
|
|
23
|
-
}
|
|
24
15
|
// Create backup before modifying (per QA spec)
|
|
25
16
|
if (backup) {
|
|
26
17
|
await createBackup(absolutePath);
|
|
27
18
|
}
|
|
28
|
-
//
|
|
29
|
-
|
|
19
|
+
// Read and parse the raw file content WITHOUT resolving extends. This preserves the original
|
|
20
|
+
// structure including extends and relative paths, which is critical for config files that
|
|
21
|
+
// inherit from remote sources.
|
|
22
|
+
const existingContent = await readFile(absolutePath, 'utf-8'), indent = detectIndent(existingContent).indent || DEFAULT_INDENT, rawConfig = parseConfigContent(existingContent), updated = await updater(rawConfig), validated = parseConfig(updated),
|
|
30
23
|
// Use unique temp file name to avoid collisions (pid + timestamp)
|
|
31
24
|
tempPath = `${absolutePath}.${process.pid}.${Date.now()}.tmp`;
|
|
32
25
|
try {
|
package/dist/updater.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updater.js","sourceRoot":"","sources":["../src/updater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAqB,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"updater.js","sourceRoot":"","sources":["../src/updater.ts"],"names":[],"mappings":"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"}
|
package/dist/url-parsing.d.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Shared URL parsing utilities for Git host URLs and source references.
|
|
3
3
|
* Used by CLI commands and core reference parsers.
|
|
4
4
|
*/
|
|
5
|
+
export { type SourceType, detectSourceType, isLocalPath } from '@a1st/aix-schema';
|
|
5
6
|
export interface GitHubRepoUrl {
|
|
6
7
|
owner: string;
|
|
7
8
|
repo: string;
|
|
@@ -73,10 +74,6 @@ export declare function parseBitbucketBlobUrl(url: string): BitbucketBlobUrl | u
|
|
|
73
74
|
* Parse git shorthand format: `github:user/repo/path#ref`, `gitlab:user/repo/path#ref`, or `bitbucket:user/repo/path#ref`
|
|
74
75
|
*/
|
|
75
76
|
export declare function parseGitShorthand(input: string): GitShorthand | undefined;
|
|
76
|
-
/**
|
|
77
|
-
* Check if a source string represents a local file path.
|
|
78
|
-
*/
|
|
79
|
-
export declare function isLocalPath(source: string): boolean;
|
|
80
77
|
/**
|
|
81
78
|
* Check if a source string is a generic git URL (https, git@, git://).
|
|
82
79
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-parsing.d.ts","sourceRoot":"","sources":["../src/url-parsing.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"url-parsing.d.ts","sourceRoot":"","sources":["../src/url-parsing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,KAAK,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAElF,MAAM,WAAW,aAAa;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC1B,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CASzE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CASzE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CASzE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CASzE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CASzE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAS/E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAyBzE;AAGD;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAgBzF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAElE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC7B,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,EAC3C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACZ,MAAM,CAKR;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAO/D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAO/D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOlE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAoBvD"}
|
package/dist/url-parsing.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* Shared URL parsing utilities for Git host URLs and source references.
|
|
3
3
|
* Used by CLI commands and core reference parsers.
|
|
4
4
|
*/
|
|
5
|
+
// Re-export SourceType and detectSourceType from schema (the single source of truth)
|
|
6
|
+
export { detectSourceType, isLocalPath } from '@a1st/aix-schema';
|
|
5
7
|
/**
|
|
6
8
|
* Parse a GitHub web URL for a repo root (no blob/tree path):
|
|
7
9
|
* `https://github.com/org/repo` or `https://github.com/org/repo/`
|
|
@@ -95,12 +97,6 @@ export function parseGitShorthand(input) {
|
|
|
95
97
|
ref,
|
|
96
98
|
};
|
|
97
99
|
}
|
|
98
|
-
/**
|
|
99
|
-
* Check if a source string represents a local file path.
|
|
100
|
-
*/
|
|
101
|
-
export function isLocalPath(source) {
|
|
102
|
-
return source.startsWith('./') || source.startsWith('../') || source.startsWith('/');
|
|
103
|
-
}
|
|
104
100
|
/**
|
|
105
101
|
* Check if a source string is a generic git URL (https, git@, git://).
|
|
106
102
|
*/
|
package/dist/url-parsing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-parsing.js","sourceRoot":"","sources":["../src/url-parsing.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"url-parsing.js","sourceRoot":"","sources":["../src/url-parsing.ts"],"names":[],"mappings":"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"}
|