loadouts 0.2.2 → 0.2.3
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/cli/commands/add-to.d.ts +13 -0
- package/dist/cli/commands/add-to.d.ts.map +1 -0
- package/dist/cli/commands/add-to.js +56 -0
- package/dist/cli/commands/add-to.js.map +1 -0
- package/dist/cli/commands/docs.d.ts.map +1 -1
- package/dist/cli/commands/docs.js +2 -1
- package/dist/cli/commands/docs.js.map +1 -1
- package/dist/cli/commands/loadout-include.d.ts +29 -0
- package/dist/cli/commands/loadout-include.d.ts.map +1 -0
- package/dist/cli/commands/loadout-include.js +138 -0
- package/dist/cli/commands/loadout-include.js.map +1 -0
- package/dist/cli/commands/remove-from.d.ts +9 -0
- package/dist/cli/commands/remove-from.d.ts.map +1 -0
- package/dist/cli/commands/remove-from.js +51 -0
- package/dist/cli/commands/remove-from.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/docs/authoring.md +15 -3
- package/docs/commands.md +15 -0
- package/docs/compatibility.md +34 -0
- package/docs/index.md +1 -0
- package/docs/quickstart.md +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { type ScopeFlags } from "../../core/scope.js";
|
|
3
|
+
import { type IncludeMutationResult } from "./loadout-include.js";
|
|
4
|
+
interface AddToOptions extends ScopeFlags {
|
|
5
|
+
tools?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface AddToResult extends IncludeMutationResult {
|
|
8
|
+
loadout: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function runAddTo(loadout: string, artifacts: string[], options: AddToOptions, cwd?: string): Promise<AddToResult>;
|
|
11
|
+
export declare const addToCommand: Command;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=add-to.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-to.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add-to.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAML,KAAK,qBAAqB,EAC3B,MAAM,sBAAsB,CAAC;AAE9B,UAAU,YAAa,SAAQ,UAAU;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,qBAAqB;IACxD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,EAAE,YAAY,EACrB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,WAAW,CAAC,CAkBtB;AAsBD,eAAO,MAAM,YAAY,SAcrB,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { SCOPE_FLAGS } from "../../core/scope.js";
|
|
4
|
+
import { log, heading } from "../../lib/output.js";
|
|
5
|
+
import { addIncludes, normalizeAndValidateArtifact, parseToolsOption, resolveLoadoutMutationTarget, writeLoadoutDefinition, } from "./loadout-include.js";
|
|
6
|
+
export async function runAddTo(loadout, artifacts, options, cwd = process.cwd()) {
|
|
7
|
+
if (artifacts.length === 0) {
|
|
8
|
+
throw new Error("Provide at least one artifact path.");
|
|
9
|
+
}
|
|
10
|
+
const target = await resolveLoadoutMutationTarget(loadout, options, cwd);
|
|
11
|
+
const tools = parseToolsOption(options.tools);
|
|
12
|
+
const includes = artifacts.map((artifact) => ({
|
|
13
|
+
...normalizeAndValidateArtifact(artifact, target.ctx.configPath),
|
|
14
|
+
tools,
|
|
15
|
+
}));
|
|
16
|
+
const result = addIncludes(target.definition, includes);
|
|
17
|
+
if (result.changed.length > 0) {
|
|
18
|
+
writeLoadoutDefinition(target.loadoutPath, target.definition);
|
|
19
|
+
}
|
|
20
|
+
return { loadout, ...result };
|
|
21
|
+
}
|
|
22
|
+
function printResult(result) {
|
|
23
|
+
if (result.changed.length === 0) {
|
|
24
|
+
log.dim(`No changes to ${result.loadout}.`);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
heading(`Added to ${result.loadout}`);
|
|
28
|
+
for (const includePath of result.changed) {
|
|
29
|
+
console.log(chalk.green(`+ ${includePath}`));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
for (const skipped of result.skipped) {
|
|
33
|
+
console.log(chalk.dim(`- ${skipped.path} ${skipped.reason}`));
|
|
34
|
+
}
|
|
35
|
+
if (result.changed.length > 0) {
|
|
36
|
+
console.log();
|
|
37
|
+
log.info(`Run ${chalk.cyan("loadouts sync")} to apply changes.`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export const addToCommand = new Command("add-to")
|
|
41
|
+
.description("Add existing artifacts to a loadout")
|
|
42
|
+
.argument("<loadout>", "Loadout to update")
|
|
43
|
+
.argument("<artifacts...>", "Artifact paths relative to .loadouts/")
|
|
44
|
+
.option(...SCOPE_FLAGS.local)
|
|
45
|
+
.option(...SCOPE_FLAGS.global)
|
|
46
|
+
.option("--tools <tools>", "Restrict added artifacts to specific tools (comma-separated)")
|
|
47
|
+
.action(async (loadout, artifacts, options) => {
|
|
48
|
+
try {
|
|
49
|
+
printResult(await runAddTo(loadout, artifacts, options));
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
log.error(err instanceof Error ? err.message : String(err));
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=add-to.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-to.js","sourceRoot":"","sources":["../../../src/cli/commands/add-to.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/docs.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/docs.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsFpC,eAAO,MAAM,WAAW,SAqCpB,CAAC"}
|
|
@@ -21,6 +21,7 @@ const TOPICS = {
|
|
|
21
21
|
concepts: "Loadouts, artifacts, scopes, tools",
|
|
22
22
|
commands: "Full command reference",
|
|
23
23
|
authoring: "Creating rules, skills, instructions",
|
|
24
|
+
compatibility: "Tool paths and frontmatter compatibility",
|
|
24
25
|
workflows: "Team setup, git, CI/CD",
|
|
25
26
|
troubleshooting: "Common issues and solutions",
|
|
26
27
|
};
|
|
@@ -80,7 +81,7 @@ function displayDocs(content, usePager) {
|
|
|
80
81
|
}
|
|
81
82
|
export const docsCommand = new Command("docs")
|
|
82
83
|
.description("Display documentation")
|
|
83
|
-
.argument("[topic]", "Documentation topic (quickstart, concepts, commands, authoring, workflows, troubleshooting)")
|
|
84
|
+
.argument("[topic]", "Documentation topic (quickstart, concepts, commands, authoring, compatibility, workflows, troubleshooting)")
|
|
84
85
|
.option("--list", "List available topics")
|
|
85
86
|
.option("--raw", "Print raw markdown without pager")
|
|
86
87
|
.action(async (topic, options) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../src/cli/commands/docs.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../src/cli/commands/docs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type ScopeFlags } from "../../core/scope.js";
|
|
2
|
+
import type { CommandContext, LoadoutDefinition, LoadoutInclude } from "../../core/types.js";
|
|
3
|
+
export interface IncludeInput {
|
|
4
|
+
path: string;
|
|
5
|
+
tools?: string[];
|
|
6
|
+
}
|
|
7
|
+
export interface IncludeMutationResult {
|
|
8
|
+
changed: string[];
|
|
9
|
+
skipped: Array<{
|
|
10
|
+
path: string;
|
|
11
|
+
reason: string;
|
|
12
|
+
}>;
|
|
13
|
+
}
|
|
14
|
+
export interface LoadoutMutationTarget {
|
|
15
|
+
ctx: CommandContext;
|
|
16
|
+
loadoutPath: string;
|
|
17
|
+
definition: LoadoutDefinition;
|
|
18
|
+
}
|
|
19
|
+
export declare function includePathOf(entry: LoadoutInclude): string;
|
|
20
|
+
export declare function normalizeIncludePath(raw: string, loadoutRoot?: string): string;
|
|
21
|
+
export declare function hasInclude(definition: LoadoutDefinition, includePath: string): boolean;
|
|
22
|
+
export declare function addIncludes(definition: LoadoutDefinition, includes: IncludeInput[]): IncludeMutationResult;
|
|
23
|
+
export declare function removeIncludes(definition: LoadoutDefinition, includePaths: string[]): IncludeMutationResult;
|
|
24
|
+
export declare function parseToolsOption(raw?: string): string[] | undefined;
|
|
25
|
+
export declare function findLoadoutPath(loadoutRoot: string, name: string): string | null;
|
|
26
|
+
export declare function resolveLoadoutMutationTarget(name: string, options: ScopeFlags, cwd?: string): Promise<LoadoutMutationTarget>;
|
|
27
|
+
export declare function normalizeAndValidateArtifact(raw: string, loadoutRoot: string): IncludeInput;
|
|
28
|
+
export declare function writeLoadoutDefinition(loadoutPath: string, definition: LoadoutDefinition): void;
|
|
29
|
+
//# sourceMappingURL=loadout-include.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadout-include.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/loadout-include.ts"],"names":[],"mappings":"AAKA,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAK7F,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,cAAc,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,iBAAiB,CAAC;CAC/B;AAWD,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAE3D;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAqC9E;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAEtF;AAED,wBAAgB,WAAW,CACzB,UAAU,EAAE,iBAAiB,EAC7B,QAAQ,EAAE,YAAY,EAAE,GACvB,qBAAqB,CAcvB;AAED,wBAAgB,cAAc,CAC5B,UAAU,EAAE,iBAAiB,EAC7B,YAAY,EAAE,MAAM,EAAE,GACrB,qBAAqB,CAevB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAenE;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOhF;AAED,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,UAAU,EACnB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CAkBhC;AAED,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,GAClB,YAAY,CAiBd;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAE/F"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import * as path from "node:path";
|
|
2
|
+
import * as yaml from "yaml";
|
|
3
|
+
import { getContext } from "../../core/discovery.js";
|
|
4
|
+
import { parseLoadoutDefinition } from "../../core/config.js";
|
|
5
|
+
import { registry } from "../../core/registry.js";
|
|
6
|
+
import { requireScopeForName } from "../../core/scope.js";
|
|
7
|
+
import { fileExists, isDirectory, writeFile } from "../../lib/fs.js";
|
|
8
|
+
const LOADOUTS_DIR = "loadouts";
|
|
9
|
+
function toPosix(value) {
|
|
10
|
+
return value.replace(/\\/g, "/");
|
|
11
|
+
}
|
|
12
|
+
function isPathWithin(parentPath, childPath) {
|
|
13
|
+
const rel = path.relative(parentPath, childPath);
|
|
14
|
+
return rel === "" || (!!rel && !rel.startsWith("..") && !path.isAbsolute(rel));
|
|
15
|
+
}
|
|
16
|
+
export function includePathOf(entry) {
|
|
17
|
+
return typeof entry === "string" ? entry : entry.path;
|
|
18
|
+
}
|
|
19
|
+
export function normalizeIncludePath(raw, loadoutRoot) {
|
|
20
|
+
const trimmed = raw.trim();
|
|
21
|
+
if (!trimmed) {
|
|
22
|
+
throw new Error("Artifact path cannot be empty.");
|
|
23
|
+
}
|
|
24
|
+
let includePath;
|
|
25
|
+
if (path.isAbsolute(trimmed)) {
|
|
26
|
+
if (!loadoutRoot) {
|
|
27
|
+
throw new Error(`Absolute artifact path requires a loadout root: ${trimmed}`);
|
|
28
|
+
}
|
|
29
|
+
const resolvedRoot = path.resolve(loadoutRoot);
|
|
30
|
+
const resolvedPath = path.resolve(trimmed);
|
|
31
|
+
if (!isPathWithin(resolvedRoot, resolvedPath)) {
|
|
32
|
+
throw new Error(`Artifact path must be inside ${loadoutRoot}: ${trimmed}`);
|
|
33
|
+
}
|
|
34
|
+
includePath = path.relative(resolvedRoot, resolvedPath);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
includePath = trimmed;
|
|
38
|
+
}
|
|
39
|
+
includePath = toPosix(includePath).replace(/^\.\//, "");
|
|
40
|
+
if (includePath === ".loadouts") {
|
|
41
|
+
throw new Error("Artifact path must point to an artifact inside .loadouts.");
|
|
42
|
+
}
|
|
43
|
+
if (includePath.startsWith(".loadouts/")) {
|
|
44
|
+
includePath = includePath.slice(".loadouts/".length);
|
|
45
|
+
}
|
|
46
|
+
includePath = path.posix.normalize(includePath);
|
|
47
|
+
if (includePath === "." || includePath === "" || includePath === ".." || includePath.startsWith("../")) {
|
|
48
|
+
throw new Error(`Artifact path cannot escape .loadouts: ${raw}`);
|
|
49
|
+
}
|
|
50
|
+
return includePath;
|
|
51
|
+
}
|
|
52
|
+
export function hasInclude(definition, includePath) {
|
|
53
|
+
return definition.include.some((entry) => includePathOf(entry) === includePath);
|
|
54
|
+
}
|
|
55
|
+
export function addIncludes(definition, includes) {
|
|
56
|
+
const result = { changed: [], skipped: [] };
|
|
57
|
+
for (const include of includes) {
|
|
58
|
+
if (hasInclude(definition, include.path)) {
|
|
59
|
+
result.skipped.push({ path: include.path, reason: "already included" });
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
definition.include.push(include.tools ? { path: include.path, tools: include.tools } : include.path);
|
|
63
|
+
result.changed.push(include.path);
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
export function removeIncludes(definition, includePaths) {
|
|
68
|
+
const result = { changed: [], skipped: [] };
|
|
69
|
+
for (const includePath of includePaths) {
|
|
70
|
+
const before = definition.include.length;
|
|
71
|
+
definition.include = definition.include.filter((entry) => includePathOf(entry) !== includePath);
|
|
72
|
+
if (definition.include.length === before) {
|
|
73
|
+
result.skipped.push({ path: includePath, reason: "not included" });
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
result.changed.push(includePath);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return result;
|
|
80
|
+
}
|
|
81
|
+
export function parseToolsOption(raw) {
|
|
82
|
+
if (!raw)
|
|
83
|
+
return undefined;
|
|
84
|
+
const tools = [...new Set(raw.split(",").map((tool) => tool.trim()).filter(Boolean))];
|
|
85
|
+
if (tools.length === 0) {
|
|
86
|
+
throw new Error("--tools requires at least one tool name.");
|
|
87
|
+
}
|
|
88
|
+
for (const tool of tools) {
|
|
89
|
+
if (!registry.getTool(tool)) {
|
|
90
|
+
throw new Error(`Unknown tool: ${tool}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return tools;
|
|
94
|
+
}
|
|
95
|
+
export function findLoadoutPath(loadoutRoot, name) {
|
|
96
|
+
const yamlPath = path.join(loadoutRoot, LOADOUTS_DIR, `${name}.yaml`);
|
|
97
|
+
const ymlPath = path.join(loadoutRoot, LOADOUTS_DIR, `${name}.yml`);
|
|
98
|
+
if (fileExists(yamlPath))
|
|
99
|
+
return yamlPath;
|
|
100
|
+
if (fileExists(ymlPath))
|
|
101
|
+
return ymlPath;
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
export async function resolveLoadoutMutationTarget(name, options, cwd = process.cwd()) {
|
|
105
|
+
if (options.local && options.global) {
|
|
106
|
+
throw new Error("Use either --local or --global, not both.");
|
|
107
|
+
}
|
|
108
|
+
const scope = await requireScopeForName(name, options, cwd);
|
|
109
|
+
const ctx = await getContext(scope, cwd);
|
|
110
|
+
const loadoutPath = findLoadoutPath(ctx.configPath, name);
|
|
111
|
+
if (!loadoutPath) {
|
|
112
|
+
throw new Error(`Loadout '${name}' not found in ${scope} scope.`);
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
ctx,
|
|
116
|
+
loadoutPath,
|
|
117
|
+
definition: parseLoadoutDefinition(loadoutPath),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
export function normalizeAndValidateArtifact(raw, loadoutRoot) {
|
|
121
|
+
const includePath = normalizeIncludePath(raw, loadoutRoot);
|
|
122
|
+
const kind = registry.allKinds().find((candidate) => candidate.detect(includePath));
|
|
123
|
+
if (!kind) {
|
|
124
|
+
throw new Error(`Unsupported artifact path: ${includePath}`);
|
|
125
|
+
}
|
|
126
|
+
const artifactPath = path.join(loadoutRoot, includePath);
|
|
127
|
+
const exists = kind.layout === "dir"
|
|
128
|
+
? isDirectory(artifactPath)
|
|
129
|
+
: fileExists(artifactPath) && !isDirectory(artifactPath);
|
|
130
|
+
if (!exists) {
|
|
131
|
+
throw new Error(`Artifact not found: ${includePath}`);
|
|
132
|
+
}
|
|
133
|
+
return { path: includePath };
|
|
134
|
+
}
|
|
135
|
+
export function writeLoadoutDefinition(loadoutPath, definition) {
|
|
136
|
+
writeFile(loadoutPath, yaml.stringify(definition));
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=loadout-include.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadout-include.js","sourceRoot":"","sources":["../../../src/cli/commands/loadout-include.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { type ScopeFlags } from "../../core/scope.js";
|
|
3
|
+
import { type IncludeMutationResult } from "./loadout-include.js";
|
|
4
|
+
export interface RemoveFromResult extends IncludeMutationResult {
|
|
5
|
+
loadout: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function runRemoveFrom(loadout: string, artifacts: string[], options: ScopeFlags, cwd?: string): Promise<RemoveFromResult>;
|
|
8
|
+
export declare const removeFromCommand: Command;
|
|
9
|
+
//# sourceMappingURL=remove-from.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-from.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/remove-from.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAKL,KAAK,qBAAqB,EAC3B,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,EAAE,UAAU,EACnB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAc3B;AAsBD,eAAO,MAAM,iBAAiB,SAa1B,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { SCOPE_FLAGS } from "../../core/scope.js";
|
|
4
|
+
import { log, heading } from "../../lib/output.js";
|
|
5
|
+
import { normalizeIncludePath, removeIncludes, resolveLoadoutMutationTarget, writeLoadoutDefinition, } from "./loadout-include.js";
|
|
6
|
+
export async function runRemoveFrom(loadout, artifacts, options, cwd = process.cwd()) {
|
|
7
|
+
if (artifacts.length === 0) {
|
|
8
|
+
throw new Error("Provide at least one artifact path.");
|
|
9
|
+
}
|
|
10
|
+
const target = await resolveLoadoutMutationTarget(loadout, options, cwd);
|
|
11
|
+
const includePaths = artifacts.map((artifact) => normalizeIncludePath(artifact, target.ctx.configPath));
|
|
12
|
+
const result = removeIncludes(target.definition, includePaths);
|
|
13
|
+
if (result.changed.length > 0) {
|
|
14
|
+
writeLoadoutDefinition(target.loadoutPath, target.definition);
|
|
15
|
+
}
|
|
16
|
+
return { loadout, ...result };
|
|
17
|
+
}
|
|
18
|
+
function printResult(result) {
|
|
19
|
+
if (result.changed.length === 0) {
|
|
20
|
+
log.dim(`No changes to ${result.loadout}.`);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
heading(`Removed from ${result.loadout}`);
|
|
24
|
+
for (const includePath of result.changed) {
|
|
25
|
+
console.log(chalk.red(`- ${includePath}`));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
for (const skipped of result.skipped) {
|
|
29
|
+
console.log(chalk.dim(`- ${skipped.path} ${skipped.reason}`));
|
|
30
|
+
}
|
|
31
|
+
if (result.changed.length > 0) {
|
|
32
|
+
console.log();
|
|
33
|
+
log.info(`Run ${chalk.cyan("loadouts sync")} to apply changes.`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export const removeFromCommand = new Command("remove-from")
|
|
37
|
+
.description("Remove artifacts from a loadout without deleting files")
|
|
38
|
+
.argument("<loadout>", "Loadout to update")
|
|
39
|
+
.argument("<artifacts...>", "Artifact paths relative to .loadouts/")
|
|
40
|
+
.option(...SCOPE_FLAGS.local)
|
|
41
|
+
.option(...SCOPE_FLAGS.global)
|
|
42
|
+
.action(async (loadout, artifacts, options) => {
|
|
43
|
+
try {
|
|
44
|
+
printResult(await runRemoveFrom(loadout, artifacts, options));
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
log.error(err instanceof Error ? err.message : String(err));
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=remove-from.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-from.js","sourceRoot":"","sources":["../../../src/cli/commands/remove-from.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAQ,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAQ,MAAM,WAAW,CAAC;AAmF1C,eAAO,MAAM,GAAG,SAGO,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -27,6 +27,8 @@ import { instructionsCommand } from "./commands/instructions.js";
|
|
|
27
27
|
import { infoCommand } from "./commands/info.js";
|
|
28
28
|
import { diffCommand } from "./commands/diff.js";
|
|
29
29
|
import { editCommand } from "./commands/edit.js";
|
|
30
|
+
import { addToCommand } from "./commands/add-to.js";
|
|
31
|
+
import { removeFromCommand } from "./commands/remove-from.js";
|
|
30
32
|
import { kindsCommand } from "./commands/kinds.js";
|
|
31
33
|
import { docsCommand } from "./commands/docs.js";
|
|
32
34
|
import { sanitizeCommand } from "./commands/sanitize.js";
|
|
@@ -56,6 +58,8 @@ const COMMAND_GROUPS = [
|
|
|
56
58
|
initCommand,
|
|
57
59
|
installCommand,
|
|
58
60
|
createCommand,
|
|
61
|
+
addToCommand,
|
|
62
|
+
removeFromCommand,
|
|
59
63
|
editCommand,
|
|
60
64
|
removeCommand,
|
|
61
65
|
listCommand,
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/docs/authoring.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
This guide covers creating rules, skills, and instructions. The typical workflow:
|
|
4
4
|
|
|
5
5
|
1. **Create** an artifact (`loadouts rule add`, `loadouts skill add`, etc.)
|
|
6
|
-
2. **Include** it in a loadout
|
|
6
|
+
2. **Include** it in a loadout (`loadouts add-to <loadout> <artifact>`)
|
|
7
7
|
3. **Sync** to render outputs (`loadouts sync`)
|
|
8
8
|
4. **Verify** with `loadouts status` or `loadouts info`
|
|
9
9
|
|
|
@@ -35,7 +35,11 @@ Use errors.Join() for error wrapping.
|
|
|
35
35
|
loadouts rule add api-standards -d "REST API conventions" -p "**/*_handler.go"
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
After creating, add
|
|
38
|
+
After creating, add it to a loadout:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
loadouts add-to backend rules/api-standards.md
|
|
42
|
+
```
|
|
39
43
|
|
|
40
44
|
**Import existing:**
|
|
41
45
|
```bash
|
|
@@ -86,7 +90,11 @@ Invoke this skill when debugging Python errors...
|
|
|
86
90
|
loadouts skill add deploy -d "Deployment procedures"
|
|
87
91
|
```
|
|
88
92
|
|
|
89
|
-
After creating, add
|
|
93
|
+
After creating, add it to a loadout:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
loadouts add-to backend skills/deploy
|
|
97
|
+
```
|
|
90
98
|
|
|
91
99
|
---
|
|
92
100
|
|
|
@@ -131,6 +139,10 @@ include:
|
|
|
131
139
|
```
|
|
132
140
|
|
|
133
141
|
**Per-include tool targeting:**
|
|
142
|
+
```bash
|
|
143
|
+
loadouts add-to backend rules/cursor-only.md --tools cursor
|
|
144
|
+
```
|
|
145
|
+
|
|
134
146
|
```yaml
|
|
135
147
|
include:
|
|
136
148
|
- rules/general.md # All tools
|
package/docs/commands.md
CHANGED
|
@@ -86,6 +86,21 @@ loadouts create api --extends base # Extend another loadout
|
|
|
86
86
|
loadouts create test -d "Testing" # With description
|
|
87
87
|
```
|
|
88
88
|
|
|
89
|
+
### `loadouts add-to <loadout> <artifacts...>`
|
|
90
|
+
Add existing artifacts to a loadout include list.
|
|
91
|
+
```bash
|
|
92
|
+
loadouts add-to backend rules/api.md
|
|
93
|
+
loadouts add-to backend skills/debugger
|
|
94
|
+
loadouts add-to backend rules/cursor.md --tools cursor
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### `loadouts remove-from <loadout> <artifacts...>`
|
|
98
|
+
Remove artifacts from a loadout include list without deleting the artifact files.
|
|
99
|
+
```bash
|
|
100
|
+
loadouts remove-from backend rules/api.md
|
|
101
|
+
loadouts remove-from backend skills/debugger
|
|
102
|
+
```
|
|
103
|
+
|
|
89
104
|
### `loadouts edit <name>`
|
|
90
105
|
Open a loadout definition in `$EDITOR`.
|
|
91
106
|
```bash
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Compatibility
|
|
2
|
+
|
|
3
|
+
Current built-in rendering targets for canonical artifacts.
|
|
4
|
+
|
|
5
|
+
## Artifact Paths (Project Scope)
|
|
6
|
+
|
|
7
|
+
| Tool | Rule | Skill | Instruction |
|
|
8
|
+
|------|------|-------|-------------|
|
|
9
|
+
| Claude Code | `.claude/rules/<name>.md` | `.claude/skills/<name>/` | `CLAUDE.md` (generated wrapper to `AGENTS.md`) |
|
|
10
|
+
| Cursor | `.cursor/rules/<name>.mdc` | `.cursor/skills/<name>/` | `AGENTS.md` |
|
|
11
|
+
| OpenCode | `.opencode/rules/<name>.md` | `.opencode/skills/<name>/` | `AGENTS.md` |
|
|
12
|
+
| Codex | - (no rule target) | `.agents/skills/<name>/` | `AGENTS.md` |
|
|
13
|
+
| Pi | - (no native rule target) | `.pi/skills/<name>/` | `AGENTS.md` |
|
|
14
|
+
|
|
15
|
+
Global scope uses each tool's configured global base path. Instruction files may render to home-level `AGENTS.md` or `CLAUDE.md` paths depending on the tool.
|
|
16
|
+
|
|
17
|
+
## Canonical Frontmatter
|
|
18
|
+
|
|
19
|
+
- Canonical rule fields: `description`, `paths`, `activation` (`always` or `scoped`).
|
|
20
|
+
- Canonical skill fields: `name`, `description`, `user-invocable`, `model-invocable`.
|
|
21
|
+
|
|
22
|
+
Rendered aliases for compatibility:
|
|
23
|
+
|
|
24
|
+
- Cursor/OpenCode rules: `paths` is mirrored to `globs`.
|
|
25
|
+
- Cursor/OpenCode rules: `activation` is mirrored to `alwaysApply` (`always -> true`, `scoped -> false`).
|
|
26
|
+
- OpenCode skills: `model-invocable` is mirrored to `disable-model-invocation` (inverted boolean).
|
|
27
|
+
|
|
28
|
+
Transforms add aliases when canonical fields are present and alias fields are not already set.
|
|
29
|
+
|
|
30
|
+
## Known Limitations
|
|
31
|
+
|
|
32
|
+
- Codex and Pi do not currently have a built-in rule output target.
|
|
33
|
+
- Frontmatter aliasing is only applied on transformed targets (currently Cursor/OpenCode rules and OpenCode skills).
|
|
34
|
+
- If both canonical and alias fields are set by hand, existing alias values are preserved.
|
package/docs/index.md
CHANGED
|
@@ -54,6 +54,7 @@ loadouts docs quickstart # Get started in 60 seconds
|
|
|
54
54
|
loadouts docs concepts # Loadouts, artifacts, scopes, tools
|
|
55
55
|
loadouts docs commands # Full command reference
|
|
56
56
|
loadouts docs authoring # Creating rules, skills, instructions
|
|
57
|
+
loadouts docs compatibility # Tool paths, frontmatter aliases, limits
|
|
57
58
|
loadouts docs workflows # Team setup, git, CI/CD
|
|
58
59
|
loadouts docs troubleshooting # Common issues and solutions
|
|
59
60
|
```
|
package/docs/quickstart.md
CHANGED
|
@@ -37,6 +37,7 @@ If you're starting fresh with no existing agent configs:
|
|
|
37
37
|
```bash
|
|
38
38
|
loadouts init # Creates .loadouts/ with a base loadout
|
|
39
39
|
loadouts rule add coding-standards # Create a rule file
|
|
40
|
+
loadouts add-to base rules/coding-standards.md
|
|
40
41
|
loadouts sync # Render to tool directories
|
|
41
42
|
```
|
|
42
43
|
|