@hasna/instructions 0.4.17 → 0.4.18
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/index.js +129 -18
- package/dist/index.js +39 -12
- package/dist/lib/global-source-coverage.d.ts +41 -0
- package/dist/lib/global-source-coverage.d.ts.map +1 -0
- package/dist/lib/global-source-coverage.test.d.ts +2 -0
- package/dist/lib/global-source-coverage.test.d.ts.map +1 -0
- package/dist/lib/session-apply.d.ts +3 -1
- package/dist/lib/session-apply.d.ts.map +1 -1
- package/dist/lib/session-render-silent-source-drop.test.d.ts +2 -0
- package/dist/lib/session-render-silent-source-drop.test.d.ts.map +1 -0
- package/dist/lib/session-render.d.ts.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -10469,6 +10469,14 @@ function applyAgentOperatingRulesFloor(source, content) {
|
|
|
10469
10469
|
metadata: { ...source.metadata ?? {}, ...payload.metadata, ...floored }
|
|
10470
10470
|
};
|
|
10471
10471
|
}
|
|
10472
|
+
function skippedSource(source, reason) {
|
|
10473
|
+
return {
|
|
10474
|
+
id: source.id,
|
|
10475
|
+
label: source.resolvedLabel,
|
|
10476
|
+
targetProviders: source.targetProviders ?? [],
|
|
10477
|
+
reason
|
|
10478
|
+
};
|
|
10479
|
+
}
|
|
10472
10480
|
function normalizeSources(sources, tool, allowEmptySources) {
|
|
10473
10481
|
const normalized = sources.map((source, index) => {
|
|
10474
10482
|
if (!source.id.trim())
|
|
@@ -10493,14 +10501,17 @@ function normalizeSources(sources, tool, allowEmptySources) {
|
|
|
10493
10501
|
}
|
|
10494
10502
|
return normalized2;
|
|
10495
10503
|
});
|
|
10496
|
-
const
|
|
10504
|
+
const deduplicated = deduplicateSemanticPolicySources(normalized);
|
|
10505
|
+
const ordered = deduplicated.selected.sort((a, b) => SESSION_LAYER_RANK[a.resolvedLayer] - SESSION_LAYER_RANK[b.resolvedLayer] || a.resolvedOrder - b.resolvedOrder || a.id.localeCompare(b.id));
|
|
10497
10506
|
rejectDuplicateSourceSlugs(ordered);
|
|
10498
10507
|
rejectDuplicateRulePaths(ordered);
|
|
10499
|
-
return ordered;
|
|
10508
|
+
return { sources: ordered, skipped: deduplicated.skipped };
|
|
10500
10509
|
}
|
|
10501
10510
|
function deduplicateSemanticPolicySources(sources) {
|
|
10502
10511
|
const selected = [];
|
|
10512
|
+
const skipped = [];
|
|
10503
10513
|
const policySources = new Map;
|
|
10514
|
+
const collapseReason = (winner, key) => `superseded by "${winner.id}": sources declaring the semantic policy ${key} collapse to one so a single instruction home cannot carry two rule-set versions`;
|
|
10504
10515
|
for (const source of sources) {
|
|
10505
10516
|
const sentinel = source.content.match(AGENT_OPERATING_RULES_SENTINEL_PATTERN);
|
|
10506
10517
|
if (!sentinel) {
|
|
@@ -10523,17 +10534,18 @@ function deduplicateSemanticPolicySources(sources) {
|
|
|
10523
10534
|
}
|
|
10524
10535
|
const current = selected[existing.index];
|
|
10525
10536
|
const priorityOrder = semanticPolicySourcePriority(source) - semanticPolicySourcePriority(current);
|
|
10526
|
-
if (priorityOrder < 0)
|
|
10527
|
-
|
|
10528
|
-
if (priorityOrder === 0 && versionOrder <= 0)
|
|
10537
|
+
if (priorityOrder < 0 || priorityOrder === 0 && versionOrder <= 0) {
|
|
10538
|
+
skipped.push(skippedSource(source, collapseReason(current, key)));
|
|
10529
10539
|
continue;
|
|
10540
|
+
}
|
|
10541
|
+
skipped.push(skippedSource(current, collapseReason(source, key)));
|
|
10530
10542
|
selected[existing.index] = {
|
|
10531
10543
|
...source,
|
|
10532
10544
|
resolvedOrder: current.resolvedOrder
|
|
10533
10545
|
};
|
|
10534
10546
|
policySources.set(key, { index: existing.index, version, normalizedContent });
|
|
10535
10547
|
}
|
|
10536
|
-
return selected;
|
|
10548
|
+
return { selected, skipped };
|
|
10537
10549
|
}
|
|
10538
10550
|
function semanticPolicySourcePriority(source) {
|
|
10539
10551
|
let priority = 0;
|
|
@@ -10579,9 +10591,12 @@ function composeSources(sources) {
|
|
|
10579
10591
|
start = i;
|
|
10580
10592
|
}
|
|
10581
10593
|
if (start < 0)
|
|
10582
|
-
return sources;
|
|
10583
|
-
const
|
|
10584
|
-
|
|
10594
|
+
return { sources, skipped: [] };
|
|
10595
|
+
const earlier = sources.slice(0, start);
|
|
10596
|
+
const protectedSources = earlier.filter((source) => source.nonOverridable);
|
|
10597
|
+
const replacer = sources[start];
|
|
10598
|
+
const skipped = earlier.filter((source) => !source.nonOverridable).map((source) => skippedSource(source, `superseded by "${replacer.id}": a replace-merge source discards earlier overridable instruction layers`));
|
|
10599
|
+
return { sources: [...protectedSources, ...sources.slice(start)], skipped };
|
|
10585
10600
|
}
|
|
10586
10601
|
function sectionForSource(source) {
|
|
10587
10602
|
const parts = [
|
|
@@ -10956,7 +10971,14 @@ function planSessionRender(input) {
|
|
|
10956
10971
|
const targetOwner = resolveSessionTargetOwnership(input, { targetHome, targetKind });
|
|
10957
10972
|
const blocked = blockers.length > 0;
|
|
10958
10973
|
const allowEmptySources = input.allowEmptySources === true;
|
|
10959
|
-
const
|
|
10974
|
+
const normalized = normalizeSources(input.sources, input.tool, allowEmptySources);
|
|
10975
|
+
const composed = composeSources(normalized.sources);
|
|
10976
|
+
const orderedSources = composed.sources;
|
|
10977
|
+
const skippedSources = [
|
|
10978
|
+
...input.skippedSources ?? [],
|
|
10979
|
+
...normalized.skipped,
|
|
10980
|
+
...composed.skipped
|
|
10981
|
+
];
|
|
10960
10982
|
if (orderedSources.length === 0 && !allowEmptySources) {
|
|
10961
10983
|
throw new Error("Session render has no instruction sources. Pass --allow-empty-sources only for explicit empty renders.");
|
|
10962
10984
|
}
|
|
@@ -10964,7 +10986,8 @@ function planSessionRender(input) {
|
|
|
10964
10986
|
const env = adapter.envVar && !blocked ? { [adapter.envVar]: targetHome } : {};
|
|
10965
10987
|
const warnings = [
|
|
10966
10988
|
...orderedSources.length === 0 ? ["No instruction sources were provided."] : [],
|
|
10967
|
-
...blockers
|
|
10989
|
+
...blockers,
|
|
10990
|
+
...skippedSources.map((entry) => `Instruction source "${entry.id}" was not rendered: ${entry.reason}`)
|
|
10968
10991
|
];
|
|
10969
10992
|
if (input.providerConfig && input.tool !== "opencode") {
|
|
10970
10993
|
throw new Error("Provider base config is supported only for OpenCode session renders.");
|
|
@@ -11036,7 +11059,7 @@ function planSessionRender(input) {
|
|
|
11036
11059
|
})),
|
|
11037
11060
|
...projectContext ? [projectContext.source] : []
|
|
11038
11061
|
],
|
|
11039
|
-
skippedSources
|
|
11062
|
+
skippedSources,
|
|
11040
11063
|
files: files.map((file) => ({
|
|
11041
11064
|
path: file.path,
|
|
11042
11065
|
relativePath: file.relativePath,
|
|
@@ -13958,6 +13981,8 @@ function applySessionRenderUnlocked(plan, options, coordination) {
|
|
|
13958
13981
|
manifestPath,
|
|
13959
13982
|
snapshotPath: null,
|
|
13960
13983
|
env: plan.env,
|
|
13984
|
+
warnings: plan.warnings,
|
|
13985
|
+
skippedSources: plan.manifest.skippedSources,
|
|
13961
13986
|
files: results,
|
|
13962
13987
|
conflicts,
|
|
13963
13988
|
drift
|
|
@@ -13998,6 +14023,8 @@ function applySessionRenderUnlocked(plan, options, coordination) {
|
|
|
13998
14023
|
manifestPath,
|
|
13999
14024
|
snapshotPath,
|
|
14000
14025
|
env: plan.env,
|
|
14026
|
+
warnings: plan.warnings,
|
|
14027
|
+
skippedSources: plan.manifest.skippedSources,
|
|
14001
14028
|
files: results,
|
|
14002
14029
|
conflicts,
|
|
14003
14030
|
drift
|
|
@@ -14765,6 +14792,37 @@ function sha2564(content) {
|
|
|
14765
14792
|
// src/cli/index.tsx
|
|
14766
14793
|
init_session_render();
|
|
14767
14794
|
|
|
14795
|
+
// src/lib/global-source-coverage.ts
|
|
14796
|
+
var GLOBAL_SOURCE_SLUG_PREFIX = "global-";
|
|
14797
|
+
var RETIRED_GLOBAL_SOURCE_TAG = "retired-global-source";
|
|
14798
|
+
function expectedGlobalSourceSlugs(registryConfigs) {
|
|
14799
|
+
return registryConfigs.filter((c) => c.slug.startsWith(GLOBAL_SOURCE_SLUG_PREFIX)).filter((c) => !(c.tags ?? []).includes(RETIRED_GLOBAL_SOURCE_TAG)).map((c) => c.slug).sort();
|
|
14800
|
+
}
|
|
14801
|
+
function accountedGlobalSourceSlugs(manifest) {
|
|
14802
|
+
return [...manifest.sources, ...manifest.skippedSources].map((source) => source.id).filter((id) => id.startsWith(GLOBAL_SOURCE_SLUG_PREFIX));
|
|
14803
|
+
}
|
|
14804
|
+
function computeGlobalSourceCoverage(registryConfigs, configuredSlugs) {
|
|
14805
|
+
const expected = expectedGlobalSourceSlugs(registryConfigs);
|
|
14806
|
+
const expectedSet = new Set(expected);
|
|
14807
|
+
const configuredSet = new Set(configuredSlugs);
|
|
14808
|
+
const missing = expected.filter((slug2) => !configuredSet.has(slug2));
|
|
14809
|
+
const unexpected = [...configuredSet].filter((slug2) => slug2.startsWith(GLOBAL_SOURCE_SLUG_PREFIX) && !expectedSet.has(slug2)).sort();
|
|
14810
|
+
return {
|
|
14811
|
+
expectedSlugs: expected,
|
|
14812
|
+
configuredSlugs: [...configuredSet].sort(),
|
|
14813
|
+
missingSlugs: missing,
|
|
14814
|
+
unexpectedSlugs: unexpected,
|
|
14815
|
+
complete: missing.length === 0
|
|
14816
|
+
};
|
|
14817
|
+
}
|
|
14818
|
+
function formatGlobalSourceCoverageWarnings(result) {
|
|
14819
|
+
if (result.complete)
|
|
14820
|
+
return [];
|
|
14821
|
+
return [
|
|
14822
|
+
`Global source coverage: ${result.expectedSlugs.length - result.missingSlugs.length}/${result.expectedSlugs.length} registered global-* sources are in this render. Missing: ${result.missingSlugs.join(", ")}`
|
|
14823
|
+
];
|
|
14824
|
+
}
|
|
14825
|
+
|
|
14768
14826
|
// src/lib/platform-profiles.ts
|
|
14769
14827
|
init_config_store();
|
|
14770
14828
|
|
|
@@ -15431,6 +15489,11 @@ async function collectSessionSources(opts, tool, store) {
|
|
|
15431
15489
|
}
|
|
15432
15490
|
return sources.map((source) => replaceIds.has(source.id) ? { ...source, merge: "replace" } : source);
|
|
15433
15491
|
}
|
|
15492
|
+
async function checkGlobalSourceCoverage(plan, store) {
|
|
15493
|
+
const registryConfigs = await store.listConfigs({});
|
|
15494
|
+
const configuredSlugs = accountedGlobalSourceSlugs(plan.manifest);
|
|
15495
|
+
return computeGlobalSourceCoverage(registryConfigs, configuredSlugs);
|
|
15496
|
+
}
|
|
15434
15497
|
function stripSessionFileContent(file) {
|
|
15435
15498
|
const { content: _content, ...rest } = file;
|
|
15436
15499
|
return rest;
|
|
@@ -15594,6 +15657,28 @@ program.command("show <id>").alias("inspect").description("Show a config's conte
|
|
|
15594
15657
|
process.exit(1);
|
|
15595
15658
|
}
|
|
15596
15659
|
});
|
|
15660
|
+
program.command("tag <id>").description("Add or remove tags on a stored config (metadata-only; content/target_path untouched)").option("--add <tag>", "tag to add; repeatable", collectOption, []).option("--remove <tag>", "tag to remove; repeatable", collectOption, []).option("--json", "output the updated config as JSON").action(async (id, opts) => {
|
|
15661
|
+
const add = opts.add;
|
|
15662
|
+
const remove = opts.remove;
|
|
15663
|
+
if (add.length === 0 && remove.length === 0) {
|
|
15664
|
+
console.error(chalk.red("Pass at least one --add <tag> or --remove <tag>."));
|
|
15665
|
+
process.exit(1);
|
|
15666
|
+
}
|
|
15667
|
+
const store = resolveConfigStore();
|
|
15668
|
+
const config = await store.getConfig(id);
|
|
15669
|
+
const tagSet = new Set(config.tags);
|
|
15670
|
+
for (const t of add)
|
|
15671
|
+
tagSet.add(t);
|
|
15672
|
+
for (const t of remove)
|
|
15673
|
+
tagSet.delete(t);
|
|
15674
|
+
const nextTags = [...tagSet].sort();
|
|
15675
|
+
const updated = await store.updateConfig(config.id, { tags: nextTags });
|
|
15676
|
+
if (opts.json) {
|
|
15677
|
+
printJson(updated);
|
|
15678
|
+
return;
|
|
15679
|
+
}
|
|
15680
|
+
console.log(chalk.green("\u2713") + ` Tags on ${chalk.bold(updated.name)} ${chalk.dim(`(${updated.slug})`)}: ${nextTags.join(", ") || chalk.dim("(none)")}`);
|
|
15681
|
+
});
|
|
15597
15682
|
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) => {
|
|
15598
15683
|
const abs = resolve8(filePath);
|
|
15599
15684
|
if (!existsSync16(abs)) {
|
|
@@ -16089,14 +16174,15 @@ projectContextCmd.command("apply").description("Atomically write project context
|
|
|
16089
16174
|
}
|
|
16090
16175
|
});
|
|
16091
16176
|
var sessionCmd = program.command("session").description("Plan and apply session-scoped agent instruction files");
|
|
16092
|
-
sessionCmd.command("plan").description("Produce a dry-run render plan for profile-scoped instruction injection").requiredOption("--tool <tool>", `target tool (${SESSION_RENDER_TOOLS.join("|")})`).requiredOption("--profile <profile>", "account/profile name that owns the rendered instruction home").option("--target-home <path>", "override generated profile-scoped target home").option("--project-root <path>", "repository root for project-scoped adapters such as Cursor").option("--session-id <id>", "session id to include in the manifest").option("--source <layer:id=path>", `instruction source file; layers: ${SESSION_SOURCE_LAYER_HELP}`, collectOption, []).option("--config <layer:id-or-slug>", "stored config source by id/slug; repeatable; layer aliases match --source", collectOption, []).option("--identity-export <path>", "OpenIdentities configs instruction export JSON; repeatable", collectOption, []).option("--replace-source <id>", "source id that replaces earlier layers instead of appending", collectOption, []).option("--codewith-native-imports", "select the gated Codewith native @ import adapter").option("--allow-empty-sources", "allow an explicit empty render plan").option("--json", "output dry-run JSON").action(async (opts) => {
|
|
16177
|
+
sessionCmd.command("plan").description("Produce a dry-run render plan for profile-scoped instruction injection").requiredOption("--tool <tool>", `target tool (${SESSION_RENDER_TOOLS.join("|")})`).requiredOption("--profile <profile>", "account/profile name that owns the rendered instruction home").option("--target-home <path>", "override generated profile-scoped target home").option("--project-root <path>", "repository root for project-scoped adapters such as Cursor").option("--session-id <id>", "session id to include in the manifest").option("--source <layer:id=path>", `instruction source file; layers: ${SESSION_SOURCE_LAYER_HELP}`, collectOption, []).option("--config <layer:id-or-slug>", "stored config source by id/slug; repeatable; layer aliases match --source", collectOption, []).option("--identity-export <path>", "OpenIdentities configs instruction export JSON; repeatable", collectOption, []).option("--replace-source <id>", "source id that replaces earlier layers instead of appending", collectOption, []).option("--codewith-native-imports", "select the gated Codewith native @ import adapter").option("--allow-empty-sources", "allow an explicit empty render plan").option("--check-global-coverage", "warn (non-fatal) when a registered, non-retired global-* source is absent from this render's --config list; expected is read fresh from the registry, independent of this plan (todos 102d6d0a)").option("--json", "output dry-run JSON").action(async (opts) => {
|
|
16093
16178
|
try {
|
|
16094
16179
|
const tool = opts.tool;
|
|
16095
16180
|
if (!SESSION_RENDER_TOOLS.includes(tool)) {
|
|
16096
16181
|
console.error(chalk.red(`Unsupported tool: ${opts.tool}`));
|
|
16097
16182
|
process.exit(1);
|
|
16098
16183
|
}
|
|
16099
|
-
const
|
|
16184
|
+
const store = resolveConfigStore();
|
|
16185
|
+
const sources = await collectSessionSources(opts, tool, store);
|
|
16100
16186
|
const plan = planSessionRender({
|
|
16101
16187
|
tool,
|
|
16102
16188
|
profile: opts.profile,
|
|
@@ -16107,8 +16193,12 @@ sessionCmd.command("plan").description("Produce a dry-run render plan for profil
|
|
|
16107
16193
|
allowEmptySources: opts.allowEmptySources,
|
|
16108
16194
|
sources
|
|
16109
16195
|
});
|
|
16196
|
+
const globalCoverage = opts.checkGlobalCoverage ? await checkGlobalSourceCoverage(plan, store) : null;
|
|
16110
16197
|
if (opts.json) {
|
|
16111
|
-
printJson(
|
|
16198
|
+
printJson({
|
|
16199
|
+
...planJsonForOutput(plan),
|
|
16200
|
+
...globalCoverage ? { globalSourceCoverage: globalCoverage } : {}
|
|
16201
|
+
});
|
|
16112
16202
|
return;
|
|
16113
16203
|
}
|
|
16114
16204
|
console.log(chalk.bold(`${plan.tool} session render plan`) + chalk.dim(` (${plan.adapter.mode})`));
|
|
@@ -16128,20 +16218,27 @@ sessionCmd.command("plan").description("Produce a dry-run render plan for profil
|
|
|
16128
16218
|
for (const warning of plan.warnings)
|
|
16129
16219
|
console.log(chalk.yellow(`warning: ${warning}`));
|
|
16130
16220
|
}
|
|
16221
|
+
if (globalCoverage) {
|
|
16222
|
+
for (const warning of formatGlobalSourceCoverageWarnings(globalCoverage))
|
|
16223
|
+
console.log(chalk.yellow(`warning: ${warning}`));
|
|
16224
|
+
if (globalCoverage.complete)
|
|
16225
|
+
console.log(chalk.dim(`global source coverage: ${globalCoverage.expectedSlugs.length}/${globalCoverage.expectedSlugs.length} complete`));
|
|
16226
|
+
}
|
|
16131
16227
|
console.log(chalk.dim("Dry run only. No files were written."));
|
|
16132
16228
|
} catch (e) {
|
|
16133
16229
|
console.error(chalk.red(formatCliError(e)));
|
|
16134
16230
|
process.exit(1);
|
|
16135
16231
|
}
|
|
16136
16232
|
});
|
|
16137
|
-
sessionCmd.command("apply").description("Write a session render plan to its managed target home or explicit project root").requiredOption("--tool <tool>", `target tool (${SESSION_RENDER_TOOLS.join("|")})`).requiredOption("--profile <profile>", "account/profile name that owns the rendered instruction home").option("--target-home <path>", "override generated profile-scoped target home").option("--project-root <path>", "repository root for project-scoped adapters such as Cursor").option("--session-id <id>", "session id to include in the manifest").option("--source <layer:id=path>", `instruction source file; layers: ${SESSION_SOURCE_LAYER_HELP}`, collectOption, []).option("--config <layer:id-or-slug>", "stored config source by id/slug; repeatable; layer aliases match --source", collectOption, []).option("--identity-export <path>", "OpenIdentities configs instruction export JSON; repeatable", collectOption, []).option("--replace-source <id>", "source id that replaces earlier layers instead of appending", collectOption, []).option("--codewith-native-imports", "select the gated Codewith native @ import adapter").option("--allow-empty-sources", "allow an explicit empty render").option("--dry-run", "preview writes and conflicts without writing").option("--force", "overwrite existing unmanaged files").option("--json", "output apply JSON").action(async (opts) => {
|
|
16233
|
+
sessionCmd.command("apply").description("Write a session render plan to its managed target home or explicit project root").requiredOption("--tool <tool>", `target tool (${SESSION_RENDER_TOOLS.join("|")})`).requiredOption("--profile <profile>", "account/profile name that owns the rendered instruction home").option("--target-home <path>", "override generated profile-scoped target home").option("--project-root <path>", "repository root for project-scoped adapters such as Cursor").option("--session-id <id>", "session id to include in the manifest").option("--source <layer:id=path>", `instruction source file; layers: ${SESSION_SOURCE_LAYER_HELP}`, collectOption, []).option("--config <layer:id-or-slug>", "stored config source by id/slug; repeatable; layer aliases match --source", collectOption, []).option("--identity-export <path>", "OpenIdentities configs instruction export JSON; repeatable", collectOption, []).option("--replace-source <id>", "source id that replaces earlier layers instead of appending", collectOption, []).option("--codewith-native-imports", "select the gated Codewith native @ import adapter").option("--allow-empty-sources", "allow an explicit empty render").option("--check-global-coverage", "warn (non-fatal) when a registered, non-retired global-* source is absent from this render's --config list; expected is read fresh from the registry, independent of this plan (todos 102d6d0a)").option("--dry-run", "preview writes and conflicts without writing").option("--force", "overwrite existing unmanaged files").option("--json", "output apply JSON").action(async (opts) => {
|
|
16138
16234
|
try {
|
|
16139
16235
|
const tool = opts.tool;
|
|
16140
16236
|
if (!SESSION_RENDER_TOOLS.includes(tool)) {
|
|
16141
16237
|
console.error(chalk.red(`Unsupported tool: ${opts.tool}`));
|
|
16142
16238
|
process.exit(1);
|
|
16143
16239
|
}
|
|
16144
|
-
const
|
|
16240
|
+
const store = resolveConfigStore();
|
|
16241
|
+
const sources = await collectSessionSources(opts, tool, store);
|
|
16145
16242
|
const plan = planSessionRender({
|
|
16146
16243
|
tool,
|
|
16147
16244
|
profile: opts.profile,
|
|
@@ -16152,9 +16249,13 @@ sessionCmd.command("apply").description("Write a session render plan to its mana
|
|
|
16152
16249
|
allowEmptySources: opts.allowEmptySources,
|
|
16153
16250
|
sources
|
|
16154
16251
|
});
|
|
16252
|
+
const globalCoverage = opts.checkGlobalCoverage ? await checkGlobalSourceCoverage(plan, store) : null;
|
|
16155
16253
|
const result = applySessionRender(plan, { dryRun: opts.dryRun, force: opts.force });
|
|
16156
16254
|
if (opts.json) {
|
|
16157
|
-
printJson(
|
|
16255
|
+
printJson({
|
|
16256
|
+
...result,
|
|
16257
|
+
...globalCoverage ? { globalSourceCoverage: globalCoverage } : {}
|
|
16258
|
+
});
|
|
16158
16259
|
if (result.conflicts.length > 0)
|
|
16159
16260
|
process.exitCode = 1;
|
|
16160
16261
|
return;
|
|
@@ -16177,6 +16278,16 @@ sessionCmd.command("apply").description("Write a session render plan to its mana
|
|
|
16177
16278
|
if (file.reason)
|
|
16178
16279
|
console.log(chalk.dim(` ${file.reason}`));
|
|
16179
16280
|
}
|
|
16281
|
+
if (result.warnings.length > 0) {
|
|
16282
|
+
for (const warning of result.warnings)
|
|
16283
|
+
console.log(chalk.yellow(`warning: ${warning}`));
|
|
16284
|
+
}
|
|
16285
|
+
if (globalCoverage) {
|
|
16286
|
+
for (const warning of formatGlobalSourceCoverageWarnings(globalCoverage))
|
|
16287
|
+
console.log(chalk.yellow(`warning: ${warning}`));
|
|
16288
|
+
if (globalCoverage.complete)
|
|
16289
|
+
console.log(chalk.dim(`global source coverage: ${globalCoverage.expectedSlugs.length}/${globalCoverage.expectedSlugs.length} complete`));
|
|
16290
|
+
}
|
|
16180
16291
|
if (result.conflicts.length > 0) {
|
|
16181
16292
|
console.error(chalk.red(`Conflicts: ${result.conflicts.length}. Re-run with --force to overwrite unmanaged files.`));
|
|
16182
16293
|
process.exitCode = 1;
|
package/dist/index.js
CHANGED
|
@@ -8540,6 +8540,14 @@ function applyAgentOperatingRulesFloor(source, content) {
|
|
|
8540
8540
|
metadata: { ...source.metadata ?? {}, ...payload.metadata, ...floored }
|
|
8541
8541
|
};
|
|
8542
8542
|
}
|
|
8543
|
+
function skippedSource(source, reason) {
|
|
8544
|
+
return {
|
|
8545
|
+
id: source.id,
|
|
8546
|
+
label: source.resolvedLabel,
|
|
8547
|
+
targetProviders: source.targetProviders ?? [],
|
|
8548
|
+
reason
|
|
8549
|
+
};
|
|
8550
|
+
}
|
|
8543
8551
|
function normalizeSources(sources, tool, allowEmptySources) {
|
|
8544
8552
|
const normalized = sources.map((source, index) => {
|
|
8545
8553
|
if (!source.id.trim())
|
|
@@ -8564,14 +8572,17 @@ function normalizeSources(sources, tool, allowEmptySources) {
|
|
|
8564
8572
|
}
|
|
8565
8573
|
return normalized2;
|
|
8566
8574
|
});
|
|
8567
|
-
const
|
|
8575
|
+
const deduplicated = deduplicateSemanticPolicySources(normalized);
|
|
8576
|
+
const ordered = deduplicated.selected.sort((a, b) => SESSION_LAYER_RANK[a.resolvedLayer] - SESSION_LAYER_RANK[b.resolvedLayer] || a.resolvedOrder - b.resolvedOrder || a.id.localeCompare(b.id));
|
|
8568
8577
|
rejectDuplicateSourceSlugs(ordered);
|
|
8569
8578
|
rejectDuplicateRulePaths(ordered);
|
|
8570
|
-
return ordered;
|
|
8579
|
+
return { sources: ordered, skipped: deduplicated.skipped };
|
|
8571
8580
|
}
|
|
8572
8581
|
function deduplicateSemanticPolicySources(sources) {
|
|
8573
8582
|
const selected = [];
|
|
8583
|
+
const skipped = [];
|
|
8574
8584
|
const policySources = new Map;
|
|
8585
|
+
const collapseReason = (winner, key) => `superseded by "${winner.id}": sources declaring the semantic policy ${key} collapse to one so a single instruction home cannot carry two rule-set versions`;
|
|
8575
8586
|
for (const source of sources) {
|
|
8576
8587
|
const sentinel = source.content.match(AGENT_OPERATING_RULES_SENTINEL_PATTERN);
|
|
8577
8588
|
if (!sentinel) {
|
|
@@ -8594,17 +8605,18 @@ function deduplicateSemanticPolicySources(sources) {
|
|
|
8594
8605
|
}
|
|
8595
8606
|
const current = selected[existing.index];
|
|
8596
8607
|
const priorityOrder = semanticPolicySourcePriority(source) - semanticPolicySourcePriority(current);
|
|
8597
|
-
if (priorityOrder < 0)
|
|
8598
|
-
|
|
8599
|
-
if (priorityOrder === 0 && versionOrder <= 0)
|
|
8608
|
+
if (priorityOrder < 0 || priorityOrder === 0 && versionOrder <= 0) {
|
|
8609
|
+
skipped.push(skippedSource(source, collapseReason(current, key)));
|
|
8600
8610
|
continue;
|
|
8611
|
+
}
|
|
8612
|
+
skipped.push(skippedSource(current, collapseReason(source, key)));
|
|
8601
8613
|
selected[existing.index] = {
|
|
8602
8614
|
...source,
|
|
8603
8615
|
resolvedOrder: current.resolvedOrder
|
|
8604
8616
|
};
|
|
8605
8617
|
policySources.set(key, { index: existing.index, version, normalizedContent });
|
|
8606
8618
|
}
|
|
8607
|
-
return selected;
|
|
8619
|
+
return { selected, skipped };
|
|
8608
8620
|
}
|
|
8609
8621
|
function semanticPolicySourcePriority(source) {
|
|
8610
8622
|
let priority = 0;
|
|
@@ -8650,9 +8662,12 @@ function composeSources(sources) {
|
|
|
8650
8662
|
start = i;
|
|
8651
8663
|
}
|
|
8652
8664
|
if (start < 0)
|
|
8653
|
-
return sources;
|
|
8654
|
-
const
|
|
8655
|
-
|
|
8665
|
+
return { sources, skipped: [] };
|
|
8666
|
+
const earlier = sources.slice(0, start);
|
|
8667
|
+
const protectedSources = earlier.filter((source) => source.nonOverridable);
|
|
8668
|
+
const replacer = sources[start];
|
|
8669
|
+
const skipped = earlier.filter((source) => !source.nonOverridable).map((source) => skippedSource(source, `superseded by "${replacer.id}": a replace-merge source discards earlier overridable instruction layers`));
|
|
8670
|
+
return { sources: [...protectedSources, ...sources.slice(start)], skipped };
|
|
8656
8671
|
}
|
|
8657
8672
|
function sectionForSource(source) {
|
|
8658
8673
|
const parts = [
|
|
@@ -9027,7 +9042,14 @@ function planSessionRender(input) {
|
|
|
9027
9042
|
const targetOwner = resolveSessionTargetOwnership(input, { targetHome, targetKind });
|
|
9028
9043
|
const blocked = blockers.length > 0;
|
|
9029
9044
|
const allowEmptySources = input.allowEmptySources === true;
|
|
9030
|
-
const
|
|
9045
|
+
const normalized = normalizeSources(input.sources, input.tool, allowEmptySources);
|
|
9046
|
+
const composed = composeSources(normalized.sources);
|
|
9047
|
+
const orderedSources = composed.sources;
|
|
9048
|
+
const skippedSources = [
|
|
9049
|
+
...input.skippedSources ?? [],
|
|
9050
|
+
...normalized.skipped,
|
|
9051
|
+
...composed.skipped
|
|
9052
|
+
];
|
|
9031
9053
|
if (orderedSources.length === 0 && !allowEmptySources) {
|
|
9032
9054
|
throw new Error("Session render has no instruction sources. Pass --allow-empty-sources only for explicit empty renders.");
|
|
9033
9055
|
}
|
|
@@ -9035,7 +9057,8 @@ function planSessionRender(input) {
|
|
|
9035
9057
|
const env = adapter.envVar && !blocked ? { [adapter.envVar]: targetHome } : {};
|
|
9036
9058
|
const warnings = [
|
|
9037
9059
|
...orderedSources.length === 0 ? ["No instruction sources were provided."] : [],
|
|
9038
|
-
...blockers
|
|
9060
|
+
...blockers,
|
|
9061
|
+
...skippedSources.map((entry) => `Instruction source "${entry.id}" was not rendered: ${entry.reason}`)
|
|
9039
9062
|
];
|
|
9040
9063
|
if (input.providerConfig && input.tool !== "opencode") {
|
|
9041
9064
|
throw new Error("Provider base config is supported only for OpenCode session renders.");
|
|
@@ -9107,7 +9130,7 @@ function planSessionRender(input) {
|
|
|
9107
9130
|
})),
|
|
9108
9131
|
...projectContext ? [projectContext.source] : []
|
|
9109
9132
|
],
|
|
9110
|
-
skippedSources
|
|
9133
|
+
skippedSources,
|
|
9111
9134
|
files: files.map((file) => ({
|
|
9112
9135
|
path: file.path,
|
|
9113
9136
|
relativePath: file.relativePath,
|
|
@@ -10327,6 +10350,8 @@ function applySessionRenderUnlocked(plan, options, coordination) {
|
|
|
10327
10350
|
manifestPath,
|
|
10328
10351
|
snapshotPath: null,
|
|
10329
10352
|
env: plan.env,
|
|
10353
|
+
warnings: plan.warnings,
|
|
10354
|
+
skippedSources: plan.manifest.skippedSources,
|
|
10330
10355
|
files: results,
|
|
10331
10356
|
conflicts,
|
|
10332
10357
|
drift
|
|
@@ -10367,6 +10392,8 @@ function applySessionRenderUnlocked(plan, options, coordination) {
|
|
|
10367
10392
|
manifestPath,
|
|
10368
10393
|
snapshotPath,
|
|
10369
10394
|
env: plan.env,
|
|
10395
|
+
warnings: plan.warnings,
|
|
10396
|
+
skippedSources: plan.manifest.skippedSources,
|
|
10370
10397
|
files: results,
|
|
10371
10398
|
conflicts,
|
|
10372
10399
|
drift
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export declare const GLOBAL_SOURCE_SLUG_PREFIX = "global-";
|
|
2
|
+
export declare const RETIRED_GLOBAL_SOURCE_TAG = "retired-global-source";
|
|
3
|
+
export interface GlobalSourceCoverageConfig {
|
|
4
|
+
slug: string;
|
|
5
|
+
category: string;
|
|
6
|
+
tags?: string[] | null;
|
|
7
|
+
}
|
|
8
|
+
/** The set of global sources that SHOULD be present in any render that claims
|
|
9
|
+
* global coverage: registered, slug-prefixed `global-`, and not tagged retired. */
|
|
10
|
+
export declare function expectedGlobalSourceSlugs(registryConfigs: readonly GlobalSourceCoverageConfig[]): string[];
|
|
11
|
+
export interface GlobalSourceCoverageResult {
|
|
12
|
+
/** Registered, active global sources — the independent "should exist" side. */
|
|
13
|
+
expectedSlugs: string[];
|
|
14
|
+
/** Slugs actually present on the render plan/manifest being audited. */
|
|
15
|
+
configuredSlugs: string[];
|
|
16
|
+
/** Expected but absent from the render — the actual defect this exists to catch. */
|
|
17
|
+
missingSlugs: string[];
|
|
18
|
+
/** Present on the render but not a currently-expected global source (renamed,
|
|
19
|
+
* retired since the render was built, or simply not a `global-*` slug at all —
|
|
20
|
+
* informational only, never blocking). */
|
|
21
|
+
unexpectedSlugs: string[];
|
|
22
|
+
/** True only when every expected slug is present. */
|
|
23
|
+
complete: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface GlobalSourceCoverageManifest {
|
|
26
|
+
sources: readonly {
|
|
27
|
+
id: string;
|
|
28
|
+
}[];
|
|
29
|
+
skippedSources: readonly {
|
|
30
|
+
id: string;
|
|
31
|
+
}[];
|
|
32
|
+
}
|
|
33
|
+
/** Global config ids the caller supplied to a render, whether they survived
|
|
34
|
+
* composition or were deliberately reported as skipped. A skipped source was
|
|
35
|
+
* configured and accounted for; treating it as absent recreates the exact
|
|
36
|
+
* false-positive this coverage check exists to distinguish from a real gap. */
|
|
37
|
+
export declare function accountedGlobalSourceSlugs(manifest: GlobalSourceCoverageManifest): string[];
|
|
38
|
+
export declare function computeGlobalSourceCoverage(registryConfigs: readonly GlobalSourceCoverageConfig[], configuredSlugs: Iterable<string>): GlobalSourceCoverageResult;
|
|
39
|
+
/** Human-readable warning lines for CLI/manifest output. Empty array means clean. */
|
|
40
|
+
export declare function formatGlobalSourceCoverageWarnings(result: GlobalSourceCoverageResult): string[];
|
|
41
|
+
//# sourceMappingURL=global-source-coverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-source-coverage.d.ts","sourceRoot":"","sources":["../../src/lib/global-source-coverage.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,yBAAyB,YAAY,CAAC;AA0BnD,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AAEjE,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACxB;AAED;mFACmF;AACnF,wBAAgB,yBAAyB,CACvC,eAAe,EAAE,SAAS,0BAA0B,EAAE,GACrD,MAAM,EAAE,CAMV;AAED,MAAM,WAAW,0BAA0B;IACzC,+EAA+E;IAC/E,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,wEAAwE;IACxE,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,oFAAoF;IACpF,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB;;8CAE0C;IAC1C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,qDAAqD;IACrD,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnC,cAAc,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC3C;AAED;;;+EAG+E;AAC/E,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,4BAA4B,GACrC,MAAM,EAAE,CAIV;AAED,wBAAgB,2BAA2B,CACzC,eAAe,EAAE,SAAS,0BAA0B,EAAE,EACtD,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,GAChC,0BAA0B,CAe5B;AAED,qFAAqF;AACrF,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,0BAA0B,GAAG,MAAM,EAAE,CAK/F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-source-coverage.test.d.ts","sourceRoot":"","sources":["../../src/lib/global-source-coverage.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type SessionRenderFileRole, type SessionRenderPlan } from "./session-render.js";
|
|
1
|
+
import { type SessionRenderFileRole, type SessionRenderPlan, type SessionSkippedSource } from "./session-render.js";
|
|
2
2
|
export type SessionApplyAction = "create" | "update" | "delete" | "unchanged" | "conflict";
|
|
3
3
|
export interface SessionApplyFileResult {
|
|
4
4
|
path: string;
|
|
@@ -32,6 +32,8 @@ export interface SessionApplyResult {
|
|
|
32
32
|
manifestPath: string;
|
|
33
33
|
snapshotPath: string | null;
|
|
34
34
|
env: Record<string, string>;
|
|
35
|
+
warnings: string[];
|
|
36
|
+
skippedSources: SessionSkippedSource[];
|
|
35
37
|
files: SessionApplyFileResult[];
|
|
36
38
|
conflicts: SessionApplyFileResult[];
|
|
37
39
|
drift: SessionDriftCheck;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-apply.d.ts","sourceRoot":"","sources":["../../src/lib/session-apply.ts"],"names":[],"mappings":"AAiBA,OAAO,EAIL,KAAK,qBAAqB,EAE1B,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"session-apply.d.ts","sourceRoot":"","sources":["../../src/lib/session-apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-render-silent-source-drop.test.d.ts","sourceRoot":"","sources":["../../src/lib/session-render-silent-source-drop.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-render.d.ts","sourceRoot":"","sources":["../../src/lib/session-render.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"session-render.d.ts","sourceRoot":"","sources":["../../src/lib/session-render.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAahD,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAEL,0BAA0B,EAI1B,qBAAqB,EAEtB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,uCAAuC,EACvC,6BAA6B,EAC7B,gCAAgC,EAChC,qCAAqC,EACrC,qBAAqB,EACrB,oCAAoC,GACrC,MAAM,8BAA8B,CAAC;AACtC,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,gCAAgC,QAAS,CAAC;AACvD,eAAO,MAAM,yBAAyB,kCAAkC,CAAC;AAEzE,eAAO,MAAM,oBAAoB,oGASvB,CAAC;AAEX,eAAO,MAAM,kCAAkC,2GAKrC,CAAC;AACX,eAAO,MAAM,mCAAmC,0JAItC,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AACtE,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,YAAY,GAAG,uBAAuB,GAAG,mBAAmB,CAAC;AACvI,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAClF,MAAM,MAAM,4BAA4B,GAAG,uBAAuB,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AACzG,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC3D,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAC1F,MAAM,MAAM,uBAAuB,GAAG,cAAc,GAAG,cAAc,GAAG,SAAS,CAAC;AAClF,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG,SAAS,GAAG,SAAS,CAAC;AAEhF,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,4BAA4B,CAAC;IACrC,KAAK,CAAC,EAAE,uBAAuB,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5C,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE,4BAA4B,EAAE,CAAC;IAC7C,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAmBD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,cAAc,CAAC;IACxB,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,EAAE;QACN,EAAE,EAAE,OAAO,yBAAyB,CAAC;QACrC,SAAS,EAAE,IAAI,CAAC;QAChB,aAAa,EAAE,CAAC,cAAc,CAAC,CAAC;QAChC,KAAK,EAAE,wBAAwB,GAAG,4BAA4B,CAAC;KAChE,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,wBAAwB,EAAE,CAAC;IACpC,cAAc,EAAE,oBAAoB,EAAE,CAAC;IACvC,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,wBAAwB,EAAE,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,cAAc,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,qBAAqB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,OAAO,qBAAqB,CAAC;IACrC,IAAI,EAAE,iBAAiB,CAAC;IACxB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,uBAAuB,CAAC;IACpC,WAAW,EAAE,kBAAkB,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,uBAAuB,CAAC;QAC/B,KAAK,EAAE,uBAAuB,CAAC;QAC/B,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAAC;QACtC,WAAW,EAAE,4BAA4B,EAAE,CAAC;QAC5C,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,cAAc,EAAE,OAAO,CAAC;QACxB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,KAAK,EAAE,KAAK,CAAC;YACX,EAAE,EAAE,MAAM,CAAC;YACX,KAAK,EAAE,MAAM,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,EAAE,CAAC;YAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;SACrB,CAAC,CAAC;QACH,qBAAqB,EAAE,MAAM,CAAC;QAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;KAC3C,CAAC,CAAC;IACH,cAAc,EAAE,KAAK,CAAC;QACpB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,qBAAqB,CAAC;QAC5B,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC,CAAC;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,qBAAqB,EAAE,MAAM,CAAC;QAC9B,qBAAqB,EAAE,MAAM,CAAC;QAC9B,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,cAAc,CAAC,EAAE;QACf,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,IAAI,CAAC;IACb,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,uBAAuB,CAAC;IACpC,WAAW,EAAE,kBAAkB,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;;;;;OASG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,QAAQ,EAAE,qBAAqB,CAAC;IAChC,YAAY,EAAE,iBAAiB,CAAC;IAChC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,mBAAmB,CAAC,EAAE,0BAA0B,CAAC;CAClD;AAsBD,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CA8D/E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAQxD,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,kCAAkC,EAAE,SAAS,MAAM,EAAsB,CAAC;AAEvF;;;;GAIG;AACH,eAAO,MAAM,sCAAsC,EAAE,SAAS,MAAM,EAInE,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAYtE,CAAC;AAEF,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,uBAAuB,CAkBxF;AAkpBD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAU1D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUvD;AAsDD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC,EAAE,MAAM,EAAE;IACzH,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,uBAAuB,CAAC;CACrC,GAAG,kBAAkB,CAqDrB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,iBAAiB,CAyK9E;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,wBAAwB,CAUrG;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,CAAC,EAC3E,KAAK,SAAI,EACT,KAAK,CAAC,EAAE,uBAAuB,GAC9B,wBAAwB,CA4B1B;AAED,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,iBAAiB,GACtB,6BAA6B,CAoF/B;AA2CD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,EACd,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9E,wBAAwB,EAAE,CAmB5B"}
|
package/dist/mcp/index.js
CHANGED
|
@@ -6957,7 +6957,7 @@ var init_sync_dir = __esm(() => {
|
|
|
6957
6957
|
var require_package = __commonJS((exports, module) => {
|
|
6958
6958
|
module.exports = {
|
|
6959
6959
|
name: "@hasna/instructions",
|
|
6960
|
-
version: "0.4.
|
|
6960
|
+
version: "0.4.18",
|
|
6961
6961
|
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.",
|
|
6962
6962
|
type: "module",
|
|
6963
6963
|
main: "dist/index.js",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hasna/instructions",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.18",
|
|
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",
|