@hasna/instructions 0.4.12 → 0.4.14
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/add-duplicate-target.test.d.ts +2 -0
- package/dist/cli/add-duplicate-target.test.d.ts.map +1 -0
- package/dist/cli/index.js +85 -11
- package/dist/index.js +5 -2
- package/dist/lib/apply-dry-run-verdict.test.d.ts +2 -0
- package/dist/lib/apply-dry-run-verdict.test.d.ts.map +1 -0
- package/dist/lib/apply.d.ts.map +1 -1
- package/dist/lib/compact-output.d.ts +2 -0
- package/dist/lib/compact-output.d.ts.map +1 -1
- package/dist/lib/config-target-identity.d.ts +28 -0
- package/dist/lib/config-target-identity.d.ts.map +1 -0
- package/dist/lib/config-target-identity.test.d.ts +2 -0
- package/dist/lib/config-target-identity.test.d.ts.map +1 -0
- package/dist/lib/sync-dry-run-unchanged.test.d.ts +2 -0
- package/dist/lib/sync-dry-run-unchanged.test.d.ts.map +1 -0
- package/dist/lib/sync.d.ts.map +1 -1
- package/dist/mcp/create-config-target-guard.test.d.ts +2 -0
- package/dist/mcp/create-config-target-guard.test.d.ts.map +1 -0
- package/dist/mcp/index.js +37 -8
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-duplicate-target.test.d.ts","sourceRoot":"","sources":["../../src/cli/add-duplicate-target.test.ts"],"names":[],"mappings":""}
|
package/dist/cli/index.js
CHANGED
|
@@ -11609,6 +11609,7 @@ async function writeConfigResult(config, targetPath, content, opts, meta = {}) {
|
|
|
11609
11609
|
new_content: renderedContent,
|
|
11610
11610
|
dry_run: opts.dryRun ?? false,
|
|
11611
11611
|
changed,
|
|
11612
|
+
primary_changed: changed,
|
|
11612
11613
|
unresolved_template_vars: [...new Set([
|
|
11613
11614
|
...renderedTarget.unresolved,
|
|
11614
11615
|
...rendered.unresolved
|
|
@@ -11675,7 +11676,7 @@ async function applyPreparedConfig(config, opts) {
|
|
|
11675
11676
|
if (config.target_path && shouldApplyPrimary) {
|
|
11676
11677
|
result = await writeConfigResult(config, config.target_path, config.content, opts);
|
|
11677
11678
|
result.outputs = outputResults;
|
|
11678
|
-
result.changed = result.
|
|
11679
|
+
result.changed = result.primary_changed || outputResults.some((output) => output.changed);
|
|
11679
11680
|
result.unresolved_template_vars = [...new Set([
|
|
11680
11681
|
...result.unresolved_template_vars ?? [],
|
|
11681
11682
|
...outputResults.flatMap((output) => output.unresolved_template_vars ?? [])
|
|
@@ -12114,7 +12115,8 @@ async function syncProject(opts) {
|
|
|
12114
12115
|
}
|
|
12115
12116
|
for (const ruleDir of [
|
|
12116
12117
|
{ dir: join9(absDir, ".claude", "rules"), agent: "claude", namePrefix: "rules" },
|
|
12117
|
-
{ dir: join9(absDir, ".agents", "rules"), agent: "antigravity", namePrefix: "antigravity-rules" }
|
|
12118
|
+
{ dir: join9(absDir, ".agents", "rules"), agent: "antigravity", namePrefix: "antigravity-rules" },
|
|
12119
|
+
{ dir: join9(absDir, ".cursor", "rules"), agent: "cursor", namePrefix: "cursor-rules" }
|
|
12118
12120
|
]) {
|
|
12119
12121
|
if (!existsSync9(ruleDir.dir))
|
|
12120
12122
|
continue;
|
|
@@ -12522,6 +12524,7 @@ var init_sync = __esm(() => {
|
|
|
12522
12524
|
{ file: "AGENTS.md", category: "rules", agent: "codex", format: "markdown" },
|
|
12523
12525
|
{ file: ".codex/AGENTS.md", category: "rules", agent: "codex", format: "markdown" },
|
|
12524
12526
|
{ file: ".opencode/AGENTS.md", category: "rules", agent: "opencode", format: "markdown" },
|
|
12527
|
+
{ file: "CODEWITH.md", category: "rules", agent: "codewith", format: "markdown" },
|
|
12525
12528
|
{ file: ".codewith/CODEWITH.md", category: "rules", agent: "codewith", format: "markdown" },
|
|
12526
12529
|
{ file: ".aicopilot/AICOPILOT.md", category: "rules", agent: "aicopilot", format: "markdown" },
|
|
12527
12530
|
{ file: "AICOPILOT.md", category: "rules", agent: "aicopilot", format: "markdown" },
|
|
@@ -13628,13 +13631,38 @@ var {
|
|
|
13628
13631
|
|
|
13629
13632
|
// src/cli/index.tsx
|
|
13630
13633
|
init_apply();
|
|
13631
|
-
init_sync();
|
|
13632
|
-
init_redact();
|
|
13633
13634
|
import chalk from "chalk";
|
|
13634
13635
|
import { existsSync as existsSync16, lstatSync as lstatSync4, readFileSync as readFileSync12, readSync, writeSync } from "fs";
|
|
13635
13636
|
import { homedir as homedir7 } from "os";
|
|
13636
13637
|
import { basename as basename7, join as join15, resolve as resolve8 } from "path";
|
|
13637
13638
|
|
|
13639
|
+
// src/lib/config-target-identity.ts
|
|
13640
|
+
init_apply();
|
|
13641
|
+
function findConfigsByTargetPath(configs, targetPath) {
|
|
13642
|
+
const wanted = normalizeTargetPath(targetPath);
|
|
13643
|
+
return configs.filter((config) => {
|
|
13644
|
+
if (config.kind === "reference")
|
|
13645
|
+
return false;
|
|
13646
|
+
if (!config.target_path)
|
|
13647
|
+
return false;
|
|
13648
|
+
return normalizeTargetPath(config.target_path) === wanted;
|
|
13649
|
+
});
|
|
13650
|
+
}
|
|
13651
|
+
function findDuplicateTargetPathGroups(configs) {
|
|
13652
|
+
const groups = new Map;
|
|
13653
|
+
for (const config of configs) {
|
|
13654
|
+
if (config.kind === "reference" || !config.target_path)
|
|
13655
|
+
continue;
|
|
13656
|
+
const key = normalizeTargetPath(config.target_path);
|
|
13657
|
+
groups.set(key, [...groups.get(key) ?? [], config]);
|
|
13658
|
+
}
|
|
13659
|
+
return [...groups.entries()].filter(([, rows]) => rows.length > 1).map(([target_path, rows]) => ({ target_path, configs: rows }));
|
|
13660
|
+
}
|
|
13661
|
+
|
|
13662
|
+
// src/cli/index.tsx
|
|
13663
|
+
init_sync();
|
|
13664
|
+
init_redact();
|
|
13665
|
+
|
|
13638
13666
|
// src/lib/export.ts
|
|
13639
13667
|
init_config_store();
|
|
13640
13668
|
import { existsSync as existsSync10, mkdirSync as mkdirSync4, rmSync as rmSync3, writeFileSync as writeFileSync3 } from "fs";
|
|
@@ -15418,7 +15446,7 @@ program.command("show <id>").alias("inspect").description("Show a config's conte
|
|
|
15418
15446
|
process.exit(1);
|
|
15419
15447
|
}
|
|
15420
15448
|
});
|
|
15421
|
-
program.command("add <path>").description("Ingest a file into the config DB").option("-n, --name <name>", "config name (defaults to filename)").option("-c, --category <cat>", "category override").option("-a, --agent <agent>", "agent override").option("-k, --kind <kind>", "kind: file|reference", "file").option("--template", "mark as template (has {{VAR}} placeholders)").action(async (filePath, opts) => {
|
|
15449
|
+
program.command("add <path>").description("Ingest a file into the config DB").option("-n, --name <name>", "config name (defaults to filename)").option("-c, --category <cat>", "category override").option("-a, --agent <agent>", "agent override").option("-k, --kind <kind>", "kind: file|reference", "file").option("--template", "mark as template (has {{VAR}} placeholders)").option("--update", "if a config already owns this path, update that row in place instead of refusing").action(async (filePath, opts) => {
|
|
15422
15450
|
const abs = resolve8(filePath);
|
|
15423
15451
|
if (!existsSync16(abs)) {
|
|
15424
15452
|
console.error(chalk.red(`File not found: ${abs}`));
|
|
@@ -15429,7 +15457,39 @@ program.command("add <path>").description("Ingest a file into the config DB").op
|
|
|
15429
15457
|
const { content, redacted, isTemplate: isTemplate2 } = redactContent(rawContent, fmt);
|
|
15430
15458
|
const targetPath = abs.startsWith(homedir7()) ? abs.replace(homedir7(), "~") : abs;
|
|
15431
15459
|
const name = opts.name || filePath.split("/").pop();
|
|
15432
|
-
const
|
|
15460
|
+
const store = resolveConfigStore();
|
|
15461
|
+
const existingOwners = opts.kind === "reference" ? [] : findConfigsByTargetPath(await store.listConfigs(), targetPath);
|
|
15462
|
+
if (existingOwners.length > 0 && !opts.update) {
|
|
15463
|
+
const owners = existingOwners.map((owner) => `${owner.slug} (${owner.id})`).join(", ");
|
|
15464
|
+
console.error(chalk.red(`${targetPath} is already tracked by: ${owners}`));
|
|
15465
|
+
if (existingOwners.length > 1) {
|
|
15466
|
+
console.error(chalk.red(` ${existingOwners.length} rows already collide on this path \u2014 apply order between them is undefined.`));
|
|
15467
|
+
}
|
|
15468
|
+
console.error(chalk.dim(" Use `instructions add <path> --update` to refresh that row in place,"));
|
|
15469
|
+
console.error(chalk.dim(" `instructions sync` to pull disk changes in, or `instructions delete <id>` first."));
|
|
15470
|
+
process.exit(1);
|
|
15471
|
+
}
|
|
15472
|
+
let config;
|
|
15473
|
+
if (existingOwners.length > 0) {
|
|
15474
|
+
const [target, ...rest] = existingOwners;
|
|
15475
|
+
config = await store.updateConfig(target.id, {
|
|
15476
|
+
content,
|
|
15477
|
+
format: fmt,
|
|
15478
|
+
is_template: (opts.template ?? false) || isTemplate2,
|
|
15479
|
+
...opts.category ? { category: opts.category } : {},
|
|
15480
|
+
...opts.agent ? { agent: opts.agent } : {}
|
|
15481
|
+
});
|
|
15482
|
+
console.log(chalk.green("\u2713") + ` Updated: ${chalk.bold(config.name)} ${chalk.dim(`(${config.slug})`)}`);
|
|
15483
|
+
if (rest.length > 0) {
|
|
15484
|
+
console.log(chalk.yellow(` \u26A0 ${rest.length} other row(s) still target ${targetPath}: ${rest.map((r) => r.slug).join(", ")}`));
|
|
15485
|
+
console.log(chalk.yellow(" Apply order between them is undefined. Delete the extras."));
|
|
15486
|
+
}
|
|
15487
|
+
if (redacted.length > 0) {
|
|
15488
|
+
console.log(chalk.yellow(` \u26A0 Redacted ${redacted.length} secret(s).`));
|
|
15489
|
+
}
|
|
15490
|
+
return;
|
|
15491
|
+
}
|
|
15492
|
+
config = await store.createConfig({
|
|
15433
15493
|
name,
|
|
15434
15494
|
kind: opts.kind ?? "file",
|
|
15435
15495
|
category: opts.category ?? detectCategory(abs),
|
|
@@ -15475,12 +15535,12 @@ program.command("apply <id>").description("Apply a config to its target_path and
|
|
|
15475
15535
|
throw new Error(report.failures.map((failure) => failure.message).join("; "));
|
|
15476
15536
|
}
|
|
15477
15537
|
for (const result of report.results) {
|
|
15478
|
-
const status = opts.dryRun ? chalk.yellow("[dry-run]") : result.
|
|
15479
|
-
const change = result.
|
|
15538
|
+
const status = opts.dryRun ? chalk.yellow("[dry-run]") : result.primary_changed ? chalk.green("\u2713") : chalk.dim("=");
|
|
15539
|
+
const change = result.primary_changed ? "changed" : "unchanged";
|
|
15480
15540
|
console.log(`${status} ${result.path} ${chalk.dim(`(${change})`)}`);
|
|
15481
15541
|
for (const output of result.outputs ?? []) {
|
|
15482
|
-
const outputStatus = opts.dryRun ? chalk.yellow("[dry-run]") : output.
|
|
15483
|
-
const outputChange = output.
|
|
15542
|
+
const outputStatus = opts.dryRun ? chalk.yellow("[dry-run]") : output.primary_changed ? chalk.green("\u2713") : chalk.dim("=");
|
|
15543
|
+
const outputChange = output.primary_changed ? "changed" : "unchanged";
|
|
15484
15544
|
console.log(` ${outputStatus} ${output.path} ${chalk.dim(`[${output.agent}/${output.transform}] (${outputChange})`)}`);
|
|
15485
15545
|
}
|
|
15486
15546
|
}
|
|
@@ -15750,7 +15810,7 @@ profileCmd.command("apply [id]").description("Apply all configs in a profile to
|
|
|
15750
15810
|
const results = report.results;
|
|
15751
15811
|
let changed = 0;
|
|
15752
15812
|
for (const r of results) {
|
|
15753
|
-
const status = opts.dryRun ? chalk.yellow("[dry-run]") : r.
|
|
15813
|
+
const status = opts.dryRun ? chalk.yellow("[dry-run]") : r.primary_changed ? chalk.green("\u2713") : chalk.dim("=");
|
|
15754
15814
|
console.log(`${status} ${r.path}`);
|
|
15755
15815
|
if (r.changed)
|
|
15756
15816
|
changed++;
|
|
@@ -16419,6 +16479,20 @@ Stored configs (${allConfigs.length}):`));
|
|
|
16419
16479
|
secretCount += found.length;
|
|
16420
16480
|
}
|
|
16421
16481
|
secretCount === 0 ? pass("No unredacted secrets") : fail(`${secretCount} unredacted secret(s) \u2014 run \`configs scan --fix\``);
|
|
16482
|
+
const duplicateTargets = findDuplicateTargetPathGroups(allConfigs);
|
|
16483
|
+
if (duplicateTargets.length === 0) {
|
|
16484
|
+
pass("No target path is claimed by more than one config");
|
|
16485
|
+
} else {
|
|
16486
|
+
const rowCount = duplicateTargets.reduce((total, group) => total + group.configs.length, 0);
|
|
16487
|
+
fail(`${duplicateTargets.length} target path(s) claimed by more than one config (${rowCount} rows) \u2014 apply order between them is undefined`);
|
|
16488
|
+
for (const group of duplicateTargets) {
|
|
16489
|
+
console.log(chalk.yellow(` ${group.target_path}`));
|
|
16490
|
+
for (const c of group.configs) {
|
|
16491
|
+
console.log(chalk.dim(` ${c.slug} (${c.id}) updated ${c.updated_at}`));
|
|
16492
|
+
}
|
|
16493
|
+
}
|
|
16494
|
+
console.log(chalk.dim(" Keep one row per path: `instructions delete <id>` for the extras."));
|
|
16495
|
+
}
|
|
16422
16496
|
console.log(`
|
|
16423
16497
|
${issues === 0 ? chalk.green("\u2713 All checks passed") : chalk.yellow(`${issues} issue(s) found`)}`);
|
|
16424
16498
|
});
|
package/dist/index.js
CHANGED
|
@@ -9623,6 +9623,7 @@ async function writeConfigResult(config, targetPath, content, opts, meta = {}) {
|
|
|
9623
9623
|
new_content: renderedContent,
|
|
9624
9624
|
dry_run: opts.dryRun ?? false,
|
|
9625
9625
|
changed,
|
|
9626
|
+
primary_changed: changed,
|
|
9626
9627
|
unresolved_template_vars: [...new Set([
|
|
9627
9628
|
...renderedTarget.unresolved,
|
|
9628
9629
|
...rendered.unresolved
|
|
@@ -9689,7 +9690,7 @@ async function applyPreparedConfig(config, opts) {
|
|
|
9689
9690
|
if (config.target_path && shouldApplyPrimary) {
|
|
9690
9691
|
result = await writeConfigResult(config, config.target_path, config.content, opts);
|
|
9691
9692
|
result.outputs = outputResults;
|
|
9692
|
-
result.changed = result.
|
|
9693
|
+
result.changed = result.primary_changed || outputResults.some((output) => output.changed);
|
|
9693
9694
|
result.unresolved_template_vars = [...new Set([
|
|
9694
9695
|
...result.unresolved_template_vars ?? [],
|
|
9695
9696
|
...outputResults.flatMap((output) => output.unresolved_template_vars ?? [])
|
|
@@ -11455,6 +11456,7 @@ var PROJECT_CONFIG_FILES = [
|
|
|
11455
11456
|
{ file: "AGENTS.md", category: "rules", agent: "codex", format: "markdown" },
|
|
11456
11457
|
{ file: ".codex/AGENTS.md", category: "rules", agent: "codex", format: "markdown" },
|
|
11457
11458
|
{ file: ".opencode/AGENTS.md", category: "rules", agent: "opencode", format: "markdown" },
|
|
11459
|
+
{ file: "CODEWITH.md", category: "rules", agent: "codewith", format: "markdown" },
|
|
11458
11460
|
{ file: ".codewith/CODEWITH.md", category: "rules", agent: "codewith", format: "markdown" },
|
|
11459
11461
|
{ file: ".aicopilot/AICOPILOT.md", category: "rules", agent: "aicopilot", format: "markdown" },
|
|
11460
11462
|
{ file: "AICOPILOT.md", category: "rules", agent: "aicopilot", format: "markdown" },
|
|
@@ -11505,7 +11507,8 @@ async function syncProject(opts) {
|
|
|
11505
11507
|
}
|
|
11506
11508
|
for (const ruleDir of [
|
|
11507
11509
|
{ dir: join10(absDir, ".claude", "rules"), agent: "claude", namePrefix: "rules" },
|
|
11508
|
-
{ dir: join10(absDir, ".agents", "rules"), agent: "antigravity", namePrefix: "antigravity-rules" }
|
|
11510
|
+
{ dir: join10(absDir, ".agents", "rules"), agent: "antigravity", namePrefix: "antigravity-rules" },
|
|
11511
|
+
{ dir: join10(absDir, ".cursor", "rules"), agent: "cursor", namePrefix: "cursor-rules" }
|
|
11509
11512
|
]) {
|
|
11510
11513
|
if (!existsSync11(ruleDir.dir))
|
|
11511
11514
|
continue;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-dry-run-verdict.test.d.ts","sourceRoot":"","sources":["../../src/lib/apply-dry-run-verdict.test.ts"],"names":[],"mappings":""}
|
package/dist/lib/apply.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/lib/apply.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAgB,MAAM,mBAAmB,CAAC;AAE3E,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG1D,OAAO,EAGL,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC;AAI7B,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK5C;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAsBrD;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,yBAAyB,GAAG,2BAA2B,GAAG,yBAAyB,CAAC;IAClG,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE,wBAAwB,EAAE,CAAC;IACpC,QAAQ,EAAE,yBAAyB,EAAE,CAAC;CACvC;
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/lib/apply.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAgB,MAAM,mBAAmB,CAAC;AAE3E,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG1D,OAAO,EAGL,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC;AAI7B,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK5C;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAsBrD;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,yBAAyB,GAAG,2BAA2B,GAAG,yBAAyB,CAAC;IAClG,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE,wBAAwB,EAAE,CAAC;IACpC,QAAQ,EAAE,yBAAyB,EAAE,CAAC;CACvC;AAuHD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,WAAW,CAAC,CA+BtB;AA2ED,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,WAAW,EAAE,CAAC,CAMxB;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,kBAAkB,CAAC,CA4B7B;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,GAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAM,GACtC,OAAO,CAAC,kBAAkB,CAAC,CAE7B"}
|
|
@@ -69,6 +69,8 @@ export interface ApplyResultSummary {
|
|
|
69
69
|
path: string;
|
|
70
70
|
dry_run: boolean;
|
|
71
71
|
changed: boolean;
|
|
72
|
+
/** This target's own verdict; `changed` is the config-wide aggregate. */
|
|
73
|
+
primary_changed: boolean;
|
|
72
74
|
agent?: ApplyResult["agent"];
|
|
73
75
|
transform?: ApplyResult["transform"];
|
|
74
76
|
output_count: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compact-output.d.ts","sourceRoot":"","sources":["../../src/lib/compact-output.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"compact-output.d.ts","sourceRoot":"","sources":["../../src/lib/compact-output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Config } from "../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Every config row that already writes to `targetPath`.
|
|
4
|
+
*
|
|
5
|
+
* A target path is the config's identity on disk: two rows pointing at one file
|
|
6
|
+
* means an apply races itself, last writer wins, and nothing reports the
|
|
7
|
+
* conflict. Callers use this to refuse creating a second owner.
|
|
8
|
+
*
|
|
9
|
+
* Comparison is on the NORMALIZED path, not the stored string, because the same
|
|
10
|
+
* file is spelled several ways across the store — `~/.claude/CLAUDE.md` from
|
|
11
|
+
* `sync`, an absolute path from `add`, and either of those through a symlinked
|
|
12
|
+
* ancestor. Matching on the raw string is what let a twin row in through a
|
|
13
|
+
* different spelling of a path that was already owned.
|
|
14
|
+
*
|
|
15
|
+
* Reference configs (`kind: "reference"`) own no target path and never match.
|
|
16
|
+
*/
|
|
17
|
+
export declare function findConfigsByTargetPath(configs: Config[], targetPath: string): Config[];
|
|
18
|
+
/**
|
|
19
|
+
* Groups of rows that collide on one normalized target path. Only groups with
|
|
20
|
+
* more than one member are returned, so an empty result means the store is
|
|
21
|
+
* clean. Used by the store audit and by anything that needs to report existing
|
|
22
|
+
* corruption rather than merely prevent new corruption.
|
|
23
|
+
*/
|
|
24
|
+
export declare function findDuplicateTargetPathGroups(configs: Config[]): Array<{
|
|
25
|
+
target_path: string;
|
|
26
|
+
configs: Config[];
|
|
27
|
+
}>;
|
|
28
|
+
//# sourceMappingURL=config-target-identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-target-identity.d.ts","sourceRoot":"","sources":["../../src/lib/config-target-identity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAOvF;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAUlH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-target-identity.test.d.ts","sourceRoot":"","sources":["../../src/lib/config-target-identity.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-dry-run-unchanged.test.d.ts","sourceRoot":"","sources":["../../src/lib/sync-dry-run-unchanged.test.ts"],"names":[],"mappings":""}
|
package/dist/lib/sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/lib/sync.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACrH,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAW/E,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,eAAO,MAAM,qBAAqB,EAAE,YAAY,EAQ/C,CAAC;AAwDF,eAAO,MAAM,aAAa,EAAE,WAAW,EAwDtC,CAAC;AAIF,eAAO,MAAM,oBAAoB;;cAC2B,cAAc;WAAsB,WAAW;YAAwB,YAAY;
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/lib/sync.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACrH,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAW/E,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,eAAO,MAAM,qBAAqB,EAAE,YAAY,EAQ/C,CAAC;AAwDF,eAAO,MAAM,aAAa,EAAE,WAAW,EAwDtC,CAAC;AAIF,eAAO,MAAM,oBAAoB;;cAC2B,cAAc;WAAsB,WAAW;YAAwB,YAAY;GAe9I,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAiE/E;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,wBAAsB,SAAS,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,CAqGhF;AAGD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,wBAAsB,UAAU,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC,CAmClF;AAGD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA8JD,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CA+B9F;AAGD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAU/D;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAgBzD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAQ3D;AAGD,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-config-target-guard.test.d.ts","sourceRoot":"","sources":["../../src/mcp/create-config-target-guard.test.ts"],"names":[],"mappings":""}
|
package/dist/mcp/index.js
CHANGED
|
@@ -5926,6 +5926,7 @@ async function writeConfigResult(config, targetPath, content, opts, meta = {}) {
|
|
|
5926
5926
|
new_content: renderedContent,
|
|
5927
5927
|
dry_run: opts.dryRun ?? false,
|
|
5928
5928
|
changed,
|
|
5929
|
+
primary_changed: changed,
|
|
5929
5930
|
unresolved_template_vars: [...new Set([
|
|
5930
5931
|
...renderedTarget.unresolved,
|
|
5931
5932
|
...rendered.unresolved
|
|
@@ -5992,7 +5993,7 @@ async function applyPreparedConfig(config, opts) {
|
|
|
5992
5993
|
if (config.target_path && shouldApplyPrimary) {
|
|
5993
5994
|
result = await writeConfigResult(config, config.target_path, config.content, opts);
|
|
5994
5995
|
result.outputs = outputResults;
|
|
5995
|
-
result.changed = result.
|
|
5996
|
+
result.changed = result.primary_changed || outputResults.some((output) => output.changed);
|
|
5996
5997
|
result.unresolved_template_vars = [...new Set([
|
|
5997
5998
|
...result.unresolved_template_vars ?? [],
|
|
5998
5999
|
...outputResults.flatMap((output) => output.unresolved_template_vars ?? [])
|
|
@@ -6341,7 +6342,8 @@ async function syncProject(opts) {
|
|
|
6341
6342
|
}
|
|
6342
6343
|
for (const ruleDir of [
|
|
6343
6344
|
{ dir: join6(absDir, ".claude", "rules"), agent: "claude", namePrefix: "rules" },
|
|
6344
|
-
{ dir: join6(absDir, ".agents", "rules"), agent: "antigravity", namePrefix: "antigravity-rules" }
|
|
6345
|
+
{ dir: join6(absDir, ".agents", "rules"), agent: "antigravity", namePrefix: "antigravity-rules" },
|
|
6346
|
+
{ dir: join6(absDir, ".cursor", "rules"), agent: "cursor", namePrefix: "cursor-rules" }
|
|
6345
6347
|
]) {
|
|
6346
6348
|
if (!existsSync5(ruleDir.dir))
|
|
6347
6349
|
continue;
|
|
@@ -6749,6 +6751,7 @@ var init_sync = __esm(() => {
|
|
|
6749
6751
|
{ file: "AGENTS.md", category: "rules", agent: "codex", format: "markdown" },
|
|
6750
6752
|
{ file: ".codex/AGENTS.md", category: "rules", agent: "codex", format: "markdown" },
|
|
6751
6753
|
{ file: ".opencode/AGENTS.md", category: "rules", agent: "opencode", format: "markdown" },
|
|
6754
|
+
{ file: "CODEWITH.md", category: "rules", agent: "codewith", format: "markdown" },
|
|
6752
6755
|
{ file: ".codewith/CODEWITH.md", category: "rules", agent: "codewith", format: "markdown" },
|
|
6753
6756
|
{ file: ".aicopilot/AICOPILOT.md", category: "rules", agent: "aicopilot", format: "markdown" },
|
|
6754
6757
|
{ file: "AICOPILOT.md", category: "rules", agent: "aicopilot", format: "markdown" },
|
|
@@ -6855,7 +6858,7 @@ var init_sync_dir = __esm(() => {
|
|
|
6855
6858
|
var require_package = __commonJS((exports, module) => {
|
|
6856
6859
|
module.exports = {
|
|
6857
6860
|
name: "@hasna/instructions",
|
|
6858
|
-
version: "0.4.
|
|
6861
|
+
version: "0.4.14",
|
|
6859
6862
|
description: "AI coding agent instruction & configuration manager \u2014 store, version, apply, and share all your AI coding configs. CLI + MCP + HTTP API (instructions-serve) + generated SDK + Dashboard.",
|
|
6860
6863
|
type: "module",
|
|
6861
6864
|
main: "dist/index.js",
|
|
@@ -6955,11 +6958,26 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
6955
6958
|
// src/mcp/server.ts
|
|
6956
6959
|
init_config_store();
|
|
6957
6960
|
init_apply();
|
|
6958
|
-
init_sync_dir();
|
|
6959
|
-
init_machine();
|
|
6960
6961
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
6961
6962
|
import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
|
|
6962
6963
|
|
|
6964
|
+
// src/lib/config-target-identity.ts
|
|
6965
|
+
init_apply();
|
|
6966
|
+
function findConfigsByTargetPath(configs, targetPath) {
|
|
6967
|
+
const wanted = normalizeTargetPath(targetPath);
|
|
6968
|
+
return configs.filter((config) => {
|
|
6969
|
+
if (config.kind === "reference")
|
|
6970
|
+
return false;
|
|
6971
|
+
if (!config.target_path)
|
|
6972
|
+
return false;
|
|
6973
|
+
return normalizeTargetPath(config.target_path) === wanted;
|
|
6974
|
+
});
|
|
6975
|
+
}
|
|
6976
|
+
|
|
6977
|
+
// src/mcp/server.ts
|
|
6978
|
+
init_sync_dir();
|
|
6979
|
+
init_machine();
|
|
6980
|
+
|
|
6963
6981
|
// src/lib/compact-output.ts
|
|
6964
6982
|
var DEFAULT_LIST_LIMIT = 20;
|
|
6965
6983
|
var MAX_LIST_LIMIT = 100;
|
|
@@ -7049,6 +7067,7 @@ function summarizeApplyResult(result) {
|
|
|
7049
7067
|
path: result.path,
|
|
7050
7068
|
dry_run: result.dry_run,
|
|
7051
7069
|
changed: result.changed,
|
|
7070
|
+
primary_changed: result.primary_changed,
|
|
7052
7071
|
agent: result.agent,
|
|
7053
7072
|
transform: result.transform,
|
|
7054
7073
|
output_count: result.outputs?.length ?? 0,
|
|
@@ -7060,7 +7079,7 @@ function summarizeApplyResult(result) {
|
|
|
7060
7079
|
var TOOL_DOCS = {
|
|
7061
7080
|
list_configs: "List configs. Params: category?, agent?, kind?, search?, limit?, cursor?, verbose?. Defaults to a paged compact envelope without content; use get_config for full content.",
|
|
7062
7081
|
get_config: "Get a config by id or slug. Returns full config including content.",
|
|
7063
|
-
create_config: "Create a new config. Required: name, content, category. Optional: agent, target_path, outputs, kind, format, tags, description, is_template.",
|
|
7082
|
+
create_config: "Create a new config. Required: name, content, category. Optional: agent, target_path, outputs, kind, format, tags, description, is_template. Refuses when target_path is already tracked by another config (one target path, one row) \u2014 use update_config on the owning row, or delete_config first. kind:'reference' owns no target path and is exempt.",
|
|
7064
7083
|
update_config: "Update a config by id or slug. Optional: content, name, tags, description, category, agent, target_path, outputs.",
|
|
7065
7084
|
apply_config: "Apply a config through the shared ownership gate. Params: id_or_slug, dry_run?, verbose?. Returns results plus session-renderer-owned targets that were skipped.",
|
|
7066
7085
|
sync_directory: "Sync a directory with the DB. Params: dir, direction ('from_disk'|'to_disk'). Returns sync result.",
|
|
@@ -7141,14 +7160,24 @@ function buildServer() {
|
|
|
7141
7160
|
return ok(c);
|
|
7142
7161
|
}
|
|
7143
7162
|
case "create_config": {
|
|
7163
|
+
const kind = args["kind"] || undefined;
|
|
7164
|
+
const targetPath = args["target_path"] || undefined;
|
|
7165
|
+
if (targetPath && kind !== "reference") {
|
|
7166
|
+
const owners = findConfigsByTargetPath(await store.listConfigs(), targetPath);
|
|
7167
|
+
if (owners.length > 0) {
|
|
7168
|
+
const named = owners.map((owner) => `${owner.slug} (${owner.id})`).join(", ");
|
|
7169
|
+
const collision = owners.length > 1 ? ` ${owners.length} rows already collide on this path \u2014 apply order between them is undefined.` : "";
|
|
7170
|
+
return err(`${targetPath} is already tracked by: ${named}.${collision}` + ` Use update_config on that row to refresh it in place, or delete_config first.`);
|
|
7171
|
+
}
|
|
7172
|
+
}
|
|
7144
7173
|
const c = await store.createConfig({
|
|
7145
7174
|
name: args["name"],
|
|
7146
7175
|
content: args["content"],
|
|
7147
7176
|
category: args["category"],
|
|
7148
7177
|
agent: args["agent"] || undefined,
|
|
7149
|
-
target_path:
|
|
7178
|
+
target_path: targetPath,
|
|
7150
7179
|
outputs: args["outputs"],
|
|
7151
|
-
kind
|
|
7180
|
+
kind,
|
|
7152
7181
|
format: args["format"] || undefined,
|
|
7153
7182
|
tags: args["tags"] || undefined,
|
|
7154
7183
|
description: args["description"] || undefined,
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AA4EnE,wBAAgB,WAAW,IAAI,MAAM,CAyTpC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -158,7 +158,21 @@ export interface ApplyResult {
|
|
|
158
158
|
previous_content: string | null;
|
|
159
159
|
new_content: string;
|
|
160
160
|
dry_run: boolean;
|
|
161
|
+
/**
|
|
162
|
+
* AGGREGATE: true when this config has any work to do — this target OR any of
|
|
163
|
+
* its outputs. Profile/sync counters and the MCP surface consume it this way,
|
|
164
|
+
* so its meaning is deliberately unchanged.
|
|
165
|
+
*/
|
|
161
166
|
changed: boolean;
|
|
167
|
+
/**
|
|
168
|
+
* This target's OWN verdict: does the file at `path` differ from what would be
|
|
169
|
+
* written? Distinct from `changed`, which ORs in the outputs — a config whose
|
|
170
|
+
* primary file is byte-identical but whose outputs drifted has
|
|
171
|
+
* `primary_changed: false` and `changed: true`. Display surfaces label a line
|
|
172
|
+
* with `path`, so they must read this one; reading `changed` there reported
|
|
173
|
+
* "changed" for a file that was not going to change.
|
|
174
|
+
*/
|
|
175
|
+
primary_changed: boolean;
|
|
162
176
|
agent?: ConfigAgent;
|
|
163
177
|
transform?: ConfigTransform;
|
|
164
178
|
outputs?: ApplyResult[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hasna/instructions",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.14",
|
|
4
4
|
"description": "AI coding agent instruction & configuration manager \u2014 store, version, apply, and share all your AI coding configs. CLI + MCP + HTTP API (instructions-serve) + generated SDK + Dashboard.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|