@a16njs/engine 0.7.0 → 0.8.1
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/dist/path-rewriter.d.ts +43 -8
- package/dist/path-rewriter.d.ts.map +1 -1
- package/dist/path-rewriter.js +163 -39
- package/dist/path-rewriter.js.map +1 -1
- package/dist/transformation.d.ts.map +1 -1
- package/dist/transformation.js +6 -2
- package/dist/transformation.js.map +1 -1
- package/package.json +7 -7
package/dist/path-rewriter.d.ts
CHANGED
|
@@ -5,6 +5,15 @@ import type { WrittenFile } from '@a16njs/models';
|
|
|
5
5
|
* Used to rewrite path references in content during format conversion.
|
|
6
6
|
*/
|
|
7
7
|
export type PathMapping = Map<string, string>;
|
|
8
|
+
/**
|
|
9
|
+
* Result of building a source-to-target path mapping.
|
|
10
|
+
*/
|
|
11
|
+
export interface BuildMappingResult {
|
|
12
|
+
/** The computed path mapping */
|
|
13
|
+
mapping: PathMapping;
|
|
14
|
+
/** Warnings produced during mapping construction (e.g., ambiguous collisions) */
|
|
15
|
+
warnings: Warning[];
|
|
16
|
+
}
|
|
8
17
|
/**
|
|
9
18
|
* Result of a path rewriting operation.
|
|
10
19
|
*/
|
|
@@ -19,20 +28,31 @@ export interface RewriteResult {
|
|
|
19
28
|
*
|
|
20
29
|
* Given the discovered items (with sourcePaths relative to sourceRoot)
|
|
21
30
|
* and the written files (with absolute paths under targetRoot), produces
|
|
22
|
-
* a Map where keys are source-relative paths and values are target-relative
|
|
31
|
+
* a Map where keys are source-relative paths and values are target-relative
|
|
32
|
+
* paths, along with any warnings produced during construction.
|
|
23
33
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
34
|
+
* Per-WrittenFile source-path derivation:
|
|
35
|
+
* - If `file.sourcePaths` is set and non-empty, those explicit paths are used
|
|
36
|
+
* (and `sourceItems[*].sourcePath` is NOT added as a mapping key for that
|
|
37
|
+
* file). This is the correct behaviour for outputs that represent source
|
|
38
|
+
* paths which are not first-class `AgentCustomization`s — e.g., AgentSkillIO
|
|
39
|
+
* resource files whose underlying `sourceItems` points at the skill's
|
|
40
|
+
* SKILL.md rather than at the resource file itself.
|
|
41
|
+
* - Otherwise, falls back to `sourceItems[*].sourcePath` (legacy behaviour,
|
|
42
|
+
* used by every plugin that doesn't populate `sourcePaths`).
|
|
28
43
|
*
|
|
29
|
-
*
|
|
44
|
+
* Collision detection: if two WrittenFiles derive the same source-path key
|
|
45
|
+
* but map to DIFFERENT target paths, an `Approximated` warning is emitted
|
|
46
|
+
* and last-writer-wins for the mapping itself (historical behaviour).
|
|
47
|
+
* Same-target duplicates are silently idempotent.
|
|
48
|
+
*
|
|
49
|
+
* @param _discovered - Items discovered from the source plugin (unused directly; mapping comes from written)
|
|
30
50
|
* @param written - Files written (or planned) by the target plugin
|
|
31
51
|
* @param _sourceRoot - Root directory used for discovery (unused; sourcePaths are already relative)
|
|
32
52
|
* @param targetRoot - Root directory used for emission
|
|
33
|
-
* @returns
|
|
53
|
+
* @returns `{ mapping, warnings }` — source-to-target map and any collision warnings
|
|
34
54
|
*/
|
|
35
|
-
export declare function buildMapping(_discovered: AgentCustomization[], written: WrittenFile[], _sourceRoot: string, targetRoot: string):
|
|
55
|
+
export declare function buildMapping(_discovered: AgentCustomization[], written: WrittenFile[], _sourceRoot: string, targetRoot: string): BuildMappingResult;
|
|
36
56
|
/**
|
|
37
57
|
* Rewrite file path references in item content.
|
|
38
58
|
*
|
|
@@ -41,6 +61,12 @@ export declare function buildMapping(_discovered: AgentCustomization[], written:
|
|
|
41
61
|
* longest-first to prevent partial match corruption (e.g., replacing
|
|
42
62
|
* "foo/bar.mdc.bak" before "foo/bar.mdc").
|
|
43
63
|
*
|
|
64
|
+
* For `AgentSkillIO` items this ALSO rewrites content inside the `files` map
|
|
65
|
+
* for entries whose key sits under a spec-designated text subtree (`scripts/`
|
|
66
|
+
* or `references/`). Entries under `assets/` and any other subtree are NOT
|
|
67
|
+
* rewritten (they may be binary or contain placeholder strings). See
|
|
68
|
+
* `isRewritableSkillResource`.
|
|
69
|
+
*
|
|
44
70
|
* Items are cloned before modification; originals are not mutated.
|
|
45
71
|
*
|
|
46
72
|
* @param items - The items whose content should be rewritten
|
|
@@ -56,6 +82,15 @@ export declare function rewriteContent(items: AgentCustomization[], mapping: Pat
|
|
|
56
82
|
* and file extensions) but is NOT present in the mapping (i.e., it
|
|
57
83
|
* wasn't converted).
|
|
58
84
|
*
|
|
85
|
+
* For `AgentSkillIO` items this ALSO scans ride-along files under the two
|
|
86
|
+
* spec-designated text subtrees (`scripts/` and `references/`) using the same
|
|
87
|
+
* rules. `assets/` and unknown subtrees are intentionally skipped — rewriting
|
|
88
|
+
* their content is out of scope, so flagging orphans there would be a false
|
|
89
|
+
* positive (a placeholder string in a template is not an "orphan", it's
|
|
90
|
+
* intentional content). Skill-level attribution (via `item.sourcePath`) is
|
|
91
|
+
* used for orphans found inside ride-along files; per-file attribution is
|
|
92
|
+
* not currently plumbed.
|
|
93
|
+
*
|
|
59
94
|
* @param items - The items to scan for orphan references
|
|
60
95
|
* @param mapping - The source-to-target path mapping
|
|
61
96
|
* @param sourcePluginPrefixes - Known directory prefixes for the source format
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-rewriter.d.ts","sourceRoot":"","sources":["../src/path-rewriter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,kDAAkD;IAClD,gBAAgB,EAAE,MAAM,CAAC;CAC1B;
|
|
1
|
+
{"version":3,"file":"path-rewriter.d.ts","sourceRoot":"","sources":["../src/path-rewriter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,gCAAgC;IAChC,OAAO,EAAE,WAAW,CAAC;IACrB,iFAAiF;IACjF,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,kDAAkD;IAClD,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAyBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,YAAY,CAC1B,WAAW,EAAE,kBAAkB,EAAE,EACjC,OAAO,EAAE,WAAW,EAAE,EACtB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,kBAAkB,CAiDpB;AAoCD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,kBAAkB,EAAE,EAC3B,OAAO,EAAE,WAAW,GACnB,aAAa,CAiDf;AASD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,kBAAkB,EAAE,EAC3B,OAAO,EAAE,WAAW,EACpB,oBAAoB,EAAE,MAAM,EAAE,EAC9B,gBAAgB,EAAE,MAAM,EAAE,GACzB,OAAO,EAAE,CAmDX"}
|
package/dist/path-rewriter.js
CHANGED
|
@@ -1,40 +1,133 @@
|
|
|
1
1
|
import * as path from 'path';
|
|
2
|
-
import { WarningCode } from '@a16njs/models';
|
|
2
|
+
import { WarningCode, isAgentSkillIO } from '@a16njs/models';
|
|
3
|
+
/**
|
|
4
|
+
* Per the AgentSkills.io specification (§Optional directories), a skill
|
|
5
|
+
* directory may contain ride-along files under a few conventional subtrees:
|
|
6
|
+
*
|
|
7
|
+
* - `scripts/` — executable code (shell, python, etc.); text by convention.
|
|
8
|
+
* - `references/` — additional documentation (markdown); text by convention.
|
|
9
|
+
* - `assets/` — templates, images, data files; may be binary or contain
|
|
10
|
+
* intentional placeholder strings that must NOT be rewritten.
|
|
11
|
+
* - Any other directory — freeform, not guaranteed to be text.
|
|
12
|
+
*
|
|
13
|
+
* Content rewriting (and orphan scanning) of ride-along files is bounded to
|
|
14
|
+
* the two spec-designated text subtrees (`scripts/` and `references/`) so we
|
|
15
|
+
* do not corrupt binary/placeholder content in `assets/` or unknown subtrees.
|
|
16
|
+
*
|
|
17
|
+
* See https://agentskills.io/specification#optional-directories
|
|
18
|
+
*
|
|
19
|
+
* Kept private to this module; promote to `@a16njs/models` only if a second
|
|
20
|
+
* caller appears.
|
|
21
|
+
*/
|
|
22
|
+
function isRewritableSkillResource(key) {
|
|
23
|
+
return key.startsWith('scripts/') || key.startsWith('references/');
|
|
24
|
+
}
|
|
3
25
|
/**
|
|
4
26
|
* Build a mapping from source-relative paths to target-relative paths.
|
|
5
27
|
*
|
|
6
28
|
* Given the discovered items (with sourcePaths relative to sourceRoot)
|
|
7
29
|
* and the written files (with absolute paths under targetRoot), produces
|
|
8
|
-
* a Map where keys are source-relative paths and values are target-relative
|
|
30
|
+
* a Map where keys are source-relative paths and values are target-relative
|
|
31
|
+
* paths, along with any warnings produced during construction.
|
|
9
32
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
33
|
+
* Per-WrittenFile source-path derivation:
|
|
34
|
+
* - If `file.sourcePaths` is set and non-empty, those explicit paths are used
|
|
35
|
+
* (and `sourceItems[*].sourcePath` is NOT added as a mapping key for that
|
|
36
|
+
* file). This is the correct behaviour for outputs that represent source
|
|
37
|
+
* paths which are not first-class `AgentCustomization`s — e.g., AgentSkillIO
|
|
38
|
+
* resource files whose underlying `sourceItems` points at the skill's
|
|
39
|
+
* SKILL.md rather than at the resource file itself.
|
|
40
|
+
* - Otherwise, falls back to `sourceItems[*].sourcePath` (legacy behaviour,
|
|
41
|
+
* used by every plugin that doesn't populate `sourcePaths`).
|
|
14
42
|
*
|
|
15
|
-
*
|
|
43
|
+
* Collision detection: if two WrittenFiles derive the same source-path key
|
|
44
|
+
* but map to DIFFERENT target paths, an `Approximated` warning is emitted
|
|
45
|
+
* and last-writer-wins for the mapping itself (historical behaviour).
|
|
46
|
+
* Same-target duplicates are silently idempotent.
|
|
47
|
+
*
|
|
48
|
+
* @param _discovered - Items discovered from the source plugin (unused directly; mapping comes from written)
|
|
16
49
|
* @param written - Files written (or planned) by the target plugin
|
|
17
50
|
* @param _sourceRoot - Root directory used for discovery (unused; sourcePaths are already relative)
|
|
18
51
|
* @param targetRoot - Root directory used for emission
|
|
19
|
-
* @returns
|
|
52
|
+
* @returns `{ mapping, warnings }` — source-to-target map and any collision warnings
|
|
20
53
|
*/
|
|
21
54
|
export function buildMapping(_discovered, written, _sourceRoot, targetRoot) {
|
|
22
55
|
const mapping = new Map();
|
|
56
|
+
const warnings = [];
|
|
23
57
|
for (const file of written) {
|
|
24
58
|
// Compute target-relative path using POSIX separators for consistency
|
|
25
59
|
const targetRelative = path.relative(targetRoot, file.path).split(path.sep).join('/');
|
|
26
|
-
//
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
60
|
+
// Prefer explicit sourcePaths when populated; otherwise fall back to
|
|
61
|
+
// sourceItems[*].sourcePath (legacy behaviour). Explicit sourcePaths
|
|
62
|
+
// REPLACE the sourceItems-based derivation for this file (see JSDoc).
|
|
63
|
+
//
|
|
64
|
+
// Empty-string entries are filtered from BOTH branches: an empty mapping
|
|
65
|
+
// key would hang `applyMapping`, since `indexOf('')` always returns 0 and
|
|
66
|
+
// `idx += 0` never advances. The fallback branch has always filtered
|
|
67
|
+
// falsy values; mirror that defence in the explicit branch since
|
|
68
|
+
// `WrittenFile.sourcePaths` is part of `@a16njs/models`'s public API and
|
|
69
|
+
// a third-party plugin could populate it with ''.
|
|
70
|
+
let sourcePathCandidates;
|
|
71
|
+
if (file.sourcePaths && file.sourcePaths.length > 0) {
|
|
72
|
+
sourcePathCandidates = file.sourcePaths.filter((p) => p.length > 0);
|
|
73
|
+
}
|
|
74
|
+
else if (file.sourceItems) {
|
|
75
|
+
sourcePathCandidates = file.sourceItems
|
|
76
|
+
.map((s) => s.sourcePath)
|
|
77
|
+
.filter((p) => Boolean(p));
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
sourcePathCandidates = [];
|
|
81
|
+
}
|
|
82
|
+
for (const rawSourcePath of sourcePathCandidates) {
|
|
83
|
+
const normalized = rawSourcePath.split(path.sep).join('/');
|
|
84
|
+
const existing = mapping.get(normalized);
|
|
85
|
+
if (existing !== undefined && existing !== targetRelative) {
|
|
86
|
+
warnings.push({
|
|
87
|
+
code: WarningCode.Approximated,
|
|
88
|
+
message: `Ambiguous path mapping: '${normalized}' maps to both ` +
|
|
89
|
+
`'${existing}' and '${targetRelative}'. The plugin emitting ` +
|
|
90
|
+
`these WrittenFiles should populate 'sourcePaths' explicitly ` +
|
|
91
|
+
`to disambiguate.`,
|
|
92
|
+
sources: [normalized],
|
|
93
|
+
});
|
|
34
94
|
}
|
|
95
|
+
// Last-writer-wins for mapping (preserves historical behaviour)
|
|
96
|
+
mapping.set(normalized, targetRelative);
|
|
35
97
|
}
|
|
36
98
|
}
|
|
37
|
-
return mapping;
|
|
99
|
+
return { mapping, warnings };
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Apply a path mapping to a single string, returning the rewritten string
|
|
103
|
+
* and the count of replacements made.
|
|
104
|
+
*
|
|
105
|
+
* `sortedEntries` must be pre-sorted longest-first to prevent partial-match
|
|
106
|
+
* corruption (e.g., replacing "foo/bar.mdc.bak" before "foo/bar.mdc").
|
|
107
|
+
*/
|
|
108
|
+
function applyMapping(content, sortedEntries) {
|
|
109
|
+
let current = content;
|
|
110
|
+
let replaced = 0;
|
|
111
|
+
for (const [sourcePath, targetPath] of sortedEntries) {
|
|
112
|
+
// Defence-in-depth against an empty key slipping past buildMapping:
|
|
113
|
+
// `indexOf('')` returns 0 and `idx += 0` never advances, producing an
|
|
114
|
+
// infinite loop. buildMapping filters empties at the boundary; this
|
|
115
|
+
// second guard means `applyMapping` is safe against any caller that
|
|
116
|
+
// constructs a mapping by hand.
|
|
117
|
+
if (sourcePath.length === 0)
|
|
118
|
+
continue;
|
|
119
|
+
let count = 0;
|
|
120
|
+
let idx = 0;
|
|
121
|
+
while ((idx = current.indexOf(sourcePath, idx)) !== -1) {
|
|
122
|
+
count++;
|
|
123
|
+
idx += sourcePath.length;
|
|
124
|
+
}
|
|
125
|
+
if (count > 0) {
|
|
126
|
+
current = current.split(sourcePath).join(targetPath);
|
|
127
|
+
replaced += count;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return { content: current, replaced };
|
|
38
131
|
}
|
|
39
132
|
/**
|
|
40
133
|
* Rewrite file path references in item content.
|
|
@@ -44,6 +137,12 @@ export function buildMapping(_discovered, written, _sourceRoot, targetRoot) {
|
|
|
44
137
|
* longest-first to prevent partial match corruption (e.g., replacing
|
|
45
138
|
* "foo/bar.mdc.bak" before "foo/bar.mdc").
|
|
46
139
|
*
|
|
140
|
+
* For `AgentSkillIO` items this ALSO rewrites content inside the `files` map
|
|
141
|
+
* for entries whose key sits under a spec-designated text subtree (`scripts/`
|
|
142
|
+
* or `references/`). Entries under `assets/` and any other subtree are NOT
|
|
143
|
+
* rewritten (they may be binary or contain placeholder strings). See
|
|
144
|
+
* `isRewritableSkillResource`.
|
|
145
|
+
*
|
|
47
146
|
* Items are cloned before modification; originals are not mutated.
|
|
48
147
|
*
|
|
49
148
|
* @param items - The items whose content should be rewritten
|
|
@@ -62,27 +161,29 @@ export function rewriteContent(items, mapping) {
|
|
|
62
161
|
const sortedEntries = Array.from(mapping.entries()).sort((a, b) => b[0].length - a[0].length);
|
|
63
162
|
let totalReplacements = 0;
|
|
64
163
|
const rewrittenItems = items.map((item) => {
|
|
65
|
-
//
|
|
164
|
+
// Shallow clone — we only mutate content and files on the clone.
|
|
66
165
|
const clone = { ...item };
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
//
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
166
|
+
const bodyResult = applyMapping(clone.content, sortedEntries);
|
|
167
|
+
clone.content = bodyResult.content;
|
|
168
|
+
totalReplacements += bodyResult.replaced;
|
|
169
|
+
// AgentSkillIO ride-along files under scripts/ and references/:
|
|
170
|
+
// clone the files map so originals are never mutated, and rewrite
|
|
171
|
+
// eligible entries.
|
|
172
|
+
if (isAgentSkillIO(clone)) {
|
|
173
|
+
const originalFiles = clone.files ?? {};
|
|
174
|
+
const newFiles = {};
|
|
175
|
+
for (const [key, value] of Object.entries(originalFiles)) {
|
|
176
|
+
if (isRewritableSkillResource(key)) {
|
|
177
|
+
const fileResult = applyMapping(value, sortedEntries);
|
|
178
|
+
newFiles[key] = fileResult.content;
|
|
179
|
+
totalReplacements += fileResult.replaced;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
newFiles[key] = value;
|
|
183
|
+
}
|
|
83
184
|
}
|
|
185
|
+
clone.files = newFiles;
|
|
84
186
|
}
|
|
85
|
-
clone.content = content;
|
|
86
187
|
return clone;
|
|
87
188
|
});
|
|
88
189
|
return {
|
|
@@ -104,6 +205,15 @@ function escapeRegExp(str) {
|
|
|
104
205
|
* and file extensions) but is NOT present in the mapping (i.e., it
|
|
105
206
|
* wasn't converted).
|
|
106
207
|
*
|
|
208
|
+
* For `AgentSkillIO` items this ALSO scans ride-along files under the two
|
|
209
|
+
* spec-designated text subtrees (`scripts/` and `references/`) using the same
|
|
210
|
+
* rules. `assets/` and unknown subtrees are intentionally skipped — rewriting
|
|
211
|
+
* their content is out of scope, so flagging orphans there would be a false
|
|
212
|
+
* positive (a placeholder string in a template is not an "orphan", it's
|
|
213
|
+
* intentional content). Skill-level attribution (via `item.sourcePath`) is
|
|
214
|
+
* used for orphans found inside ride-along files; per-file attribution is
|
|
215
|
+
* not currently plumbed.
|
|
216
|
+
*
|
|
107
217
|
* @param items - The items to scan for orphan references
|
|
108
218
|
* @param mapping - The source-to-target path mapping
|
|
109
219
|
* @param sourcePluginPrefixes - Known directory prefixes for the source format
|
|
@@ -124,20 +234,34 @@ export function detectOrphans(items, mapping, sourcePluginPrefixes, sourceExtens
|
|
|
124
234
|
const escapedPrefixes = sourcePluginPrefixes.map(escapeRegExp).join('|');
|
|
125
235
|
const escapedExtensions = sourceExtensions.map(escapeRegExp).join('|');
|
|
126
236
|
const pattern = new RegExp(`(?:${escapedPrefixes})[^\\s)\\]}>,"']+(?:${escapedExtensions})`, 'g');
|
|
127
|
-
|
|
128
|
-
const matches =
|
|
237
|
+
const scanString = (content, attributionSource) => {
|
|
238
|
+
const matches = content.matchAll(pattern);
|
|
129
239
|
for (const match of matches) {
|
|
130
240
|
const foundPath = match[0];
|
|
131
|
-
const key = `${
|
|
241
|
+
const key = `${attributionSource ?? ''}::${foundPath}`;
|
|
132
242
|
if (!mappedPaths.has(foundPath) && !seen.has(key)) {
|
|
133
243
|
seen.add(key);
|
|
134
244
|
warnings.push({
|
|
135
245
|
code: WarningCode.OrphanPathRef,
|
|
136
246
|
message: `Orphan path reference: '${foundPath}' is not in the conversion set`,
|
|
137
|
-
sources:
|
|
247
|
+
sources: attributionSource ? [attributionSource] : undefined,
|
|
138
248
|
});
|
|
139
249
|
}
|
|
140
250
|
}
|
|
251
|
+
};
|
|
252
|
+
for (const item of items) {
|
|
253
|
+
scanString(item.content, item.sourcePath);
|
|
254
|
+
// AgentSkillIO ride-along files under scripts/ and references/:
|
|
255
|
+
// scan content for orphans. Skill-level attribution via item.sourcePath;
|
|
256
|
+
// per-file attribution is not plumbed today.
|
|
257
|
+
if (isAgentSkillIO(item)) {
|
|
258
|
+
const files = item.files ?? {};
|
|
259
|
+
for (const [key, value] of Object.entries(files)) {
|
|
260
|
+
if (isRewritableSkillResource(key)) {
|
|
261
|
+
scanString(value, item.sourcePath);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
141
265
|
}
|
|
142
266
|
return warnings;
|
|
143
267
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-rewriter.js","sourceRoot":"","sources":["../src/path-rewriter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"path-rewriter.js","sourceRoot":"","sources":["../src/path-rewriter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformation.d.ts","sourceRoot":"","sources":["../src/transformation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG1F;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,6BAA6B;IAC7B,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,wBAAwB;IACxB,YAAY,EAAE,UAAU,CAAC;IACzB,wBAAwB;IACxB,YAAY,EAAE,UAAU,CAAC;IACzB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,SAAS,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CACjE;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,4BAA4B;IAC5B,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,qBAAqB;IACpC,gDAAgD;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAC1E;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,2BAA4B,YAAW,qBAAqB;IACvE,QAAQ,CAAC,EAAE,oBAAoB;IAC/B,QAAQ,CAAC,IAAI,8BAA8B;IAErC,SAAS,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"transformation.d.ts","sourceRoot":"","sources":["../src/transformation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG1F;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,6BAA6B;IAC7B,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,wBAAwB;IACxB,YAAY,EAAE,UAAU,CAAC;IACzB,wBAAwB;IACxB,YAAY,EAAE,UAAU,CAAC;IACzB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,SAAS,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CACjE;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,4BAA4B;IAC5B,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,qBAAqB;IACpC,gDAAgD;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAC1E;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,2BAA4B,YAAW,qBAAqB;IACvE,QAAQ,CAAC,EAAE,oBAAoB;IAC/B,QAAQ,CAAC,IAAI,8BAA8B;IAErC,SAAS,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA8C/E"}
|
package/dist/transformation.js
CHANGED
|
@@ -37,8 +37,12 @@ export class PathRewritingTransformation {
|
|
|
37
37
|
warnings,
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
|
-
// Build mapping from source paths to target paths
|
|
41
|
-
|
|
40
|
+
// Build mapping from source paths to target paths. Any collision
|
|
41
|
+
// warnings emitted during mapping construction (ambiguous source-path
|
|
42
|
+
// keys mapping to different targets) are merged into the conversion
|
|
43
|
+
// result warnings so the operator sees them.
|
|
44
|
+
const { mapping, warnings: mappingWarnings } = buildMapping(context.items, trialResult.written, context.sourceRoot, context.targetRoot);
|
|
45
|
+
warnings.push(...mappingWarnings);
|
|
42
46
|
// Rewrite path references in content
|
|
43
47
|
const rewriteResult = rewriteContent(context.items, mapping);
|
|
44
48
|
// Detect orphan references using plugin-provided path patterns
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformation.js","sourceRoot":"","sources":["../src/transformation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAmEjF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,2BAA2B;IAC7B,EAAE,GAAG,gBAAgB,CAAC;IACtB,IAAI,GAAG,0BAA0B,CAAC;IAE3C,KAAK,CAAC,SAAS,CAAC,OAA8B;QAC5C,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,0CAA0C;QAC1C,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE3D,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,+DAA+D;YAC/D,OAAO;gBACL,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;gBACjD,QAAQ;aACT,CAAC;QACJ,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"transformation.js","sourceRoot":"","sources":["../src/transformation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAmEjF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,2BAA2B;IAC7B,EAAE,GAAG,gBAAgB,CAAC;IACtB,IAAI,GAAG,0BAA0B,CAAC;IAE3C,KAAK,CAAC,SAAS,CAAC,OAA8B;QAC5C,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,0CAA0C;QAC1C,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE3D,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,+DAA+D;YAC/D,OAAO;gBACL,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;gBACjD,QAAQ;aACT,CAAC;QACJ,CAAC;QAED,iEAAiE;QACjE,sEAAsE;QACtE,oEAAoE;QACpE,6CAA6C;QAC7C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,YAAY,CACzD,OAAO,CAAC,KAAK,EACb,WAAW,CAAC,OAAO,EACnB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,UAAU,CACnB,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;QAElC,qCAAqC;QACrC,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE7D,+DAA+D;QAC/D,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC;QACnD,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/E,MAAM,cAAc,GAAG,aAAa,CAClC,aAAa,CAAC,KAAK,EACnB,OAAO,EACP,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,UAAU,CACpB,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;QACnC,CAAC;QAED,OAAO;YACL,KAAK,EAAE,aAAa,CAAC,KAAK;YAC1B,QAAQ;SACT,CAAC;IACJ,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@a16njs/engine",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"description": "Conversion engine for a16n",
|
|
5
5
|
"license": "AGPL-3.0",
|
|
6
6
|
"author": "Texarkanine",
|
|
@@ -31,14 +31,14 @@
|
|
|
31
31
|
"dist"
|
|
32
32
|
],
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@a16njs/models": "0.
|
|
34
|
+
"@a16njs/models": "0.14.1"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@types/node": "^
|
|
38
|
-
"typescript": "^
|
|
39
|
-
"vitest": "^2.
|
|
40
|
-
"@a16njs/plugin-cursor": "0.
|
|
41
|
-
"@a16njs/plugin-claude": "0.
|
|
37
|
+
"@types/node": "^25.9.3",
|
|
38
|
+
"typescript": "^6.0.3",
|
|
39
|
+
"vitest": "^3.2.6",
|
|
40
|
+
"@a16njs/plugin-cursor": "0.14.1",
|
|
41
|
+
"@a16njs/plugin-claude": "0.14.1"
|
|
42
42
|
},
|
|
43
43
|
"engines": {
|
|
44
44
|
"node": ">=22.0.0"
|