@shrkcrft/cli 0.1.0-alpha.22 → 0.1.0-alpha.23
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/command-registry.d.ts +9 -0
- package/dist/command-registry.d.ts.map +1 -1
- package/dist/command-registry.js +15 -0
- package/dist/commands/ai-status.command.d.ts.map +1 -1
- package/dist/commands/ai-status.command.js +10 -0
- package/dist/commands/apply.command.d.ts.map +1 -1
- package/dist/commands/apply.command.js +9 -2
- package/dist/commands/ask.command.d.ts.map +1 -1
- package/dist/commands/ask.command.js +2 -1
- package/dist/commands/changes.command.d.ts.map +1 -1
- package/dist/commands/changes.command.js +14 -4
- package/dist/commands/check.command.d.ts.map +1 -1
- package/dist/commands/check.command.js +30 -5
- package/dist/commands/command-catalog.d.ts.map +1 -1
- package/dist/commands/command-catalog.js +200 -0
- package/dist/commands/commands.command.d.ts +15 -0
- package/dist/commands/commands.command.d.ts.map +1 -1
- package/dist/commands/commands.command.js +162 -3
- package/dist/commands/compress.command.d.ts.map +1 -1
- package/dist/commands/compress.command.js +39 -4
- package/dist/commands/context.command.d.ts.map +1 -1
- package/dist/commands/context.command.js +3 -1
- package/dist/commands/daily.commands.d.ts.map +1 -1
- package/dist/commands/daily.commands.js +48 -5
- package/dist/commands/diff-check.command.d.ts.map +1 -1
- package/dist/commands/diff-check.command.js +6 -2
- package/dist/commands/feedback.command.d.ts.map +1 -1
- package/dist/commands/feedback.command.js +4 -0
- package/dist/commands/framework.command.d.ts.map +1 -1
- package/dist/commands/framework.command.js +20 -3
- package/dist/commands/gate.command.d.ts.map +1 -1
- package/dist/commands/gate.command.js +98 -13
- package/dist/commands/graph-code-subverbs.d.ts.map +1 -1
- package/dist/commands/graph-code-subverbs.js +183 -68
- package/dist/commands/graph.command.d.ts.map +1 -1
- package/dist/commands/graph.command.js +6 -0
- package/dist/commands/impact.command.d.ts.map +1 -1
- package/dist/commands/impact.command.js +91 -1
- package/dist/commands/knowledge.command.d.ts.map +1 -1
- package/dist/commands/knowledge.command.js +21 -1
- package/dist/commands/onboard.command.d.ts.map +1 -1
- package/dist/commands/onboard.command.js +11 -2
- package/dist/commands/orchestrate.command.d.ts.map +1 -1
- package/dist/commands/orchestrate.command.js +6 -1
- package/dist/commands/pack-author.command.d.ts.map +1 -1
- package/dist/commands/pack-author.command.js +13 -1
- package/dist/commands/packs.command.d.ts.map +1 -1
- package/dist/commands/packs.command.js +95 -17
- package/dist/commands/paths.command.d.ts.map +1 -1
- package/dist/commands/paths.command.js +8 -1
- package/dist/commands/pipelines.command.d.ts.map +1 -1
- package/dist/commands/pipelines.command.js +2 -1
- package/dist/commands/plan-context.command.d.ts.map +1 -1
- package/dist/commands/plan-context.command.js +6 -3
- package/dist/commands/plan-simulate.command.js +1 -1
- package/dist/commands/policy-lint.command.d.ts.map +1 -1
- package/dist/commands/policy-lint.command.js +20 -7
- package/dist/commands/recommend.command.d.ts.map +1 -1
- package/dist/commands/recommend.command.js +10 -2
- package/dist/commands/registry.command.d.ts.map +1 -1
- package/dist/commands/registry.command.js +117 -9
- package/dist/commands/report.command.js +1 -1
- package/dist/commands/reuse.command.d.ts.map +1 -1
- package/dist/commands/reuse.command.js +17 -5
- package/dist/commands/review.command.d.ts.map +1 -1
- package/dist/commands/review.command.js +20 -2
- package/dist/commands/rule-graph-subverbs.d.ts.map +1 -1
- package/dist/commands/rule-graph-subverbs.js +31 -4
- package/dist/commands/search-structural.command.d.ts.map +1 -1
- package/dist/commands/search-structural.command.js +2 -2
- package/dist/commands/search.command.d.ts.map +1 -1
- package/dist/commands/search.command.js +19 -1
- package/dist/commands/simulate.command.d.ts.map +1 -1
- package/dist/commands/simulate.command.js +6 -1
- package/dist/commands/smart-context.command.d.ts.map +1 -1
- package/dist/commands/smart-context.command.js +87 -4
- package/dist/commands/spec.command.d.ts.map +1 -1
- package/dist/commands/spec.command.js +73 -13
- package/dist/commands/task-context.command.d.ts.map +1 -1
- package/dist/commands/task-context.command.js +26 -2
- package/dist/commands/test.command.d.ts.map +1 -1
- package/dist/commands/test.command.js +17 -0
- package/dist/commands/trace.command.d.ts.map +1 -1
- package/dist/commands/trace.command.js +14 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +15 -1
- package/dist/status/freshness.d.ts +30 -0
- package/dist/status/freshness.d.ts.map +1 -0
- package/dist/status/freshness.js +81 -0
- package/package.json +33 -33
|
@@ -149,6 +149,15 @@ export declare function resolveCwd(args: ParsedArgs): string;
|
|
|
149
149
|
export declare function flagString(args: ParsedArgs, name: string): string | undefined;
|
|
150
150
|
export declare function flagBool(args: ParsedArgs, name: string): boolean;
|
|
151
151
|
export declare function flagNumber(args: ParsedArgs, name: string): number | undefined;
|
|
152
|
+
/**
|
|
153
|
+
* Parse a `--limit`/`--depth`-style flag as a positive integer, falling back to
|
|
154
|
+
* `fallback` when the flag is absent OR malformed (non-numeric, NaN, <= 0,
|
|
155
|
+
* non-integer). Guards the `Number(flagString(...))` footgun where a
|
|
156
|
+
* fat-fingered `--limit abc` becomes NaN and silently yields empty-or-unbounded
|
|
157
|
+
* results (`[].slice(0, NaN) === []`, `x >= NaN === false`). Use everywhere a
|
|
158
|
+
* count/cap is read from a flag.
|
|
159
|
+
*/
|
|
160
|
+
export declare function flagPositiveInt(args: ParsedArgs, name: string, fallback: number): number;
|
|
152
161
|
/**
|
|
153
162
|
* Canonical multi-value flag parser.
|
|
154
163
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../src/command-registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../src/command-registry.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IACrC,0EAA0E;IAC1E,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;CACjD;AAED;;;;;GAKG;AACH,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAMD,mDAAmD;AACnD,MAAM,WAAW,kBAAkB;IACjC,mFAAmF;IACnF,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,sEAAsE;IACtE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,0EAA0E;IAC1E,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,6EAA6E;IAC7E,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoC;IACzD,uFAAuF;IACvF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6B;IAE5D,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAIxC,0DAA0D;IAC1D,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAIjE;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAgBnE,qCAAqC;IACrC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAKlD,uCAAuC;IACvC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAKpD,iEAAiE;IACjE,OAAO,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAa9E,gCAAgC;IAChC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAK9C,8BAA8B;IAC9B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAOhE,8DAA8D;IAC9D,KAAK,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,eAAe,GAAG,SAAS;IAK3D,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC,UAAU,IAAI,SAAS,MAAM,EAAE;IAW/B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,eAAe,EAAE;IAWpD,2EAA2E;IAC3E,aAAa,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE;IAUzD,gBAAgB,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;IAI/C,kBAAkB,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;IAIjD,gDAAgD;IAChD,IAAI,IAAI,SAAS,eAAe,EAAE;IAQlC,oDAAoD;IACpD,OAAO,IAAI,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC;IAMjG;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,kBAAkB;IAsBtD,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,UAAU;CAWnB;AAQD,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACpC;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,GAAE,gBAAqB,GAAG,UAAU,CA6C7F;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CA+BA;AAED,8EAA8E;AAC9E,MAAM,WAAW,wBAAwB;IACvC,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG;IAC9D,SAAS,CAAC,EAAE,wBAAwB,CAAC;IACrC,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAkEA;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAKnD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG7E;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAGhE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK7E;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKxF;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;CACrC;AAED,wBAAgB,QAAQ,CACtB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,gBAAqB,GAC7B,MAAM,EAAE,CAkCV;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQjE"}
|
package/dist/command-registry.js
CHANGED
|
@@ -396,6 +396,21 @@ export function flagNumber(args, name) {
|
|
|
396
396
|
const n = Number(v);
|
|
397
397
|
return Number.isFinite(n) ? n : undefined;
|
|
398
398
|
}
|
|
399
|
+
/**
|
|
400
|
+
* Parse a `--limit`/`--depth`-style flag as a positive integer, falling back to
|
|
401
|
+
* `fallback` when the flag is absent OR malformed (non-numeric, NaN, <= 0,
|
|
402
|
+
* non-integer). Guards the `Number(flagString(...))` footgun where a
|
|
403
|
+
* fat-fingered `--limit abc` becomes NaN and silently yields empty-or-unbounded
|
|
404
|
+
* results (`[].slice(0, NaN) === []`, `x >= NaN === false`). Use everywhere a
|
|
405
|
+
* count/cap is read from a flag.
|
|
406
|
+
*/
|
|
407
|
+
export function flagPositiveInt(args, name, fallback) {
|
|
408
|
+
const v = args.flags.get(name);
|
|
409
|
+
if (typeof v !== 'string')
|
|
410
|
+
return fallback;
|
|
411
|
+
const n = Number(v);
|
|
412
|
+
return Number.isFinite(n) && n > 0 ? Math.floor(n) : fallback;
|
|
413
|
+
}
|
|
399
414
|
export function flagList(args, name, options = {}) {
|
|
400
415
|
const split = options.split ?? 'always';
|
|
401
416
|
const raw = args.multiFlags.get(name) ?? [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-status.command.d.ts","sourceRoot":"","sources":["../../src/commands/ai-status.command.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAGhC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"ai-status.command.d.ts","sourceRoot":"","sources":["../../src/commands/ai-status.command.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAGhC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,EAAE,eA+D7B,CAAC"}
|
|
@@ -34,9 +34,15 @@ export const aiStatusCommand = {
|
|
|
34
34
|
? await pingProvider(selection.provider, pingTimeoutMs)
|
|
35
35
|
: { ok: false, reason: 'no provider reachable — nothing to ping', elapsedMs: 0 };
|
|
36
36
|
}
|
|
37
|
+
// Freshness-shaped signal, consistent with the other status commands:
|
|
38
|
+
// the LLM wiring is `fresh` when a provider is reachable (and the optional
|
|
39
|
+
// ping succeeded), else `stale` — i.e. shrk is on the deterministic
|
|
40
|
+
// baseline and the setup hints apply.
|
|
41
|
+
const state = ai.reachable && (!ping || ping.ok) ? 'fresh' : 'stale';
|
|
37
42
|
if (json) {
|
|
38
43
|
process.stdout.write(asJson({
|
|
39
44
|
ai,
|
|
45
|
+
state,
|
|
40
46
|
...(ping ? { ping } : {}),
|
|
41
47
|
}) + '\n');
|
|
42
48
|
return ai.reachable && (!ping || ping.ok) ? 0 : 1;
|
|
@@ -45,6 +51,10 @@ export const aiStatusCommand = {
|
|
|
45
51
|
process.stdout.write(kv('reachable', ai.reachable ? 'yes' : 'no') + '\n');
|
|
46
52
|
process.stdout.write(kv('requested provider', ai.requestedProvider) + '\n');
|
|
47
53
|
process.stdout.write(kv('resolved provider', ai.providerId ?? '(none)') + '\n');
|
|
54
|
+
process.stdout.write(kv('state', state) + '\n');
|
|
55
|
+
if (state === 'stale') {
|
|
56
|
+
process.stdout.write('! stale — no AI provider reachable; running on the deterministic baseline. See the setup hints below.\n');
|
|
57
|
+
}
|
|
48
58
|
if (ping) {
|
|
49
59
|
process.stdout.write(kv('ping', ping.ok
|
|
50
60
|
? `ok in ${ping.elapsedMs}ms` + (ping.model ? ` (model: ${ping.model})` : '')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.command.d.ts","sourceRoot":"","sources":["../../src/commands/apply.command.ts"],"names":[],"mappings":"AAqDA,OAAO,EAKL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAyLhC,eAAO,MAAM,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"apply.command.d.ts","sourceRoot":"","sources":["../../src/commands/apply.command.ts"],"names":[],"mappings":"AAqDA,OAAO,EAKL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAyLhC,eAAO,MAAM,YAAY,EAAE,eAwsB1B,CAAC"}
|
|
@@ -407,7 +407,12 @@ export const applyCommand = {
|
|
|
407
407
|
livePlan = result.value.plan;
|
|
408
408
|
}
|
|
409
409
|
const diff = diffPlanChanges(saved, livePlan);
|
|
410
|
-
|
|
410
|
+
// Divergence acceptance is decoupled from the overwrite strategy: only the
|
|
411
|
+
// explicit --allow-divergent waives a divergence refusal. --force selects
|
|
412
|
+
// the overwrite strategy and must NOT double as a silent divergence bypass
|
|
413
|
+
// (a signed-but-drifted plan would otherwise apply while printing
|
|
414
|
+
// "Signature: verified"). A user who wants both passes --force --allow-divergent.
|
|
415
|
+
if (diff.length > 0 && !allowDivergent) {
|
|
411
416
|
if (!wantJson) {
|
|
412
417
|
process.stdout.write('Plan diverged from the saved version:\n');
|
|
413
418
|
for (const d of diff) {
|
|
@@ -462,7 +467,9 @@ export const applyCommand = {
|
|
|
462
467
|
// continue to carry their structured folderOps verbatim.
|
|
463
468
|
const liveFolderOps = plannedFolderOps;
|
|
464
469
|
const folderOpDiff = diffPlanFolderOps(saved, liveFolderOps);
|
|
465
|
-
|
|
470
|
+
// Same decoupling as the file-op divergence gate above: --force is the
|
|
471
|
+
// overwrite strategy only; --allow-divergent is the explicit waiver.
|
|
472
|
+
if (folderOpDiff.length > 0 && !allowDivergent) {
|
|
466
473
|
if (!wantJson) {
|
|
467
474
|
process.stdout.write('Folder-op set diverged from the saved version:\n');
|
|
468
475
|
for (const d of folderOpDiff) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask.command.d.ts","sourceRoot":"","sources":["../../src/commands/ask.command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ask.command.d.ts","sourceRoot":"","sources":["../../src/commands/ask.command.ts"],"names":[],"mappings":"AAYA,OAAO,EAKL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAIhC,eAAO,MAAM,UAAU,EAAE,eA8DxB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { inspectSharkcraft, buildProjectOverview, renderOverviewText } from '@shrkcrft/inspector';
|
|
1
|
+
import { inspectSharkcraft, buildProjectOverview, renderOverviewText, contextTuningBoostFor, } from '@shrkcrft/inspector';
|
|
2
2
|
import { buildContext } from '@shrkcrft/context';
|
|
3
3
|
import { AiMessageRole, buildPromptMessages, selectAiProvider, } from '@shrkcrft/ai';
|
|
4
4
|
import { flagBool, flagNumber, flagString, resolveCwd, } from "../command-registry.js";
|
|
@@ -24,6 +24,7 @@ export const askCommand = {
|
|
|
24
24
|
task: question,
|
|
25
25
|
maxTokens,
|
|
26
26
|
projectOverview: renderOverviewText(overview),
|
|
27
|
+
boostFor: contextTuningBoostFor(inspection, question),
|
|
27
28
|
});
|
|
28
29
|
const messages = buildPromptMessages({
|
|
29
30
|
systemPreamble: 'You are an AI engineer working in a SharkCraft-instrumented repository. Use the supplied repository context as authoritative ground truth. Quote knowledge entry ids you used.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changes.command.d.ts","sourceRoot":"","sources":["../../src/commands/changes.command.ts"],"names":[],"mappings":"AAiBA,OAAO,EAKL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"changes.command.d.ts","sourceRoot":"","sources":["../../src/commands/changes.command.ts"],"names":[],"mappings":"AAiBA,OAAO,EAKL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AA2HhC,eAAO,MAAM,cAAc,EAAE,eAwB5B,CAAC"}
|
|
@@ -14,7 +14,11 @@ async function runChangesSummary(args) {
|
|
|
14
14
|
const inspection = await inspectSharkcraft({ cwd });
|
|
15
15
|
const since = flagString(args, 'since');
|
|
16
16
|
const staged = flagBool(args, 'staged');
|
|
17
|
-
|
|
17
|
+
// `--files a,b` OR bare positional args after the subverb
|
|
18
|
+
// (`shrk changes summary a.ts b.ts`). Positionals were dropped silently
|
|
19
|
+
// before, yielding a confident full-diff / "0 files" with exit 0.
|
|
20
|
+
const filesFlag = flagList(args, 'files');
|
|
21
|
+
const files = filesFlag.length ? filesFlag : args.positional;
|
|
18
22
|
// Optional round / label propagated into the report.
|
|
19
23
|
const roundLabel = flagString(args, 'round') ?? flagString(args, 'label');
|
|
20
24
|
const opts = {};
|
|
@@ -79,7 +83,9 @@ async function runChangesAcceptanceReplay(args) {
|
|
|
79
83
|
const inspection = await inspectSharkcraft({ cwd });
|
|
80
84
|
const since = flagString(args, 'since');
|
|
81
85
|
const staged = flagBool(args, 'staged');
|
|
82
|
-
|
|
86
|
+
// `--files a,b` OR bare positional args after the subverb (see above).
|
|
87
|
+
const filesFlag = flagList(args, 'files');
|
|
88
|
+
const files = filesFlag.length ? filesFlag : args.positional;
|
|
83
89
|
const roundLabel = flagString(args, 'round') ?? flagString(args, 'label');
|
|
84
90
|
const profileRaw = flagString(args, 'profile') ?? 'changed-only';
|
|
85
91
|
const profile = (() => {
|
|
@@ -136,12 +142,16 @@ async function runChangesAcceptanceReplay(args) {
|
|
|
136
142
|
export const changesCommand = {
|
|
137
143
|
name: 'changes',
|
|
138
144
|
description: 'Changes summary — grouped diff over --since/--staged/--files. Supports --round label and `changes acceptance-replay`. Read-only.',
|
|
139
|
-
usage: 'shrk changes <summary|impact|report|acceptance-replay> [--since <ref>] [--staged] [--
|
|
145
|
+
usage: 'shrk changes <summary|impact|report|acceptance-replay> [files... | --files a,b,c] [--since <ref>] [--staged] [--round <name>] [--profile changed-only|standard|strict] [--format text|markdown|json] [--output <file>]',
|
|
146
|
+
booleanFlags: new Set(['json', 'staged']),
|
|
140
147
|
async run(args) {
|
|
141
148
|
const sub = args.positional[0];
|
|
142
149
|
const sliced = { ...args, positional: args.positional.slice(1) };
|
|
150
|
+
// Always dispatch on the sliced args so positionals AFTER the subverb
|
|
151
|
+
// become the file list (handled in the runners). Passing the un-sliced
|
|
152
|
+
// `args` here used to leak the subverb token (e.g. "summary") forward.
|
|
143
153
|
if (sub === 'summary' || sub === undefined)
|
|
144
|
-
return runChangesSummary(sliced
|
|
154
|
+
return runChangesSummary(sliced);
|
|
145
155
|
if (sub === 'report')
|
|
146
156
|
return runChangesSummary(sliced);
|
|
147
157
|
if (sub === 'impact')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.command.d.ts","sourceRoot":"","sources":["../../src/commands/check.command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"check.command.d.ts","sourceRoot":"","sources":["../../src/commands/check.command.ts"],"names":[],"mappings":"AAoBA,OAAO,EAML,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAurBhC,eAAO,MAAM,YAAY,EAAE,eAyE1B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { buildAiReadinessReport, buildImportHygieneReport, buildPackDoctorReport, ChangedScopeMode, diagnoseActionHints, emitImportHygieneAllowlistDraft, filterViolationsToChangedScope, ImportHygieneFindingKind, inspectSharkcraft, isTodoReason, renderImportHygieneText, resolveChangedFiles, runDoctor, suggestBoundaryFixes, } from '@shrkcrft/inspector';
|
|
1
|
+
import { buildAiReadinessReport, buildImportHygieneReport, buildPackDoctorReport, ChangedScopeMode, diagnoseActionHints, emitImportHygieneAllowlistDraft, filterViolationsToChangedScope, ImportHygieneFindingKind, inspectSharkcraft, isTodoReason, renderImportHygieneText, resolveChangedFiles, resolveProjectConfig, runDoctor, suggestBoundaryFixes, } from '@shrkcrft/inspector';
|
|
2
2
|
import { mkdirSync, writeFileSync, readFileSync, existsSync } from 'node:fs';
|
|
3
3
|
import * as nodePath from 'node:path';
|
|
4
4
|
import { flagBool, flagNumber, flagString, flagVars, resolveCwd, } from "../command-registry.js";
|
|
@@ -7,7 +7,6 @@ import { maybeRunInWatchMode } from "../output/watch-loop.js";
|
|
|
7
7
|
import { validateTemplateVariables } from '@shrkcrft/templates';
|
|
8
8
|
import { FileChangeType, planGeneration } from '@shrkcrft/generator';
|
|
9
9
|
import { evaluateBoundaries, loadTsconfigPaths, runWiring, scanImports, summarizeImports, } from '@shrkcrft/boundaries';
|
|
10
|
-
import { loadProjectConfig } from '@shrkcrft/config';
|
|
11
10
|
function knowledgeGroup(inspection) {
|
|
12
11
|
const dup = inspection.validationIssues.filter((i) => i.code === 'duplicate-id');
|
|
13
12
|
const missing = inspection.validationIssues.filter((i) => i.code !== 'duplicate-id');
|
|
@@ -530,7 +529,7 @@ async function checkWiring(args) {
|
|
|
530
529
|
// Distinguish "config is invalid" from "config valid with no wiring rules":
|
|
531
530
|
// an invalid config (e.g. a malformed wiringRule) must NOT fail open with a
|
|
532
531
|
// misleading "no rules configured" + exit 0.
|
|
533
|
-
const loaded = await
|
|
532
|
+
const loaded = await resolveProjectConfig(cwd);
|
|
534
533
|
if (!loaded.ok) {
|
|
535
534
|
const msg = loaded.error.message;
|
|
536
535
|
if (wantJson) {
|
|
@@ -542,6 +541,7 @@ async function checkWiring(args) {
|
|
|
542
541
|
return 1;
|
|
543
542
|
}
|
|
544
543
|
const rules = loaded.value.config.wiringRules ?? [];
|
|
544
|
+
const planeDiagnostics = loaded.value.planeDiagnostics;
|
|
545
545
|
if (rules.length === 0) {
|
|
546
546
|
if (wantJson) {
|
|
547
547
|
process.stdout.write(asJson({ schema: 'sharkcraft.wiring/v1', rules: [], violations: [], verdict: 'pass' }) + '\n');
|
|
@@ -561,16 +561,29 @@ async function checkWiring(args) {
|
|
|
561
561
|
});
|
|
562
562
|
changedFiles = changed.files;
|
|
563
563
|
}
|
|
564
|
-
const
|
|
564
|
+
const reportRaw = runWiring(cwd, rules, {
|
|
565
565
|
...(changedOnly || since ? { changedOnly: true, changedFiles: changedFiles ?? [] } : {}),
|
|
566
566
|
...(only ? { only: only.split(',').map((s) => s.trim()).filter(Boolean) } : {}),
|
|
567
567
|
});
|
|
568
|
+
// Surface pack-plane merge notes (missing/invalid pack rule files, dropped
|
|
569
|
+
// collisions) alongside the rule engine's own misconfiguration diagnostics.
|
|
570
|
+
const report = planeDiagnostics.length > 0
|
|
571
|
+
? { ...reportRaw, diagnostics: [...reportRaw.diagnostics, ...planeDiagnostics] }
|
|
572
|
+
: reportRaw;
|
|
568
573
|
if (wantJson) {
|
|
569
574
|
process.stdout.write(asJson(report) + '\n');
|
|
570
575
|
return report.verdict === 'errors' ? 1 : 0;
|
|
571
576
|
}
|
|
572
577
|
process.stdout.write(header('Wiring check'));
|
|
573
|
-
|
|
578
|
+
// `evaluated` counts rules that actually ran a comparison (globs matched >0
|
|
579
|
+
// files). When 0 rules evaluated but rules ARE configured, say so loudly —
|
|
580
|
+
// "checked nothing" must never read as the green "every token is wired" pass.
|
|
581
|
+
if (report.evaluated === 0) {
|
|
582
|
+
process.stdout.write(` ! Nothing evaluated — ${report.rules.length} rule(s) configured but none matched files in scope` +
|
|
583
|
+
(changedOnly || since ? ' (changed-only).\n' : '.\n'));
|
|
584
|
+
return 0;
|
|
585
|
+
}
|
|
586
|
+
process.stdout.write(kv('rules evaluated', `${report.evaluated} of ${report.rules.length}`) + '\n');
|
|
574
587
|
const errors = report.violations.filter((v) => v.severity === 'error').length;
|
|
575
588
|
const warnings = report.violations.filter((v) => v.severity === 'warning').length;
|
|
576
589
|
process.stdout.write(kv('violations', `${errors} error(s), ${warnings} warning(s)`) + '\n');
|
|
@@ -614,6 +627,18 @@ export const checkCommand = {
|
|
|
614
627
|
usage: 'shrk [--cwd <dir>] check [packs|pipelines|knowledge|generation|boundaries|imports|wiring] [--strict] [--min-score <0-100>] [--changed-only] [--since <ref>] [--only <ids>] [--json] [--watch [--paths <list>] [--debounce N] [--once]]',
|
|
615
628
|
async run(args) {
|
|
616
629
|
const sub = args.positional[0];
|
|
630
|
+
// `check generation <id> <name>` legitimately takes extra positionals;
|
|
631
|
+
// every other subverb (boundaries/imports/wiring/…) and the full sweep are
|
|
632
|
+
// flag-driven. Reject stray positional file args instead of silently
|
|
633
|
+
// dropping them and reporting a confident green — pass files via --files.
|
|
634
|
+
if (sub !== 'generation') {
|
|
635
|
+
const extras = args.positional.slice(1);
|
|
636
|
+
if (extras.length > 0) {
|
|
637
|
+
process.stderr.write(`Unexpected positional argument(s): ${extras.join(', ')}. ` +
|
|
638
|
+
`Use --files a.ts,b.ts (or --changed-only) instead of passing files positionally.\n`);
|
|
639
|
+
return 2;
|
|
640
|
+
}
|
|
641
|
+
}
|
|
617
642
|
if (sub === 'generation')
|
|
618
643
|
return checkGeneration(args);
|
|
619
644
|
if (sub === 'boundaries')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-catalog.d.ts","sourceRoot":"","sources":["../../src/commands/command-catalog.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,QAAQ,cAAc;IACtB,iBAAiB,mBAAmB;IACpC,gBAAgB,kBAAkB;IAClC,YAAY,kBAAkB;IAC9B,SAAS,eAAe;IACxB,cAAc,oBAAoB;CACnC;AAED;;;;;;GAMG;AACH,oBAAY,cAAc;IACxB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB;AAED,8BAA8B;AAC9B,oBAAY,eAAe;IACzB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,EAAE,OAAO;IACT,UAAU,gBAAgB;IAC1B,UAAU,eAAe;CAC1B;AAED;;;;;;GAMG;AACH,oBAAY,eAAe;IACzB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,MAAM,WAAW;CAClB;AAED;;;;;;GAMG;AACH,oBAAY,gBAAgB;IAC1B,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,UAAU,eAAe;IACzB,OAAO,YAAY;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,oBAAY,WAAW;IACrB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,YAAY,iBAAiB;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B;;;;OAIG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAC9C,kCAAkC;IAClC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,0DAA0D;IAC1D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,oBAAoB,
|
|
1
|
+
{"version":3,"file":"command-catalog.d.ts","sourceRoot":"","sources":["../../src/commands/command-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -3206,6 +3206,206 @@ export const COMMAND_CATALOG = Object.freeze([
|
|
|
3206
3206
|
intendedAudience: [CommandAudience.Human, CommandAudience.Maintainer],
|
|
3207
3207
|
taskRole: CommandTaskRole.Inspect,
|
|
3208
3208
|
}),
|
|
3209
|
+
// ── D3-2: registered command groups that resolved live but had ZERO
|
|
3210
|
+
// catalog entries, so `shrk commands doctor` was blind to them and
|
|
3211
|
+
// `shrk help <group>` had no metadata. One canonical row per registered
|
|
3212
|
+
// sub-verb. Everything is ReadOnly except `checks run --execute`
|
|
3213
|
+
// (RunsShell) and `audit project-coupling` (RunsShell, advanced).
|
|
3214
|
+
// `mcpAvailable` mirrors a real read-only MCP tool where one exists.
|
|
3215
|
+
//
|
|
3216
|
+
// paths — path-convention registry
|
|
3217
|
+
// (MCP: list_path_conventions / get_path_convention / search_path_conventions).
|
|
3218
|
+
entry({
|
|
3219
|
+
command: 'paths list',
|
|
3220
|
+
description: 'List path conventions.',
|
|
3221
|
+
category: 'paths',
|
|
3222
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3223
|
+
mcpAvailable: true,
|
|
3224
|
+
taskRole: CommandTaskRole.Inspect,
|
|
3225
|
+
}),
|
|
3226
|
+
entry({
|
|
3227
|
+
command: 'paths get',
|
|
3228
|
+
description: 'Get one path convention by id.',
|
|
3229
|
+
category: 'paths',
|
|
3230
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3231
|
+
mcpAvailable: true,
|
|
3232
|
+
taskRole: CommandTaskRole.Inspect,
|
|
3233
|
+
}),
|
|
3234
|
+
entry({
|
|
3235
|
+
command: 'paths search',
|
|
3236
|
+
description: 'Search path conventions by scope / query.',
|
|
3237
|
+
category: 'paths',
|
|
3238
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3239
|
+
mcpAvailable: true,
|
|
3240
|
+
taskRole: CommandTaskRole.Search,
|
|
3241
|
+
}),
|
|
3242
|
+
entry({
|
|
3243
|
+
command: 'paths best',
|
|
3244
|
+
description: 'Pick the best path convention for a task.',
|
|
3245
|
+
category: 'paths',
|
|
3246
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3247
|
+
taskRole: CommandTaskRole.Inspect,
|
|
3248
|
+
}),
|
|
3249
|
+
// pipelines — pipeline registry
|
|
3250
|
+
// (MCP: list_pipelines / get_pipeline / get_pipeline_context / create_pipeline_plan).
|
|
3251
|
+
entry({
|
|
3252
|
+
command: 'pipelines list',
|
|
3253
|
+
description: 'List available pipelines.',
|
|
3254
|
+
category: 'pipelines',
|
|
3255
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3256
|
+
mcpAvailable: true,
|
|
3257
|
+
taskRole: CommandTaskRole.Inspect,
|
|
3258
|
+
}),
|
|
3259
|
+
entry({
|
|
3260
|
+
command: 'pipelines get',
|
|
3261
|
+
description: 'Show one pipeline by id.',
|
|
3262
|
+
category: 'pipelines',
|
|
3263
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3264
|
+
mcpAvailable: true,
|
|
3265
|
+
taskRole: CommandTaskRole.Inspect,
|
|
3266
|
+
}),
|
|
3267
|
+
entry({
|
|
3268
|
+
command: 'pipelines context',
|
|
3269
|
+
description: 'Token-budgeted context for a pipeline + task.',
|
|
3270
|
+
category: 'pipelines',
|
|
3271
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3272
|
+
mcpAvailable: true,
|
|
3273
|
+
taskRole: CommandTaskRole.Context,
|
|
3274
|
+
}),
|
|
3275
|
+
entry({
|
|
3276
|
+
command: 'pipelines plan',
|
|
3277
|
+
description: 'Render a pipeline as an ordered step plan for a task.',
|
|
3278
|
+
category: 'pipelines',
|
|
3279
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3280
|
+
mcpAvailable: true,
|
|
3281
|
+
taskRole: CommandTaskRole.Context,
|
|
3282
|
+
}),
|
|
3283
|
+
entry({
|
|
3284
|
+
command: 'pipelines script',
|
|
3285
|
+
description: 'Render a pipeline as a runnable bash-style preview script (no execution).',
|
|
3286
|
+
category: 'pipelines',
|
|
3287
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3288
|
+
taskRole: CommandTaskRole.Context,
|
|
3289
|
+
}),
|
|
3290
|
+
entry({
|
|
3291
|
+
command: 'pipelines next',
|
|
3292
|
+
description: 'Show the next recommended step in a pipeline for a task.',
|
|
3293
|
+
category: 'pipelines',
|
|
3294
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3295
|
+
taskRole: CommandTaskRole.Inspect,
|
|
3296
|
+
}),
|
|
3297
|
+
entry({
|
|
3298
|
+
command: 'pipelines vars',
|
|
3299
|
+
description: 'List the variables a pipeline consumes.',
|
|
3300
|
+
category: 'pipelines',
|
|
3301
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3302
|
+
taskRole: CommandTaskRole.Inspect,
|
|
3303
|
+
}),
|
|
3304
|
+
// checks — custom-check registry declared by rules (metadata.checks[]).
|
|
3305
|
+
entry({
|
|
3306
|
+
command: 'checks list',
|
|
3307
|
+
description: 'List custom checks declared by rules (metadata.checks[]). Read-only.',
|
|
3308
|
+
category: 'checks',
|
|
3309
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3310
|
+
taskRole: CommandTaskRole.Inspect,
|
|
3311
|
+
}),
|
|
3312
|
+
entry({
|
|
3313
|
+
command: 'checks doctor',
|
|
3314
|
+
description: 'Validate custom-check descriptors (missing fields, duplicate ids).',
|
|
3315
|
+
category: 'checks',
|
|
3316
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3317
|
+
taskRole: CommandTaskRole.Diagnose,
|
|
3318
|
+
}),
|
|
3319
|
+
entry({
|
|
3320
|
+
command: 'checks run',
|
|
3321
|
+
description: 'Preview a custom check. Read-only by default — pass --execute to run it.',
|
|
3322
|
+
category: 'checks',
|
|
3323
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3324
|
+
taskRole: CommandTaskRole.Validate,
|
|
3325
|
+
}),
|
|
3326
|
+
entry({
|
|
3327
|
+
command: 'checks run --execute',
|
|
3328
|
+
description: 'Actually invoke the custom check command (runs the configured shell command).',
|
|
3329
|
+
category: 'checks',
|
|
3330
|
+
safetyLevel: SafetyLevel.RunsShell,
|
|
3331
|
+
runsShell: true,
|
|
3332
|
+
requiresReview: true,
|
|
3333
|
+
taskRole: CommandTaskRole.Validate,
|
|
3334
|
+
}),
|
|
3335
|
+
entry({
|
|
3336
|
+
command: 'checks parse-report',
|
|
3337
|
+
description: 'Parse a check report file into the canonical finding shape. Read-only.',
|
|
3338
|
+
category: 'checks',
|
|
3339
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3340
|
+
taskRole: CommandTaskRole.Inspect,
|
|
3341
|
+
}),
|
|
3342
|
+
entry({
|
|
3343
|
+
command: 'checks import',
|
|
3344
|
+
description: 'Import an external tool report into the universal check-result protocol. Read-only.',
|
|
3345
|
+
category: 'checks',
|
|
3346
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3347
|
+
taskRole: CommandTaskRole.Inspect,
|
|
3348
|
+
}),
|
|
3349
|
+
entry({
|
|
3350
|
+
command: 'checks aggregate',
|
|
3351
|
+
description: 'Aggregate multiple check reports into one verdict. Read-only.',
|
|
3352
|
+
category: 'checks',
|
|
3353
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3354
|
+
taskRole: CommandTaskRole.Validate,
|
|
3355
|
+
}),
|
|
3356
|
+
entry({
|
|
3357
|
+
command: 'checks report',
|
|
3358
|
+
description: 'Render aggregated check results in the chosen format. Read-only.',
|
|
3359
|
+
category: 'checks',
|
|
3360
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3361
|
+
taskRole: CommandTaskRole.Inspect,
|
|
3362
|
+
}),
|
|
3363
|
+
entry({
|
|
3364
|
+
command: 'checks convert',
|
|
3365
|
+
description: 'Convert a check report between supported formats. Read-only.',
|
|
3366
|
+
category: 'checks',
|
|
3367
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3368
|
+
taskRole: CommandTaskRole.Inspect,
|
|
3369
|
+
}),
|
|
3370
|
+
// audit — project-specific coupling audit (MCP: get_project_coupling_report).
|
|
3371
|
+
// RunsShell/advanced per the brief: the report/plan modes materialise
|
|
3372
|
+
// artifacts and the audit is a heavyweight, opt-in surface.
|
|
3373
|
+
entry({
|
|
3374
|
+
command: 'audit project-coupling',
|
|
3375
|
+
description: 'Audit / plan / report project-specific coupling. Pass --token to scan for identifiers; the engine ships zero built-in tokens.',
|
|
3376
|
+
category: 'analysis',
|
|
3377
|
+
safetyLevel: SafetyLevel.RunsShell,
|
|
3378
|
+
runsShell: true,
|
|
3379
|
+
mcpAvailable: true,
|
|
3380
|
+
surface: CommandSurface.Advanced,
|
|
3381
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
3382
|
+
taskRole: CommandTaskRole.Inspect,
|
|
3383
|
+
}),
|
|
3384
|
+
// ownership — CODEOWNERS / sharkcraft ownership registry
|
|
3385
|
+
// (MCP: get_ownership / match_owners).
|
|
3386
|
+
entry({
|
|
3387
|
+
command: 'ownership list',
|
|
3388
|
+
description: 'List ownership rules from CODEOWNERS / sharkcraft/ownership.ts.',
|
|
3389
|
+
category: 'ownership',
|
|
3390
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3391
|
+
mcpAvailable: true,
|
|
3392
|
+
taskRole: CommandTaskRole.Inspect,
|
|
3393
|
+
}),
|
|
3394
|
+
entry({
|
|
3395
|
+
command: 'ownership for',
|
|
3396
|
+
description: 'Show the ownership match for a single file.',
|
|
3397
|
+
category: 'ownership',
|
|
3398
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3399
|
+
mcpAvailable: true,
|
|
3400
|
+
taskRole: CommandTaskRole.Inspect,
|
|
3401
|
+
}),
|
|
3402
|
+
entry({
|
|
3403
|
+
command: 'ownership affected',
|
|
3404
|
+
description: 'Show owners affected by --since <ref>, --bundle <id>, or --files a,b.',
|
|
3405
|
+
category: 'ownership',
|
|
3406
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
3407
|
+
taskRole: CommandTaskRole.Inspect,
|
|
3408
|
+
}),
|
|
3209
3409
|
]);
|
|
3210
3410
|
/** Return every canonical command string in the catalog. */
|
|
3211
3411
|
export function listCatalogCommandStrings() {
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
import { type CommandRegistry, type ICommandHandler } from '../command-registry.js';
|
|
2
|
+
import { type ISurfaceProfile } from '../surface/profiles.js';
|
|
3
|
+
import { type ICommandCatalogEntry } from './command-catalog.js';
|
|
2
4
|
export declare function makeCommandsCommand(registry: CommandRegistry): ICommandHandler;
|
|
5
|
+
export interface ICommandsProfileView {
|
|
6
|
+
profile: ISurfaceProfile;
|
|
7
|
+
entries: readonly ICommandCatalogEntry[];
|
|
8
|
+
hidden: readonly string[];
|
|
9
|
+
catalogTotal: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Pure: render the catalog as a surface profile sees it. Every command the
|
|
13
|
+
* profile lists in `hidden` is filtered out of `entries` (commands stay
|
|
14
|
+
* callable — this is a listing filter, not a disable). Returns undefined when
|
|
15
|
+
* the profile id is unknown. Exported for tests.
|
|
16
|
+
*/
|
|
17
|
+
export declare function buildCommandsProfileView(profileId: string, packProfiles?: readonly ISurfaceProfile[]): ICommandsProfileView | undefined;
|
|
3
18
|
export interface IRetirementPlanGroup {
|
|
4
19
|
reason: 'deprecated' | 'aliases' | 'machine-in-help' | 'overlapping' | 'missing-replacedBy' | 'legacy-no-removeAfter';
|
|
5
20
|
entries: readonly {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.command.d.ts","sourceRoot":"","sources":["../../src/commands/commands.command.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EAGpB,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"commands.command.d.ts","sourceRoot":"","sources":["../../src/commands/commands.command.ts"],"names":[],"mappings":"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"}
|