@event4u/agent-config 8.6.0 → 8.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +29 -0
- package/dist/agent-src/skills/skill-writing/SKILL.md +4 -0
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +3 -3
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +2 -2
- package/dist/discovery/trust-report.md +1 -1
- package/dist/discovery/workspaces.json +2 -2
- package/dist/install/emit_host_rules_cli.js +185 -0
- package/dist/install/emit_host_rules_cli.js.map +1 -0
- package/dist/install/install.mjs +6 -0
- package/dist/install/plan.js +4 -1
- package/dist/install/plan.js.map +1 -1
- package/dist/install/rule_scope.js +109 -0
- package/dist/install/rule_scope.js.map +1 -0
- package/dist/install/rule_scope_cli.js +77 -0
- package/dist/install/rule_scope_cli.js.map +1 -0
- package/dist/install/wizard-plan.js +14 -1
- package/dist/install/wizard-plan.js.map +1 -1
- package/dist/mcp/registry-manifest.json +1 -1
- package/dist/scripts/_lib/agent_settings.js +963 -0
- package/dist/scripts/_lib/agent_settings.js.map +1 -0
- package/dist/scripts/_lib/agent_src.js +607 -0
- package/dist/scripts/_lib/agent_src.js.map +1 -0
- package/dist/scripts/_lib/claude_settings_hooks.js +209 -0
- package/dist/scripts/_lib/claude_settings_hooks.js.map +1 -0
- package/dist/scripts/_lib/model_tier.js +64 -0
- package/dist/scripts/_lib/model_tier.js.map +1 -0
- package/dist/scripts/_lib/script_output.js +140 -0
- package/dist/scripts/_lib/script_output.js.map +1 -0
- package/dist/scripts/_lib/user_global_paths.js +297 -0
- package/dist/scripts/_lib/user_global_paths.js.map +1 -0
- package/dist/scripts/condense.js +2181 -0
- package/dist/scripts/condense.js.map +1 -0
- package/dist/server/routes/install.js +18 -2
- package/dist/server/routes/install.js.map +1 -1
- package/dist/server/schemas/settings.js +2 -0
- package/dist/server/schemas/settings.js.map +1 -1
- package/package.json +1 -1
- package/src/config/agent-settings.template.yml +4 -2
- package/src/install/emit_host_rules_cli.ts +190 -0
- package/src/install/plan.ts +11 -1
- package/src/install/rule_scope.ts +120 -0
- package/src/install/rule_scope_cli.ts +79 -0
- package/src/install/wizard-plan.ts +22 -1
- package/src/scripts/check_trigger_eval_presence.ts +171 -0
- package/src/scripts/install.sh +118 -4
- package/src/scripts/trigger_eval_grandfather.json +226 -0
- package/src/server/schemas/settings.ts +6 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent_settings.js","sourceRoot":"","sources":["../../../src/scripts/_lib/agent_settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,607 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locate artefact source roots across the monorepo physical layout.
|
|
3
|
+
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/_lib/agent_src.py` (ADR-200, Phase 2
|
|
5
|
+
* Wave 2a). The public API pins the historical contract exactly — same
|
|
6
|
+
* exported snake_case names, same root ordering, same logical-relpath
|
|
7
|
+
* computation, same first-win precedence when a logical path resolves
|
|
8
|
+
* across multiple roots, and the same error behaviour
|
|
9
|
+
* (`logical_relpath` throws when a path is under no known root; the
|
|
10
|
+
* collision guard in `_root_specs` throws on duplicate non-empty
|
|
11
|
+
* prefixes). Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
|
|
12
|
+
*
|
|
13
|
+
* Phase 4 of the monorepo migration (ADR-017) physically moves source
|
|
14
|
+
* artefacts out of the flat `.agent-src.uncondensed/` directory into
|
|
15
|
+
* `packages/core/.agent-src.uncondensed/` and
|
|
16
|
+
* `packages/pack-*\/.agent-src.uncondensed/` trees. This helper hides
|
|
17
|
+
* that decision from every scanner so they keep working pre-move and
|
|
18
|
+
* post-move with the same call shape.
|
|
19
|
+
*
|
|
20
|
+
* Contract:
|
|
21
|
+
*
|
|
22
|
+
* - `artefact_roots()` returns every directory that contains source
|
|
23
|
+
* `.md` artefacts. Pre-move that is `.agent-src.uncondensed/` at
|
|
24
|
+
* the repo root. Post-move it is every `packages/*\/.agent-src.uncondensed/`.
|
|
25
|
+
* Both can coexist during the migration window.
|
|
26
|
+
* - `iter_artefacts()` yields every source `.md` path under those roots.
|
|
27
|
+
* - `logical_relpath(p)` returns the artefact's stable identity path
|
|
28
|
+
* (e.g. `skills/laravel/SKILL.md`), independent of which physical
|
|
29
|
+
* root contains it. This is what manifests, hash maps, and projections
|
|
30
|
+
* use as the artefact key.
|
|
31
|
+
* - `strip_source_prefix(p)` returns the same as `logical_relpath`
|
|
32
|
+
* but accepts repo-relative POSIX strings (used by the condenseor's
|
|
33
|
+
* output-path computation and the LEGACY_SRC_PREFIX logic).
|
|
34
|
+
*
|
|
35
|
+
* Path handling note: the retired Python implementation uses `pathlib.Path` objects.
|
|
36
|
+
* This twin uses absolute POSIX path strings as the `Path` equivalent
|
|
37
|
+
* (the host filesystem on the supported platforms is POSIX). All public
|
|
38
|
+
* functions that the retired Python implementation typed as `Path` accept/return
|
|
39
|
+
* strings here; semantics — `.relative_to`, `.as_posix`, `.resolve`,
|
|
40
|
+
* `.rglob`, `.is_dir`, `.is_file`, `.exists` — are reproduced via the
|
|
41
|
+
* helpers below.
|
|
42
|
+
*/
|
|
43
|
+
import * as fs from 'node:fs';
|
|
44
|
+
import * as path from 'node:path';
|
|
45
|
+
import { fileURLToPath } from 'node:url';
|
|
46
|
+
// --- Path-root configuration (mutable to mirror Python module attributes) ----
|
|
47
|
+
//
|
|
48
|
+
// the retired Python implementation derives ROOT from `Path(__file__).resolve().parents[3]`
|
|
49
|
+
// and every other root from it as module-level constants. Tests in
|
|
50
|
+
// `tests/test_agent_src_domains.py` reassign `agent_src.SRC_DOMAINS` directly
|
|
51
|
+
// and clear `agent_src._slug_prefix_cache` to point the resolver at a tmp
|
|
52
|
+
// tree. To preserve that test-injection surface AND the constant-derivation
|
|
53
|
+
// fidelity, the roots live in a mutable config object whose getters the rest
|
|
54
|
+
// of the module reads through; tests mutate the same object.
|
|
55
|
+
const _HERE = path.dirname(fileURLToPath(import.meta.url));
|
|
56
|
+
// _HERE === <repo>/src/scripts/_lib ; parents[3] of the .py file (src/scripts/
|
|
57
|
+
// _lib/agent_src.py) is the repo root — three dirs up from _lib.
|
|
58
|
+
const _DEFAULT_ROOT = path.resolve(_HERE, '..', '..', '..');
|
|
59
|
+
function _deriveRoots(root) {
|
|
60
|
+
const packages = path.join(root, 'packages');
|
|
61
|
+
const src = path.join(root, 'src');
|
|
62
|
+
return {
|
|
63
|
+
ROOT: root,
|
|
64
|
+
LEGACY_SRC: path.join(root, '.agent-src.uncondensed'),
|
|
65
|
+
PACKAGES: packages,
|
|
66
|
+
PACKAGE_CORE: path.join(packages, 'core'),
|
|
67
|
+
SRC: src,
|
|
68
|
+
SRC_SKILLS: path.join(src, 'skills'),
|
|
69
|
+
SRC_RULES: path.join(src, 'rules'),
|
|
70
|
+
SRC_AGENT: path.join(src, 'agent-src'),
|
|
71
|
+
SRC_DOMAINS: path.join(src, 'domains'),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
const _roots = _deriveRoots(_DEFAULT_ROOT);
|
|
75
|
+
/**
|
|
76
|
+
* Test seam mirroring the Python tests' direct attribute reassignment
|
|
77
|
+
* (`agent_src.SRC_DOMAINS = tmp_path`). Reassigns the named roots and
|
|
78
|
+
* clears the slug-prefix cache (mirrors `_with_tmp_domains`). Pass a
|
|
79
|
+
* partial config; unspecified roots keep their current values. Not part
|
|
80
|
+
* of the Python surface — a TS-only injection point.
|
|
81
|
+
*/
|
|
82
|
+
export function _setRootsForTest(overrides) {
|
|
83
|
+
Object.assign(_roots, overrides);
|
|
84
|
+
_slug_prefix_cache.clear();
|
|
85
|
+
}
|
|
86
|
+
/** Snapshot the current root config (for save/restore in tests). */
|
|
87
|
+
export function _getRootsForTest() {
|
|
88
|
+
return { ..._roots };
|
|
89
|
+
}
|
|
90
|
+
// Read-only accessors mirroring the Python module-level constants. Functions,
|
|
91
|
+
// not `const`, because the underlying `_roots` is mutable per the test seam.
|
|
92
|
+
export const ROOT = () => _roots.ROOT;
|
|
93
|
+
export const LEGACY_SRC = () => _roots.LEGACY_SRC;
|
|
94
|
+
export const PACKAGES = () => _roots.PACKAGES;
|
|
95
|
+
export const PACKAGE_CORE = () => _roots.PACKAGE_CORE;
|
|
96
|
+
export const SRC = () => _roots.SRC;
|
|
97
|
+
export const SRC_SKILLS = () => _roots.SRC_SKILLS;
|
|
98
|
+
export const SRC_RULES = () => _roots.SRC_RULES;
|
|
99
|
+
export const SRC_AGENT = () => _roots.SRC_AGENT;
|
|
100
|
+
export const SRC_DOMAINS = () => _roots.SRC_DOMAINS;
|
|
101
|
+
const _SRC_DOMAINS_PREFIX = 'src/domains/';
|
|
102
|
+
// --- Filesystem helpers reproducing pathlib semantics ------------------------
|
|
103
|
+
function _isDir(p) {
|
|
104
|
+
try {
|
|
105
|
+
return fs.statSync(p).isDirectory();
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
function _isFile(p) {
|
|
112
|
+
try {
|
|
113
|
+
return fs.statSync(p).isFile();
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function _exists(p) {
|
|
120
|
+
try {
|
|
121
|
+
fs.statSync(p);
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/** Sorted immediate child directory entries (mirrors `sorted(p.iterdir())`). */
|
|
129
|
+
function _iterdirSorted(p) {
|
|
130
|
+
let names;
|
|
131
|
+
try {
|
|
132
|
+
names = fs.readdirSync(p);
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
return [];
|
|
136
|
+
}
|
|
137
|
+
// Python sorts Path objects by their full string form; for a flat listing
|
|
138
|
+
// that is equivalent to sorting the child basenames, which all share the
|
|
139
|
+
// same parent prefix. Sort basenames for the same order, return abs paths.
|
|
140
|
+
names.sort();
|
|
141
|
+
return names.map((name) => path.join(p, name));
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Mirror `root.rglob(pattern)` returning a SORTED list of absolute path
|
|
145
|
+
* strings. Python's `rglob` yields every descendant (files and dirs) whose
|
|
146
|
+
* name matches the glob; the callers here always sort the result, so this
|
|
147
|
+
* helper sorts by the same POSIX-string key Python uses.
|
|
148
|
+
*
|
|
149
|
+
* `pattern` is either `"*"` (everything) or `"*<suffix>"` / `"*.md"` style
|
|
150
|
+
* suffix glob; only those shapes are used by this module.
|
|
151
|
+
*/
|
|
152
|
+
function _rglobSorted(root, pattern) {
|
|
153
|
+
const out = [];
|
|
154
|
+
const suffix = pattern === '*' ? null : pattern.slice(1); // drop leading '*'
|
|
155
|
+
const walk = (dir) => {
|
|
156
|
+
let entries;
|
|
157
|
+
try {
|
|
158
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
for (const ent of entries) {
|
|
164
|
+
const full = path.join(dir, ent.name);
|
|
165
|
+
const matches = suffix === null ? true : ent.name.endsWith(suffix);
|
|
166
|
+
if (matches) {
|
|
167
|
+
out.push(full);
|
|
168
|
+
}
|
|
169
|
+
// Recurse into directories. `isDirectory()` on a Dirent does not
|
|
170
|
+
// follow symlinks; pathlib.rglob follows directory symlinks. Use a
|
|
171
|
+
// stat-based dir check to match Python's traversal, but guard
|
|
172
|
+
// against unreadable entries.
|
|
173
|
+
if (ent.isDirectory() || (ent.isSymbolicLink() && _isDir(full))) {
|
|
174
|
+
walk(full);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
walk(root);
|
|
179
|
+
// Sort by POSIX string (paths already use the platform separator; on POSIX
|
|
180
|
+
// hosts that equals the as_posix form Python sorts by).
|
|
181
|
+
out.sort();
|
|
182
|
+
return out;
|
|
183
|
+
}
|
|
184
|
+
/** POSIX relative path of `child` under `root` (mirrors `relative_to().as_posix()`). */
|
|
185
|
+
function _relativeToPosix(child, root) {
|
|
186
|
+
const rel = path.relative(root, child);
|
|
187
|
+
return rel.split(path.sep).join('/');
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* `true` when `child` is at or below `root` (mirrors `Path.relative_to` not
|
|
191
|
+
* raising). `path.relative` returns a `..`-leading or absolute path when
|
|
192
|
+
* `child` is outside `root`.
|
|
193
|
+
*/
|
|
194
|
+
function _isUnder(child, root) {
|
|
195
|
+
const rel = path.relative(root, child);
|
|
196
|
+
return rel !== '' && !rel.startsWith('..') && !path.isAbsolute(rel);
|
|
197
|
+
}
|
|
198
|
+
// --- src/domains command mapping ---------------------------------------------
|
|
199
|
+
/**
|
|
200
|
+
* Map a physical `src/domains` command file to its logical path.
|
|
201
|
+
*
|
|
202
|
+
* `src/domains/<pack>/<subpath...>/command.md` → `commands/<subpath...>.md`.
|
|
203
|
+
* Returns `null` for anything that is not a `command.md` leaf with at least
|
|
204
|
+
* one verb segment after the pack.
|
|
205
|
+
*
|
|
206
|
+
* Mirrors `_domains_command_logical`. `p` is an absolute path string.
|
|
207
|
+
*/
|
|
208
|
+
export function _domains_command_logical(p) {
|
|
209
|
+
const dom = _roots.SRC_DOMAINS;
|
|
210
|
+
if (p !== dom && !_isUnder(p, dom)) {
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
const rel = _relativeToPosix(p, dom);
|
|
214
|
+
const parts = rel.split('/');
|
|
215
|
+
if (parts.length < 3 || parts[parts.length - 1] !== 'command.md') {
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
const subpath = parts.slice(1, -1).join('/'); // drop <pack> and command.md
|
|
219
|
+
return `commands/${subpath}.md`;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Yield `[physical_path, logical_relpath]` for every domains command, in
|
|
223
|
+
* deterministic order. Naturally inert until `src/domains/*\/**\/command.md`
|
|
224
|
+
* files exist. Mirrors `_iter_domains_commands`.
|
|
225
|
+
*/
|
|
226
|
+
export function* _iter_domains_commands() {
|
|
227
|
+
const dom = _roots.SRC_DOMAINS;
|
|
228
|
+
if (!_isDir(dom)) {
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
for (const p of _rglobSorted(dom, 'command.md')) {
|
|
232
|
+
if (!_isFile(p)) {
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
const logical = _domains_command_logical(p);
|
|
236
|
+
if (logical !== null) {
|
|
237
|
+
yield [p, logical];
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// --- Canonical command-slug derivation (ADR-044 amendment) -------------------
|
|
242
|
+
const _SLUG_PREFIX_RE = /^slug_prefix:\s*"?([a-z][a-z0-9-]*)"?\s*$/m;
|
|
243
|
+
const _slug_prefix_cache = new Map();
|
|
244
|
+
/**
|
|
245
|
+
* Return the `slug_prefix` declared in `src/domains/<pack>/pack.yaml`.
|
|
246
|
+
*
|
|
247
|
+
* Empty string when the pack has no prefix (the default) or no manifest.
|
|
248
|
+
* Cached per pack id. Minimal line scan — no YAML dependency. Mirrors
|
|
249
|
+
* `pack_slug_prefix`.
|
|
250
|
+
*/
|
|
251
|
+
export function pack_slug_prefix(pack_id) {
|
|
252
|
+
const cached = _slug_prefix_cache.get(pack_id);
|
|
253
|
+
if (cached !== undefined) {
|
|
254
|
+
return cached;
|
|
255
|
+
}
|
|
256
|
+
let prefix = '';
|
|
257
|
+
const manifest = path.join(_roots.SRC_DOMAINS, pack_id, 'pack.yaml');
|
|
258
|
+
if (_isFile(manifest)) {
|
|
259
|
+
const m = _SLUG_PREFIX_RE.exec(fs.readFileSync(manifest, 'utf-8'));
|
|
260
|
+
if (m) {
|
|
261
|
+
prefix = m[1];
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
_slug_prefix_cache.set(pack_id, prefix);
|
|
265
|
+
return prefix;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Canonical flat slug for a `src/domains` command file.
|
|
269
|
+
*
|
|
270
|
+
* `src/domains/<pack>/<subpath>/command.md` → `<subpath hyphenated>`,
|
|
271
|
+
* pack-prefixed when the pack declares `slug_prefix`. Returns `null` for
|
|
272
|
+
* anything that is not a domains `command.md` leaf. Mirrors `command_slug`.
|
|
273
|
+
*/
|
|
274
|
+
export function command_slug(physical_path) {
|
|
275
|
+
const logical = _domains_command_logical(physical_path); // commands/<subpath>.md
|
|
276
|
+
if (logical === null) {
|
|
277
|
+
return null;
|
|
278
|
+
}
|
|
279
|
+
// base = "-".join(Path(logical[len("commands/"):]).with_suffix("").parts)
|
|
280
|
+
const afterCommands = logical.slice('commands/'.length); // <subpath>.md
|
|
281
|
+
const withoutSuffix = afterCommands.replace(/\.md$/, '');
|
|
282
|
+
const base = withoutSuffix.split('/').join('-');
|
|
283
|
+
if (!base) {
|
|
284
|
+
return null;
|
|
285
|
+
}
|
|
286
|
+
const dom = _roots.SRC_DOMAINS;
|
|
287
|
+
let pack_id;
|
|
288
|
+
if (physical_path !== dom && !_isUnder(physical_path, dom)) {
|
|
289
|
+
return base; // mirrors Python's ValueError → return base
|
|
290
|
+
}
|
|
291
|
+
pack_id = _relativeToPosix(physical_path, dom).split('/')[0];
|
|
292
|
+
const prefix = pack_slug_prefix(pack_id);
|
|
293
|
+
if (prefix && base !== prefix && !base.startsWith(`${prefix}-`)) {
|
|
294
|
+
return `${prefix}-${base}`;
|
|
295
|
+
}
|
|
296
|
+
return base;
|
|
297
|
+
}
|
|
298
|
+
// --- Root specs --------------------------------------------------------------
|
|
299
|
+
const _LEGACY_PREFIX = '.agent-src.uncondensed/';
|
|
300
|
+
const _PACKAGE_SUFFIX = '/.agent-src.uncondensed/';
|
|
301
|
+
const _SRC_SKILLS_PREFIX = 'src/skills/';
|
|
302
|
+
const _SRC_RULES_PREFIX = 'src/rules/';
|
|
303
|
+
/**
|
|
304
|
+
* Every active `[physical_root, logical_prefix]` artefact source.
|
|
305
|
+
*
|
|
306
|
+
* The logical path of a file under `physical_root` is
|
|
307
|
+
* `logical_prefix + relativeTo(physical_root)`. For the legacy and
|
|
308
|
+
* `packages/*\/` `.agent-src.uncondensed/` roots the prefix is empty. For the
|
|
309
|
+
* 6.0.0-D flat library roots (`src/skills`, `src/rules`) the prefix is the
|
|
310
|
+
* category because the directory IS the category.
|
|
311
|
+
*
|
|
312
|
+
* Order is stable: legacy first, then `packages/` entries sorted
|
|
313
|
+
* alphabetically, then `src/agent-src`, then the flat library roots.
|
|
314
|
+
* First-win on the walk. Throws on a non-empty logical-prefix collision
|
|
315
|
+
* (council guard). Mirrors `_root_specs`.
|
|
316
|
+
*/
|
|
317
|
+
function _root_specs() {
|
|
318
|
+
const specs = [];
|
|
319
|
+
if (_exists(_roots.LEGACY_SRC)) {
|
|
320
|
+
specs.push([_roots.LEGACY_SRC, '']);
|
|
321
|
+
}
|
|
322
|
+
if (_exists(_roots.PACKAGES)) {
|
|
323
|
+
for (const pkg of _iterdirSorted(_roots.PACKAGES)) {
|
|
324
|
+
const sub = path.join(pkg, '.agent-src.uncondensed');
|
|
325
|
+
if (_isDir(sub)) {
|
|
326
|
+
specs.push([sub, '']);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
if (_isDir(_roots.SRC_AGENT)) {
|
|
331
|
+
specs.push([_roots.SRC_AGENT, '']);
|
|
332
|
+
}
|
|
333
|
+
if (_isDir(_roots.SRC_SKILLS)) {
|
|
334
|
+
specs.push([_roots.SRC_SKILLS, 'skills/']);
|
|
335
|
+
}
|
|
336
|
+
if (_isDir(_roots.SRC_RULES)) {
|
|
337
|
+
specs.push([_roots.SRC_RULES, 'rules/']);
|
|
338
|
+
}
|
|
339
|
+
// Collision guard (council-required): two source roots emitting the same
|
|
340
|
+
// non-empty logical prefix would let condense silently overwrite one
|
|
341
|
+
// category's output with another's. Fail loud. Empty-prefix roots are
|
|
342
|
+
// exempt — they namespace via per-category subdirs.
|
|
343
|
+
const seen = new Map();
|
|
344
|
+
for (const [physical, prefix] of specs) {
|
|
345
|
+
if (!prefix) {
|
|
346
|
+
continue;
|
|
347
|
+
}
|
|
348
|
+
const claimedBy = seen.get(prefix);
|
|
349
|
+
if (claimedBy !== undefined) {
|
|
350
|
+
throw new Error(`source-root logical-prefix collision: ${JSON.stringify(prefix)} claimed by ` +
|
|
351
|
+
`both ${claimedBy} and ${physical}`);
|
|
352
|
+
}
|
|
353
|
+
seen.set(prefix, physical);
|
|
354
|
+
}
|
|
355
|
+
return specs;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Every existing **container** directory under which the per-category
|
|
359
|
+
* subdirectories (`skills/` / `rules/` / `commands/` / …) live.
|
|
360
|
+
*
|
|
361
|
+
* The "category-append" view used by scanners that do `root / "skills"` etc.
|
|
362
|
+
* Returns at most one `.agent-src.uncondensed/` root (legacy), one per
|
|
363
|
+
* `packages/*\/` subdirectory, and — once the 6.0.0-D flat library exists —
|
|
364
|
+
* the `src/` container. Order: legacy, `packages/` sorted, then `src`.
|
|
365
|
+
* Mirrors `artefact_roots`.
|
|
366
|
+
*/
|
|
367
|
+
export function artefact_roots() {
|
|
368
|
+
const roots = [];
|
|
369
|
+
if (_exists(_roots.LEGACY_SRC)) {
|
|
370
|
+
roots.push(_roots.LEGACY_SRC);
|
|
371
|
+
}
|
|
372
|
+
if (_exists(_roots.PACKAGES)) {
|
|
373
|
+
for (const pkg of _iterdirSorted(_roots.PACKAGES)) {
|
|
374
|
+
const sub = path.join(pkg, '.agent-src.uncondensed');
|
|
375
|
+
if (_isDir(sub)) {
|
|
376
|
+
roots.push(sub);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
if (_isDir(_roots.SRC_AGENT)) {
|
|
381
|
+
roots.push(_roots.SRC_AGENT);
|
|
382
|
+
}
|
|
383
|
+
if (_isDir(_roots.SRC_SKILLS) || _isDir(_roots.SRC_RULES)) {
|
|
384
|
+
roots.push(_roots.SRC);
|
|
385
|
+
}
|
|
386
|
+
return roots;
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Yield every artefact file under every active source root.
|
|
390
|
+
*
|
|
391
|
+
* Walks `_root_specs` (the leaf view). Deterministic order; deduplicated on
|
|
392
|
+
* logical path so a file present in two roots during the move window is
|
|
393
|
+
* yielded once. Symlinks and non-files are skipped. Mirrors `iter_artefacts`.
|
|
394
|
+
*/
|
|
395
|
+
export function* iter_artefacts(suffix = '.md') {
|
|
396
|
+
const seen = new Set();
|
|
397
|
+
for (const [root, prefix] of _root_specs()) {
|
|
398
|
+
for (const p of _rglobSorted(root, `*${suffix}`)) {
|
|
399
|
+
if (!_isFile(p)) {
|
|
400
|
+
continue;
|
|
401
|
+
}
|
|
402
|
+
const rel = prefix + _relativeToPosix(p, root);
|
|
403
|
+
if (seen.has(rel)) {
|
|
404
|
+
continue;
|
|
405
|
+
}
|
|
406
|
+
seen.add(rel);
|
|
407
|
+
yield p;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
if (suffix === '.md') {
|
|
411
|
+
for (const [p, rel] of _iter_domains_commands()) {
|
|
412
|
+
if (seen.has(rel)) {
|
|
413
|
+
continue;
|
|
414
|
+
}
|
|
415
|
+
seen.add(rel);
|
|
416
|
+
yield p;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Yield `[physical_path, logical_relpath]` for every file under every root.
|
|
422
|
+
*
|
|
423
|
+
* Same deterministic order as `iter_artefacts` but covers *all* files (md and
|
|
424
|
+
* non-md) and pre-computes the logical relative path. First-win on duplicate
|
|
425
|
+
* logical paths. Mirrors `iter_all_sources`.
|
|
426
|
+
*/
|
|
427
|
+
export function* iter_all_sources() {
|
|
428
|
+
const seen = new Set();
|
|
429
|
+
for (const [root, prefix] of _root_specs()) {
|
|
430
|
+
for (const p of _rglobSorted(root, '*')) {
|
|
431
|
+
if (!_isFile(p)) {
|
|
432
|
+
continue;
|
|
433
|
+
}
|
|
434
|
+
// the retired Python implementation guards `relative_to` with try/except
|
|
435
|
+
// ValueError; here `p` is always under `root` by construction, but
|
|
436
|
+
// we mirror the guard for fidelity.
|
|
437
|
+
if (p !== root && !_isUnder(p, root)) {
|
|
438
|
+
continue;
|
|
439
|
+
}
|
|
440
|
+
const rel = prefix + _relativeToPosix(p, root);
|
|
441
|
+
if (seen.has(rel)) {
|
|
442
|
+
continue;
|
|
443
|
+
}
|
|
444
|
+
seen.add(rel);
|
|
445
|
+
yield [p, rel];
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
for (const [p, rel] of _iter_domains_commands()) {
|
|
449
|
+
if (seen.has(rel)) {
|
|
450
|
+
continue;
|
|
451
|
+
}
|
|
452
|
+
seen.add(rel);
|
|
453
|
+
yield [p, rel];
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Yield every command source file across all layouts.
|
|
458
|
+
*
|
|
459
|
+
* Covers the legacy / `packages/*\/.agent-src.uncondensed/commands/` trees AND
|
|
460
|
+
* the 6.0.0-D `src/domains/<pack>/<subpath>/command.md` homes, deduplicated on
|
|
461
|
+
* the logical command path (`commands/<subpath>.md`) — packages-tree wins
|
|
462
|
+
* (first-win order). Mirrors `iter_commands`.
|
|
463
|
+
*/
|
|
464
|
+
export function* iter_commands() {
|
|
465
|
+
const seen = new Set();
|
|
466
|
+
for (const [root, prefix] of _root_specs()) {
|
|
467
|
+
if (prefix) {
|
|
468
|
+
// flat skills/rules roots carry no commands subtree
|
|
469
|
+
continue;
|
|
470
|
+
}
|
|
471
|
+
const base = path.join(root, 'commands');
|
|
472
|
+
if (!_isDir(base)) {
|
|
473
|
+
continue;
|
|
474
|
+
}
|
|
475
|
+
for (const p of _rglobSorted(base, '*.md')) {
|
|
476
|
+
if (!_isFile(p)) {
|
|
477
|
+
continue;
|
|
478
|
+
}
|
|
479
|
+
const rel = `commands/${_relativeToPosix(p, base)}`;
|
|
480
|
+
if (seen.has(rel)) {
|
|
481
|
+
continue;
|
|
482
|
+
}
|
|
483
|
+
seen.add(rel);
|
|
484
|
+
yield p;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
for (const [p, rel] of _iter_domains_commands()) {
|
|
488
|
+
if (seen.has(rel)) {
|
|
489
|
+
continue;
|
|
490
|
+
}
|
|
491
|
+
seen.add(rel);
|
|
492
|
+
yield p;
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* Return the physical path that backs `logical_rel`, or `null`.
|
|
497
|
+
*
|
|
498
|
+
* Walks `_root_specs` in order and returns the first hit. A flat library root
|
|
499
|
+
* only matches a logical path under its prefix; the suffix after the prefix is
|
|
500
|
+
* the path inside that physical root. Falls back to a `src/domains` glob for
|
|
501
|
+
* `commands/<subpath>.md`. Mirrors `resolve_logical`.
|
|
502
|
+
*/
|
|
503
|
+
export function resolve_logical(logical_rel) {
|
|
504
|
+
const rel = logical_rel.replaceAll('\\', '/').replace(/^\/+/, '');
|
|
505
|
+
for (const [root, prefix] of _root_specs()) {
|
|
506
|
+
let p;
|
|
507
|
+
if (prefix) {
|
|
508
|
+
if (!rel.startsWith(prefix)) {
|
|
509
|
+
continue;
|
|
510
|
+
}
|
|
511
|
+
p = path.join(root, rel.slice(prefix.length));
|
|
512
|
+
}
|
|
513
|
+
else {
|
|
514
|
+
p = path.join(root, rel);
|
|
515
|
+
}
|
|
516
|
+
if (_exists(p)) {
|
|
517
|
+
return p;
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
// 6.0.0-D domains commands: a logical `commands/<subpath>.md` is backed by
|
|
521
|
+
// `src/domains/<pack>/<subpath>/command.md`. Pack is not encoded in the
|
|
522
|
+
// logical path, so glob the domains tree for the matching leaf.
|
|
523
|
+
if (rel.startsWith('commands/') && rel.endsWith('.md') && _isDir(_roots.SRC_DOMAINS)) {
|
|
524
|
+
const subpath = rel.slice('commands/'.length, rel.length - '.md'.length);
|
|
525
|
+
for (const packDir of _iterdirSorted(_roots.SRC_DOMAINS)) {
|
|
526
|
+
const cand = path.join(packDir, subpath, 'command.md');
|
|
527
|
+
if (_isFile(cand)) {
|
|
528
|
+
return cand;
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
return null;
|
|
533
|
+
}
|
|
534
|
+
/**
|
|
535
|
+
* Return the artefact's logical identity path (POSIX, no prefix).
|
|
536
|
+
*
|
|
537
|
+
* Throws if `inputPath` is not under any known source root. Mirrors
|
|
538
|
+
* `logical_relpath`. `inputPath` is an absolute or repo-relative path string.
|
|
539
|
+
*/
|
|
540
|
+
export function logical_relpath(inputPath) {
|
|
541
|
+
const p = path.isAbsolute(inputPath)
|
|
542
|
+
? path.resolve(inputPath)
|
|
543
|
+
: path.resolve(_roots.ROOT, inputPath);
|
|
544
|
+
for (const [root, prefix] of _root_specs()) {
|
|
545
|
+
const resolvedRoot = path.resolve(root);
|
|
546
|
+
if (p === resolvedRoot || _isUnder(p, resolvedRoot)) {
|
|
547
|
+
return prefix + _relativeToPosix(p, resolvedRoot);
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
// 6.0.0-D domains command (src/domains/<pack>/<subpath>/command.md).
|
|
551
|
+
const domainsLogical = _domains_command_logical(p);
|
|
552
|
+
if (domainsLogical !== null) {
|
|
553
|
+
return domainsLogical;
|
|
554
|
+
}
|
|
555
|
+
throw new Error(`path is not under any artefact root: ${inputPath}`);
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* Strip the `.agent-src.uncondensed/` anchor from a repo-relative path.
|
|
559
|
+
*
|
|
560
|
+
* Accepts both the legacy flat layout and the monorepo packages layout.
|
|
561
|
+
* Returns `null` if the path is not under any source root. Mirrors
|
|
562
|
+
* `strip_source_prefix`.
|
|
563
|
+
*/
|
|
564
|
+
export function strip_source_prefix(rel) {
|
|
565
|
+
const posix = rel.replaceAll('\\', '/');
|
|
566
|
+
if (posix.startsWith(_LEGACY_PREFIX)) {
|
|
567
|
+
return posix.slice(_LEGACY_PREFIX.length);
|
|
568
|
+
}
|
|
569
|
+
if (posix.startsWith('packages/')) {
|
|
570
|
+
const idx = posix.indexOf(_PACKAGE_SUFFIX);
|
|
571
|
+
if (idx !== -1) {
|
|
572
|
+
return posix.slice(idx + _PACKAGE_SUFFIX.length);
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
// 6.0.0-D flat library: physical category prefix → logical category.
|
|
576
|
+
if (posix.startsWith(_SRC_SKILLS_PREFIX)) {
|
|
577
|
+
return `skills/${posix.slice(_SRC_SKILLS_PREFIX.length)}`;
|
|
578
|
+
}
|
|
579
|
+
if (posix.startsWith(_SRC_RULES_PREFIX)) {
|
|
580
|
+
return `rules/${posix.slice(_SRC_RULES_PREFIX.length)}`;
|
|
581
|
+
}
|
|
582
|
+
// 6.0.0-D domains command: src/domains/<pack>/<subpath>/command.md
|
|
583
|
+
// → commands/<subpath>.md (pack stripped, command.md leaf → subpath).
|
|
584
|
+
if (posix.startsWith(_SRC_DOMAINS_PREFIX) && posix.endsWith('/command.md')) {
|
|
585
|
+
const rest = posix.slice(_SRC_DOMAINS_PREFIX.length); // <pack>/<subpath>/command.md
|
|
586
|
+
const parts = rest.split('/');
|
|
587
|
+
if (parts.length >= 3) {
|
|
588
|
+
return `commands/${parts.slice(1, -1).join('/')}.md`;
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
return null;
|
|
592
|
+
}
|
|
593
|
+
/** `true` if a repo-relative POSIX path sits under any source root. */
|
|
594
|
+
export function is_artefact_path(rel) {
|
|
595
|
+
return strip_source_prefix(rel) !== null;
|
|
596
|
+
}
|
|
597
|
+
/**
|
|
598
|
+
* Return the canonical `packages/core/<relative_target>` path.
|
|
599
|
+
*
|
|
600
|
+
* Pure resolver: deterministic, no filesystem I/O. Mirrors
|
|
601
|
+
* `resolve_package_core_path`. Returns an absolute path string.
|
|
602
|
+
*/
|
|
603
|
+
export function resolve_package_core_path(relative_target) {
|
|
604
|
+
const rel = relative_target.replaceAll('\\', '/').replace(/^\/+/, '');
|
|
605
|
+
return rel ? path.join(_roots.PACKAGE_CORE, rel) : _roots.PACKAGE_CORE;
|
|
606
|
+
}
|
|
607
|
+
//# sourceMappingURL=agent_src.js.map
|