@winspan/claude-forge 8.33.3 → 8.34.0
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/agents/definition.d.ts +3 -0
- package/dist/agents/definition.d.ts.map +1 -1
- package/dist/agents/definition.js +3 -0
- package/dist/agents/definition.js.map +1 -1
- package/dist/agents/official-agents.d.ts.map +1 -1
- package/dist/agents/official-agents.js +6 -3
- package/dist/agents/official-agents.js.map +1 -1
- package/dist/agents/registry.d.ts +17 -1
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +106 -7
- package/dist/agents/registry.js.map +1 -1
- package/dist/cli/commands/executions.d.ts +3 -0
- package/dist/cli/commands/executions.d.ts.map +1 -0
- package/dist/cli/commands/executions.js +109 -0
- package/dist/cli/commands/executions.js.map +1 -0
- package/dist/cli/commands/skills.d.ts.map +1 -1
- package/dist/cli/commands/skills.js +83 -20
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/storage/rows.d.ts +14 -0
- package/dist/core/storage/rows.d.ts.map +1 -1
- package/dist/core/storage/schema.sql +26 -0
- package/dist/core/storage/sqlite.d.ts +11 -2
- package/dist/core/storage/sqlite.d.ts.map +1 -1
- package/dist/core/storage/sqlite.js +32 -0
- package/dist/core/storage/sqlite.js.map +1 -1
- package/dist/daemon/handlers/stop.d.ts +5 -1
- package/dist/daemon/handlers/stop.d.ts.map +1 -1
- package/dist/daemon/handlers/stop.js +27 -1
- package/dist/daemon/handlers/stop.js.map +1 -1
- package/dist/daemon/handlers/user-prompt.d.ts +3 -1
- package/dist/daemon/handlers/user-prompt.d.ts.map +1 -1
- package/dist/daemon/handlers/user-prompt.js +37 -4
- package/dist/daemon/handlers/user-prompt.js.map +1 -1
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +10 -4
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/routing-observer.d.ts.map +1 -1
- package/dist/daemon/routing-observer.js +25 -2
- package/dist/daemon/routing-observer.js.map +1 -1
- package/dist/engine/conventions/routing.yaml +11 -0
- package/dist/intelligence/execution-doc-builder.d.ts +61 -0
- package/dist/intelligence/execution-doc-builder.d.ts.map +1 -0
- package/dist/intelligence/execution-doc-builder.js +601 -0
- package/dist/intelligence/execution-doc-builder.js.map +1 -0
- package/dist/skills/invocation-guard.d.ts +45 -0
- package/dist/skills/invocation-guard.d.ts.map +1 -0
- package/dist/skills/invocation-guard.js +82 -0
- package/dist/skills/invocation-guard.js.map +1 -0
- package/dist/skills/registry.d.ts +22 -0
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +30 -2
- package/dist/skills/registry.js.map +1 -1
- package/dist/skills/tools/skill-invoke.d.ts +36 -0
- package/dist/skills/tools/skill-invoke.d.ts.map +1 -0
- package/dist/skills/tools/skill-invoke.js +82 -0
- package/dist/skills/tools/skill-invoke.js.map +1 -0
- package/dist/skills/tools/skill-list.d.ts +26 -0
- package/dist/skills/tools/skill-list.d.ts.map +1 -0
- package/dist/skills/tools/skill-list.js +35 -0
- package/dist/skills/tools/skill-list.js.map +1 -0
- package/dist/web/routes/ai.d.ts.map +1 -1
- package/dist/web/routes/ai.js +2 -7
- package/dist/web/routes/ai.js.map +1 -1
- package/dist/web/routes/execution-trace.d.ts +8 -0
- package/dist/web/routes/execution-trace.d.ts.map +1 -1
- package/dist/web/routes/execution-trace.js +46 -1
- package/dist/web/routes/execution-trace.js.map +1 -1
- package/dist/web/routes/routing.d.ts.map +1 -1
- package/dist/web/routes/routing.js +11 -1
- package/dist/web/routes/routing.js.map +1 -1
- package/dist/web/routes/skill-stats.d.ts +12 -0
- package/dist/web/routes/skill-stats.d.ts.map +1 -0
- package/dist/web/routes/skill-stats.js +72 -0
- package/dist/web/routes/skill-stats.js.map +1 -0
- package/dist/web/static/assets/{AIConfig-Dw13rVtT.js → AIConfig-DiUFET_Q.js} +2 -2
- package/dist/web/static/assets/{AIConfig-Dw13rVtT.js.map → AIConfig-DiUFET_Q.js.map} +1 -1
- package/dist/web/static/assets/{Agents-D1p3JhQs.js → Agents-bNNGbQnL.js} +2 -2
- package/dist/web/static/assets/{Agents-D1p3JhQs.js.map → Agents-bNNGbQnL.js.map} +1 -1
- package/dist/web/static/assets/{Dashboard-qUCxXFSI.js → Dashboard-Ciyyw6ph.js} +2 -2
- package/dist/web/static/assets/{Dashboard-qUCxXFSI.js.map → Dashboard-Ciyyw6ph.js.map} +1 -1
- package/dist/web/static/assets/{Drawer-DeKukfwJ.js → Drawer-DOUcx6m1.js} +2 -2
- package/dist/web/static/assets/{Drawer-DeKukfwJ.js.map → Drawer-DOUcx6m1.js.map} +1 -1
- package/dist/web/static/assets/{Events-DqzBTrly.js → Events-DQHP6Uaq.js} +2 -2
- package/dist/web/static/assets/{Events-DqzBTrly.js.map → Events-DQHP6Uaq.js.map} +1 -1
- package/dist/web/static/assets/ExecutionTrace-Co8ARdg-.js +3 -0
- package/dist/web/static/assets/ExecutionTrace-Co8ARdg-.js.map +1 -0
- package/dist/web/static/assets/{Methodologies-Br5KOWuF.js → Methodologies-CXNrDXwG.js} +2 -2
- package/dist/web/static/assets/{Methodologies-Br5KOWuF.js.map → Methodologies-CXNrDXwG.js.map} +1 -1
- package/dist/web/static/assets/{MethodologyDetail-Do1taSKM.js → MethodologyDetail-rV3W1utf.js} +2 -2
- package/dist/web/static/assets/{MethodologyDetail-Do1taSKM.js.map → MethodologyDetail-rV3W1utf.js.map} +1 -1
- package/dist/web/static/assets/{Routing-CFmM7JuB.js → Routing-BW3eGD-8.js} +2 -2
- package/dist/web/static/assets/{Routing-CFmM7JuB.js.map → Routing-BW3eGD-8.js.map} +1 -1
- package/dist/web/static/assets/{SessionDetail-DzTue2xK.js → SessionDetail-Cbd7Jwox.js} +2 -2
- package/dist/web/static/assets/{SessionDetail-DzTue2xK.js.map → SessionDetail-Cbd7Jwox.js.map} +1 -1
- package/dist/web/static/assets/{Sessions-DOd65EkN.js → Sessions-ZQSCgXyy.js} +2 -2
- package/dist/web/static/assets/{Sessions-DOd65EkN.js.map → Sessions-ZQSCgXyy.js.map} +1 -1
- package/dist/web/static/assets/{Skills-zacj_uSW.js → Skills-C5-5zOSH.js} +2 -2
- package/dist/web/static/assets/{Skills-zacj_uSW.js.map → Skills-C5-5zOSH.js.map} +1 -1
- package/dist/web/static/assets/{export-CEzDNM66.js → export-CbQTOt71.js} +2 -2
- package/dist/web/static/assets/{export-CEzDNM66.js.map → export-CbQTOt71.js.map} +1 -1
- package/dist/web/static/assets/{index-BVpUTHdp.js → index-DJK5beK6.js} +3 -3
- package/dist/web/static/assets/{index-BVpUTHdp.js.map → index-DJK5beK6.js.map} +1 -1
- package/dist/web/static/assets/index-phpuytMI.css +1 -0
- package/dist/web/static/assets/{lucide-DjB4fWNj.js → lucide-BanPULT1.js} +35 -40
- package/dist/web/static/assets/lucide-BanPULT1.js.map +1 -0
- package/dist/web/static/index.html +3 -3
- package/package.json +1 -1
- package/dist/web/static/assets/ExecutionTrace-Z-zlH0KH.js +0 -2
- package/dist/web/static/assets/ExecutionTrace-Z-zlH0KH.js.map +0 -1
- package/dist/web/static/assets/index-Drpf7sLl.css +0 -1
- package/dist/web/static/assets/lucide-DjB4fWNj.js.map +0 -1
|
@@ -26,6 +26,8 @@ export interface AgentDefinition {
|
|
|
26
26
|
tools: string[];
|
|
27
27
|
/** Suggested model slug (sonnet/opus/haiku); optional */
|
|
28
28
|
model?: string;
|
|
29
|
+
/** Skill dependencies (skill IDs to inject as methodology) */
|
|
30
|
+
skills?: string[];
|
|
29
31
|
/** Full markdown body that lands in ~/.claude/agents/<name>.md */
|
|
30
32
|
content: string;
|
|
31
33
|
}
|
|
@@ -39,6 +41,7 @@ export interface AgentRecord {
|
|
|
39
41
|
version: string;
|
|
40
42
|
tools: string[];
|
|
41
43
|
model?: string;
|
|
44
|
+
skills?: string[];
|
|
42
45
|
content: string;
|
|
43
46
|
source: AgentSource;
|
|
44
47
|
/** Absolute path if loaded from disk, '<builtin>' for embedded */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/agents/definition.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,UAAU,GACV,YAAY,GACZ,SAAS,GACT,UAAU,GACV,eAAe,GACf,UAAU,GACV,eAAe,CAAC;AAEpB;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,QAAQ,EAAE,aAAa,CAAC;IACxB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/agents/definition.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,UAAU,GACV,YAAY,GACZ,SAAS,GACT,UAAU,GACV,eAAe,GACf,UAAU,GACV,eAAe,CAAC;AAEpB;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,QAAQ,EAAE,aAAa,CAAC;IACxB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAchE"}
|
|
@@ -18,6 +18,9 @@ export function renderAgentMarkdown(def) {
|
|
|
18
18
|
];
|
|
19
19
|
if (def.model)
|
|
20
20
|
fm.push(`model: ${def.model}`);
|
|
21
|
+
if (def.skills && def.skills.length > 0) {
|
|
22
|
+
fm.push(`skills: [${def.skills.join(', ')}]`);
|
|
23
|
+
}
|
|
21
24
|
fm.push('---', '');
|
|
22
25
|
return fm.join('\n') + def.content.trimStart();
|
|
23
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/agents/definition.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/agents/definition.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA0DH;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAoB;IACtD,MAAM,EAAE,GAAa;QACnB,KAAK;QACL,SAAS,GAAG,CAAC,IAAI,EAAE;QACnB,gBAAgB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;QACjD,YAAY,GAAG,CAAC,OAAO,EAAE;QACzB,UAAU,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;KACjC,CAAC;IACF,IAAI,GAAG,CAAC,KAAK;QAAE,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9C,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,EAAE,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;IACD,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnB,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AACjD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"official-agents.d.ts","sourceRoot":"","sources":["../../src/agents/official-agents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AA0cvD,eAAO,MAAM,eAAe,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"official-agents.d.ts","sourceRoot":"","sources":["../../src/agents/official-agents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AA0cvD,eAAO,MAAM,eAAe,EAAE,eAAe,EA4G5C,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAE3E"}
|
|
@@ -478,8 +478,9 @@ export const OFFICIAL_AGENTS = [
|
|
|
478
478
|
name: 'refactor-specialist',
|
|
479
479
|
description: '大规模重构与技术债消除',
|
|
480
480
|
category: 'specialist',
|
|
481
|
-
version: '0.
|
|
481
|
+
version: '0.3.0',
|
|
482
482
|
tools: ['Read', 'Write', 'Edit', 'Grep', 'Glob', 'Bash'],
|
|
483
|
+
skills: ['official-refactor', 'official-harness-engineering'],
|
|
483
484
|
content: REFACTOR_SPECIALIST_BODY,
|
|
484
485
|
},
|
|
485
486
|
{
|
|
@@ -494,16 +495,18 @@ export const OFFICIAL_AGENTS = [
|
|
|
494
495
|
name: 'tester',
|
|
495
496
|
description: '测试编写与覆盖率提升',
|
|
496
497
|
category: 'quality',
|
|
497
|
-
version: '0.
|
|
498
|
+
version: '0.3.0',
|
|
498
499
|
tools: ['Read', 'Write', 'Edit', 'Grep', 'Glob', 'Bash'],
|
|
500
|
+
skills: ['official-tdd'],
|
|
499
501
|
content: TESTER_BODY,
|
|
500
502
|
},
|
|
501
503
|
{
|
|
502
504
|
name: 'reviewer',
|
|
503
505
|
description: '代码评审和质量检查',
|
|
504
506
|
category: 'quality',
|
|
505
|
-
version: '0.
|
|
507
|
+
version: '0.4.0',
|
|
506
508
|
tools: ['Read', 'Grep', 'Glob'],
|
|
509
|
+
skills: ['official-pr-review'],
|
|
507
510
|
content: REVIEWER_BODY,
|
|
508
511
|
},
|
|
509
512
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"official-agents.js","sourceRoot":"","sources":["../../src/agents/official-agents.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"official-agents.js","sourceRoot":"","sources":["../../src/agents/official-agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,10 +10,12 @@
|
|
|
10
10
|
* Phase 1 ships builtin + user + project; preset layer plugs in at Phase 3.
|
|
11
11
|
*/
|
|
12
12
|
import type { AgentRecord } from './definition.js';
|
|
13
|
+
import type { SkillRegistry } from '../skills/registry.js';
|
|
13
14
|
export declare class AgentRegistry {
|
|
14
15
|
private readonly projectPath?;
|
|
15
16
|
private agents;
|
|
16
|
-
|
|
17
|
+
private skillRegistry;
|
|
18
|
+
constructor(projectPath?: string | undefined, skillRegistry?: SkillRegistry);
|
|
17
19
|
private scan;
|
|
18
20
|
private loadBuiltin;
|
|
19
21
|
private loadFromDir;
|
|
@@ -23,5 +25,19 @@ export declare class AgentRegistry {
|
|
|
23
25
|
getAll(): AgentRecord[];
|
|
24
26
|
/** Re-scan layers. */
|
|
25
27
|
reload(): void;
|
|
28
|
+
/**
|
|
29
|
+
* Inject skill content as methodology reference into agent content.
|
|
30
|
+
* If skills are declared but SkillRegistry is not available, log warning.
|
|
31
|
+
*/
|
|
32
|
+
private injectSkillContent;
|
|
33
|
+
/**
|
|
34
|
+
* Inject a dynamic skill manifest (id + description only) at the end of agent content.
|
|
35
|
+
* This tells the Agent which skills are available for on-demand invocation via
|
|
36
|
+
* the SkillInvoke tool, without injecting the full skill bodies (to save tokens).
|
|
37
|
+
*
|
|
38
|
+
* Skills already statically injected via injectSkillContent() are excluded from
|
|
39
|
+
* the manifest to avoid duplication.
|
|
40
|
+
*/
|
|
41
|
+
private injectDynamicSkillManifest;
|
|
26
42
|
}
|
|
27
43
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,OAAO,KAAK,EAAiB,WAAW,EAAe,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,OAAO,KAAK,EAAiB,WAAW,EAAe,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAI3D,qBAAa,aAAa;IAKtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAJ/B,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,aAAa,CAA8B;gBAGhC,WAAW,CAAC,EAAE,MAAM,YAAA,EACrC,aAAa,CAAC,EAAE,aAAa;IAM/B,OAAO,CAAC,IAAI;IASZ,OAAO,CAAC,WAAW;IAyBnB,OAAO,CAAC,WAAW;IAgEnB,mCAAmC;IACnC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI1C,gCAAgC;IAChC,MAAM,IAAI,WAAW,EAAE;IAIvB,sBAAsB;IACtB,MAAM,IAAI,IAAI;IAKd;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAuC1B;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;CA2CnC"}
|
package/dist/agents/registry.js
CHANGED
|
@@ -19,8 +19,10 @@ const USER_AGENTS_DIR = path.join(homedir(), '.claude', 'agents');
|
|
|
19
19
|
export class AgentRegistry {
|
|
20
20
|
projectPath;
|
|
21
21
|
agents = new Map();
|
|
22
|
-
|
|
22
|
+
skillRegistry = null;
|
|
23
|
+
constructor(projectPath, skillRegistry) {
|
|
23
24
|
this.projectPath = projectPath;
|
|
25
|
+
this.skillRegistry = skillRegistry ?? null;
|
|
24
26
|
this.scan();
|
|
25
27
|
}
|
|
26
28
|
scan() {
|
|
@@ -33,17 +35,26 @@ export class AgentRegistry {
|
|
|
33
35
|
}
|
|
34
36
|
loadBuiltin() {
|
|
35
37
|
for (const def of OFFICIAL_AGENTS) {
|
|
36
|
-
|
|
38
|
+
logger.debug(`[AgentRegistry] Loading agent ${def.name}, skills: ${JSON.stringify(def.skills)}`);
|
|
39
|
+
const contentWithStatic = this.injectSkillContent(def.content, def.skills);
|
|
40
|
+
const content = this.injectDynamicSkillManifest(contentWithStatic, def.skills ?? []);
|
|
41
|
+
const record = {
|
|
37
42
|
name: def.name,
|
|
38
43
|
description: def.description,
|
|
39
44
|
category: def.category,
|
|
40
45
|
version: def.version,
|
|
41
46
|
tools: def.tools,
|
|
42
47
|
model: def.model,
|
|
43
|
-
content
|
|
48
|
+
content,
|
|
44
49
|
source: 'builtin',
|
|
45
50
|
path: '<builtin>',
|
|
46
|
-
}
|
|
51
|
+
};
|
|
52
|
+
if (def.skills && def.skills.length > 0) {
|
|
53
|
+
record.skills = def.skills;
|
|
54
|
+
logger.debug(`[AgentRegistry] Agent ${def.name} has ${def.skills.length} skill(s): ${def.skills.join(', ')}`);
|
|
55
|
+
}
|
|
56
|
+
logger.debug(`[AgentRegistry] Stored agent ${def.name}, record.skills: ${JSON.stringify(record.skills)}`);
|
|
57
|
+
this.agents.set(def.name, record);
|
|
47
58
|
}
|
|
48
59
|
}
|
|
49
60
|
loadFromDir(dir, source) {
|
|
@@ -71,17 +82,27 @@ export class AgentRegistry {
|
|
|
71
82
|
? data.category
|
|
72
83
|
: 'core';
|
|
73
84
|
const model = typeof data.model === 'string' ? data.model : undefined;
|
|
74
|
-
|
|
85
|
+
// Parse skills field
|
|
86
|
+
const rawSkills = data.skills;
|
|
87
|
+
const skills = Array.isArray(rawSkills)
|
|
88
|
+
? rawSkills.filter((s) => typeof s === 'string')
|
|
89
|
+
: undefined;
|
|
90
|
+
const content = this.injectDynamicSkillManifest(this.injectSkillContent(parsed.content.trim(), skills), skills ?? []);
|
|
91
|
+
const record = {
|
|
75
92
|
name,
|
|
76
93
|
description,
|
|
77
94
|
category,
|
|
78
95
|
version,
|
|
79
96
|
tools,
|
|
80
97
|
model,
|
|
81
|
-
content
|
|
98
|
+
content,
|
|
82
99
|
source,
|
|
83
100
|
path: filePath,
|
|
84
|
-
}
|
|
101
|
+
};
|
|
102
|
+
if (skills && skills.length > 0) {
|
|
103
|
+
record.skills = skills;
|
|
104
|
+
}
|
|
105
|
+
this.agents.set(name, record);
|
|
85
106
|
}
|
|
86
107
|
catch (err) {
|
|
87
108
|
logger.warn(`[AgentRegistry] Failed to parse ${filePath}: ${err}`);
|
|
@@ -101,5 +122,83 @@ export class AgentRegistry {
|
|
|
101
122
|
this.agents.clear();
|
|
102
123
|
this.scan();
|
|
103
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Inject skill content as methodology reference into agent content.
|
|
127
|
+
* If skills are declared but SkillRegistry is not available, log warning.
|
|
128
|
+
*/
|
|
129
|
+
injectSkillContent(content, skills) {
|
|
130
|
+
if (!skills || skills.length === 0) {
|
|
131
|
+
return content;
|
|
132
|
+
}
|
|
133
|
+
if (!this.skillRegistry) {
|
|
134
|
+
logger.warn(`[AgentRegistry] Skills declared [${skills.join(', ')}] but SkillRegistry not available`);
|
|
135
|
+
return content;
|
|
136
|
+
}
|
|
137
|
+
const skillContents = [];
|
|
138
|
+
for (const skillId of skills) {
|
|
139
|
+
const skill = this.skillRegistry.getAll().find(s => s.id === skillId);
|
|
140
|
+
if (skill) {
|
|
141
|
+
skillContents.push(`### ${skill.name}\n\n${skill.content}`);
|
|
142
|
+
logger.debug(`[AgentRegistry] Injected skill: ${skillId}`);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
logger.warn(`[AgentRegistry] Skill not found: ${skillId}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (skillContents.length === 0) {
|
|
149
|
+
return content;
|
|
150
|
+
}
|
|
151
|
+
return `${content}
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## 参考方法论
|
|
156
|
+
|
|
157
|
+
以下是本 Agent 依赖的 Skill 方法论,供参考使用:
|
|
158
|
+
|
|
159
|
+
${skillContents.join('\n\n---\n\n')}
|
|
160
|
+
`;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Inject a dynamic skill manifest (id + description only) at the end of agent content.
|
|
164
|
+
* This tells the Agent which skills are available for on-demand invocation via
|
|
165
|
+
* the SkillInvoke tool, without injecting the full skill bodies (to save tokens).
|
|
166
|
+
*
|
|
167
|
+
* Skills already statically injected via injectSkillContent() are excluded from
|
|
168
|
+
* the manifest to avoid duplication.
|
|
169
|
+
*/
|
|
170
|
+
injectDynamicSkillManifest(agentContent, staticSkillIds) {
|
|
171
|
+
if (!this.skillRegistry) {
|
|
172
|
+
return agentContent;
|
|
173
|
+
}
|
|
174
|
+
const allSkills = this.skillRegistry.getManifest();
|
|
175
|
+
const availableSkills = allSkills.filter((s) => !staticSkillIds.includes(s.id));
|
|
176
|
+
if (availableSkills.length === 0) {
|
|
177
|
+
return agentContent;
|
|
178
|
+
}
|
|
179
|
+
const manifest = availableSkills
|
|
180
|
+
.map((s) => {
|
|
181
|
+
const desc = s.description?.trim() || s.name;
|
|
182
|
+
return `- \`${s.id}\`: ${desc}`;
|
|
183
|
+
})
|
|
184
|
+
.join('\n');
|
|
185
|
+
const section = `
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## 可动态调用的 Skill 清单
|
|
190
|
+
|
|
191
|
+
以下 Skill 可通过 \`SkillInvoke({ skill_id, reason })\` 工具动态调用,获取完整方法论内容:
|
|
192
|
+
|
|
193
|
+
${manifest}
|
|
194
|
+
|
|
195
|
+
**使用建议**:
|
|
196
|
+
- 当你需要特定领域的方法论指导时(如 TDD、重构、性能优化),调用 \`SkillInvoke\`
|
|
197
|
+
- 调用前请说明 \`reason\`(为什么需要这个 Skill)
|
|
198
|
+
- 同一 Skill 在同一会话中只能调用一次(幂等保护)
|
|
199
|
+
- 单会话总调用次数限制:10 次
|
|
200
|
+
`;
|
|
201
|
+
return agentContent + section;
|
|
202
|
+
}
|
|
104
203
|
}
|
|
105
204
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executions.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/executions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4GhE"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { execSync } from 'node:child_process';
|
|
4
|
+
export function registerExecutionsCommand(program) {
|
|
5
|
+
const cmd = program.command('executions').description('管理 Agent/Skill 执行文档');
|
|
6
|
+
// cf executions list — 列出所有执行文档
|
|
7
|
+
cmd
|
|
8
|
+
.command('list')
|
|
9
|
+
.description('列出所有执行文档')
|
|
10
|
+
.option('--limit <n>', '限制数量', '20')
|
|
11
|
+
.option('--date <date>', '按日期筛选(YYYY-MM-DD)')
|
|
12
|
+
.action(async (opts) => {
|
|
13
|
+
const baseDir = path.join(process.cwd(), '.claude-forge', 'executions', 'by-route');
|
|
14
|
+
if (!fs.existsSync(baseDir)) {
|
|
15
|
+
console.log('暂无执行文档。请先触发 Agent/Skill 执行。');
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const limit = parseInt(opts.limit) || 20;
|
|
19
|
+
// 列出 route 目录,按 mtime 倒序
|
|
20
|
+
const routes = fs.readdirSync(baseDir, { withFileTypes: true })
|
|
21
|
+
.filter(d => d.isDirectory())
|
|
22
|
+
.map(d => ({
|
|
23
|
+
name: d.name,
|
|
24
|
+
mtime: fs.statSync(path.join(baseDir, d.name)).mtime,
|
|
25
|
+
}))
|
|
26
|
+
.sort((a, b) => b.mtime.getTime() - a.mtime.getTime())
|
|
27
|
+
.slice(0, limit);
|
|
28
|
+
console.log(`找到 ${routes.length} 个执行记录:\n`);
|
|
29
|
+
for (const r of routes) {
|
|
30
|
+
const overviewPath = path.join(baseDir, r.name, 'overview.md');
|
|
31
|
+
let summary = '(无 overview)';
|
|
32
|
+
if (fs.existsSync(overviewPath)) {
|
|
33
|
+
// 读 frontmatter 的 user_prompt 字段
|
|
34
|
+
const content = fs.readFileSync(overviewPath, 'utf-8').slice(0, 1000);
|
|
35
|
+
const m = content.match(/user_prompt:\s*["']?(.+?)["']?\n/);
|
|
36
|
+
if (m)
|
|
37
|
+
summary = m[1].slice(0, 60);
|
|
38
|
+
}
|
|
39
|
+
const time = r.mtime.toISOString().slice(0, 19).replace('T', ' ');
|
|
40
|
+
console.log(`${time} ${r.name.slice(0, 24)} ${summary}`);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
// cf executions open <route_id> — 用 IDE / 编辑器打开
|
|
44
|
+
cmd
|
|
45
|
+
.command('open <route_id>')
|
|
46
|
+
.description('打开指定执行的 overview 文档')
|
|
47
|
+
.action((routeId) => {
|
|
48
|
+
const baseDir = path.join(process.cwd(), '.claude-forge', 'executions', 'by-route');
|
|
49
|
+
if (!fs.existsSync(baseDir)) {
|
|
50
|
+
console.error('执行文档目录不存在。');
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
// 模糊匹配
|
|
54
|
+
const dirs = fs.readdirSync(baseDir).filter(d => d.includes(routeId));
|
|
55
|
+
if (dirs.length === 0) {
|
|
56
|
+
console.error(`未找到匹配的执行记录:${routeId}`);
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
const target = path.join(baseDir, dirs[0], 'overview.md');
|
|
60
|
+
if (!fs.existsSync(target)) {
|
|
61
|
+
console.error(`overview.md 不存在:${target}`);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
// 用系统默认编辑器或 cat
|
|
65
|
+
const editor = process.env.EDITOR || process.env.VISUAL;
|
|
66
|
+
if (editor) {
|
|
67
|
+
execSync(`${editor} "${target}"`, { stdio: 'inherit' });
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
console.log(fs.readFileSync(target, 'utf-8'));
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
// cf executions clean — 清理旧文档
|
|
74
|
+
cmd
|
|
75
|
+
.command('clean')
|
|
76
|
+
.description('清理超过指定天数的执行文档')
|
|
77
|
+
.option('--before <days>', '清理 N 天前的文档', '30')
|
|
78
|
+
.option('--dry-run', '只显示将删除的文件,不实际删除')
|
|
79
|
+
.action(async (opts) => {
|
|
80
|
+
const baseDir = path.join(process.cwd(), '.claude-forge', 'executions', 'by-route');
|
|
81
|
+
if (!fs.existsSync(baseDir)) {
|
|
82
|
+
console.log('执行文档目录不存在,无需清理。');
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const days = parseInt(opts.before) || 30;
|
|
86
|
+
const cutoff = Date.now() - days * 24 * 60 * 60 * 1000;
|
|
87
|
+
const toDelete = [];
|
|
88
|
+
for (const d of fs.readdirSync(baseDir, { withFileTypes: true })) {
|
|
89
|
+
if (!d.isDirectory())
|
|
90
|
+
continue;
|
|
91
|
+
const dirPath = path.join(baseDir, d.name);
|
|
92
|
+
const stat = fs.statSync(dirPath);
|
|
93
|
+
if (stat.mtime.getTime() < cutoff) {
|
|
94
|
+
toDelete.push(dirPath);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
console.log(`将删除 ${toDelete.length} 个超过 ${days} 天的执行记录${opts.dryRun ? '(dry-run,不实际删除)' : ''}:`);
|
|
98
|
+
for (const p of toDelete) {
|
|
99
|
+
console.log(` - ${path.basename(p)}`);
|
|
100
|
+
if (!opts.dryRun) {
|
|
101
|
+
fs.rmSync(p, { recursive: true, force: true });
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (!opts.dryRun && toDelete.length > 0) {
|
|
105
|
+
console.log(`已清理 ${toDelete.length} 个目录。`);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=executions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executions.js","sourceRoot":"","sources":["../../../src/cli/commands/executions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skills.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skills.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuHzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAa/C"}
|
|
@@ -3,32 +3,72 @@ import path from 'path';
|
|
|
3
3
|
import { homedir } from 'os';
|
|
4
4
|
import { OFFICIAL_SKILLS } from '../../skills/official-skills.js';
|
|
5
5
|
import { SkillRegistry } from '../../skills/registry.js';
|
|
6
|
+
import { skillInvoke } from '../../skills/tools/skill-invoke.js';
|
|
7
|
+
import { skillList } from '../../skills/tools/skill-list.js';
|
|
6
8
|
const SKILLS_DIR = path.join(homedir(), '.claude', 'skills');
|
|
7
9
|
/**
|
|
8
|
-
* List
|
|
10
|
+
* List skills with optional keyword filter and JSON output.
|
|
11
|
+
* Delegates to the shared skillList() tool so CLI and Agent share one code path.
|
|
9
12
|
*/
|
|
10
|
-
function listSkills() {
|
|
13
|
+
async function listSkills(options) {
|
|
11
14
|
const registry = new SkillRegistry();
|
|
12
|
-
const
|
|
13
|
-
|
|
15
|
+
const keywords = options.keywords
|
|
16
|
+
? options.keywords
|
|
17
|
+
.split(',')
|
|
18
|
+
.map(k => k.trim())
|
|
19
|
+
.filter(k => k.length > 0)
|
|
20
|
+
: undefined;
|
|
21
|
+
const result = await skillList({ keywords }, { skillRegistry: registry });
|
|
22
|
+
if (options.json) {
|
|
23
|
+
console.log(JSON.stringify(result, null, 2));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (result.total === 0) {
|
|
14
27
|
console.log('No skills found.');
|
|
15
28
|
return;
|
|
16
29
|
}
|
|
17
|
-
|
|
18
|
-
console.log(
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const type =
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
30
|
+
// Human-readable output. Include `isOfficial` hint via registry lookup.
|
|
31
|
+
console.log(`Available skills (${result.total}):\n`);
|
|
32
|
+
for (const s of result.skills) {
|
|
33
|
+
const full = registry.get(s.id);
|
|
34
|
+
const type = full?.isOfficial ? 'official' : 'user';
|
|
35
|
+
console.log(`- ${s.id} [${type}]`);
|
|
36
|
+
console.log(` name: ${s.name}`);
|
|
37
|
+
if (s.description) {
|
|
38
|
+
console.log(` description: ${s.description}`);
|
|
39
|
+
}
|
|
40
|
+
if (s.keywords.length > 0) {
|
|
41
|
+
console.log(` keywords: ${s.keywords.join(', ')}`);
|
|
42
|
+
}
|
|
43
|
+
console.log();
|
|
26
44
|
}
|
|
27
45
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Invoke a skill by id, printing its full methodology content.
|
|
48
|
+
* Exit code 1 on failure so Bash callers can detect errors.
|
|
49
|
+
*/
|
|
50
|
+
async function invokeSkill(skillId, options) {
|
|
51
|
+
const registry = new SkillRegistry();
|
|
52
|
+
try {
|
|
53
|
+
const result = await skillInvoke({ skill_id: skillId, reason: options.reason }, { skillRegistry: registry });
|
|
54
|
+
if (options.json) {
|
|
55
|
+
console.log(JSON.stringify(result, null, 2));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
console.log(`# ${result.skill_name}`);
|
|
59
|
+
if (result.keywords.length > 0) {
|
|
60
|
+
console.log(`\n> keywords: ${result.keywords.join(', ')}`);
|
|
61
|
+
}
|
|
62
|
+
console.log();
|
|
63
|
+
console.log(result.content);
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
67
|
+
console.error(`Error: ${msg}`);
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function registerSkillSubcommands(skills) {
|
|
32
72
|
skills
|
|
33
73
|
.command('sync')
|
|
34
74
|
.description('Write official skills to ~/.claude/skills/')
|
|
@@ -38,11 +78,34 @@ export function register(program) {
|
|
|
38
78
|
});
|
|
39
79
|
skills
|
|
40
80
|
.command('list')
|
|
41
|
-
.description('List all skills (official + user)')
|
|
42
|
-
.
|
|
43
|
-
|
|
81
|
+
.description('List all skills (official + user) with optional keyword filter')
|
|
82
|
+
.option('--keywords <keywords>', 'Comma-separated keywords to filter by')
|
|
83
|
+
.option('--json', 'Output as JSON (machine-readable)')
|
|
84
|
+
.action(async (options) => {
|
|
85
|
+
await listSkills(options);
|
|
86
|
+
});
|
|
87
|
+
skills
|
|
88
|
+
.command('invoke <skill_id>')
|
|
89
|
+
.description('Invoke a skill and print its full methodology content')
|
|
90
|
+
.option('--reason <reason>', 'Reason for invoking (used for audit log)')
|
|
91
|
+
.option('--json', 'Output as JSON (machine-readable)')
|
|
92
|
+
.action(async (skillId, options) => {
|
|
93
|
+
await invokeSkill(skillId, options);
|
|
44
94
|
});
|
|
45
95
|
}
|
|
96
|
+
export function register(program) {
|
|
97
|
+
// Primary command: `cf skills ...`
|
|
98
|
+
const skills = program
|
|
99
|
+
.command('skills')
|
|
100
|
+
.description('Manage official and user skills (list | invoke | sync)');
|
|
101
|
+
registerSkillSubcommands(skills);
|
|
102
|
+
// Singular alias: `cf skill ...` — preferred for Agent Bash calls where
|
|
103
|
+
// `cf skill invoke <id>` reads more naturally than the plural form.
|
|
104
|
+
const skill = program
|
|
105
|
+
.command('skill')
|
|
106
|
+
.description('Alias of `skills` (list | invoke | sync)');
|
|
107
|
+
registerSkillSubcommands(skill);
|
|
108
|
+
}
|
|
46
109
|
function syncSkills(options) {
|
|
47
110
|
if (!fs.existsSync(SKILLS_DIR)) {
|
|
48
111
|
fs.mkdirSync(SKILLS_DIR, { recursive: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/cli/commands/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/cli/commands/skills.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -13,6 +13,7 @@ import { registerMenuCommand } from './commands/menu.js';
|
|
|
13
13
|
import { createTemplateCommand } from './commands/template.js';
|
|
14
14
|
import { createRulesCommand } from './commands/rules.js';
|
|
15
15
|
import { createStatsCommand } from './commands/stats.js';
|
|
16
|
+
import { registerExecutionsCommand } from './commands/executions.js';
|
|
16
17
|
const require = createRequire(import.meta.url);
|
|
17
18
|
const { version } = require('../../package.json');
|
|
18
19
|
const program = new Command();
|
|
@@ -33,5 +34,6 @@ registerMenuCommand(program);
|
|
|
33
34
|
program.addCommand(createTemplateCommand());
|
|
34
35
|
program.addCommand(createRulesCommand());
|
|
35
36
|
program.addCommand(createStatsCommand());
|
|
37
|
+
registerExecutionsCommand(program);
|
|
36
38
|
program.parseAsync();
|
|
37
39
|
//# sourceMappingURL=index.js.map
|