@shrkcrft/cli 0.1.0-alpha.2 → 0.1.0-alpha.20
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/audit/knowledge-audit-llm.d.ts +19 -0
- package/dist/audit/knowledge-audit-llm.d.ts.map +1 -0
- package/dist/audit/knowledge-audit-llm.js +164 -0
- package/dist/audit/knowledge-audit.d.ts +61 -0
- package/dist/audit/knowledge-audit.d.ts.map +1 -0
- package/dist/audit/knowledge-audit.js +203 -0
- package/dist/audit/knowledge-fix-plan-llm.d.ts +11 -0
- package/dist/audit/knowledge-fix-plan-llm.d.ts.map +1 -0
- package/dist/audit/knowledge-fix-plan-llm.js +141 -0
- package/dist/audit/knowledge-fix-plan.d.ts +41 -0
- package/dist/audit/knowledge-fix-plan.d.ts.map +1 -0
- package/dist/audit/knowledge-fix-plan.js +125 -0
- package/dist/audit/pipeline-audit-llm.d.ts +11 -0
- package/dist/audit/pipeline-audit-llm.d.ts.map +1 -0
- package/dist/audit/pipeline-audit-llm.js +134 -0
- package/dist/audit/pipeline-audit.d.ts +69 -0
- package/dist/audit/pipeline-audit.d.ts.map +1 -0
- package/dist/audit/pipeline-audit.js +166 -0
- package/dist/audit/templates-audit-llm.d.ts +19 -0
- package/dist/audit/templates-audit-llm.d.ts.map +1 -0
- package/dist/audit/templates-audit-llm.js +207 -0
- package/dist/audit/templates-audit.d.ts +63 -0
- package/dist/audit/templates-audit.d.ts.map +1 -0
- package/dist/audit/templates-audit.js +171 -0
- package/dist/audit/templates-fix-plan-llm.d.ts +19 -0
- package/dist/audit/templates-fix-plan-llm.d.ts.map +1 -0
- package/dist/audit/templates-fix-plan-llm.js +162 -0
- package/dist/audit/templates-fix-plan.d.ts +37 -0
- package/dist/audit/templates-fix-plan.d.ts.map +1 -0
- package/dist/audit/templates-fix-plan.js +174 -0
- package/dist/command-registry.d.ts +28 -0
- package/dist/command-registry.d.ts.map +1 -1
- package/dist/command-registry.js +91 -1
- package/dist/commands/ai-status.command.d.ts +19 -0
- package/dist/commands/ai-status.command.d.ts.map +1 -0
- package/dist/commands/ai-status.command.js +94 -0
- package/dist/commands/api-diff.command.d.ts +11 -0
- package/dist/commands/api-diff.command.d.ts.map +1 -0
- package/dist/commands/api-diff.command.js +144 -0
- package/dist/commands/apply.command.d.ts.map +1 -1
- package/dist/commands/apply.command.js +10 -2
- package/dist/commands/arch.command.d.ts +9 -0
- package/dist/commands/arch.command.d.ts.map +1 -0
- package/dist/commands/arch.command.js +186 -0
- package/dist/commands/ask.command.d.ts.map +1 -1
- package/dist/commands/ask.command.js +10 -9
- package/dist/commands/cache-align.command.d.ts +12 -0
- package/dist/commands/cache-align.command.d.ts.map +1 -0
- package/dist/commands/cache-align.command.js +78 -0
- package/dist/commands/check.command.d.ts.map +1 -1
- package/dist/commands/check.command.js +19 -2
- package/dist/commands/code-intel.command.d.ts +18 -0
- package/dist/commands/code-intel.command.d.ts.map +1 -0
- package/dist/commands/code-intel.command.js +146 -0
- package/dist/commands/codemod.command.d.ts.map +1 -1
- package/dist/commands/codemod.command.js +27 -6
- package/dist/commands/command-catalog.d.ts +15 -3
- package/dist/commands/command-catalog.d.ts.map +1 -1
- package/dist/commands/command-catalog.js +387 -34
- package/dist/commands/commands.command.d.ts.map +1 -1
- package/dist/commands/commands.command.js +4 -4
- package/dist/commands/completion.command.d.ts +10 -0
- package/dist/commands/completion.command.d.ts.map +1 -0
- package/dist/commands/completion.command.js +121 -0
- package/dist/commands/compress.command.d.ts +8 -0
- package/dist/commands/compress.command.d.ts.map +1 -0
- package/dist/commands/compress.command.js +147 -0
- package/dist/commands/constructs.command.d.ts.map +1 -1
- package/dist/commands/constructs.command.js +89 -23
- package/dist/commands/context.command.d.ts.map +1 -1
- package/dist/commands/context.command.js +121 -1
- package/dist/commands/contract-gate.command.d.ts.map +1 -1
- package/dist/commands/contract-gate.command.js +5 -1
- package/dist/commands/delegate.command.d.ts +65 -0
- package/dist/commands/delegate.command.d.ts.map +1 -0
- package/dist/commands/delegate.command.js +657 -0
- package/dist/commands/deps-audit.command.d.ts +23 -0
- package/dist/commands/deps-audit.command.d.ts.map +1 -0
- package/dist/commands/deps-audit.command.js +270 -0
- package/dist/commands/dev.command.d.ts.map +1 -1
- package/dist/commands/dev.command.js +5 -1
- package/dist/commands/diff-check.command.d.ts +30 -0
- package/dist/commands/diff-check.command.d.ts.map +1 -0
- package/dist/commands/diff-check.command.js +210 -0
- package/dist/commands/doctor.command.d.ts.map +1 -1
- package/dist/commands/doctor.command.js +162 -10
- package/dist/commands/export.command.d.ts.map +1 -1
- package/dist/commands/export.command.js +76 -3
- package/dist/commands/framework.command.d.ts +12 -0
- package/dist/commands/framework.command.d.ts.map +1 -0
- package/dist/commands/framework.command.js +180 -0
- package/dist/commands/gate.command.d.ts +15 -0
- package/dist/commands/gate.command.d.ts.map +1 -0
- package/dist/commands/gate.command.js +300 -0
- package/dist/commands/gen.command.d.ts.map +1 -1
- package/dist/commands/gen.command.js +13 -1
- package/dist/commands/graph-code-subverbs.d.ts +33 -0
- package/dist/commands/graph-code-subverbs.d.ts.map +1 -0
- package/dist/commands/graph-code-subverbs.js +1366 -0
- package/dist/commands/graph.command.d.ts.map +1 -1
- package/dist/commands/graph.command.js +31 -2
- package/dist/commands/help.command.d.ts +4 -3
- package/dist/commands/help.command.d.ts.map +1 -1
- package/dist/commands/help.command.js +86 -18
- package/dist/commands/helper.command.js +1 -1
- package/dist/commands/impact.command.d.ts.map +1 -1
- package/dist/commands/impact.command.js +171 -1
- package/dist/commands/import.command.d.ts.map +1 -1
- package/dist/commands/import.command.js +121 -5
- package/dist/commands/ingest.command.d.ts.map +1 -1
- package/dist/commands/ingest.command.js +5 -1
- package/dist/commands/init.command.d.ts.map +1 -1
- package/dist/commands/init.command.js +174 -7
- package/dist/commands/knowledge-author.command.d.ts.map +1 -1
- package/dist/commands/knowledge-author.command.js +9 -0
- package/dist/commands/knowledge-propose.command.d.ts.map +1 -1
- package/dist/commands/knowledge-propose.command.js +4 -2
- package/dist/commands/knowledge.command.d.ts.map +1 -1
- package/dist/commands/knowledge.command.js +26 -3
- package/dist/commands/migrate.command.d.ts +13 -0
- package/dist/commands/migrate.command.d.ts.map +1 -0
- package/dist/commands/migrate.command.js +152 -0
- package/dist/commands/move-plan.command.d.ts +23 -0
- package/dist/commands/move-plan.command.d.ts.map +1 -0
- package/dist/commands/move-plan.command.js +360 -0
- package/dist/commands/packs-new.d.ts +1 -1
- package/dist/commands/packs-new.d.ts.map +1 -1
- package/dist/commands/packs-new.js +5 -36
- package/dist/commands/packs.command.d.ts.map +1 -1
- package/dist/commands/packs.command.js +2 -10
- package/dist/commands/plan-context.command.d.ts +11 -0
- package/dist/commands/plan-context.command.d.ts.map +1 -0
- package/dist/commands/plan-context.command.js +85 -0
- package/dist/commands/preflight.command.d.ts.map +1 -1
- package/dist/commands/preflight.command.js +15 -0
- package/dist/commands/profiles.command.js +4 -4
- package/dist/commands/recommend.command.d.ts +6 -0
- package/dist/commands/recommend.command.d.ts.map +1 -1
- package/dist/commands/recommend.command.js +119 -5
- package/dist/commands/release.command.js +13 -13
- package/dist/commands/rule-graph-subverbs.d.ts +3 -0
- package/dist/commands/rule-graph-subverbs.d.ts.map +1 -0
- package/dist/commands/rule-graph-subverbs.js +132 -0
- package/dist/commands/rules.command.d.ts.map +1 -1
- package/dist/commands/rules.command.js +20 -3
- package/dist/commands/scaffold-validate.command.d.ts +22 -0
- package/dist/commands/scaffold-validate.command.d.ts.map +1 -0
- package/dist/commands/scaffold-validate.command.js +215 -0
- package/dist/commands/search-structural.command.d.ts +18 -0
- package/dist/commands/search-structural.command.d.ts.map +1 -0
- package/dist/commands/search-structural.command.js +376 -0
- package/dist/commands/search.command.js +1 -1
- package/dist/commands/smart-context.command.d.ts +67 -0
- package/dist/commands/smart-context.command.d.ts.map +1 -0
- package/dist/commands/smart-context.command.js +4728 -0
- package/dist/commands/spike.command.d.ts +22 -0
- package/dist/commands/spike.command.d.ts.map +1 -0
- package/dist/commands/spike.command.js +235 -0
- package/dist/commands/surface.command.d.ts +1 -0
- package/dist/commands/surface.command.d.ts.map +1 -1
- package/dist/commands/surface.command.js +10 -3
- package/dist/commands/task-context.command.d.ts.map +1 -1
- package/dist/commands/task-context.command.js +5 -17
- package/dist/commands/task.command.d.ts.map +1 -1
- package/dist/commands/task.command.js +8 -2
- package/dist/commands/template-quality.command.d.ts.map +1 -1
- package/dist/commands/template-quality.command.js +39 -3
- package/dist/commands/templates.command.d.ts.map +1 -1
- package/dist/commands/templates.command.js +37 -2
- package/dist/commands/tests.command.d.ts.map +1 -1
- package/dist/commands/tests.command.js +13 -2
- package/dist/commands/watch.command.d.ts +26 -0
- package/dist/commands/watch.command.d.ts.map +1 -0
- package/dist/commands/watch.command.js +456 -0
- package/dist/dashboard/code-intelligence-data.d.ts +33 -0
- package/dist/dashboard/code-intelligence-data.d.ts.map +1 -0
- package/dist/dashboard/code-intelligence-data.js +329 -0
- package/dist/dashboard/dashboard-api-server.d.ts.map +1 -1
- package/dist/dashboard/dashboard-api-server.js +256 -2
- package/dist/dashboard/knowledge-ask.d.ts +4 -0
- package/dist/dashboard/knowledge-ask.d.ts.map +1 -0
- package/dist/dashboard/knowledge-ask.js +112 -0
- package/dist/env/load-dotenv.d.ts +15 -0
- package/dist/env/load-dotenv.d.ts.map +1 -0
- package/dist/env/load-dotenv.js +70 -0
- package/dist/export/claude-commands-export.d.ts +60 -0
- package/dist/export/claude-commands-export.d.ts.map +1 -0
- package/dist/export/claude-commands-export.js +276 -0
- package/dist/export/export-formats.d.ts +1 -1
- package/dist/export/export-formats.d.ts.map +1 -1
- package/dist/export/export-formats.js +139 -12
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/init/init-templates.d.ts.map +1 -1
- package/dist/init/init-templates.js +133 -113
- package/dist/init/paths-advisory.d.ts +20 -0
- package/dist/init/paths-advisory.d.ts.map +1 -0
- package/dist/init/paths-advisory.js +88 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +331 -17
- package/dist/output/ccr-store-config.d.ts +18 -0
- package/dist/output/ccr-store-config.d.ts.map +1 -0
- package/dist/output/ccr-store-config.js +41 -0
- package/dist/output/format-output.d.ts.map +1 -1
- package/dist/output/format-output.js +6 -1
- package/dist/output/output-compression.d.ts +15 -0
- package/dist/output/output-compression.d.ts.map +1 -0
- package/dist/output/output-compression.js +60 -0
- package/dist/output/resolve-compress-type.d.ts +22 -0
- package/dist/output/resolve-compress-type.d.ts.map +1 -0
- package/dist/output/resolve-compress-type.js +21 -0
- package/dist/output/watch-loop.d.ts +9 -1
- package/dist/output/watch-loop.d.ts.map +1 -1
- package/dist/output/watch-loop.js +13 -3
- package/dist/schemas/json-schemas.d.ts +384 -36
- package/dist/schemas/json-schemas.d.ts.map +1 -1
- package/dist/schemas/json-schemas.js +247 -36
- package/dist/surface/profiles.d.ts.map +1 -1
- package/dist/surface/profiles.js +54 -9
- package/dist/surface/surface-config-writer.d.ts.map +1 -1
- package/dist/surface/surface-config-writer.js +23 -11
- package/dist/validation/run-validation-loop.d.ts.map +1 -1
- package/dist/validation/run-validation-loop.js +5 -1
- package/package.json +35 -21
- package/dist/commands/plugin.command.d.ts +0 -11
- package/dist/commands/plugin.command.d.ts.map +0 -1
- package/dist/commands/plugin.command.js +0 -394
|
@@ -8,23 +8,41 @@
|
|
|
8
8
|
import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
9
9
|
import * as nodePath from 'node:path';
|
|
10
10
|
import { affectedFromCheckReport, buildCodemodAssistReport, inspectSharkcraft, parseCustomCheckReportFromFile, renderCodemodAssistMarkdown, } from '@shrkcrft/inspector';
|
|
11
|
-
import {
|
|
11
|
+
import { formatRuleCompact } from '@shrkcrft/rules';
|
|
12
|
+
import { flagBool, flagNumber, flagString, flagList, resolveCwd, } from "../command-registry.js";
|
|
12
13
|
import { asJson, header } from "../output/format-output.js";
|
|
13
14
|
async function loadRule(args) {
|
|
14
15
|
const ruleId = flagString(args, 'rule');
|
|
15
16
|
if (!ruleId) {
|
|
16
|
-
process.stderr.write('Missing --rule <ruleId
|
|
17
|
+
process.stderr.write('Missing --rule <ruleId>. Run `shrk codemod list` to see available rule ids.\n');
|
|
17
18
|
return null;
|
|
18
19
|
}
|
|
19
20
|
const cwd = resolveCwd(args);
|
|
20
21
|
const inspection = await inspectSharkcraft({ cwd });
|
|
21
22
|
const rule = inspection.ruleService.get(ruleId);
|
|
22
23
|
if (!rule) {
|
|
23
|
-
process.stderr.write(`No rule with id "${ruleId}".\n`);
|
|
24
|
+
process.stderr.write(`No rule with id "${ruleId}". Run \`shrk codemod list\` to see available rule ids.\n`);
|
|
24
25
|
return null;
|
|
25
26
|
}
|
|
26
27
|
return { rule, cwd };
|
|
27
28
|
}
|
|
29
|
+
/** `shrk codemod list` — enumerate the rule ids codemod-assist accepts. */
|
|
30
|
+
async function listRules(args) {
|
|
31
|
+
const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
|
|
32
|
+
let rules = inspection.ruleService.list();
|
|
33
|
+
const top = flagNumber(args, 'top');
|
|
34
|
+
if (top !== undefined && top > 0) {
|
|
35
|
+
rules = [...rules].sort((a, b) => a.id.localeCompare(b.id)).slice(0, top);
|
|
36
|
+
}
|
|
37
|
+
if (flagBool(args, 'json')) {
|
|
38
|
+
process.stdout.write(asJson(rules.map((r) => ({ id: r.id, type: r.type, priority: r.priority, title: r.title }))) + '\n');
|
|
39
|
+
return 0;
|
|
40
|
+
}
|
|
41
|
+
process.stdout.write(header(`Codemod rules (${rules.length})`));
|
|
42
|
+
for (const r of rules)
|
|
43
|
+
process.stdout.write(formatRuleCompact(r) + '\n');
|
|
44
|
+
return 0;
|
|
45
|
+
}
|
|
28
46
|
async function gatherAffected(args) {
|
|
29
47
|
const fromReport = flagString(args, 'from-report');
|
|
30
48
|
const out = [];
|
|
@@ -57,14 +75,17 @@ function writeAssistOutputs(cwd, ruleId, markdown, scriptTemplate) {
|
|
|
57
75
|
export const codemodCommand = {
|
|
58
76
|
name: 'codemod',
|
|
59
77
|
description: 'Codemod-assist (NOT a codemod engine). Inventory + risk grouping + checklist + project-script template. Never rewrites source.',
|
|
60
|
-
usage: 'shrk codemod <inventory|plan|checklist> --rule <ruleId> [--from-report <path>] [--targets a,b,c] [--write-preview] [--json]',
|
|
78
|
+
usage: 'shrk codemod <list|inventory|plan|checklist> --rule <ruleId> [--from-report <path>] [--targets a,b,c] [--write-preview] [--json]',
|
|
61
79
|
async run(args) {
|
|
62
80
|
const sub = args.positional[0] ?? 'plan';
|
|
63
|
-
if (!['inventory', 'plan', 'checklist'].includes(sub)) {
|
|
64
|
-
process.stderr.write('Usage: shrk codemod <inventory|plan|checklist> --rule <ruleId>\n');
|
|
81
|
+
if (!['list', 'inventory', 'plan', 'checklist'].includes(sub)) {
|
|
82
|
+
process.stderr.write('Usage: shrk codemod <list|inventory|plan|checklist> --rule <ruleId>\n');
|
|
65
83
|
return 2;
|
|
66
84
|
}
|
|
67
85
|
const inner = { ...args, positional: args.positional.slice(1) };
|
|
86
|
+
// `list` enumerates rule ids and needs no --rule.
|
|
87
|
+
if (sub === 'list')
|
|
88
|
+
return listRules(inner);
|
|
68
89
|
const loaded = await loadRule(inner);
|
|
69
90
|
if (!loaded)
|
|
70
91
|
return 1;
|
|
@@ -236,9 +236,13 @@ export declare function commandLifecycle(e: ICommandCatalogEntry): CommandLifecy
|
|
|
236
236
|
/**
|
|
237
237
|
* Default-help visibility rule. Honors an explicit
|
|
238
238
|
* {@link ICommandCatalogEntry.showInDefaultHelp} when set; otherwise
|
|
239
|
-
*
|
|
240
|
-
*
|
|
241
|
-
*
|
|
239
|
+
* the {@link PRIMARY_VERBS_ALLOWLIST} gates membership in the visible
|
|
240
|
+
* surface (primary + common entries whose top-level verb pays rent
|
|
241
|
+
* make the cut; everything else is hidden from `--full-help`).
|
|
242
|
+
*
|
|
243
|
+
* Deprecated, retired, aliased commands and anything in the
|
|
244
|
+
* {@link R46_OVERLAY} are always hidden regardless of allowlist
|
|
245
|
+
* membership.
|
|
242
246
|
*/
|
|
243
247
|
export declare function defaultShowInHelp(e: ICommandCatalogEntry): boolean;
|
|
244
248
|
/**
|
|
@@ -262,4 +266,12 @@ export interface ICommandSafetyMatrixRow {
|
|
|
262
266
|
}
|
|
263
267
|
export declare function buildCommandSafetyMatrix(): readonly ICommandSafetyMatrixRow[];
|
|
264
268
|
export declare function renderCommandSafetyMatrixMarkdown(rows: readonly ICommandSafetyMatrixRow[]): string;
|
|
269
|
+
/**
|
|
270
|
+
* The set of TOP-LEVEL command verbs in the catalogue (the first token of each
|
|
271
|
+
* entry's `command`). The single source of truth for "is `shrk <verb>` a real
|
|
272
|
+
* command" checks — e.g. the contradictions doc-vs-CLI scan, which lives in the
|
|
273
|
+
* inspector layer and so receives this set by injection rather than importing
|
|
274
|
+
* the CLI.
|
|
275
|
+
*/
|
|
276
|
+
export declare function cliCommandNameSet(): Set<string>;
|
|
265
277
|
//# sourceMappingURL=command-catalog.d.ts.map
|
|
@@ -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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"}
|
|
@@ -115,6 +115,16 @@ export const COMMAND_CATALOG = Object.freeze([
|
|
|
115
115
|
intendedAudience: [CommandAudience.Human, CommandAudience.Agent, CommandAudience.Ci],
|
|
116
116
|
taskRole: CommandTaskRole.Diagnose,
|
|
117
117
|
}),
|
|
118
|
+
entry({
|
|
119
|
+
command: 'ai-status',
|
|
120
|
+
description: 'Report which AI provider shrk would use right now, with setup or upgrade hints. `--ping` verifies the provider actually responds.',
|
|
121
|
+
category: 'core',
|
|
122
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
123
|
+
mcpAvailable: false,
|
|
124
|
+
surface: CommandSurface.Common,
|
|
125
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
126
|
+
taskRole: CommandTaskRole.Diagnose,
|
|
127
|
+
}),
|
|
118
128
|
entry({
|
|
119
129
|
command: 'context',
|
|
120
130
|
description: 'Focused context for a task (rules / paths / templates). For "what should I do?" prefer `shrk recommend "<task>"`.',
|
|
@@ -256,13 +266,94 @@ export const COMMAND_CATALOG = Object.freeze([
|
|
|
256
266
|
}),
|
|
257
267
|
entry({
|
|
258
268
|
command: 'graph',
|
|
259
|
-
description: 'Knowledge graph
|
|
269
|
+
description: 'Knowledge graph plus code-intelligence subverbs (`index`, `status`, `search`, `context`, `impact`, `callers`, `cycles`, `unresolved`, `deps`, `why`, `export`).',
|
|
270
|
+
category: 'core',
|
|
271
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
272
|
+
mcpAvailable: true,
|
|
273
|
+
surface: CommandSurface.Common,
|
|
274
|
+
taskRole: CommandTaskRole.Inspect,
|
|
275
|
+
}),
|
|
276
|
+
entry({
|
|
277
|
+
command: 'rule-graph',
|
|
278
|
+
description: 'Bridge the code graph to asset registries (boundary rules, path conventions, templates). Sub-verbs: index, status, for <file>.',
|
|
279
|
+
category: 'core',
|
|
280
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
281
|
+
mcpAvailable: true,
|
|
282
|
+
surface: CommandSurface.Common,
|
|
283
|
+
taskRole: CommandTaskRole.Inspect,
|
|
284
|
+
}),
|
|
285
|
+
entry({
|
|
286
|
+
command: 'search-structural',
|
|
287
|
+
description: 'Declarative AST pattern search over the project. Read-only; no rewrites in this round.',
|
|
288
|
+
category: 'core',
|
|
289
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
290
|
+
mcpAvailable: true,
|
|
291
|
+
surface: CommandSurface.Common,
|
|
292
|
+
taskRole: CommandTaskRole.Inspect,
|
|
293
|
+
}),
|
|
294
|
+
entry({
|
|
295
|
+
command: 'plan-context',
|
|
296
|
+
description: 'Produce a deterministic, token-budgeted context pack (`sharkcraft.context-pack/v1`) for an AI coding agent.',
|
|
260
297
|
category: 'core',
|
|
261
298
|
safetyLevel: SafetyLevel.ReadOnly,
|
|
262
299
|
mcpAvailable: true,
|
|
263
300
|
surface: CommandSurface.Common,
|
|
301
|
+
taskRole: CommandTaskRole.Context,
|
|
302
|
+
}),
|
|
303
|
+
entry({
|
|
304
|
+
command: 'arch',
|
|
305
|
+
description: 'Architecture-guard checks (public-API misuse, barrel risks, cycle severity, project contracts).',
|
|
306
|
+
category: 'core',
|
|
307
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
308
|
+
mcpAvailable: true,
|
|
309
|
+
surface: CommandSurface.Common,
|
|
310
|
+
taskRole: CommandTaskRole.Validate,
|
|
311
|
+
}),
|
|
312
|
+
entry({
|
|
313
|
+
command: 'framework',
|
|
314
|
+
description: 'Framework-aware extractors: NestJS controllers/modules/providers/routes, React components/hook usages. Sub-verbs: index, status, list, routes.',
|
|
315
|
+
category: 'core',
|
|
316
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
317
|
+
mcpAvailable: true,
|
|
318
|
+
surface: CommandSurface.Common,
|
|
264
319
|
taskRole: CommandTaskRole.Inspect,
|
|
265
320
|
}),
|
|
321
|
+
entry({
|
|
322
|
+
command: 'api-diff',
|
|
323
|
+
description: 'Compare the current public API surface to a baseline. Reports added / removed / kind-changed / moved symbols with breaking-change severity.',
|
|
324
|
+
category: 'core',
|
|
325
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
326
|
+
mcpAvailable: true,
|
|
327
|
+
surface: CommandSurface.Common,
|
|
328
|
+
taskRole: CommandTaskRole.Validate,
|
|
329
|
+
}),
|
|
330
|
+
entry({
|
|
331
|
+
command: 'gate',
|
|
332
|
+
description: 'Aggregator quality-gate: graph freshness + architecture + impact-since-ref → one pass/fail. The pre-merge gate for AI-agent-authored changes.',
|
|
333
|
+
category: 'core',
|
|
334
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
335
|
+
mcpAvailable: true,
|
|
336
|
+
surface: CommandSurface.Common,
|
|
337
|
+
taskRole: CommandTaskRole.Validate,
|
|
338
|
+
}),
|
|
339
|
+
entry({
|
|
340
|
+
command: 'migrate',
|
|
341
|
+
description: 'Run a multi-step migration: structural rewrites + shell + checks orchestrated as one replayable plan.',
|
|
342
|
+
category: 'core',
|
|
343
|
+
safetyLevel: SafetyLevel.WritesSource,
|
|
344
|
+
mcpAvailable: false,
|
|
345
|
+
surface: CommandSurface.Common,
|
|
346
|
+
taskRole: CommandTaskRole.Generate,
|
|
347
|
+
}),
|
|
348
|
+
entry({
|
|
349
|
+
command: 'code-intel',
|
|
350
|
+
description: 'One-shot view of code-intelligence doctor checks (graph, rule-graph, api-surface, quality-gate, migrations, architecture, impact, framework, structural-search, context-planner). Read-only.',
|
|
351
|
+
category: 'core',
|
|
352
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
353
|
+
mcpAvailable: true,
|
|
354
|
+
surface: CommandSurface.Common,
|
|
355
|
+
taskRole: CommandTaskRole.Diagnose,
|
|
356
|
+
}),
|
|
266
357
|
entry({
|
|
267
358
|
command: 'check',
|
|
268
359
|
description: 'Run validation checks across registries / packs / boundaries.',
|
|
@@ -291,6 +382,15 @@ export const COMMAND_CATALOG = Object.freeze([
|
|
|
291
382
|
surface: CommandSurface.Common,
|
|
292
383
|
taskRole: CommandTaskRole.Validate,
|
|
293
384
|
}),
|
|
385
|
+
entry({
|
|
386
|
+
command: 'diff-check',
|
|
387
|
+
description: 'Self-check current git diff against boundary + import-hygiene rules. Single-call composite for agents to validate edits before declaring done. Read-only.',
|
|
388
|
+
category: 'core',
|
|
389
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
390
|
+
mcpAvailable: true,
|
|
391
|
+
surface: CommandSurface.Common,
|
|
392
|
+
taskRole: CommandTaskRole.Validate,
|
|
393
|
+
}),
|
|
294
394
|
entry({
|
|
295
395
|
command: 'review',
|
|
296
396
|
description: 'PR-review packet — changed files, affected rules, missing tests heuristic.',
|
|
@@ -338,6 +438,18 @@ export const COMMAND_CATALOG = Object.freeze([
|
|
|
338
438
|
surface: CommandSurface.Common,
|
|
339
439
|
taskRole: CommandTaskRole.Apply,
|
|
340
440
|
}),
|
|
441
|
+
entry({
|
|
442
|
+
command: 'delegate',
|
|
443
|
+
description: 'Hand a mechanical edit to a local-LLM worker; the engine verifies the result and auto-reverts on failure (run|brief). Writes source only via --apply through the signed-plan + verify gate.',
|
|
444
|
+
category: 'core',
|
|
445
|
+
safetyLevel: SafetyLevel.WritesSource,
|
|
446
|
+
writesFiles: true,
|
|
447
|
+
writesSource: true,
|
|
448
|
+
requiresReview: true,
|
|
449
|
+
surface: CommandSurface.Advanced,
|
|
450
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
451
|
+
taskRole: CommandTaskRole.Apply,
|
|
452
|
+
}),
|
|
341
453
|
// `shrk spec` intent artifact over plan/review/apply.
|
|
342
454
|
entry({
|
|
343
455
|
command: 'spec',
|
|
@@ -634,6 +746,11 @@ export const COMMAND_CATALOG = Object.freeze([
|
|
|
634
746
|
category: 'task-context',
|
|
635
747
|
safetyLevel: SafetyLevel.ReadOnly,
|
|
636
748
|
mcpAvailable: true,
|
|
749
|
+
// Overlaps with `shrk task` (machine packet) and `shrk recommend`
|
|
750
|
+
// (human routing). Pointing at `task` as canonical so users who
|
|
751
|
+
// hit this via tab-complete see the canonical machine-pipe form.
|
|
752
|
+
overlapsWith: ['task', 'recommend'],
|
|
753
|
+
preferredCommand: 'shrk task "<task>"',
|
|
637
754
|
}),
|
|
638
755
|
entry({
|
|
639
756
|
command: 'validate-change',
|
|
@@ -943,6 +1060,13 @@ export const COMMAND_CATALOG = Object.freeze([
|
|
|
943
1060
|
safetyLevel: SafetyLevel.ReadOnly,
|
|
944
1061
|
surface: CommandSurface.Common,
|
|
945
1062
|
}),
|
|
1063
|
+
entry({
|
|
1064
|
+
command: 'completion',
|
|
1065
|
+
description: 'Print a sourcable shell-completion script for the `shrk` CLI (bash | zsh | fish). Pipe into your shell rc.',
|
|
1066
|
+
category: 'meta',
|
|
1067
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1068
|
+
surface: CommandSurface.Common,
|
|
1069
|
+
}),
|
|
946
1070
|
entry({
|
|
947
1071
|
command: 'explain',
|
|
948
1072
|
description: 'Universal explainer: knowledge entry, rule, template, command id, or stderr blob.',
|
|
@@ -1007,7 +1131,7 @@ export const COMMAND_CATALOG = Object.freeze([
|
|
|
1007
1131
|
// `commands doctor` is honest.
|
|
1008
1132
|
entry({
|
|
1009
1133
|
command: 'profiles',
|
|
1010
|
-
description: 'List / inspect pack-contributed profiles (
|
|
1134
|
+
description: 'List / inspect pack-contributed profiles (migration, conventions, …). Subcommands: list, get, doctor, search.',
|
|
1011
1135
|
category: 'core',
|
|
1012
1136
|
safetyLevel: SafetyLevel.ReadOnly,
|
|
1013
1137
|
mcpAvailable: true,
|
|
@@ -1080,6 +1204,104 @@ export const COMMAND_CATALOG = Object.freeze([
|
|
|
1080
1204
|
category: 'core',
|
|
1081
1205
|
safetyLevel: SafetyLevel.ReadOnly,
|
|
1082
1206
|
}),
|
|
1207
|
+
entry({
|
|
1208
|
+
command: 'smart-context',
|
|
1209
|
+
description: 'Build deterministic context and ask an AI provider to synthesise an enriched brief (default), structured plan (--plan), or two-stage development plan (--ai-plan). Opt-in; defaults to Gemini. CLAUDE.md is auto-included in the seed.',
|
|
1210
|
+
category: 'core',
|
|
1211
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1212
|
+
taskRole: CommandTaskRole.Context,
|
|
1213
|
+
}),
|
|
1214
|
+
entry({
|
|
1215
|
+
command: 'smart-context plan-ahead',
|
|
1216
|
+
description: 'Batch-generate AI-backed plans for a queue of upcoming tasks and save each under .sharkcraft/smart-context/.',
|
|
1217
|
+
category: 'core',
|
|
1218
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1219
|
+
taskRole: CommandTaskRole.Context,
|
|
1220
|
+
}),
|
|
1221
|
+
entry({
|
|
1222
|
+
command: 'smart-context list',
|
|
1223
|
+
description: 'List saved smart-context entries under .sharkcraft/smart-context/.',
|
|
1224
|
+
category: 'core',
|
|
1225
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1226
|
+
taskRole: CommandTaskRole.Inspect,
|
|
1227
|
+
}),
|
|
1228
|
+
entry({
|
|
1229
|
+
command: 'smart-context show',
|
|
1230
|
+
description: 'Print a saved smart-context entry by slug.',
|
|
1231
|
+
category: 'core',
|
|
1232
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1233
|
+
taskRole: CommandTaskRole.Inspect,
|
|
1234
|
+
}),
|
|
1235
|
+
entry({
|
|
1236
|
+
command: 'smart-context embeddings-build',
|
|
1237
|
+
description: 'Build or incrementally refresh the semantic file index used by smart-context. Downloads the embedding model on first run.',
|
|
1238
|
+
category: 'core',
|
|
1239
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
1240
|
+
taskRole: CommandTaskRole.Context,
|
|
1241
|
+
}),
|
|
1242
|
+
entry({
|
|
1243
|
+
command: 'smart-context embeddings-status',
|
|
1244
|
+
description: 'Report semantic index freshness without loading the embedding model.',
|
|
1245
|
+
category: 'core',
|
|
1246
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1247
|
+
taskRole: CommandTaskRole.Inspect,
|
|
1248
|
+
}),
|
|
1249
|
+
entry({
|
|
1250
|
+
command: 'spike',
|
|
1251
|
+
description: 'Scaffold starter files for a saved smart-context plan\'s recommended MVP. Reads .sharkcraft/smart-context/<slug>.plan.json.',
|
|
1252
|
+
category: 'core',
|
|
1253
|
+
safetyLevel: SafetyLevel.WritesSource,
|
|
1254
|
+
taskRole: CommandTaskRole.Generate,
|
|
1255
|
+
}),
|
|
1256
|
+
entry({
|
|
1257
|
+
command: 'deps-audit',
|
|
1258
|
+
description: 'Compare declared package dependencies (package.json) with actually imported specifiers (graph). Reports missing + unused deps. Read-only.',
|
|
1259
|
+
category: 'core',
|
|
1260
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1261
|
+
taskRole: CommandTaskRole.Inspect,
|
|
1262
|
+
}),
|
|
1263
|
+
entry({
|
|
1264
|
+
command: 'scaffold-validate',
|
|
1265
|
+
description: 'Validate that the files in a saved generation plan exist on disk and look intact (size envelope + type match). Read-only.',
|
|
1266
|
+
category: 'core',
|
|
1267
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1268
|
+
taskRole: CommandTaskRole.Validate,
|
|
1269
|
+
}),
|
|
1270
|
+
entry({
|
|
1271
|
+
command: 'move-plan',
|
|
1272
|
+
description: 'Plan a file move: graph-traced importer rewrites, export touch-ups, cross-package warnings, rollback steps. Read-only.',
|
|
1273
|
+
category: 'core',
|
|
1274
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1275
|
+
taskRole: CommandTaskRole.Generate,
|
|
1276
|
+
}),
|
|
1277
|
+
entry({
|
|
1278
|
+
command: 'watch',
|
|
1279
|
+
description: 'Emit a focused-context packet on stdout JSONL each time the workspace changes. Designed to feed a parallel Claude agent.',
|
|
1280
|
+
category: 'core',
|
|
1281
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
1282
|
+
taskRole: CommandTaskRole.Context,
|
|
1283
|
+
}),
|
|
1284
|
+
entry({
|
|
1285
|
+
command: 'watch list',
|
|
1286
|
+
description: 'List active shrk-watch daemons (one per task slug).',
|
|
1287
|
+
category: 'core',
|
|
1288
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1289
|
+
taskRole: CommandTaskRole.Inspect,
|
|
1290
|
+
}),
|
|
1291
|
+
entry({
|
|
1292
|
+
command: 'watch stop',
|
|
1293
|
+
description: 'Stop a running shrk-watch daemon by slug.',
|
|
1294
|
+
category: 'core',
|
|
1295
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
1296
|
+
taskRole: CommandTaskRole.Config,
|
|
1297
|
+
}),
|
|
1298
|
+
entry({
|
|
1299
|
+
command: 'watch prune',
|
|
1300
|
+
description: 'Remove stale shrk-watch manifests whose owning processes are no longer alive.',
|
|
1301
|
+
category: 'core',
|
|
1302
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
1303
|
+
taskRole: CommandTaskRole.Config,
|
|
1304
|
+
}),
|
|
1083
1305
|
entry({
|
|
1084
1306
|
command: 'safety audit',
|
|
1085
1307
|
description: 'Audit the SharkCraft safety model (commands, MCP, packs, plan signing).',
|
|
@@ -1285,6 +1507,48 @@ export const COMMAND_CATALOG = Object.freeze([
|
|
|
1285
1507
|
intendedAudience: [CommandAudience.Human, CommandAudience.Ci],
|
|
1286
1508
|
taskRole: CommandTaskRole.Inspect,
|
|
1287
1509
|
}),
|
|
1510
|
+
entry({
|
|
1511
|
+
command: 'compress',
|
|
1512
|
+
description: 'Deterministically compress a blob (file or stdin) to cut tokens — JSON→table, logs/search/diffs→signal. Reversible via `shrk expand`.',
|
|
1513
|
+
category: 'core',
|
|
1514
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
1515
|
+
writesFiles: true,
|
|
1516
|
+
mcpAvailable: true,
|
|
1517
|
+
surface: CommandSurface.Common,
|
|
1518
|
+
intendedAudience: [CommandAudience.Agent, CommandAudience.Human],
|
|
1519
|
+
taskRole: CommandTaskRole.Context,
|
|
1520
|
+
}),
|
|
1521
|
+
entry({
|
|
1522
|
+
command: 'expand',
|
|
1523
|
+
description: 'Retrieve the full original a `shrk compress` run cached, by its `<<ccr:KEY>>` key.',
|
|
1524
|
+
category: 'core',
|
|
1525
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1526
|
+
mcpAvailable: true,
|
|
1527
|
+
surface: CommandSurface.Common,
|
|
1528
|
+
intendedAudience: [CommandAudience.Agent, CommandAudience.Human],
|
|
1529
|
+
taskRole: CommandTaskRole.Context,
|
|
1530
|
+
}),
|
|
1531
|
+
entry({
|
|
1532
|
+
command: 'align',
|
|
1533
|
+
description: 'Replace volatile tokens (UUIDs/JWTs/timestamps/hashes) with stable placeholders for KV-cache prefix stability; reversible via `shrk unalign`.',
|
|
1534
|
+
category: 'core',
|
|
1535
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
1536
|
+
writesFiles: true,
|
|
1537
|
+
mcpAvailable: true,
|
|
1538
|
+
surface: CommandSurface.Advanced,
|
|
1539
|
+
intendedAudience: [CommandAudience.Agent, CommandAudience.Human],
|
|
1540
|
+
taskRole: CommandTaskRole.Context,
|
|
1541
|
+
}),
|
|
1542
|
+
entry({
|
|
1543
|
+
command: 'unalign',
|
|
1544
|
+
description: 'Restore the original volatile tokens in aligned text using its `--map`.',
|
|
1545
|
+
category: 'core',
|
|
1546
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1547
|
+
mcpAvailable: true,
|
|
1548
|
+
surface: CommandSurface.Advanced,
|
|
1549
|
+
intendedAudience: [CommandAudience.Agent, CommandAudience.Human],
|
|
1550
|
+
taskRole: CommandTaskRole.Context,
|
|
1551
|
+
}),
|
|
1288
1552
|
// ── Backend feature expansion ─────────────────────────────────────────
|
|
1289
1553
|
entry({
|
|
1290
1554
|
command: 'bundle create',
|
|
@@ -2316,7 +2580,7 @@ export const COMMAND_CATALOG = Object.freeze([
|
|
|
2316
2580
|
}),
|
|
2317
2581
|
entry({
|
|
2318
2582
|
command: 'release smoke --matrix',
|
|
2319
|
-
description: 'Run smoke scenarios across multiple repo targets (sharkcraft/dogfood/synthetic/
|
|
2583
|
+
description: 'Run smoke scenarios across multiple repo targets (sharkcraft/dogfood/synthetic/consumer).',
|
|
2320
2584
|
category: 'release',
|
|
2321
2585
|
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2322
2586
|
writesFiles: true,
|
|
@@ -2708,34 +2972,6 @@ export const COMMAND_CATALOG = Object.freeze([
|
|
|
2708
2972
|
safetyLevel: SafetyLevel.ReadOnly,
|
|
2709
2973
|
mcpAvailable: true,
|
|
2710
2974
|
}),
|
|
2711
|
-
entry({
|
|
2712
|
-
command: 'plugin rename',
|
|
2713
|
-
description: 'Plan-only plugin rename (profile-driven) — emits replace ops + manual folder rename checklist.',
|
|
2714
|
-
category: 'lifecycle',
|
|
2715
|
-
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2716
|
-
mcpAvailable: true,
|
|
2717
|
-
}),
|
|
2718
|
-
entry({
|
|
2719
|
-
command: 'plugin remove',
|
|
2720
|
-
description: 'Plan-only destructive plugin remove (profile-driven) — destructive; requires human approval.',
|
|
2721
|
-
category: 'lifecycle',
|
|
2722
|
-
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2723
|
-
mcpAvailable: true,
|
|
2724
|
-
}),
|
|
2725
|
-
entry({
|
|
2726
|
-
command: 'plugin lifecycle list',
|
|
2727
|
-
description: 'List plugins detected under the active profile roots and key-table. Read-only.',
|
|
2728
|
-
category: 'lifecycle',
|
|
2729
|
-
safetyLevel: SafetyLevel.ReadOnly,
|
|
2730
|
-
mcpAvailable: false,
|
|
2731
|
-
}),
|
|
2732
|
-
entry({
|
|
2733
|
-
command: 'plugin lifecycle inspect',
|
|
2734
|
-
description: 'Inspect references to a plugin across the profile layers + key-table. Read-only.',
|
|
2735
|
-
category: 'lifecycle',
|
|
2736
|
-
safetyLevel: SafetyLevel.ReadOnly,
|
|
2737
|
-
mcpAvailable: false,
|
|
2738
|
-
}),
|
|
2739
2975
|
entry({
|
|
2740
2976
|
command: 'helper list',
|
|
2741
2977
|
description: 'List available helper plan generators. Read-only.',
|
|
@@ -3137,12 +3373,102 @@ export function commandLifecycle(e) {
|
|
|
3137
3373
|
return CommandLifecycle.Deprecated;
|
|
3138
3374
|
return CommandLifecycle.Active;
|
|
3139
3375
|
}
|
|
3376
|
+
/**
|
|
3377
|
+
* The "Primary verbs" allowlist — top-level commands that pay rent in
|
|
3378
|
+
* the default help surface. Everything else stays callable but is
|
|
3379
|
+
* hidden from `--full-help` and from MCP tool advertising; users find
|
|
3380
|
+
* them via `shrk surface list`, `shrk help <cmd>`, or `--full-help`.
|
|
3381
|
+
*
|
|
3382
|
+
* Picked to cover the canonical agent-flow journeys:
|
|
3383
|
+
* - bootstrap a repo, verify it
|
|
3384
|
+
* - get a brief / context / task packet for an agent
|
|
3385
|
+
* - generate safely (plan → apply → check)
|
|
3386
|
+
* - browse what shrk knows (rules / paths / templates / presets)
|
|
3387
|
+
* - inline the rules into the agent's prompt (export, mcp, dashboard)
|
|
3388
|
+
* - daily operations (review, impact, search, explain, why, surface)
|
|
3389
|
+
*
|
|
3390
|
+
* Anything not in this set falls back to the legacy
|
|
3391
|
+
* surface-tier-based visibility, with deprecated / retired / aliased
|
|
3392
|
+
* commands hidden regardless. Adding a verb here is the explicit
|
|
3393
|
+
* "this is rent-paying" decision.
|
|
3394
|
+
*/
|
|
3395
|
+
const PRIMARY_VERBS_ALLOWLIST = new Set([
|
|
3396
|
+
// Bootstrap
|
|
3397
|
+
'init',
|
|
3398
|
+
'doctor',
|
|
3399
|
+
'inspect',
|
|
3400
|
+
'onboard',
|
|
3401
|
+
'version',
|
|
3402
|
+
'help',
|
|
3403
|
+
'preflight',
|
|
3404
|
+
'self-config',
|
|
3405
|
+
// Per-task
|
|
3406
|
+
'brief',
|
|
3407
|
+
'recommend',
|
|
3408
|
+
'context',
|
|
3409
|
+
'task',
|
|
3410
|
+
'coverage',
|
|
3411
|
+
'explain',
|
|
3412
|
+
'why',
|
|
3413
|
+
'search',
|
|
3414
|
+
'impact',
|
|
3415
|
+
'graph',
|
|
3416
|
+
'code-intel',
|
|
3417
|
+
'compress',
|
|
3418
|
+
'expand',
|
|
3419
|
+
// Generate code safely
|
|
3420
|
+
'gen',
|
|
3421
|
+
'apply',
|
|
3422
|
+
'check',
|
|
3423
|
+
'quality',
|
|
3424
|
+
'plan',
|
|
3425
|
+
'fix',
|
|
3426
|
+
// Browse / inline
|
|
3427
|
+
'knowledge',
|
|
3428
|
+
'rules',
|
|
3429
|
+
'templates',
|
|
3430
|
+
'paths',
|
|
3431
|
+
'import',
|
|
3432
|
+
'export',
|
|
3433
|
+
// Architecture & quality gates
|
|
3434
|
+
'drift',
|
|
3435
|
+
'safety',
|
|
3436
|
+
// Run for an agent
|
|
3437
|
+
'mcp',
|
|
3438
|
+
'dashboard',
|
|
3439
|
+
// Ops
|
|
3440
|
+
'surface',
|
|
3441
|
+
'presets',
|
|
3442
|
+
'review',
|
|
3443
|
+
'packs',
|
|
3444
|
+
'ci',
|
|
3445
|
+
'commands',
|
|
3446
|
+
]);
|
|
3447
|
+
function topLevelVerb(command) {
|
|
3448
|
+
// Strip leading `--cwd <dir>` / `--<flag>` tokens and angle-bracket
|
|
3449
|
+
// placeholders; the canonical first verb is whatever leads.
|
|
3450
|
+
const tokens = command.split(/\s+/);
|
|
3451
|
+
for (const t of tokens) {
|
|
3452
|
+
if (!t)
|
|
3453
|
+
continue;
|
|
3454
|
+
if (t.startsWith('--') || t.startsWith('-'))
|
|
3455
|
+
continue;
|
|
3456
|
+
if (t.startsWith('<') || t.startsWith('"'))
|
|
3457
|
+
continue;
|
|
3458
|
+
return t;
|
|
3459
|
+
}
|
|
3460
|
+
return command;
|
|
3461
|
+
}
|
|
3140
3462
|
/**
|
|
3141
3463
|
* Default-help visibility rule. Honors an explicit
|
|
3142
3464
|
* {@link ICommandCatalogEntry.showInDefaultHelp} when set; otherwise
|
|
3143
|
-
*
|
|
3144
|
-
*
|
|
3145
|
-
*
|
|
3465
|
+
* the {@link PRIMARY_VERBS_ALLOWLIST} gates membership in the visible
|
|
3466
|
+
* surface (primary + common entries whose top-level verb pays rent
|
|
3467
|
+
* make the cut; everything else is hidden from `--full-help`).
|
|
3468
|
+
*
|
|
3469
|
+
* Deprecated, retired, aliased commands and anything in the
|
|
3470
|
+
* {@link R46_OVERLAY} are always hidden regardless of allowlist
|
|
3471
|
+
* membership.
|
|
3146
3472
|
*/
|
|
3147
3473
|
export function defaultShowInHelp(e) {
|
|
3148
3474
|
if (e.showInDefaultHelp !== undefined)
|
|
@@ -3155,6 +3481,12 @@ export function defaultShowInHelp(e) {
|
|
|
3155
3481
|
return false;
|
|
3156
3482
|
if (lc === CommandLifecycle.Alias)
|
|
3157
3483
|
return false;
|
|
3484
|
+
// Allowlist gate — the top-level verb must be one of the ~30
|
|
3485
|
+
// rent-paying verbs. Subcommands of an allowlisted verb inherit
|
|
3486
|
+
// visibility (so `check boundaries` shows under `check`).
|
|
3487
|
+
const verb = topLevelVerb(e.command);
|
|
3488
|
+
if (!PRIMARY_VERBS_ALLOWLIST.has(verb))
|
|
3489
|
+
return false;
|
|
3158
3490
|
const surface = commandSurface(e);
|
|
3159
3491
|
return surface === CommandSurface.Primary || surface === CommandSurface.Common;
|
|
3160
3492
|
}
|
|
@@ -3240,3 +3572,24 @@ export function renderCommandSafetyMatrixMarkdown(rows) {
|
|
|
3240
3572
|
}
|
|
3241
3573
|
return lines.join('\n') + '\n';
|
|
3242
3574
|
}
|
|
3575
|
+
/**
|
|
3576
|
+
* The set of TOP-LEVEL command verbs in the catalogue (the first token of each
|
|
3577
|
+
* entry's `command`). The single source of truth for "is `shrk <verb>` a real
|
|
3578
|
+
* command" checks — e.g. the contradictions doc-vs-CLI scan, which lives in the
|
|
3579
|
+
* inspector layer and so receives this set by injection rather than importing
|
|
3580
|
+
* the CLI.
|
|
3581
|
+
*/
|
|
3582
|
+
export function cliCommandNameSet() {
|
|
3583
|
+
const out = new Set();
|
|
3584
|
+
for (const entry of COMMAND_CATALOG) {
|
|
3585
|
+
const top = entry.command.split(/\s+/)[0];
|
|
3586
|
+
if (top)
|
|
3587
|
+
out.add(top);
|
|
3588
|
+
for (const alias of entry.aliases) {
|
|
3589
|
+
const aliasTop = alias.split(/\s+/)[0];
|
|
3590
|
+
if (aliasTop)
|
|
3591
|
+
out.add(aliasTop);
|
|
3592
|
+
}
|
|
3593
|
+
}
|
|
3594
|
+
return out;
|
|
3595
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.command.d.ts","sourceRoot":"","sources":["../../src/commands/commands.command.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"commands.command.d.ts","sourceRoot":"","sources":["../../src/commands/commands.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { flagBool, flagString
|
|
1
|
+
import { flagBool, flagString } from "../command-registry.js";
|
|
2
2
|
import { asJson, header } from "../output/format-output.js";
|
|
3
|
-
import { COMMAND_CATALOG, CommandLifecycle,
|
|
4
|
-
import { buildCommandTaxonomy, buildPrimaryCommandsReport, renderCommandTaxonomyMarkdown, renderCommandTaxonomyText, renderPrimaryCommandsText
|
|
3
|
+
import { buildCommandSafetyMatrix, COMMAND_CATALOG, CommandLifecycle, commandLifecycle, CommandSurface, commandSurface, commandTaskRole, defaultShowInHelp, R46_OVERLAY, renderCommandSafetyMatrixMarkdown, SafetyLevel } from "./command-catalog.js";
|
|
4
|
+
import { buildCommandTaxonomy, buildPrimaryCommandsReport, renderCommandTaxonomyMarkdown, renderCommandTaxonomyText, renderPrimaryCommandsText } from '@shrkcrft/inspector';
|
|
5
5
|
export function makeCommandsCommand(registry) {
|
|
6
6
|
return {
|
|
7
7
|
name: 'commands',
|
|
@@ -589,7 +589,7 @@ export function buildCommandsUxReport() {
|
|
|
589
589
|
// issue is clearly structural (none of these currently rise to error).
|
|
590
590
|
for (const e of COMMAND_CATALOG) {
|
|
591
591
|
const surface = commandSurface(e);
|
|
592
|
-
// (a) primary commands should declare an audience (so
|
|
592
|
+
// (a) primary commands should declare an audience (so consumers can see
|
|
593
593
|
// who the command is for at a glance).
|
|
594
594
|
if (surface === CommandSurface.Primary && (!e.intendedAudience || e.intendedAudience.length === 0)) {
|
|
595
595
|
issues.push({
|