memonaut 0.2.0 → 0.3.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/cli-main.d.ts.map +1 -1
- package/dist/cli-main.js +37 -0
- package/dist/cli-main.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/resources.d.ts +2 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +25 -0
- package/dist/resources.js.map +1 -0
- package/dist/skills.d.ts +34 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +59 -0
- package/dist/skills.js.map +1 -0
- package/package.json +4 -3
- package/skills/memonaut/SKILL.md +120 -0
- package/src/cli-main.ts +57 -0
- package/src/index.ts +1 -0
- package/src/resources.ts +26 -0
- package/src/skills.ts +86 -0
package/dist/cli-main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-main.d.ts","sourceRoot":"","sources":["../src/cli-main.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli-main.d.ts","sourceRoot":"","sources":["../src/cli-main.ts"],"names":[],"mappings":"AAyOA;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GAAG,SAAS,GACzB,MAAM,GAAG,IAAI,CAqBf;AA+YD,uEAAuE;AACvE,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAMzC"}
|
package/dist/cli-main.js
CHANGED
|
@@ -10,6 +10,7 @@ import { TIERS } from './model.js';
|
|
|
10
10
|
import { readRawEntry } from './pi-source.js';
|
|
11
11
|
import { DEFAULT_MAX_MATCHES, DEFAULT_MAX_PER_FILE, regexSearch, } from './regex.js';
|
|
12
12
|
import { indexStats, readThread, resolveThread, search } from './search.js';
|
|
13
|
+
import { availableSkills, destinationFor, installSkills, isInstalled, } from './skills.js';
|
|
13
14
|
const USAGE = `memonaut — search your agent conversation transcripts
|
|
14
15
|
|
|
15
16
|
USAGE
|
|
@@ -23,6 +24,7 @@ COMMANDS
|
|
|
23
24
|
sql <query> Run a read-only SQL query against the index
|
|
24
25
|
stats Summarise what is indexed
|
|
25
26
|
config Show config paths, or write a starter config
|
|
27
|
+
skills [install] List or install the agent skill (into ~/.agents/skills)
|
|
26
28
|
|
|
27
29
|
SEARCH OPTIONS
|
|
28
30
|
--cwd <glob> Filter by working directory (repeatable, globs, ~ ok)
|
|
@@ -67,6 +69,9 @@ QUERY SYNTAX
|
|
|
67
69
|
match in order, OR / NOT / NEAR(a b, 5) work, and trailing * is a prefix.
|
|
68
70
|
If that fails to parse, the query is retried as quoted literal tokens.
|
|
69
71
|
|
|
72
|
+
SKILLS OPTIONS
|
|
73
|
+
--project Install into ./.agents/skills instead of ~/.agents/skills
|
|
74
|
+
|
|
70
75
|
EXAMPLES
|
|
71
76
|
recall search steering queue --project wherever --since 30d
|
|
72
77
|
recall search '"fork point" OR parentSession' --threads all
|
|
@@ -507,6 +512,36 @@ function cmdConfig(argv) {
|
|
|
507
512
|
`private ${config.private.join(', ') || '(none)'}`,
|
|
508
513
|
].join('\n') + '\n');
|
|
509
514
|
}
|
|
515
|
+
/**
|
|
516
|
+
* `recall skills [list|install]`.
|
|
517
|
+
*
|
|
518
|
+
* Kept flag-light on purpose: the only real decision is user versus project scope.
|
|
519
|
+
*/
|
|
520
|
+
function cmdSkills(argv) {
|
|
521
|
+
const scope = argv.includes('--project') ? 'project' : 'user';
|
|
522
|
+
const verb = argv.find((argument) => !argument.startsWith('-')) ?? 'list';
|
|
523
|
+
if (verb !== 'list' && verb !== 'install')
|
|
524
|
+
fail(`unknown skills command "${verb}". Try \`list\` or \`install\``);
|
|
525
|
+
const available = availableSkills();
|
|
526
|
+
if (available.length === 0) {
|
|
527
|
+
fail('no skills found beside this package. A published install carries them; a checkout keeps them at the repo root');
|
|
528
|
+
}
|
|
529
|
+
const style = makeStyle(colorsEnabled());
|
|
530
|
+
if (verb === 'list') {
|
|
531
|
+
process.stdout.write(tildify(destinationFor(scope)) + '\n\n');
|
|
532
|
+
for (const skill of available) {
|
|
533
|
+
const mark = isInstalled(skill, scope) ? 'installed' : 'not installed';
|
|
534
|
+
process.stdout.write(` ${style.bold(skill.name)} ${style.dim(`(${mark})`)}\n ${skill.description}\n\n`);
|
|
535
|
+
}
|
|
536
|
+
process.stdout.write('Run `recall skills install` to copy them in.\n');
|
|
537
|
+
return;
|
|
538
|
+
}
|
|
539
|
+
const installed = installSkills(scope);
|
|
540
|
+
for (const entry of installed) {
|
|
541
|
+
process.stdout.write(` ${entry.replaced ? 'replaced' : 'installed'} ${tildify(entry.to)}\n`);
|
|
542
|
+
}
|
|
543
|
+
process.stdout.write(style.dim(`\n${installed.length} skill${installed.length === 1 ? '' : 's'} copied. They are copies, so re-run this after upgrading memonaut.\n`));
|
|
544
|
+
}
|
|
510
545
|
async function main() {
|
|
511
546
|
const argv = process.argv.slice(2);
|
|
512
547
|
const command = argv[0];
|
|
@@ -525,6 +560,8 @@ async function main() {
|
|
|
525
560
|
return cmdStats(rest);
|
|
526
561
|
case 'config':
|
|
527
562
|
return cmdConfig(rest);
|
|
563
|
+
case 'skills':
|
|
564
|
+
return cmdSkills(rest);
|
|
528
565
|
case '--version':
|
|
529
566
|
case '-v':
|
|
530
567
|
process.stdout.write(version() + '\n');
|
package/dist/cli-main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-main.js","sourceRoot":"","sources":["../src/cli-main.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli-main.js","sourceRoot":"","sources":["../src/cli-main.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,5 +9,6 @@ export * from './search.js';
|
|
|
9
9
|
export * from './regex.js';
|
|
10
10
|
export { RipgrepError, RipgrepMissingError, ripgrepAvailable, ripgrepBinary, } from './ripgrep.js';
|
|
11
11
|
export * from './format.js';
|
|
12
|
+
export * from './skills.js';
|
|
12
13
|
export { silenceSqliteWarning } from './quiet.js';
|
|
13
14
|
//# 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,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAG3B,OAAO,EACN,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,GACb,MAAM,cAAc,CAAC;AACtB,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAC,oBAAoB,EAAC,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAG3B,OAAO,EACN,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,GACb,MAAM,cAAc,CAAC;AACtB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAC,oBAAoB,EAAC,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -11,5 +11,6 @@ export * from './regex.js';
|
|
|
11
11
|
// pre-flight check. Spawning rg is an implementation detail, not API.
|
|
12
12
|
export { RipgrepError, RipgrepMissingError, ripgrepAvailable, ripgrepBinary, } from './ripgrep.js';
|
|
13
13
|
export * from './format.js';
|
|
14
|
+
export * from './skills.js';
|
|
14
15
|
export { silenceSqliteWarning } from './quiet.js';
|
|
15
16
|
//# 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,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,6EAA6E;AAC7E,sEAAsE;AACtE,OAAO,EACN,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,GACb,MAAM,cAAc,CAAC;AACtB,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAC,oBAAoB,EAAC,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,6EAA6E;AAC7E,sEAAsE;AACtE,OAAO,EACN,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,GACb,MAAM,cAAc,CAAC;AACtB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAC,oBAAoB,EAAC,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAaA,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAY3E"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
3
|
+
/**
|
|
4
|
+
* Finding files that ship beside the package rather than inside `dist`.
|
|
5
|
+
*
|
|
6
|
+
* A published install carries `skills/` next to `dist/`, staged there at build time. A checkout
|
|
7
|
+
* keeps the same directory at the repo root, three levels above `packages/memonaut/dist`. Both are
|
|
8
|
+
* searched instead of one being made canonical, so `recall skills` behaves the same whether it is
|
|
9
|
+
* run from a global install, from the workspace, or through `tsx src/cli.ts`.
|
|
10
|
+
*/
|
|
11
|
+
const ROOTS = ['../', '../../../'];
|
|
12
|
+
export function resolvePackageResource(relative) {
|
|
13
|
+
for (const root of ROOTS) {
|
|
14
|
+
try {
|
|
15
|
+
const candidate = fileURLToPath(new URL(`${root}${relative}`, import.meta.url));
|
|
16
|
+
if (fs.existsSync(candidate))
|
|
17
|
+
return candidate;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=resources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AAEvC;;;;;;;GAOG;AACH,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAEnC,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACtD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,aAAa,CAC9B,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,QAAQ,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAC9C,CAAC;YACF,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,OAAO,SAAS,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACR,SAAS;QACV,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC"}
|
package/dist/skills.d.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Installing the agent skill that ships with this package.
|
|
3
|
+
*
|
|
4
|
+
* pi loads the skill itself from `memonaut-pi` (its `pi.skills` entry), so this command exists for
|
|
5
|
+
* every other agent: the skill is the same file, and `~/.agents/skills/<name>` is where agents that
|
|
6
|
+
* are not pi look for it. One directory, no fan-out to twenty agent-specific locations, and the
|
|
7
|
+
* report names every path written.
|
|
8
|
+
*/
|
|
9
|
+
export interface Skill {
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
from: string;
|
|
13
|
+
}
|
|
14
|
+
export type Scope = 'user' | 'project';
|
|
15
|
+
/** Where skills live, by convention. `project` keeps them beside the code that needs them. */
|
|
16
|
+
export declare function destinationFor(scope: Scope, cwd?: string): string;
|
|
17
|
+
export declare function skillsSource(): string | undefined;
|
|
18
|
+
/** Name and description come from the SKILL.md front matter, so there is one source of truth. */
|
|
19
|
+
export declare function availableSkills(): Skill[];
|
|
20
|
+
export interface Installed {
|
|
21
|
+
name: string;
|
|
22
|
+
to: string;
|
|
23
|
+
replaced: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Copies rather than symlinks, so an installed skill survives `node_modules` being deleted.
|
|
27
|
+
*
|
|
28
|
+
* The cost is that upgrading the package does not upgrade the installed skill, which is why the
|
|
29
|
+
* report says `replaced` versus `installed`: a skill that is quietly stale is worse than one you
|
|
30
|
+
* know you have to refresh.
|
|
31
|
+
*/
|
|
32
|
+
export declare function installSkills(scope: Scope, cwd?: string): Installed[];
|
|
33
|
+
export declare function isInstalled(skill: Skill, scope: Scope, cwd?: string): boolean;
|
|
34
|
+
//# sourceMappingURL=skills.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AAEH,MAAM,WAAW,KAAK;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvC,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,SAAgB,GAAG,MAAM,CAIxE;AAED,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD;AAED,iGAAiG;AACjG,wBAAgB,eAAe,IAAI,KAAK,EAAE,CAgBzC;AAED,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,SAAgB,GAAG,SAAS,EAAE,CAY5E;AAED,wBAAgB,WAAW,CAC1B,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,GAAG,SAAgB,GACjB,OAAO,CAET"}
|
package/dist/skills.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import os from 'node:os';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { resolvePackageResource } from './resources.js';
|
|
5
|
+
/** Where skills live, by convention. `project` keeps them beside the code that needs them. */
|
|
6
|
+
export function destinationFor(scope, cwd = process.cwd()) {
|
|
7
|
+
return scope === 'user'
|
|
8
|
+
? path.join(os.homedir(), '.agents', 'skills')
|
|
9
|
+
: path.join(cwd, '.agents', 'skills');
|
|
10
|
+
}
|
|
11
|
+
export function skillsSource() {
|
|
12
|
+
return resolvePackageResource('skills/');
|
|
13
|
+
}
|
|
14
|
+
/** Name and description come from the SKILL.md front matter, so there is one source of truth. */
|
|
15
|
+
export function availableSkills() {
|
|
16
|
+
const root = skillsSource();
|
|
17
|
+
if (!root)
|
|
18
|
+
return [];
|
|
19
|
+
const skills = [];
|
|
20
|
+
for (const entry of fs.readdirSync(root, { withFileTypes: true })) {
|
|
21
|
+
if (!entry.isDirectory())
|
|
22
|
+
continue;
|
|
23
|
+
const manifest = path.join(root, entry.name, 'SKILL.md');
|
|
24
|
+
if (!fs.existsSync(manifest))
|
|
25
|
+
continue;
|
|
26
|
+
const text = fs.readFileSync(manifest, 'utf8');
|
|
27
|
+
skills.push({
|
|
28
|
+
name: /^name:\s*(.+)$/m.exec(text)?.[1]?.trim() ?? entry.name,
|
|
29
|
+
description: /^description:\s*(.+)$/m.exec(text)?.[1]?.trim() ?? '',
|
|
30
|
+
from: path.join(root, entry.name),
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
return skills.sort((a, b) => a.name.localeCompare(b.name));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Copies rather than symlinks, so an installed skill survives `node_modules` being deleted.
|
|
37
|
+
*
|
|
38
|
+
* The cost is that upgrading the package does not upgrade the installed skill, which is why the
|
|
39
|
+
* report says `replaced` versus `installed`: a skill that is quietly stale is worse than one you
|
|
40
|
+
* know you have to refresh.
|
|
41
|
+
*/
|
|
42
|
+
export function installSkills(scope, cwd = process.cwd()) {
|
|
43
|
+
const destination = destinationFor(scope, cwd);
|
|
44
|
+
const installed = [];
|
|
45
|
+
for (const skill of availableSkills()) {
|
|
46
|
+
const to = path.join(destination, skill.name);
|
|
47
|
+
const replaced = fs.existsSync(to);
|
|
48
|
+
if (replaced)
|
|
49
|
+
fs.rmSync(to, { recursive: true, force: true });
|
|
50
|
+
fs.mkdirSync(destination, { recursive: true });
|
|
51
|
+
fs.cpSync(skill.from, to, { recursive: true });
|
|
52
|
+
installed.push({ name: skill.name, to, replaced });
|
|
53
|
+
}
|
|
54
|
+
return installed;
|
|
55
|
+
}
|
|
56
|
+
export function isInstalled(skill, scope, cwd = process.cwd()) {
|
|
57
|
+
return fs.existsSync(path.join(destinationFor(scope, cwd), skill.name));
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,sBAAsB,EAAC,MAAM,gBAAgB,CAAC;AAmBtD,8FAA8F;AAC9F,MAAM,UAAU,cAAc,CAAC,KAAY,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC/D,OAAO,KAAK,KAAK,MAAM;QACtB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC9C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,YAAY;IAC3B,OAAO,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,eAAe;IAC9B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,EAAE,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAS;QACvC,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,IAAI;YAC7D,WAAW,EAAE,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;YACnE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;SACjC,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,CAAC;AAQD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAY,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC9D,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAgB,EAAE,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,EAAE,CAAC;QACvC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,QAAQ;YAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC;QAC5D,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;QAC7C,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;QAC7C,SAAS,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAC,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,WAAW,CAC1B,KAAY,EACZ,KAAY,EACZ,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAEnB,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "memonaut",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Index and search AI agent conversation transcripts (pi sessions and friends) from the CLI, from agents, and from your own code",
|
|
5
5
|
"license": "AGPL-3.0-only",
|
|
6
6
|
"repository": {
|
|
@@ -39,7 +39,8 @@
|
|
|
39
39
|
},
|
|
40
40
|
"files": [
|
|
41
41
|
"dist",
|
|
42
|
-
"src"
|
|
42
|
+
"src",
|
|
43
|
+
"skills"
|
|
43
44
|
],
|
|
44
45
|
"engines": {
|
|
45
46
|
"node": ">=22.5.0"
|
|
@@ -53,7 +54,7 @@
|
|
|
53
54
|
"vitest": "^4.0.18"
|
|
54
55
|
},
|
|
55
56
|
"scripts": {
|
|
56
|
-
"build": "tsc",
|
|
57
|
+
"build": "rm -rf skills && cp -r ../../skills ./skills && tsc",
|
|
57
58
|
"dev": "as-soon -w src pnpm build",
|
|
58
59
|
"cli": "tsx src/cli.ts",
|
|
59
60
|
"test": "vitest run",
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: memonaut
|
|
3
|
+
description: Search past AI conversation transcripts (previous sessions, across every project) for what was said, decided, tried or rejected. Use when the user refers to an earlier session ("what did we decide about X", "we discussed this before", "that thing we tried last month"), when you need context that predates the current conversation, when you are about to redo analysis that may already exist, or when asked to find or resume an old conversation. Works via the recall_search / recall_thread / recall_sql tools when the memonaut pi package is loaded, or the `memonaut` (aka `recall`) CLI otherwise.
|
|
4
|
+
license: AGPL-3.0-only
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# memonaut
|
|
8
|
+
|
|
9
|
+
Past sessions with this user are indexed and searchable. The index covers **all projects**, not just the current one.
|
|
10
|
+
|
|
11
|
+
## When to reach for it
|
|
12
|
+
|
|
13
|
+
- The user refers to something from before: "what did we decide", "like we did in the other repo", "the bug from last month".
|
|
14
|
+
- You need a decision's *rationale*, which usually lives in an old conversation, not in the code or the docs.
|
|
15
|
+
- You are about to investigate something that feels like it has been investigated before.
|
|
16
|
+
- The user wants to find or resume an old conversation.
|
|
17
|
+
|
|
18
|
+
Do **not** use it as a code search. It indexes conversations. Use `grep` for the codebase.
|
|
19
|
+
|
|
20
|
+
## The two-step
|
|
21
|
+
|
|
22
|
+
Search returns snippets, not conversations. The normal loop is:
|
|
23
|
+
|
|
24
|
+
1. `recall_search` with a phrase you expect to have been typed.
|
|
25
|
+
2. `recall_thread` on the most promising result to read what was actually said around it.
|
|
26
|
+
|
|
27
|
+
Snippets are deliberately short. Do not answer from a snippet alone when the answer matters: read the thread.
|
|
28
|
+
|
|
29
|
+
## Query syntax
|
|
30
|
+
|
|
31
|
+
The query is an SQLite FTS5 expression:
|
|
32
|
+
|
|
33
|
+
| Form | Meaning |
|
|
34
|
+
|---|---|
|
|
35
|
+
| `steering queue` | both words, anywhere in the message |
|
|
36
|
+
| `"steering queue"` | that exact phrase |
|
|
37
|
+
| `queue OR backlog` | either |
|
|
38
|
+
| `queue NOT redis` | first without the second |
|
|
39
|
+
| `NEAR(fork lineage, 5)` | both within five tokens |
|
|
40
|
+
| `parentSess*` | prefix |
|
|
41
|
+
|
|
42
|
+
Search words the **user or you would have typed**, not words you would use to describe the topic. Transcripts contain the actual vocabulary of the moment: identifiers, error strings, file names. `"ERR_SQLITE_ERROR"` finds things; "database problem" often does not.
|
|
43
|
+
|
|
44
|
+
If a query fails to parse as FTS5 it is retried as quoted literal tokens, so pasting `handleToolCall(x)` is safe.
|
|
45
|
+
|
|
46
|
+
FTS5 tokenises, so it cannot match *inside* an identifier (`ToolCall` does not find `handleToolCall`), and it only sees text the index holds. When you need either, use the exact path below.
|
|
47
|
+
|
|
48
|
+
## Narrowing
|
|
49
|
+
|
|
50
|
+
Everything is global by default, which is usually right and occasionally noisy.
|
|
51
|
+
|
|
52
|
+
- `project: ["wherever"]` — the last path segment of the working directory.
|
|
53
|
+
- `cwd: ["~/dev/**/wherever"]` — glob over the full path.
|
|
54
|
+
- `since: "2026-07-01"` — bound the time range.
|
|
55
|
+
- `role: ["user"]` — only what the human typed. Very effective for finding a decision or a requirement.
|
|
56
|
+
- `tool: ["bash"]` — messages involving a given tool.
|
|
57
|
+
|
|
58
|
+
Start broad, then narrow. A result count in the dozens means add a filter; zero results usually means your phrase was too specific, so drop a word or try `OR`.
|
|
59
|
+
|
|
60
|
+
## Forks: several threads can carry the same message
|
|
61
|
+
|
|
62
|
+
Forking a conversation copies its history, so one message can belong to several continuations. When a match falls in shared history, the result says so and lists every thread that inherited it, **most recently active first**, with how many entries each accumulated afterwards.
|
|
63
|
+
|
|
64
|
+
That list is a real choice, not noise. The threads diverged after the matched point, so they may have reached different conclusions. When it matters which one you follow:
|
|
65
|
+
|
|
66
|
+
- The newest thread is the usual default, but say which one you read.
|
|
67
|
+
- If the forks disagree, tell the user there are several continuations rather than picking one silently.
|
|
68
|
+
|
|
69
|
+
## Aggregates
|
|
70
|
+
|
|
71
|
+
For counting and grouping questions ("which projects did I touch in July", "how many sessions used this tool"), use `recall_sql` instead of trying to phrase it as a search. Tables:
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
file(id, path, cwd, project, name, parent_id, lineage_id, private, started, last_activity, entry_count)
|
|
75
|
+
entry(id, lineage_id, entry_key, role, tool, ts)
|
|
76
|
+
membership(entry_id, file_id, seq) -- which threads carry an entry
|
|
77
|
+
chunk(entry_id, kind, text) -- indexed text
|
|
78
|
+
chunk_fts -- FTS5 index over chunk.text
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
The connection is read-only. Always include a `LIMIT`.
|
|
82
|
+
|
|
83
|
+
## Exact search: the CLI's `--regex`
|
|
84
|
+
|
|
85
|
+
There is **no regex tool**. When full-text search structurally cannot answer, use the shell:
|
|
86
|
+
|
|
87
|
+
```sh
|
|
88
|
+
recall search --regex 'ERR_[A-Z_]+' --since 30d
|
|
89
|
+
recall search --regex 'handleToolCall(' -F --project wherever # -F: literal, not a regex
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
It runs ripgrep over the **original transcripts**, so it reaches two things the tools cannot:
|
|
93
|
+
|
|
94
|
+
- text *inside* an identifier, which FTS5 cannot tokenise to;
|
|
95
|
+
- text the index does not hold at all, above all **tool output** (42% of the bytes, not indexed by default) and the tail of long tool-call arguments. A hit that came from such text is labelled `read from the transcript · this ... text is not indexed`. If a user insists something was definitely said and search finds nothing, this is usually why. (A hit labelled `matched the transcript JSON, not the message text` is different: your pattern hit a JSON key or an id, not anything anyone wrote.)
|
|
96
|
+
|
|
97
|
+
It is fork-aware and filtered exactly like a normal search (`--project`, `--role`, `--since`, ...), and it still never reads an ignored or private transcript. It is roughly 5x slower than the indexed query and has **no relevance ranking**: results are ordered by recency, so the first one is the most recent match, not the best one. Search full-text first; reach for `--regex` when you know the exact string.
|
|
98
|
+
|
|
99
|
+
## Without the pi tools
|
|
100
|
+
|
|
101
|
+
If `recall_search` is not available, the same index is reachable from the shell:
|
|
102
|
+
|
|
103
|
+
```sh
|
|
104
|
+
recall search '"steering queue"' --project wherever --since 30d
|
|
105
|
+
recall search '"completing one work task"' --threads all
|
|
106
|
+
recall show 2585 --from 120
|
|
107
|
+
recall sql "select project, count(*) n from file group by 1 order by n desc limit 10"
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Add `--json` for machine-readable output. If it reports no index, the user needs to run `recall index` once.
|
|
111
|
+
|
|
112
|
+
## What is not there
|
|
113
|
+
|
|
114
|
+
- **Private conversations.** The user's config lists working directories that are indexed for them but never exposed to tools. If a thread comes back as private, do not try to route around it; tell the user.
|
|
115
|
+
- **Full tool output.** Tool results are stored truncated or not at all (they are 42% of the bytes and rarely what anyone is looking for). The discussion is indexed; the command output usually is not. For full fidelity the original transcript is still on disk, and `recall search --regex` reads it.
|
|
116
|
+
- **Anything the user chose to ignore.** Ignored directories were never read at all.
|
|
117
|
+
|
|
118
|
+
## Reporting back
|
|
119
|
+
|
|
120
|
+
Cite what you found by thread number and date ("thread 2585, 11 July"), so the user can open it themselves. When you are relying on an old conversation for a claim, say so: a decision from six weeks ago may since have been reversed, and the transcript cannot tell you that on its own.
|
package/src/cli-main.ts
CHANGED
|
@@ -22,6 +22,13 @@ import {
|
|
|
22
22
|
regexSearch,
|
|
23
23
|
} from './regex.js';
|
|
24
24
|
import {indexStats, readThread, resolveThread, search} from './search.js';
|
|
25
|
+
import {
|
|
26
|
+
availableSkills,
|
|
27
|
+
destinationFor,
|
|
28
|
+
installSkills,
|
|
29
|
+
isInstalled,
|
|
30
|
+
type Scope,
|
|
31
|
+
} from './skills.js';
|
|
25
32
|
|
|
26
33
|
const USAGE = `memonaut — search your agent conversation transcripts
|
|
27
34
|
|
|
@@ -36,6 +43,7 @@ COMMANDS
|
|
|
36
43
|
sql <query> Run a read-only SQL query against the index
|
|
37
44
|
stats Summarise what is indexed
|
|
38
45
|
config Show config paths, or write a starter config
|
|
46
|
+
skills [install] List or install the agent skill (into ~/.agents/skills)
|
|
39
47
|
|
|
40
48
|
SEARCH OPTIONS
|
|
41
49
|
--cwd <glob> Filter by working directory (repeatable, globs, ~ ok)
|
|
@@ -80,6 +88,9 @@ QUERY SYNTAX
|
|
|
80
88
|
match in order, OR / NOT / NEAR(a b, 5) work, and trailing * is a prefix.
|
|
81
89
|
If that fails to parse, the query is retried as quoted literal tokens.
|
|
82
90
|
|
|
91
|
+
SKILLS OPTIONS
|
|
92
|
+
--project Install into ./.agents/skills instead of ~/.agents/skills
|
|
93
|
+
|
|
83
94
|
EXAMPLES
|
|
84
95
|
recall search steering queue --project wherever --since 30d
|
|
85
96
|
recall search '"fork point" OR parentSession' --threads all
|
|
@@ -575,6 +586,50 @@ function cmdConfig(argv: string[]): void {
|
|
|
575
586
|
);
|
|
576
587
|
}
|
|
577
588
|
|
|
589
|
+
/**
|
|
590
|
+
* `recall skills [list|install]`.
|
|
591
|
+
*
|
|
592
|
+
* Kept flag-light on purpose: the only real decision is user versus project scope.
|
|
593
|
+
*/
|
|
594
|
+
function cmdSkills(argv: string[]): void {
|
|
595
|
+
const scope: Scope = argv.includes('--project') ? 'project' : 'user';
|
|
596
|
+
const verb = argv.find((argument) => !argument.startsWith('-')) ?? 'list';
|
|
597
|
+
if (verb !== 'list' && verb !== 'install')
|
|
598
|
+
fail(`unknown skills command "${verb}". Try \`list\` or \`install\``);
|
|
599
|
+
|
|
600
|
+
const available = availableSkills();
|
|
601
|
+
if (available.length === 0) {
|
|
602
|
+
fail(
|
|
603
|
+
'no skills found beside this package. A published install carries them; a checkout keeps them at the repo root',
|
|
604
|
+
);
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
const style = makeStyle(colorsEnabled());
|
|
608
|
+
if (verb === 'list') {
|
|
609
|
+
process.stdout.write(tildify(destinationFor(scope)) + '\n\n');
|
|
610
|
+
for (const skill of available) {
|
|
611
|
+
const mark = isInstalled(skill, scope) ? 'installed' : 'not installed';
|
|
612
|
+
process.stdout.write(
|
|
613
|
+
` ${style.bold(skill.name)} ${style.dim(`(${mark})`)}\n ${skill.description}\n\n`,
|
|
614
|
+
);
|
|
615
|
+
}
|
|
616
|
+
process.stdout.write('Run `recall skills install` to copy them in.\n');
|
|
617
|
+
return;
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
const installed = installSkills(scope);
|
|
621
|
+
for (const entry of installed) {
|
|
622
|
+
process.stdout.write(
|
|
623
|
+
` ${entry.replaced ? 'replaced' : 'installed'} ${tildify(entry.to)}\n`,
|
|
624
|
+
);
|
|
625
|
+
}
|
|
626
|
+
process.stdout.write(
|
|
627
|
+
style.dim(
|
|
628
|
+
`\n${installed.length} skill${installed.length === 1 ? '' : 's'} copied. They are copies, so re-run this after upgrading memonaut.\n`,
|
|
629
|
+
),
|
|
630
|
+
);
|
|
631
|
+
}
|
|
632
|
+
|
|
578
633
|
async function main(): Promise<void> {
|
|
579
634
|
const argv = process.argv.slice(2);
|
|
580
635
|
const command = argv[0];
|
|
@@ -593,6 +648,8 @@ async function main(): Promise<void> {
|
|
|
593
648
|
return cmdStats(rest);
|
|
594
649
|
case 'config':
|
|
595
650
|
return cmdConfig(rest);
|
|
651
|
+
case 'skills':
|
|
652
|
+
return cmdSkills(rest);
|
|
596
653
|
case '--version':
|
|
597
654
|
case '-v':
|
|
598
655
|
process.stdout.write(version() + '\n');
|
package/src/index.ts
CHANGED
package/src/resources.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import {fileURLToPath} from 'node:url';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Finding files that ship beside the package rather than inside `dist`.
|
|
6
|
+
*
|
|
7
|
+
* A published install carries `skills/` next to `dist/`, staged there at build time. A checkout
|
|
8
|
+
* keeps the same directory at the repo root, three levels above `packages/memonaut/dist`. Both are
|
|
9
|
+
* searched instead of one being made canonical, so `recall skills` behaves the same whether it is
|
|
10
|
+
* run from a global install, from the workspace, or through `tsx src/cli.ts`.
|
|
11
|
+
*/
|
|
12
|
+
const ROOTS = ['../', '../../../'];
|
|
13
|
+
|
|
14
|
+
export function resolvePackageResource(relative: string): string | undefined {
|
|
15
|
+
for (const root of ROOTS) {
|
|
16
|
+
try {
|
|
17
|
+
const candidate = fileURLToPath(
|
|
18
|
+
new URL(`${root}${relative}`, import.meta.url),
|
|
19
|
+
);
|
|
20
|
+
if (fs.existsSync(candidate)) return candidate;
|
|
21
|
+
} catch {
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
package/src/skills.ts
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import os from 'node:os';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import {resolvePackageResource} from './resources.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Installing the agent skill that ships with this package.
|
|
8
|
+
*
|
|
9
|
+
* pi loads the skill itself from `memonaut-pi` (its `pi.skills` entry), so this command exists for
|
|
10
|
+
* every other agent: the skill is the same file, and `~/.agents/skills/<name>` is where agents that
|
|
11
|
+
* are not pi look for it. One directory, no fan-out to twenty agent-specific locations, and the
|
|
12
|
+
* report names every path written.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
export interface Skill {
|
|
16
|
+
name: string;
|
|
17
|
+
description: string;
|
|
18
|
+
from: string;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export type Scope = 'user' | 'project';
|
|
22
|
+
|
|
23
|
+
/** Where skills live, by convention. `project` keeps them beside the code that needs them. */
|
|
24
|
+
export function destinationFor(scope: Scope, cwd = process.cwd()): string {
|
|
25
|
+
return scope === 'user'
|
|
26
|
+
? path.join(os.homedir(), '.agents', 'skills')
|
|
27
|
+
: path.join(cwd, '.agents', 'skills');
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function skillsSource(): string | undefined {
|
|
31
|
+
return resolvePackageResource('skills/');
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** Name and description come from the SKILL.md front matter, so there is one source of truth. */
|
|
35
|
+
export function availableSkills(): Skill[] {
|
|
36
|
+
const root = skillsSource();
|
|
37
|
+
if (!root) return [];
|
|
38
|
+
const skills: Skill[] = [];
|
|
39
|
+
for (const entry of fs.readdirSync(root, {withFileTypes: true})) {
|
|
40
|
+
if (!entry.isDirectory()) continue;
|
|
41
|
+
const manifest = path.join(root, entry.name, 'SKILL.md');
|
|
42
|
+
if (!fs.existsSync(manifest)) continue;
|
|
43
|
+
const text = fs.readFileSync(manifest, 'utf8');
|
|
44
|
+
skills.push({
|
|
45
|
+
name: /^name:\s*(.+)$/m.exec(text)?.[1]?.trim() ?? entry.name,
|
|
46
|
+
description: /^description:\s*(.+)$/m.exec(text)?.[1]?.trim() ?? '',
|
|
47
|
+
from: path.join(root, entry.name),
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
return skills.sort((a, b) => a.name.localeCompare(b.name));
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export interface Installed {
|
|
54
|
+
name: string;
|
|
55
|
+
to: string;
|
|
56
|
+
replaced: boolean;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Copies rather than symlinks, so an installed skill survives `node_modules` being deleted.
|
|
61
|
+
*
|
|
62
|
+
* The cost is that upgrading the package does not upgrade the installed skill, which is why the
|
|
63
|
+
* report says `replaced` versus `installed`: a skill that is quietly stale is worse than one you
|
|
64
|
+
* know you have to refresh.
|
|
65
|
+
*/
|
|
66
|
+
export function installSkills(scope: Scope, cwd = process.cwd()): Installed[] {
|
|
67
|
+
const destination = destinationFor(scope, cwd);
|
|
68
|
+
const installed: Installed[] = [];
|
|
69
|
+
for (const skill of availableSkills()) {
|
|
70
|
+
const to = path.join(destination, skill.name);
|
|
71
|
+
const replaced = fs.existsSync(to);
|
|
72
|
+
if (replaced) fs.rmSync(to, {recursive: true, force: true});
|
|
73
|
+
fs.mkdirSync(destination, {recursive: true});
|
|
74
|
+
fs.cpSync(skill.from, to, {recursive: true});
|
|
75
|
+
installed.push({name: skill.name, to, replaced});
|
|
76
|
+
}
|
|
77
|
+
return installed;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export function isInstalled(
|
|
81
|
+
skill: Skill,
|
|
82
|
+
scope: Scope,
|
|
83
|
+
cwd = process.cwd(),
|
|
84
|
+
): boolean {
|
|
85
|
+
return fs.existsSync(path.join(destinationFor(scope, cwd), skill.name));
|
|
86
|
+
}
|