loadouts 0.2.0 → 0.2.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.
@@ -3,34 +3,14 @@
3
3
  * that can be imported into loadout.
4
4
  */
5
5
  import * as fs from "node:fs";
6
+ import * as os from "node:os";
6
7
  import * as path from "node:path";
7
- import { fileExists, isDirectory, isSymlink, listFiles, listFilesWithExtension } from "../lib/fs.js";
8
- const TOOL_LOCATIONS = {
9
- "claude-code": {
10
- rules: { dir: ".claude/rules", ext: ".md" },
11
- skills: { dir: ".claude/skills" },
12
- },
13
- cursor: {
14
- rules: { dir: ".cursor/rules", ext: ".mdc" },
15
- skills: { dir: ".cursor/skills" },
16
- },
17
- opencode: {
18
- rules: { dir: ".opencode/rules", ext: ".md" },
19
- skills: { dir: ".opencode/skills" },
20
- },
21
- codex: {
22
- // codex doesn't support rules
23
- skills: { dir: ".agents/skills" },
24
- },
25
- pi: {
26
- // pi doesn't have native rules support
27
- skills: { dir: ".pi/skills" },
28
- },
29
- };
8
+ import { fileExists, isDirectory, isSymlink, listFiles, walkDir } from "../lib/fs.js";
9
+ import { registry } from "./registry.js";
30
10
  // Instruction file locations to check (in priority order)
31
11
  const INSTRUCTION_FILES = ["AGENTS.md", "CLAUDE.md"];
32
12
  // ---------------------------------------------------------------------------
33
- // Discovery functions
13
+ // Filesystem helpers
34
14
  // ---------------------------------------------------------------------------
35
15
  /**
36
16
  * Get file/directory size.
@@ -53,86 +33,108 @@ function getSize(filePath) {
53
33
  function getMtime(filePath) {
54
34
  return fs.statSync(filePath).mtime;
55
35
  }
36
+ function readArtifactMetadata(filePath) {
37
+ try {
38
+ return {
39
+ size: getSize(filePath),
40
+ mtime: getMtime(filePath),
41
+ };
42
+ }
43
+ catch {
44
+ return null;
45
+ }
46
+ }
56
47
  /**
57
- * Discover rules in a tool directory.
48
+ * Convert Windows path separators to POSIX-style separators.
58
49
  */
