@grimoire-cc/cli 0.1.0 → 0.2.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/bin.js +28 -2
- package/dist/bin.js.map +1 -1
- package/dist/commands/add.d.ts +2 -1
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +6 -1
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +7 -1
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/remove.d.ts +12 -0
- package/dist/commands/remove.d.ts.map +1 -0
- package/dist/commands/remove.js +42 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +1 -1
- package/dist/manifest.js +2 -2
- package/dist/remove.d.ts +15 -0
- package/dist/remove.d.ts.map +1 -0
- package/dist/remove.js +80 -0
- package/dist/remove.js.map +1 -0
- package/dist/setup.d.ts +16 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +111 -0
- package/dist/setup.js.map +1 -0
- package/dist/static/log-viewer.html +16 -43
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -6
package/dist/bin.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { defineCommand, runMain } from 'citty';
|
|
3
3
|
import { runAdd } from './commands/add.js';
|
|
4
|
+
import { runRemove } from './commands/remove.js';
|
|
4
5
|
import { runLogs } from './commands/logs.js';
|
|
5
6
|
const addCommand = defineCommand({
|
|
6
7
|
meta: {
|
|
@@ -17,9 +18,33 @@ const addCommand = defineCommand({
|
|
|
17
18
|
type: 'string',
|
|
18
19
|
description: 'Pick specific item by name, or use bare --pick for interactive selection',
|
|
19
20
|
},
|
|
21
|
+
enableAutoActivation: {
|
|
22
|
+
type: 'boolean',
|
|
23
|
+
description: 'Configure skill-router hooks and manifest for automatic skill activation',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
async run({ args }) {
|
|
27
|
+
await runAdd(args.pack, args.pick, process.cwd(), args.enableAutoActivation);
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
const removeCommand = defineCommand({
|
|
31
|
+
meta: {
|
|
32
|
+
name: 'remove',
|
|
33
|
+
description: 'Remove agents and skills from your project',
|
|
34
|
+
},
|
|
35
|
+
args: {
|
|
36
|
+
name: {
|
|
37
|
+
type: 'positional',
|
|
38
|
+
description: 'Item name to remove',
|
|
39
|
+
required: false,
|
|
40
|
+
},
|
|
41
|
+
pick: {
|
|
42
|
+
type: 'string',
|
|
43
|
+
description: 'Interactive selection of items to remove',
|
|
44
|
+
},
|
|
20
45
|
},
|
|
21
46
|
async run({ args }) {
|
|
22
|
-
await
|
|
47
|
+
await runRemove(args.name, args.pick, process.cwd());
|
|
23
48
|
},
|
|
24
49
|
});
|
|
25
50
|
const logsCommand = defineCommand({
|
|
@@ -56,11 +81,12 @@ const logsCommand = defineCommand({
|
|
|
56
81
|
const main = defineCommand({
|
|
57
82
|
meta: {
|
|
58
83
|
name: 'grimoire',
|
|
59
|
-
version: '0.
|
|
84
|
+
version: '0.2.0',
|
|
60
85
|
description: 'CLI tool for installing Grimoire agent and skill packs',
|
|
61
86
|
},
|
|
62
87
|
subCommands: {
|
|
63
88
|
add: addCommand,
|
|
89
|
+
remove: removeCommand,
|
|
64
90
|
logs: logsCommand,
|
|
65
91
|
},
|
|
66
92
|
});
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,MAAM,UAAU,GAAG,aAAa,CAAC;IAC/B,IAAI,EAAE;QACJ,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,yDAAyD;KACvE;IACD,IAAI,EAAE;QACJ,IAAI,EAAE;YACJ,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,yBAAyB;YACtC,QAAQ,EAAE,IAAI;SACf;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,0EAA0E;SACxF;KACF;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/add.d.ts
CHANGED
|
@@ -6,7 +6,8 @@ import type { InstallSummary } from '../types.js';
|
|
|
6
6
|
* @param packageName - npm package name to install from
|
|
7
7
|
* @param pick - undefined = all, "" = interactive, "name" = specific item
|
|
8
8
|
* @param cwd - Target project directory (defaults to process.cwd())
|
|
9
|
+
* @param enableAutoActivation - If true, configure skill-router hooks and manifest
|
|
9
10
|
* @returns The install summary
|
|
10
11
|
*/
|
|
11
|
-
export declare function runAdd(packageName: string, pick: string | undefined, cwd?: string | undefined): Promise<InstallSummary>;
|
|
12
|
+
export declare function runAdd(packageName: string, pick: string | undefined, cwd?: string | undefined, enableAutoActivation?: boolean): Promise<InstallSummary>;
|
|
12
13
|
//# sourceMappingURL=add.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAe,cAAc,EAAgB,MAAM,aAAa,CAAC;AAE7E;;;;;;;;;GASG;AACH,wBAAsB,MAAM,CAC1B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,EACxB,oBAAoB,CAAC,EAAE,OAAO,GAC7B,OAAO,CAAC,cAAc,CAAC,CAuBzB"}
|
package/dist/commands/add.js
CHANGED
|
@@ -3,6 +3,7 @@ import { loadManifest } from '../manifest.js';
|
|
|
3
3
|
import { copyItems } from '../copy.js';
|
|
4
4
|
import { printSummary } from '../summary.js';
|
|
5
5
|
import { promptForItems } from '../prompt.js';
|
|
6
|
+
import { setupRouter } from '../setup.js';
|
|
6
7
|
/**
|
|
7
8
|
* Runs the `add` command: resolves a pack, loads its manifest, determines which items
|
|
8
9
|
* to install, copies them, and prints a summary.
|
|
@@ -10,9 +11,10 @@ import { promptForItems } from '../prompt.js';
|
|
|
10
11
|
* @param packageName - npm package name to install from
|
|
11
12
|
* @param pick - undefined = all, "" = interactive, "name" = specific item
|
|
12
13
|
* @param cwd - Target project directory (defaults to process.cwd())
|
|
14
|
+
* @param enableAutoActivation - If true, configure skill-router hooks and manifest
|
|
13
15
|
* @returns The install summary
|
|
14
16
|
*/
|
|
15
|
-
export async function runAdd(packageName, pick, cwd) {
|
|
17
|
+
export async function runAdd(packageName, pick, cwd, enableAutoActivation) {
|
|
16
18
|
const projectDir = cwd ?? process.cwd();
|
|
17
19
|
const packDir = resolvePackDir(packageName, projectDir);
|
|
18
20
|
const manifest = loadManifest(packDir);
|
|
@@ -25,6 +27,9 @@ export async function runAdd(packageName, pick, cwd) {
|
|
|
25
27
|
results,
|
|
26
28
|
};
|
|
27
29
|
printSummary(summary);
|
|
30
|
+
if (enableAutoActivation) {
|
|
31
|
+
setupRouter(projectDir, manifest);
|
|
32
|
+
}
|
|
28
33
|
return summary;
|
|
29
34
|
}
|
|
30
35
|
function manifestToItems(manifest) {
|
package/dist/commands/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAKtD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAKD,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAKtD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAKD,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiIrF"}
|
package/dist/commands/logs.js
CHANGED
|
@@ -13,7 +13,13 @@ export async function runLogs(cwd, options = {}) {
|
|
|
13
13
|
accessSync(logFilePath, constants.R_OK);
|
|
14
14
|
}
|
|
15
15
|
catch {
|
|
16
|
-
throw new Error(`Log file not found: ${logFilePath}`
|
|
16
|
+
throw new Error(`Log file not found: ${logFilePath}\n\n` +
|
|
17
|
+
'The skill-router has not produced any logs yet.\n' +
|
|
18
|
+
'Logs are created after the skill-router hook runs for the first time.\n\n' +
|
|
19
|
+
'To get started:\n' +
|
|
20
|
+
' 1. Install a pack with auto-activation: grimoire add <pack> --enable-auto-activation\n' +
|
|
21
|
+
' 2. Open Claude Code in the project and send a prompt\n' +
|
|
22
|
+
' 3. Run this command again');
|
|
17
23
|
}
|
|
18
24
|
const htmlPath = resolve(import.meta.dirname, '..', 'static', 'log-viewer.html');
|
|
19
25
|
const html = readFileSync(htmlPath, 'utf-8');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAe,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACvG,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAQ1C,MAAM,gBAAgB,GAAG,+BAA+B,CAAC;AACzD,MAAM,qBAAqB,GAAG,8BAA8B,CAAC;AAE7D,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,UAAuB,EAAE;IAClE,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO;QACjC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC;QAC/B,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAEnC,oCAAoC;IACpC,IAAI,CAAC;QACH,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RemoveSummary } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Runs the `remove` command: scans installed items, selects the target,
|
|
4
|
+
* removes files, and cleans up the manifest.
|
|
5
|
+
*
|
|
6
|
+
* @param itemName - Name of the agent or skill to remove
|
|
7
|
+
* @param pick - undefined = require name, "" = interactive (future)
|
|
8
|
+
* @param cwd - Target project directory (defaults to process.cwd())
|
|
9
|
+
* @returns The remove summary
|
|
10
|
+
*/
|
|
11
|
+
export declare function runRemove(itemName: string | undefined, pick: string | undefined, cwd?: string | undefined): Promise<RemoveSummary>;
|
|
12
|
+
//# sourceMappingURL=remove.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,GACvB,OAAO,CAAC,aAAa,CAAC,CA2BxB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { scanInstalled, removeItems, cleanManifest } from '../remove.js';
|
|
2
|
+
/**
|
|
3
|
+
* Runs the `remove` command: scans installed items, selects the target,
|
|
4
|
+
* removes files, and cleans up the manifest.
|
|
5
|
+
*
|
|
6
|
+
* @param itemName - Name of the agent or skill to remove
|
|
7
|
+
* @param pick - undefined = require name, "" = interactive (future)
|
|
8
|
+
* @param cwd - Target project directory (defaults to process.cwd())
|
|
9
|
+
* @returns The remove summary
|
|
10
|
+
*/
|
|
11
|
+
export async function runRemove(itemName, pick, cwd) {
|
|
12
|
+
const projectDir = cwd ?? process.cwd();
|
|
13
|
+
const installed = scanInstalled(projectDir);
|
|
14
|
+
if (installed.length === 0) {
|
|
15
|
+
throw new Error('No agents or skills installed in this project');
|
|
16
|
+
}
|
|
17
|
+
if (itemName === undefined && pick === undefined) {
|
|
18
|
+
throw new Error('Provide an item name or use --pick for interactive selection');
|
|
19
|
+
}
|
|
20
|
+
// TODO: interactive pick support (pick === '')
|
|
21
|
+
const selected = installed.filter((i) => i.name === itemName);
|
|
22
|
+
if (selected.length === 0) {
|
|
23
|
+
const available = installed.map((i) => i.name).join(', ');
|
|
24
|
+
throw new Error(`Item not found: "${itemName}". Available items: ${available}`);
|
|
25
|
+
}
|
|
26
|
+
const results = removeItems(selected, projectDir);
|
|
27
|
+
cleanManifest(selected, projectDir);
|
|
28
|
+
printRemoveSummary(results.filter((r) => r.removed));
|
|
29
|
+
return { results };
|
|
30
|
+
}
|
|
31
|
+
function printRemoveSummary(results) {
|
|
32
|
+
if (results.length === 0) {
|
|
33
|
+
console.log('Nothing to remove.');
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
console.log('\nRemoved:');
|
|
37
|
+
for (const result of results) {
|
|
38
|
+
console.log(` ${result.item.type}: ${result.item.name}`);
|
|
39
|
+
}
|
|
40
|
+
console.log(`\n${results.length} item(s) removed.`);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=remove.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGzE;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,QAA4B,EAC5B,IAAwB,EACxB,GAAwB;IAExB,MAAM,UAAU,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAE5C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IAED,+CAA+C;IAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAC9D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,IAAI,KAAK,CACb,oBAAoB,QAAQ,uBAAuB,SAAS,EAAE,CAC/D,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAClD,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAEpC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAErD,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,kBAAkB,CACzB,OAA8E;IAE9E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC1B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,mBAAmB,CAAC,CAAC;AACtD,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,5 +6,8 @@ export { promptForItems } from './prompt.js';
|
|
|
6
6
|
export { runAdd } from './commands/add.js';
|
|
7
7
|
export { runLogs } from './commands/logs.js';
|
|
8
8
|
export type { LogsOptions } from './commands/logs.js';
|
|
9
|
-
export
|
|
9
|
+
export { mergeSettings, mergeManifest, setupRouter } from './setup.js';
|
|
10
|
+
export { scanInstalled, removeItems, cleanManifest } from './remove.js';
|
|
11
|
+
export { runRemove } from './commands/remove.js';
|
|
12
|
+
export type { PackSkillTriggers, PackAgentEntry, PackSkillEntry, PackManifest, InstallItem, InstallResult, InstallSummary, RemoveResult, RemoveSummary, } from './types.js';
|
|
10
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,WAAW,EACX,aAAa,EACb,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,WAAW,EACX,aAAa,EACb,cAAc,EACd,YAAY,EACZ,aAAa,GACd,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,4 +5,7 @@ export { printSummary } from './summary.js';
|
|
|
5
5
|
export { promptForItems } from './prompt.js';
|
|
6
6
|
export { runAdd } from './commands/add.js';
|
|
7
7
|
export { runLogs } from './commands/logs.js';
|
|
8
|
+
export { mergeSettings, mergeManifest, setupRouter } from './setup.js';
|
|
9
|
+
export { scanInstalled, removeItems, cleanManifest } from './remove.js';
|
|
10
|
+
export { runRemove } from './commands/remove.js';
|
|
8
11
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/manifest.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { PackManifest } from './types.js';
|
|
2
2
|
/**
|
|
3
|
-
* Loads and validates a
|
|
3
|
+
* Loads and validates a grimoire pack manifest from a directory.
|
|
4
4
|
*
|
|
5
5
|
* @param packDir - Absolute path to the pack's root directory
|
|
6
6
|
* @returns Validated PackManifest
|
package/dist/manifest.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { readFileSync } from 'fs';
|
|
2
2
|
import { join } from 'path';
|
|
3
3
|
/**
|
|
4
|
-
* Loads and validates a
|
|
4
|
+
* Loads and validates a grimoire pack manifest from a directory.
|
|
5
5
|
*
|
|
6
6
|
* @param packDir - Absolute path to the pack's root directory
|
|
7
7
|
* @returns Validated PackManifest
|
|
8
8
|
* @throws Error if file not found, invalid JSON, or schema validation fails
|
|
9
9
|
*/
|
|
10
10
|
export function loadManifest(packDir) {
|
|
11
|
-
const manifestPath = join(packDir, '
|
|
11
|
+
const manifestPath = join(packDir, 'grimoire.json');
|
|
12
12
|
let content;
|
|
13
13
|
try {
|
|
14
14
|
content = readFileSync(manifestPath, 'utf-8');
|
package/dist/remove.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { InstallItem, RemoveResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Scans the project's .claude/ directory for installed agents and skills.
|
|
4
|
+
*/
|
|
5
|
+
export declare function scanInstalled(projectDir: string): readonly InstallItem[];
|
|
6
|
+
/**
|
|
7
|
+
* Removes agent files and skill directories from the project.
|
|
8
|
+
*/
|
|
9
|
+
export declare function removeItems(items: readonly InstallItem[], projectDir: string): readonly RemoveResult[];
|
|
10
|
+
/**
|
|
11
|
+
* Removes entries for the given items from skills-manifest.json.
|
|
12
|
+
* Removes skill entries, agent entries, and agent references from other agents.
|
|
13
|
+
*/
|
|
14
|
+
export declare function cleanManifest(items: readonly InstallItem[], projectDir: string): void;
|
|
15
|
+
//# sourceMappingURL=remove.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../src/remove.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5D;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,WAAW,EAAE,CAiCxE;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,WAAW,EAAE,EAC7B,UAAU,EAAE,MAAM,GACjB,SAAS,YAAY,EAAE,CAczB;AAoBD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,WAAW,EAAE,EAC7B,UAAU,EAAE,MAAM,GACjB,IAAI,CAsCN"}
|
package/dist/remove.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync } from 'fs';
|
|
2
|
+
import { basename, join } from 'path';
|
|
3
|
+
/**
|
|
4
|
+
* Scans the project's .claude/ directory for installed agents and skills.
|
|
5
|
+
*/
|
|
6
|
+
export function scanInstalled(projectDir) {
|
|
7
|
+
const items = [];
|
|
8
|
+
const agentsDir = join(projectDir, '.claude', 'agents');
|
|
9
|
+
if (existsSync(agentsDir)) {
|
|
10
|
+
for (const file of readdirSync(agentsDir)) {
|
|
11
|
+
if (file.endsWith('.md')) {
|
|
12
|
+
items.push({
|
|
13
|
+
type: 'agent',
|
|
14
|
+
name: basename(file, '.md'),
|
|
15
|
+
sourcePath: '',
|
|
16
|
+
description: '',
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const skillsDir = join(projectDir, '.claude', 'skills');
|
|
22
|
+
if (existsSync(skillsDir)) {
|
|
23
|
+
for (const entry of readdirSync(skillsDir)) {
|
|
24
|
+
const fullPath = join(skillsDir, entry);
|
|
25
|
+
if (statSync(fullPath).isDirectory()) {
|
|
26
|
+
items.push({
|
|
27
|
+
type: 'skill',
|
|
28
|
+
name: entry,
|
|
29
|
+
sourcePath: '',
|
|
30
|
+
description: '',
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return items;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Removes agent files and skill directories from the project.
|
|
39
|
+
*/
|
|
40
|
+
export function removeItems(items, projectDir) {
|
|
41
|
+
return items.map((item) => {
|
|
42
|
+
const targetPath = item.type === 'agent'
|
|
43
|
+
? join(projectDir, '.claude', 'agents', `${item.name}.md`)
|
|
44
|
+
: join(projectDir, '.claude', 'skills', item.name);
|
|
45
|
+
if (!existsSync(targetPath)) {
|
|
46
|
+
return { item, removed: false };
|
|
47
|
+
}
|
|
48
|
+
rmSync(targetPath, { recursive: true, force: true });
|
|
49
|
+
return { item, removed: true };
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Removes entries for the given items from skills-manifest.json.
|
|
54
|
+
* Removes skill entries, agent entries, and agent references from other agents.
|
|
55
|
+
*/
|
|
56
|
+
export function cleanManifest(items, projectDir) {
|
|
57
|
+
const manifestPath = join(projectDir, '.claude', 'skills-manifest.json');
|
|
58
|
+
if (!existsSync(manifestPath))
|
|
59
|
+
return;
|
|
60
|
+
const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
|
|
61
|
+
const removedSkillNames = new Set(items.filter((i) => i.type === 'skill').map((i) => i.name));
|
|
62
|
+
const removedAgentNames = new Set(items.filter((i) => i.type === 'agent').map((i) => i.name));
|
|
63
|
+
// Remove skill entries
|
|
64
|
+
if (removedSkillNames.size > 0) {
|
|
65
|
+
manifest.skills = manifest.skills.filter((s) => !removedSkillNames.has(s.name));
|
|
66
|
+
}
|
|
67
|
+
// Remove agent entries
|
|
68
|
+
for (const name of removedAgentNames) {
|
|
69
|
+
delete manifest.agents[name];
|
|
70
|
+
}
|
|
71
|
+
// Remove skill references from remaining agents
|
|
72
|
+
if (removedSkillNames.size > 0) {
|
|
73
|
+
for (const agentConfig of Object.values(manifest.agents)) {
|
|
74
|
+
agentConfig.always_skills = agentConfig.always_skills.filter((s) => !removedSkillNames.has(s));
|
|
75
|
+
agentConfig.compatible_skills = agentConfig.compatible_skills.filter((s) => !removedSkillNames.has(s));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + '\n');
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=remove.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../src/remove.ts"],"names":[],"mappings":"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"}
|
package/dist/setup.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { PackManifest } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Merges skill-router hook entries into `.claude/settings.json`.
|
|
4
|
+
* Creates the file if it doesn't exist. Preserves existing entries.
|
|
5
|
+
*/
|
|
6
|
+
export declare function mergeSettings(projectDir: string): void;
|
|
7
|
+
/**
|
|
8
|
+
* Merges pack skill triggers and agent entries into `.claude/skills-manifest.json`.
|
|
9
|
+
* Creates the file with defaults if it doesn't exist. Preserves existing entries.
|
|
10
|
+
*/
|
|
11
|
+
export declare function mergeManifest(projectDir: string, packManifest: PackManifest): void;
|
|
12
|
+
/**
|
|
13
|
+
* Sets up the skill-router by merging hook config and skill manifest.
|
|
14
|
+
*/
|
|
15
|
+
export declare function setupRouter(projectDir: string, packManifest: PackManifest): void;
|
|
16
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAsB/C;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CA6BtD;AA2BD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAkDlF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAOhF"}
|
package/dist/setup.js
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
const SKILL_ROUTER_COMMAND = 'npx @grimoire-cc/skill-router';
|
|
4
|
+
function hasSkillRouterHook(entries) {
|
|
5
|
+
return entries.some((entry) => entry.hooks.some((h) => h.command.includes('skill-router')));
|
|
6
|
+
}
|
|
7
|
+
function makeHookEntry(matcher) {
|
|
8
|
+
return {
|
|
9
|
+
matcher,
|
|
10
|
+
hooks: [{ type: 'command', command: SKILL_ROUTER_COMMAND }],
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Merges skill-router hook entries into `.claude/settings.json`.
|
|
15
|
+
* Creates the file if it doesn't exist. Preserves existing entries.
|
|
16
|
+
*/
|
|
17
|
+
export function mergeSettings(projectDir) {
|
|
18
|
+
const claudeDir = join(projectDir, '.claude');
|
|
19
|
+
mkdirSync(claudeDir, { recursive: true });
|
|
20
|
+
const settingsPath = join(claudeDir, 'settings.json');
|
|
21
|
+
let settings = {};
|
|
22
|
+
if (existsSync(settingsPath)) {
|
|
23
|
+
settings = JSON.parse(readFileSync(settingsPath, 'utf-8'));
|
|
24
|
+
}
|
|
25
|
+
const hooks = (settings['hooks'] ?? {});
|
|
26
|
+
if (!hooks['UserPromptSubmit']) {
|
|
27
|
+
hooks['UserPromptSubmit'] = [];
|
|
28
|
+
}
|
|
29
|
+
if (!hasSkillRouterHook(hooks['UserPromptSubmit'])) {
|
|
30
|
+
hooks['UserPromptSubmit'].push(makeHookEntry(''));
|
|
31
|
+
}
|
|
32
|
+
if (!hooks['PreToolUse']) {
|
|
33
|
+
hooks['PreToolUse'] = [];
|
|
34
|
+
}
|
|
35
|
+
if (!hasSkillRouterHook(hooks['PreToolUse'])) {
|
|
36
|
+
hooks['PreToolUse'].push(makeHookEntry('Edit|Write'));
|
|
37
|
+
}
|
|
38
|
+
settings['hooks'] = hooks;
|
|
39
|
+
writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n');
|
|
40
|
+
}
|
|
41
|
+
const DEFAULT_CONFIG = {
|
|
42
|
+
weights: {
|
|
43
|
+
keywords: 1.0,
|
|
44
|
+
file_extensions: 1.5,
|
|
45
|
+
patterns: 2.0,
|
|
46
|
+
file_paths: 2.5,
|
|
47
|
+
},
|
|
48
|
+
activation_threshold: 3.0,
|
|
49
|
+
pretooluse_threshold: 1.5,
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Merges pack skill triggers and agent entries into `.claude/skills-manifest.json`.
|
|
53
|
+
* Creates the file with defaults if it doesn't exist. Preserves existing entries.
|
|
54
|
+
*/
|
|
55
|
+
export function mergeManifest(projectDir, packManifest) {
|
|
56
|
+
const claudeDir = join(projectDir, '.claude');
|
|
57
|
+
mkdirSync(claudeDir, { recursive: true });
|
|
58
|
+
const manifestPath = join(claudeDir, 'skills-manifest.json');
|
|
59
|
+
let manifest;
|
|
60
|
+
if (existsSync(manifestPath)) {
|
|
61
|
+
manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
manifest = {
|
|
65
|
+
version: '2.0.0',
|
|
66
|
+
config: { ...DEFAULT_CONFIG },
|
|
67
|
+
skills: [],
|
|
68
|
+
agents: {},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
// Merge skills with triggers
|
|
72
|
+
for (const skill of packManifest.skills) {
|
|
73
|
+
if (!skill.triggers)
|
|
74
|
+
continue;
|
|
75
|
+
const skillPath = `.claude/skills/${skill.name}`;
|
|
76
|
+
const existingIndex = manifest.skills.findIndex((s) => s.path === skillPath);
|
|
77
|
+
const entry = {
|
|
78
|
+
path: skillPath,
|
|
79
|
+
name: skill.name,
|
|
80
|
+
description: skill.description,
|
|
81
|
+
triggers: { ...skill.triggers },
|
|
82
|
+
};
|
|
83
|
+
if (existingIndex >= 0) {
|
|
84
|
+
manifest.skills[existingIndex] = entry;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
manifest.skills.push(entry);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Merge agents
|
|
91
|
+
for (const agent of packManifest.agents) {
|
|
92
|
+
if (!manifest.agents[agent.name]) {
|
|
93
|
+
manifest.agents[agent.name] = {
|
|
94
|
+
always_skills: [],
|
|
95
|
+
compatible_skills: [],
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + '\n');
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Sets up the skill-router by merging hook config and skill manifest.
|
|
103
|
+
*/
|
|
104
|
+
export function setupRouter(projectDir, packManifest) {
|
|
105
|
+
mergeSettings(projectDir);
|
|
106
|
+
mergeManifest(projectDir, packManifest);
|
|
107
|
+
console.log('\nSkill router configured:');
|
|
108
|
+
console.log(' hooks: .claude/settings.json');
|
|
109
|
+
console.log(' manifest: .claude/skills-manifest.json');
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,MAAM,oBAAoB,GAAG,+BAA+B,CAAC;AAO7D,SAAS,kBAAkB,CAAC,OAA6B;IACvD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC5B,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAC5D,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IACpC,OAAO;QACL,OAAO;QACP,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC9C,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAEtD,IAAI,QAAQ,GAA4B,EAAE,CAAC;IAC3C,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAA4B,CAAC;IACxF,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAgC,CAAC;IAEvE,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;IACjC,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC;QACnD,KAAK,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QAC7C,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,QAAQ,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;IAC1B,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACxE,CAAC;AAgBD,MAAM,cAAc,GAAG;IACrB,OAAO,EAAE;QACP,QAAQ,EAAE,GAAG;QACb,eAAe,EAAE,GAAG;QACpB,QAAQ,EAAE,GAAG;QACb,UAAU,EAAE,GAAG;KAChB;IACD,oBAAoB,EAAE,GAAG;IACzB,oBAAoB,EAAE,GAAG;CAC1B,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB,EAAE,YAA0B;IAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC9C,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAE7D,IAAI,QAAwB,CAAC;IAC7B,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAmB,CAAC;IAC/E,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG;YACT,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,EAAE,GAAG,cAAc,EAAE;YAC7B,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;SACX,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,SAAS;QAE9B,MAAM,SAAS,GAAG,kBAAkB,KAAK,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QAE7E,MAAM,KAAK,GAAkB;YAC3B,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,QAAQ,EAAE,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE;SAChC,CAAC;QAEF,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;YACvB,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,eAAe;IACf,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG;gBAC5B,aAAa,EAAE,EAAE;gBACjB,iBAAiB,EAAE,EAAE;aACtB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,UAAkB,EAAE,YAA0B;IACxE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC1B,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAExC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -385,30 +385,17 @@ let sortAsc = false;
|
|
|
385
385
|
|
|
386
386
|
// --- Append new log entries without clearing existing ones ---
|
|
387
387
|
function appendLog(text) {
|
|
388
|
-
const lines = text.split('\n');
|
|
389
|
-
let buffer = '';
|
|
390
|
-
let depth = 0;
|
|
391
388
|
let added = 0;
|
|
392
389
|
|
|
393
|
-
for (const line of
|
|
390
|
+
for (const line of text.split('\n')) {
|
|
394
391
|
const trimmed = line.trim();
|
|
395
392
|
if (!trimmed) continue;
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
if (depth === 0 && buffer.trim()) {
|
|
404
|
-
try {
|
|
405
|
-
const obj = JSON.parse(buffer);
|
|
406
|
-
obj._index = entries.length;
|
|
407
|
-
entries.push(obj);
|
|
408
|
-
added++;
|
|
409
|
-
} catch { /* skip malformed */ }
|
|
410
|
-
buffer = '';
|
|
411
|
-
}
|
|
393
|
+
try {
|
|
394
|
+
const obj = JSON.parse(trimmed);
|
|
395
|
+
obj._index = entries.length;
|
|
396
|
+
entries.push(obj);
|
|
397
|
+
added++;
|
|
398
|
+
} catch { /* skip malformed */ }
|
|
412
399
|
}
|
|
413
400
|
|
|
414
401
|
if (added === 0) return;
|
|
@@ -530,30 +517,15 @@ function loadFile(file) {
|
|
|
530
517
|
|
|
531
518
|
function parseLog(text) {
|
|
532
519
|
entries = [];
|
|
533
|
-
// Handle both pretty-printed and single-line NDJSON
|
|
534
|
-
// Strategy: try to extract JSON objects
|
|
535
|
-
const lines = text.split('\n');
|
|
536
|
-
let buffer = '';
|
|
537
|
-
let depth = 0;
|
|
538
520
|
|
|
539
|
-
for (const line of
|
|
521
|
+
for (const line of text.split('\n')) {
|
|
540
522
|
const trimmed = line.trim();
|
|
541
523
|
if (!trimmed) continue;
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
}
|
|
548
|
-
|
|
549
|
-
if (depth === 0 && buffer.trim()) {
|
|
550
|
-
try {
|
|
551
|
-
const obj = JSON.parse(buffer);
|
|
552
|
-
obj._index = entries.length;
|
|
553
|
-
entries.push(obj);
|
|
554
|
-
} catch { /* skip malformed */ }
|
|
555
|
-
buffer = '';
|
|
556
|
-
}
|
|
524
|
+
try {
|
|
525
|
+
const obj = JSON.parse(trimmed);
|
|
526
|
+
obj._index = entries.length;
|
|
527
|
+
entries.push(obj);
|
|
528
|
+
} catch { /* skip malformed */ }
|
|
557
529
|
}
|
|
558
530
|
|
|
559
531
|
if (entries.length === 0) {
|
|
@@ -591,11 +563,12 @@ function buildDashboard() {
|
|
|
591
563
|
// Sessions
|
|
592
564
|
const sessionMap = {};
|
|
593
565
|
for (const e of entries) {
|
|
594
|
-
if (!sessionMap[e.session_id]) sessionMap[e.session_id] = { count: 0, activated: 0,
|
|
566
|
+
if (!sessionMap[e.session_id]) sessionMap[e.session_id] = { count: 0, activated: 0, last: e.timestamp };
|
|
595
567
|
sessionMap[e.session_id].count++;
|
|
596
568
|
if (e.outcome === 'activated') sessionMap[e.session_id].activated++;
|
|
569
|
+
if (e.timestamp > sessionMap[e.session_id].last) sessionMap[e.session_id].last = e.timestamp;
|
|
597
570
|
}
|
|
598
|
-
const sessionEntries = Object.entries(sessionMap).sort((a, b) => b[1].
|
|
571
|
+
const sessionEntries = Object.entries(sessionMap).sort((a, b) => b[1].last < a[1].last ? -1 : b[1].last > a[1].last ? 1 : 0);
|
|
599
572
|
document.getElementById('sessionList').innerHTML = sessionEntries.map(([id, info]) => `
|
|
600
573
|
<div class="session-item" data-session="${id}" onclick="filterBySession('${id}')">
|
|
601
574
|
<span class="id" title="${id}">${id.length > 16 ? id.slice(0, 8) + '...' : id}</span>
|
package/dist/types.d.ts
CHANGED
|
@@ -37,4 +37,11 @@ export interface InstallSummary {
|
|
|
37
37
|
readonly packVersion: string;
|
|
38
38
|
readonly results: readonly InstallResult[];
|
|
39
39
|
}
|
|
40
|
+
export interface RemoveResult {
|
|
41
|
+
readonly item: InstallItem;
|
|
42
|
+
readonly removed: boolean;
|
|
43
|
+
}
|
|
44
|
+
export interface RemoveSummary {
|
|
45
|
+
readonly results: readonly RemoveResult[];
|
|
46
|
+
}
|
|
40
47
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CACnD;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;CAC5C"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CACnD;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;CAC3C"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grimoire-cc/cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "CLI tool for installing
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "CLI tool for installing Grimoire agent and skill packs",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "Anton Kochev",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
10
|
-
"url": "https://github.com/anton-kochev/
|
|
10
|
+
"url": "https://github.com/anton-kochev/grimoire",
|
|
11
11
|
"directory": "packages/cli"
|
|
12
12
|
},
|
|
13
|
-
"homepage": "https://github.com/anton-kochev/
|
|
14
|
-
"bugs": "https://github.com/anton-kochev/
|
|
13
|
+
"homepage": "https://github.com/anton-kochev/grimoire/tree/main/packages/cli",
|
|
14
|
+
"bugs": "https://github.com/anton-kochev/grimoire/issues",
|
|
15
15
|
"keywords": ["claude", "claude-code", "agents", "skills", "cli"],
|
|
16
16
|
"main": "./dist/index.js",
|
|
17
17
|
"types": "./dist/index.d.ts",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"test:watch": "vitest",
|
|
31
31
|
"test:coverage": "vitest run --coverage",
|
|
32
32
|
"build": "tsc",
|
|
33
|
-
"postbuild": "cp -r src/static dist/static",
|
|
33
|
+
"postbuild": "cp -r src/static/ dist/static/",
|
|
34
34
|
"dev": "tsx src/bin.ts",
|
|
35
35
|
"prepublishOnly": "pnpm test && pnpm build"
|
|
36
36
|
},
|