59
- function discoverRules(projectRoot, tool, locations) {
60
- if (!locations.rules)
61
- return [];
62
- const rulesDir = path.join(projectRoot, locations.rules.dir);
63
- if (!isDirectory(rulesDir))
64
- return [];
65
- const artifacts = [];
66
- const files = listFilesWithExtension(rulesDir, locations.rules.ext);
67
- for (const file of files) {
68
- const sourcePath = path.join(rulesDir, file);
69
- const name = file.replace(/\.(md|mdc)$/, "");
70
- artifacts.push({
71
- kind: "rule",
72
- name,
73
- sourcePath,
74
- displayPath: path.join(locations.rules.dir, file),
75
- tool,
76
- size: getSize(sourcePath),
77
- mtime: getMtime(sourcePath),
78
- destPath: `rules/${name}.md`,
79
- });
50
+ function toPosix(filePath) {
51
+ return filePath.split(path.sep).join("/");
52
+ }
53
+ /**
54
+ * Escape string for safe regex inclusion.
55
+ */
56
+ function escapeRegex(value) {
57
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
58
+ }
59
+ /**
60
+ * Select the path template for the requested scope.
61
+ */
62
+ function getScopeTemplate(mappingPath, scope) {
63
+ return typeof mappingPath === "string" ? mappingPath : mappingPath[scope];
64
+ }
65
+ /**
66
+ * Resolve a tool base path to absolute for the current scope.
67
+ */
68
+ function resolveAbsoluteBasePath(scanRoot, basePath) {
69
+ return path.isAbsolute(basePath) ? basePath : path.join(scanRoot, basePath);
70
+ }
71
+ /**
72
+ * Format a path for display relative to scan root when possible.
73
+ */
74
+ function toDisplayPath(scanRoot, absolutePath) {
75
+ const rel = path.relative(scanRoot, absolutePath);
76
+ if (!rel.startsWith("..") && !path.isAbsolute(rel)) {
77
+ return toPosix(rel);
80
78
  }
81
- return artifacts;
79
+ const home = os.homedir();
80
+ if (absolutePath === home)
81
+ return "~";
82
+ if (absolutePath.startsWith(`${home}${path.sep}`)) {
83
+ return `~/${toPosix(path.relative(home, absolutePath))}`;
84
+ }
85
+ return toPosix(absolutePath);
82
86
  }
83
87
  /**
84
- * Discover skills in a tool directory.
85
- * Skips symlinked directories that point to other tool directories
86
- * to avoid duplicate detection.
88
+ * Build a regex matcher for a concrete template path.
89
+ * Supported tokens: {base} {home} {stem} {ext} {name} {relative} {kind}
87
90
  */
88
- function discoverSkills(projectRoot, tool, locations) {
89
- if (!locations.skills)
90
- return [];
91
- const skillsDir = path.join(projectRoot, locations.skills.dir);
92
- if (!isDirectory(skillsDir))
93
- return [];
94
- // Skip if this skills dir is a symlink pointing to another tool's directory
95
- // (e.g., .cursor/skills -> ../.claude/skills)
96
- if (isSymlink(skillsDir)) {
97
- try {
98
- const target = fs.realpathSync(skillsDir);
99
- // Check if target is inside another tool's directory
100
- for (const [otherTool, otherLoc] of Object.entries(TOOL_LOCATIONS)) {
101
- if (otherTool === tool || !otherLoc.skills)
102
- continue;
103
- const otherSkillsDir = path.join(projectRoot, otherLoc.skills.dir);
104
- if (target.startsWith(fs.realpathSync(path.dirname(otherSkillsDir)))) {
105
- // This is a symlink to another tool's skills - skip to avoid duplicates
106
- return [];
107
- }
91
+ function matchTemplatePath(templatePath, actualPath) {
92
+ const captures = {};
93
+ const tokens = [];
94
+ let pattern = "";
95
+ for (let i = 0; i < templatePath.length; i += 1) {
96
+ const ch = templatePath[i];
97
+ if (ch === "{") {
98
+ const end = templatePath.indexOf("}", i + 1);
99
+ if (end === -1) {
100
+ pattern += escapeRegex(ch);
101
+ continue;
108
102
  }
103
+ const token = templatePath.slice(i + 1, end);
104
+ tokens.push(token);
105
+ switch (token) {
106
+ case "stem":
107
+ case "name":
108
+ case "kind":
109
+ pattern += "([^/]+)";
110
+ break;
111
+ case "ext":
112
+ pattern += "([^/]*)";
113
+ break;
114
+ case "relative":
115
+ pattern += "(.+)";
116
+ break;
117
+ case "base":
118
+ case "home":
119
+ pattern += "(.+)";
120
+ break;
121
+ default:
122
+ pattern += "(.+)";
123
+ break;
124
+ }
125
+ i = end;
126
+ continue;
109
127
  }
110
- catch {
111
- // If we can't resolve the symlink, proceed normally
112
- }
128
+ pattern += escapeRegex(ch);
113
129
  }
114
- const artifacts = [];
115
- const entries = listFiles(skillsDir);
116
- for (const entry of entries) {
117
- const skillPath = path.join(skillsDir, entry);
118
- if (!isDirectory(skillPath))
119
- continue;
120
- // Check for SKILL.md to confirm it's a valid skill
121
- const skillMdPath = path.join(skillPath, "SKILL.md");
122
- if (!fileExists(skillMdPath))
123
- continue;
124
- artifacts.push({
125
- kind: "skill",
126
- name: entry,
127
- sourcePath: skillPath,
128
- displayPath: path.join(locations.skills.dir, entry),
129
- tool,
130
- size: getSize(skillPath),
131
- mtime: getMtime(skillPath),
132
- destPath: `skills/${entry}`,
133
- });
130
+ const regex = new RegExp(`^${pattern}$`);
131
+ const match = actualPath.match(regex);
132
+ if (!match)
133
+ return { matched: false, captures };
134
+ for (let i = 0; i < tokens.length; i += 1) {
135
+ captures[tokens[i]] = match[i + 1] ?? "";
134
136
  }
135
- return artifacts;
137
+ return { matched: true, captures };
136
138
  }
137
139
  /**
138
140
  * Check if a file at project root is managed by loadout.
@@ -168,90 +170,236 @@ function isClaudeWrapper(filePath) {
168
170
  return false;
169
171
  }
170
172
  }
173
+ /**
174
+ * Infer destination path for a discovered artifact.
175
+ *
176
+ * For built-ins we preserve canonical layout.
177
+ * For custom/future kinds we try several heuristics and keep whichever
178
+ * path is accepted by the kind's detect() predicate.
179
+ */
180
+ function inferDestPath(kindId, toolName, strippedTargetPath, captures) {
181
+ const kind = registry.getKind(kindId);
182
+ if (!kind)
183
+ return null;
184
+ const stem = captures.stem || captures.name || path.basename(strippedTargetPath, path.extname(strippedTargetPath));
185
+ const ext = captures.ext || path.extname(strippedTargetPath);
186
+ // Canonical built-ins.
187
+ if (kindId === "instruction") {
188
+ return "instructions/AGENTS.base.md";
189
+ }
190
+ if (kindId === "rule") {
191
+ return `rules/${stem}.md`;
192
+ }
193
+ const candidates = [
194
+ strippedTargetPath,
195
+ `${toolName}/${strippedTargetPath}`,
196
+ `${kindId}/${strippedTargetPath}`,
197
+ `${kindId.replace(/-/g, "/")}/${strippedTargetPath}`,
198
+ `${kindId}/${stem}${ext}`,
199
+ `${kindId.replace(/-/g, "/")}/${stem}${ext}`,
200
+ ];
201
+ for (const candidate of candidates) {
202
+ const rel = toPosix(candidate).replace(/^\/+/, "");
203
+ if (kind.detect(rel)) {
204
+ return rel;
205
+ }
206
+ }
207
+ return null;
208
+ }
209
+ /**
210
+ * Check whether a given destination path already exists in .loadouts/.
211
+ */
212
+ function artifactExistsInLoadout(loadoutPath, artifact) {
213
+ if (artifact.kind === "instruction") {
214
+ return false;
215
+ }
216
+ const kind = registry.getKind(artifact.kind);
217
+ if (!kind)
218
+ return false;
219
+ const destPath = path.join(loadoutPath, artifact.destPath);
220
+ return kind.layout === "dir" ? isDirectory(destPath) : fileExists(destPath);
221
+ }
171
222
  /**
172
223
  * Discover instruction files at project root.
173
224
  * Only discovers files that are NOT managed by loadout.
174
225
  */
175
- function discoverInstructions(projectRoot, loadoutPath) {
226
+ function discoverInstructions(scanRoot, loadoutPath) {
227
+ const kind = registry.getKind("instruction");
228
+ if (!kind)
229
+ return [];
176
230
  const artifacts = [];
177
231
  for (const filename of INSTRUCTION_FILES) {
178
- const filePath = path.join(projectRoot, filename);
232
+ const filePath = path.join(scanRoot, filename);
179
233
  if (!fileExists(filePath))
180
234
  continue;
181
- // Skip if this file is managed by loadout (symlink to .loadouts/)
182
235
  if (isManagedByLoadout(filePath, loadoutPath))
183
236
  continue;
184
- // Skip auto-generated CLAUDE.md wrapper
185
237
  if (filename === "CLAUDE.md" && isClaudeWrapper(filePath))
186
238
  continue;
239
+ const metadata = readArtifactMetadata(filePath);
240
+ if (!metadata)
241
+ continue;
187
242
  artifacts.push({
188
243
  kind: "instruction",
189
244
  name: "AGENTS.md",
190
245
  sourcePath: filePath,
191
246
  displayPath: filename,
192
247
  tool: "project-root",
193
- size: getSize(filePath),
194
- mtime: getMtime(filePath),
195
- destPath: "instructions/AGENTS.base.md", // Will be updated by install based on target loadout
248
+ size: metadata.size,
249
+ mtime: metadata.mtime,
250
+ destPath: "instructions/AGENTS.base.md",
196
251
  });
197
252
  }
198
253
  return artifacts;
199
254
  }
200
255
  /**
201
- * Check if an artifact already exists in .loadouts/.
202
- * For instructions, we DON'T filter them out since unmanaged files at project root
203
- * should be offered for import (to replace the template).
256
+ * Discover artifacts for one (tool, kind) pair by matching tool target templates.
204
257
  */
205
- function artifactExistsInLoadout(loadoutPath, artifact) {
206
- // Instructions at project root are already filtered by discoverInstructions
207
- // if they're managed. If they reach here, they're unmanaged and should be imported.
208
- if (artifact.kind === "instruction") {
209
- return false; // Always offer to import unmanaged instruction files
258
+ function discoverForToolKind(scanRoot, scope, toolName, kindId, warnings) {
259
+ // Instruction files are discovered centrally at project root to avoid
260
+ // duplicate detection across tools that map to AGENTS.md / CLAUDE.md.
261
+ if (kindId === "instruction")
262
+ return [];
263
+ const tool = registry.getTool(toolName);
264
+ const kind = registry.getKind(kindId);
265
+ if (!tool || !kind)
266
+ return [];
267
+ const mapping = registry.resolveMapping(toolName, kindId);
268
+ if (!mapping)
269
+ return [];
270
+ const template = getScopeTemplate(mapping.path, scope);
271
+ const absoluteBasePath = resolveAbsoluteBasePath(scanRoot, tool.basePath[scope]);
272
+ const concreteTemplate = toPosix(template)
273
+ .replaceAll("{base}", toPosix(absoluteBasePath))
274
+ .replaceAll("{home}", toPosix(os.homedir()));
275
+ const parentTemplate = path.posix.dirname(concreteTemplate);
276
+ const leafTemplate = path.posix.basename(concreteTemplate);
277
+ const templateIsAbsolute = path.posix.isAbsolute(concreteTemplate);
278
+ // If parent path still has unresolved tokens, we cannot reliably scan.
279
+ if (/{[^}]+}/.test(parentTemplate)) {
280
+ warnings.push(`Skipped ${toolName}:${kindId} import scan (unsupported template parent: ${template})`);
281
+ return [];
210
282
  }
211
- const destPath = path.join(loadoutPath, artifact.destPath);
212
- return artifact.kind === "skill" ? isDirectory(destPath) : fileExists(destPath);
283
+ const parentAbs = templateIsAbsolute
284
+ ? parentTemplate
285
+ : path.join(scanRoot, parentTemplate);
286
+ if (!isDirectory(parentAbs))
287
+ return [];
288
+ let candidateAbsPaths = [];
289
+ if (kind.layout === "dir") {
290
+ // Prefer one-level dir scanning for templates like .../{name}.
291
+ if (leafTemplate === "{name}" || leafTemplate === "{stem}") {
292
+ candidateAbsPaths = listFiles(parentAbs)
293
+ .map((entry) => path.join(parentAbs, entry))
294
+ .filter((absolutePath) => isDirectory(absolutePath));
295
+ }
296
+ else if (!/{[^}]+}/.test(leafTemplate)) {
297
+ const absolutePath = path.join(parentAbs, leafTemplate);
298
+ if (isDirectory(absolutePath)) {
299
+ candidateAbsPaths = [absolutePath];
300
+ }
301
+ }
302
+ }
303
+ else {
304
+ if (/{relative}/.test(template)) {
305
+ candidateAbsPaths = walkDir(parentAbs).map((entry) => path.join(parentAbs, entry));
306
+ }
307
+ else if (!/{[^}]+}/.test(leafTemplate)) {
308
+ const absolutePath = path.join(parentAbs, leafTemplate);
309
+ if (fileExists(absolutePath)) {
310
+ candidateAbsPaths = [absolutePath];
311
+ }
312
+ }
313
+ else {
314
+ candidateAbsPaths = listFiles(parentAbs)
315
+ .map((entry) => path.join(parentAbs, entry))
316
+ .filter((absolutePath) => fileExists(absolutePath));
317
+ }
318
+ }
319
+ const artifacts = [];
320
+ for (const sourcePath of candidateAbsPaths) {
321
+ const sourcePathPosix = toPosix(sourcePath);
322
+ const matchPath = templateIsAbsolute
323
+ ? sourcePathPosix
324
+ : toPosix(path.relative(scanRoot, sourcePath));
325
+ const match = matchTemplatePath(concreteTemplate, matchPath);
326
+ if (!match.matched)
327
+ continue;
328
+ // Skip tool directories symlinked to another tool to avoid duplicates.
329
+ if (kind.layout === "dir" && isSymlink(sourcePath)) {
330
+ continue;
331
+ }
332
+ const basePrefix = `${toPosix(absoluteBasePath)}/`;
333
+ const stripped = sourcePathPosix.startsWith(basePrefix)
334
+ ? sourcePathPosix.slice(basePrefix.length)
335
+ : matchPath;
336
+ const destPath = inferDestPath(kindId, toolName, stripped, match.captures);
337
+ if (!destPath) {
338
+ warnings.push(`Skipped ${toolName}:${kindId} artifact (cannot infer loadout path for ${matchPath})`);
339
+ continue;
340
+ }
341
+ const metadata = readArtifactMetadata(sourcePath);
342
+ if (!metadata) {
343
+ warnings.push(`Skipped ${toolName}:${kindId} artifact (unreadable path: ${toDisplayPath(scanRoot, sourcePath)})`);
344
+ continue;
345
+ }
346
+ const name = kind.layout === "dir"
347
+ ? path.basename(destPath)
348
+ : path.basename(destPath, path.extname(destPath));
349
+ artifacts.push({
350
+ kind: kindId,
351
+ name,
352
+ sourcePath,
353
+ displayPath: toDisplayPath(scanRoot, sourcePath),
354
+ tool: toolName,
355
+ size: metadata.size,
356
+ mtime: metadata.mtime,
357
+ destPath,
358
+ });
359
+ }
360
+ return artifacts;
213
361
  }
362
+ // ---------------------------------------------------------------------------
363
+ // Public discovery API
364
+ // ---------------------------------------------------------------------------
214
365
  /**
215
366
  * Discover all importable artifacts in a project.
216
367
  */
217
- export function discoverImportableArtifacts(projectRoot, options = {}) {
368
+ export function discoverImportableArtifacts(scanRoot, options = {}) {
218
369
  const artifacts = [];
219
370
  const warnings = [];
220
- const { tools, kinds, loadoutPath } = options;
221
- // Filter tools if specified
371
+ const { scope = "project", tools, kinds, loadoutPath } = options;
372
+ const allTools = registry.allToolNames();
222
373
  const toolsToScan = tools
223
- ? Object.keys(TOOL_LOCATIONS).filter((t) => tools.includes(t))
224
- : Object.keys(TOOL_LOCATIONS);
225
- // Discover from each tool directory
226
- for (const tool of toolsToScan) {
227
- const locations = TOOL_LOCATIONS[tool];
228
- // Rules
229
- if (!kinds || kinds.includes("rule")) {
230
- artifacts.push(...discoverRules(projectRoot, tool, locations));
231
- }
232
- // Skills
233
- if (!kinds || kinds.includes("skill")) {
234
- artifacts.push(...discoverSkills(projectRoot, tool, locations));
374
+ ? allTools.filter((tool) => tools.includes(tool))
375
+ : allTools;
376
+ const allKinds = registry.allKinds().map((kind) => kind.id);
377
+ const kindsToScan = kinds && kinds.length > 0
378
+ ? allKinds.filter((kind) => kinds.includes(kind))
379
+ : allKinds;
380
+ for (const toolName of toolsToScan) {
381
+ for (const kindId of kindsToScan) {
382
+ artifacts.push(...discoverForToolKind(scanRoot, scope, toolName, kindId, warnings));
235
383
  }
236
384
  }
237
- // Instructions (not tool-specific)
238
- if (!kinds || kinds.includes("instruction")) {
239
- artifacts.push(...discoverInstructions(projectRoot, loadoutPath));
385
+ // Keep root-level instruction import behavior for unmanaged AGENTS/CLAUDE files.
386
+ if (!kinds || kinds.length === 0 || kinds.includes("instruction")) {
387
+ artifacts.push(...discoverInstructions(scanRoot, loadoutPath));
240
388
  }
241
- // Filter out artifacts that already exist in .loadouts/
389
+ // Filter out artifacts already present in .loadouts/.
242
390
  const filteredArtifacts = loadoutPath
243
- ? artifacts.filter((a) => !artifactExistsInLoadout(loadoutPath, a))
391
+ ? artifacts.filter((artifact) => !artifactExistsInLoadout(loadoutPath, artifact))
244
392
  : artifacts;
245
- // Detect conflicts (same name from different tools)
246
- const byName = new Map();
393
+ // Detect conflicts by canonical destination path.
394
+ const byDest = new Map();
247
395
  for (const artifact of filteredArtifacts) {
248
- const key = `${artifact.kind}:${artifact.name}`;
249
- const existing = byName.get(key) || [];
396
+ const key = `${artifact.kind}:${artifact.destPath}`;
397
+ const existing = byDest.get(key) ?? [];
250
398
  existing.push(artifact);
251
- byName.set(key, existing);
399
+ byDest.set(key, existing);
252
400
  }
253
401
  const conflicts = new Map();
254
- for (const [key, items] of byName) {
402
+ for (const [key, items] of byDest) {
255
403
  if (items.length > 1) {
256
404
  conflicts.set(key, items);
257
405
  }
@@ -262,12 +410,9 @@ export function discoverImportableArtifacts(projectRoot, options = {}) {
262
410
  * Group artifacts by kind for display.
263
411
  */
264
412
  export function groupByKind(artifacts) {
265
- const groups = {
266
- instruction: [],
267
- rule: [],
268
- skill: [],
269
- };
413
+ const groups = {};
270
414
  for (const artifact of artifacts) {
415
+ groups[artifact.kind] ??= [];
271
416
  groups[artifact.kind].push(artifact);
272
417
  }
273
418
  return groups;
@@ -1 +1 @@
1
- {"version":3,"file":"import-discovery.js","sourceRoot":"","sources":["../../src/core/import-discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"import-discovery.js","sourceRoot":"","sources":["../../src/core/import-discovery.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "loadouts",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Composable configuration bundles for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {