rhachet 1.10.1 → 1.11.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/.test/example.use.repo/example.echoRegistry.js +5 -2
- package/dist/.test/example.use.repo/example.echoRegistry.js.map +1 -1
- package/dist/contract/cli/invoke.js +2 -0
- package/dist/contract/cli/invoke.js.map +1 -1
- package/dist/contract/cli/invokeAsk.js +4 -2
- package/dist/contract/cli/invokeAsk.js.map +1 -1
- package/dist/contract/cli/invokeBriefsBoot.d.ts +1 -1
- package/dist/contract/cli/invokeBriefsBoot.integration.test.js +46 -36
- package/dist/contract/cli/invokeBriefsBoot.integration.test.js.map +1 -1
- package/dist/contract/cli/invokeBriefsBoot.js +9 -5
- package/dist/contract/cli/invokeBriefsBoot.js.map +1 -1
- package/dist/contract/cli/invokeBriefsLink.d.ts +1 -1
- package/dist/contract/cli/invokeBriefsLink.integration.test.js +28 -16
- package/dist/contract/cli/invokeBriefsLink.integration.test.js.map +1 -1
- package/dist/contract/cli/invokeBriefsLink.js +46 -40
- package/dist/contract/cli/invokeBriefsLink.js.map +1 -1
- package/dist/contract/cli/invokeList.js +1 -1
- package/dist/contract/cli/invokeList.js.map +1 -1
- package/dist/contract/cli/invokeReadme.integration.test.js +1 -1
- package/dist/contract/cli/invokeReadme.integration.test.js.map +1 -1
- package/dist/contract/cli/invokeReadme.js +2 -2
- package/dist/contract/cli/invokeReadme.js.map +1 -1
- package/dist/contract/cli/invokeRoles.d.ts +11 -0
- package/dist/contract/cli/invokeRoles.js +19 -0
- package/dist/contract/cli/invokeRoles.js.map +1 -0
- package/dist/contract/cli/invokeRolesBoot.d.ts +9 -0
- package/dist/contract/cli/invokeRolesBoot.js +205 -0
- package/dist/contract/cli/invokeRolesBoot.js.map +1 -0
- package/dist/contract/cli/invokeRolesLink.d.ts +11 -0
- package/dist/contract/cli/invokeRolesLink.js +157 -0
- package/dist/contract/cli/invokeRolesLink.js.map +1 -0
- package/dist/domain/objects/Role.d.ts +13 -3
- package/dist/domain/objects/Role.js.map +1 -1
- package/dist/logic/invoke/getAgentReadmeTemplates.d.ts +6 -0
- package/dist/logic/invoke/getAgentReadmeTemplates.js +42 -0
- package/dist/logic/invoke/getAgentReadmeTemplates.js.map +1 -0
- package/dist/logic/invoke/performInCurrentThread.js +1 -1
- package/dist/logic/invoke/performInCurrentThread.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,69 +8,75 @@ const assureFindRole_1 = require("../../logic/invoke/assureFindRole");
|
|
|
8
8
|
/**
|
|
9
9
|
* .what = adds the "briefs link" subcommand to the CLI
|
|
10
10
|
* .why = creates symlinks to role briefs from node_modules for easy access
|
|
11
|
-
* .how = creates .briefs
|
|
11
|
+
* .how = creates .agent/repo=$repo/role=$role/briefs directory and symlinks brief files
|
|
12
12
|
*/
|
|
13
13
|
const invokeBriefsLink = ({ command, registries, }) => {
|
|
14
14
|
command
|
|
15
15
|
.command('link')
|
|
16
|
-
.description('create symlinks to role briefs in .
|
|
16
|
+
.description('create symlinks to role briefs in .agent/ structure')
|
|
17
|
+
.option('--repo <slug>', 'the repository slug for the role')
|
|
17
18
|
.option('--role <slug>', 'the role to link briefs for')
|
|
18
19
|
.action((opts) => {
|
|
20
|
+
if (!opts.repo)
|
|
21
|
+
helpful_errors_1.BadRequestError.throw('--repo is required (e.g., --repo ehmpathy)');
|
|
19
22
|
if (!opts.role)
|
|
20
23
|
helpful_errors_1.BadRequestError.throw('--role is required (e.g., --role mechanic)');
|
|
24
|
+
const repoSlug = opts.repo;
|
|
21
25
|
// Find the role from registries
|
|
22
26
|
const role = (0, assureFindRole_1.assureFindRole)({ registries, slug: opts.role });
|
|
23
27
|
// Check if role has briefs configured
|
|
24
|
-
if (
|
|
28
|
+
if (role.briefs.dirs.length === 0) {
|
|
25
29
|
helpful_errors_1.BadRequestError.throw(`Role "${role.slug}" does not have briefs configured`);
|
|
26
30
|
}
|
|
27
|
-
// Create .briefs
|
|
28
|
-
const briefsDir = (0, node_path_1.resolve)(process.cwd(), '.
|
|
31
|
+
// Create .agent/repo=$repo/role=$role/briefs directory
|
|
32
|
+
const briefsDir = (0, node_path_1.resolve)(process.cwd(), '.agent', `repo=${repoSlug}`, `role=${role.slug}`, 'briefs');
|
|
29
33
|
(0, node_fs_1.mkdirSync)(briefsDir, { recursive: true });
|
|
30
|
-
// Path to the role's briefs directory
|
|
31
|
-
const sourceDir = (0, node_path_1.resolve)(process.cwd(), role.briefs.dir);
|
|
32
|
-
// Check if source directory exists
|
|
33
|
-
if (!(0, node_fs_1.existsSync)(sourceDir)) {
|
|
34
|
-
helpful_errors_1.BadRequestError.throw(`Source directory not found: ${sourceDir}\nMake sure role "${role.slug}" briefs directory is accessible`);
|
|
35
|
-
}
|
|
36
|
-
// Read all files in the source directory
|
|
37
|
-
const files = (0, node_fs_1.readdirSync)(sourceDir);
|
|
38
|
-
if (files.length === 0) {
|
|
39
|
-
console.log(``);
|
|
40
|
-
console.log(`⚠️ No briefs found for role "${role.slug}"`);
|
|
41
|
-
console.log(``);
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
// Create symlinks for each file
|
|
45
34
|
console.log(``);
|
|
46
|
-
console.log(`📎 Linking briefs for role "${role.slug}"...`);
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
else {
|
|
55
|
-
console.log(` + ${file}`);
|
|
35
|
+
console.log(`📎 Linking briefs for role "${role.slug}" from repo "${repoSlug}"...`);
|
|
36
|
+
let totalFiles = 0;
|
|
37
|
+
// Process each brief directory
|
|
38
|
+
for (const briefDir of role.briefs.dirs) {
|
|
39
|
+
const sourceDir = (0, node_path_1.resolve)(process.cwd(), briefDir.uri);
|
|
40
|
+
// Check if source directory exists
|
|
41
|
+
if (!(0, node_fs_1.existsSync)(sourceDir)) {
|
|
42
|
+
helpful_errors_1.BadRequestError.throw(`Source directory not found: ${sourceDir}\nMake sure role "${role.slug}" briefs directory is accessible`);
|
|
56
43
|
}
|
|
57
|
-
//
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
(
|
|
44
|
+
// Read all files in the source directory
|
|
45
|
+
const files = (0, node_fs_1.readdirSync)(sourceDir);
|
|
46
|
+
if (files.length === 0) {
|
|
47
|
+
console.log(` ⚠️ No briefs found in ${briefDir.uri}`);
|
|
48
|
+
continue;
|
|
61
49
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
50
|
+
// Create symlinks for each file
|
|
51
|
+
for (const file of files) {
|
|
52
|
+
const sourcePath = (0, node_path_1.resolve)(sourceDir, file);
|
|
53
|
+
const targetPath = (0, node_path_1.resolve)(briefsDir, (0, node_path_1.basename)(file));
|
|
54
|
+
// Remove existing symlink if it exists
|
|
55
|
+
if ((0, node_fs_1.existsSync)(targetPath)) {
|
|
56
|
+
console.log(` ↻ ${file} (updating)`);
|
|
66
57
|
}
|
|
67
58
|
else {
|
|
68
|
-
|
|
59
|
+
console.log(` + ${file}`);
|
|
60
|
+
}
|
|
61
|
+
// Create relative symlink from target directory to source file
|
|
62
|
+
const relativeSource = (0, node_path_1.relative)(briefsDir, sourcePath);
|
|
63
|
+
try {
|
|
64
|
+
(0, node_fs_1.symlinkSync)(relativeSource, targetPath);
|
|
65
|
+
totalFiles++;
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
if (error.code === 'EEXIST') {
|
|
69
|
+
// If file exists and is not a symlink, warn user
|
|
70
|
+
console.log(` ⚠️ ${file} already exists (skipping)`);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
throw error;
|
|
74
|
+
}
|
|
69
75
|
}
|
|
70
76
|
}
|
|
71
77
|
}
|
|
72
78
|
console.log(``);
|
|
73
|
-
console.log(
|
|
79
|
+
console.log(`🔗 Linked ${totalFiles} brief(s) to ${briefsDir}`);
|
|
74
80
|
console.log(``);
|
|
75
81
|
});
|
|
76
82
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invokeBriefsLink.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeBriefsLink.ts"],"names":[],"mappings":";;;AACA,mDAAiD;AACjD,qCAA0E;AAC1E,yCAAwD;AAExD,sEAAmE;AAGnE;;;;GAIG;AACI,MAAM,gBAAgB,GAAG,CAAC,EAC/B,OAAO,EACP,UAAU,GAIX,EAAQ,EAAE;IACT,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"invokeBriefsLink.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeBriefsLink.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ const invokeList = ({ program, registries, }) => {
|
|
|
20
20
|
helpful_errors_1.BadRequestError.throw(`no role named "${opts.role}"`);
|
|
21
21
|
console.log(``);
|
|
22
22
|
console.log(`📖 ${role.slug}.skills =`);
|
|
23
|
-
for (const skill of role.skills)
|
|
23
|
+
for (const skill of role.skills.refs)
|
|
24
24
|
console.log(` - ${role.slug}.${skill.slug}`);
|
|
25
25
|
console.log(``);
|
|
26
26
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invokeList.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeList.ts"],"names":[],"mappings":";;;AACA,mDAAiD;AAEjD,sEAAmE;AAGnE;;;GAGG;AACI,MAAM,UAAU,GAAG,CAAC,EACzB,OAAO,EACP,UAAU,GAIX,EAAQ,EAAE;IACT,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,mBAAmB,EAAE,gCAAgC,CAAC;SAC7D,MAAM,CAAC,eAAe,EAAE,iDAAiD,CAAC;SAC1E,MAAM,CAAC,CAAC,IAA0C,EAAE,EAAE;QACrD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,IAAA,+BAAc,EAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,IAAI;gBAAE,gCAAe,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YAEjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC;YACxC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"invokeList.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeList.ts"],"names":[],"mappings":";;;AACA,mDAAiD;AAEjD,sEAAmE;AAGnE;;;GAGG;AACI,MAAM,UAAU,GAAG,CAAC,EACzB,OAAO,EACP,UAAU,GAIX,EAAQ,EAAE;IACT,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,mBAAmB,EAAE,gCAAgC,CAAC;SAC7D,MAAM,CAAC,eAAe,EAAE,iDAAiD,CAAC;SAC1E,MAAM,CAAC,CAAC,IAA0C,EAAE,EAAE;QACrD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,IAAA,+BAAc,EAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,IAAI;gBAAE,gCAAe,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YAEjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC;YACxC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI;gBAClC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClE,IAAI,CAAC,QAAQ;gBACX,gCAAe,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAEhE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,UAAU,CAAC,CAAC;YAC3C,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK;gBAC/B,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC/C,QAAQ,CAAC,KAAK,CAAC,GAAG,CAChB,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,OAAO,EAAE,CACrE,CACF,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAhDW,QAAA,UAAU,cAgDrB"}
|
|
@@ -32,7 +32,7 @@ describe('invokeReadme (integration)', () => {
|
|
|
32
32
|
(0, test_fns_1.then)('it should print the skill readme', async () => {
|
|
33
33
|
await program.parseAsync(['readme', '--role', 'echoer', '--skill', 'echo'], { from: 'user' });
|
|
34
34
|
expect(logSpy).toHaveBeenCalledWith('📜 echoer.echo.readme');
|
|
35
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining(example_echoRegistry_1.EXAMPLE_REGISTRY.roles[0].skills[0].readme.split('\n')[0]));
|
|
35
|
+
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining(example_echoRegistry_1.EXAMPLE_REGISTRY.roles[0].skills.refs[0].readme.split('\n')[0]));
|
|
36
36
|
});
|
|
37
37
|
});
|
|
38
38
|
(0, test_fns_1.when)('invoked with an unknown role', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invokeReadme.integration.test.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeReadme.integration.test.ts"],"names":[],"mappings":";;AAAA,yCAAoC;AACpC,uCAAuD;AAEvD,4FAAqF;AACrF,iDAA8C;AAE9C,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,IAAA,gBAAK,EACH,mEAAmE,EACnE,GAAG,EAAE;QACH,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACvE,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACrC,IAAA,2BAAY,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,uCAAgB,CAAC,EAAE,CAAC,CAAC;QAE1D,IAAA,eAAI,EAAC,8BAA8B,EAAE,GAAG,EAAE;YACxC,IAAA,eAAI,EAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;gBACrD,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE;oBACzD,IAAI,EAAE,MAAM;iBACb,CAAC,CAAC;gBAEH,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;gBACtD,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CACjC,MAAM,CAAC,gBAAgB,CAAC,uCAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,CAAC,CACjE,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,0BAA0B,EAAE,GAAG,EAAE;YACpC,IAAA,eAAI,EAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;gBACjD,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE;oBACvD,IAAI,EAAE,MAAM;iBACb,CAAC,CAAC;gBAEH,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;gBACxD,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CACjC,MAAM,CAAC,gBAAgB,CACrB,uCAAgB,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,CAClD,CACF,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,iCAAiC,EAAE,GAAG,EAAE;YAC3C,IAAA,eAAI,EAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;gBAClD,MAAM,OAAO,CAAC,UAAU,CACtB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EACjD,EAAE,IAAI,EAAE,MAAM,EAAE,CACjB,CAAC;gBAEF,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,CAAC;gBAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CACjC,MAAM,CAAC,gBAAgB,CACrB,uCAAgB,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,
|
|
1
|
+
{"version":3,"file":"invokeReadme.integration.test.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeReadme.integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,9 +38,9 @@ const invokeReadme = ({ program, registries, }) => {
|
|
|
38
38
|
if (!opts.skill)
|
|
39
39
|
return printReadme(`${role.slug}`, role.readme);
|
|
40
40
|
// resolve skill
|
|
41
|
-
const skill = role.skills.find((s) => s.slug === opts.skill);
|
|
41
|
+
const skill = role.skills.refs.find((s) => s.slug === opts.skill);
|
|
42
42
|
if (!skill)
|
|
43
|
-
helpful_errors_1.BadRequestError.throw(`no skill "${opts.skill}" in role "${opts.role}"`, { skills: role.skills.map((thisSkill) => thisSkill.slug) });
|
|
43
|
+
helpful_errors_1.BadRequestError.throw(`no skill "${opts.skill}" in role "${opts.role}"`, { skills: role.skills.refs.map((thisSkill) => thisSkill.slug) });
|
|
44
44
|
// skill-level readme
|
|
45
45
|
return printReadme(`${role.slug}.${skill.slug}`, skill.readme);
|
|
46
46
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invokeReadme.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeReadme.ts"],"names":[],"mappings":";;;AACA,mDAAiD;AAEjD,sEAAmE;AAGnE;;;GAGG;AACI,MAAM,YAAY,GAAG,CAAC,EAC3B,OAAO,EACP,UAAU,GAIX,EAAQ,EAAE;IACT,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0DAA0D,CAAC;SACvE,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;SACxD,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC;SAChD,MAAM,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;SAClD,MAAM,CAAC,CAAC,IAA0D,EAAE,EAAE;QACrE,qBAAqB;QACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI;YAC9B,gCAAe,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAE7D,mBAAmB;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;YAC5B,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC;YAClD,CAAC,CAAC,IAAI,CAAC;QACT,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ;gBACX,gCAAe,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YAE7D,wBAAwB;YACxB,OAAO,WAAW,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1D,CAAC;QAED,eAAe;QACf,MAAM,IAAI,GAAG,IAAA,+BAAc,EAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI;YACP,gCAAe,CAAC,KAAK,CACnB,kBAAkB,IAAI,CAAC,IAAI,4BAA4B,EACvD;gBACE,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC;aAChE,CACF,CAAC;QAEJ,oBAAoB;QACpB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,WAAW,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEjE,gBAAgB;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"invokeReadme.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeReadme.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { RoleRegistry } from '../sdk';
|
|
3
|
+
/**
|
|
4
|
+
* .what = adds the "roles" command to the CLI with subcommands
|
|
5
|
+
* .why = manages role resources (briefs and skills) in .agent/ directory structure
|
|
6
|
+
* .how = registers "link" and "boot" subcommands under "roles"
|
|
7
|
+
*/
|
|
8
|
+
export declare const invokeRoles: ({ program, registries, }: {
|
|
9
|
+
program: Command;
|
|
10
|
+
registries: RoleRegistry[];
|
|
11
|
+
}) => void;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.invokeRoles = void 0;
|
|
4
|
+
const invokeRolesBoot_1 = require("./invokeRolesBoot");
|
|
5
|
+
const invokeRolesLink_1 = require("./invokeRolesLink");
|
|
6
|
+
/**
|
|
7
|
+
* .what = adds the "roles" command to the CLI with subcommands
|
|
8
|
+
* .why = manages role resources (briefs and skills) in .agent/ directory structure
|
|
9
|
+
* .how = registers "link" and "boot" subcommands under "roles"
|
|
10
|
+
*/
|
|
11
|
+
const invokeRoles = ({ program, registries, }) => {
|
|
12
|
+
const rolesCommand = program
|
|
13
|
+
.command('roles')
|
|
14
|
+
.description('manage role resources (link, boot)');
|
|
15
|
+
(0, invokeRolesLink_1.invokeRolesLink)({ command: rolesCommand, registries });
|
|
16
|
+
(0, invokeRolesBoot_1.invokeRolesBoot)({ command: rolesCommand });
|
|
17
|
+
};
|
|
18
|
+
exports.invokeRoles = invokeRoles;
|
|
19
|
+
//# sourceMappingURL=invokeRoles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invokeRoles.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeRoles.ts"],"names":[],"mappings":";;;AAGA,uDAAoD;AACpD,uDAAoD;AAEpD;;;;GAIG;AACI,MAAM,WAAW,GAAG,CAAC,EAC1B,OAAO,EACP,UAAU,GAIX,EAAQ,EAAE;IACT,MAAM,YAAY,GAAG,OAAO;SACzB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,oCAAoC,CAAC,CAAC;IAErD,IAAA,iCAAe,EAAC,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;IACvD,IAAA,iCAAe,EAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC;AAbW,QAAA,WAAW,eAatB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* .what = adds the "roles boot" subcommand to the CLI
|
|
4
|
+
* .why = outputs role resources (briefs and skills) with stats for context loading
|
|
5
|
+
* .how = reads all files in .agent/repo=$repo/role=$role and prints them with formatting
|
|
6
|
+
*/
|
|
7
|
+
export declare const invokeRolesBoot: ({ command }: {
|
|
8
|
+
command: Command;
|
|
9
|
+
}) => void;
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.invokeRolesBoot = void 0;
|
|
4
|
+
const helpful_errors_1 = require("helpful-errors");
|
|
5
|
+
const node_child_process_1 = require("node:child_process");
|
|
6
|
+
const node_fs_1 = require("node:fs");
|
|
7
|
+
const node_path_1 = require("node:path");
|
|
8
|
+
const rhachet_artifact_git_1 = require("rhachet-artifact-git");
|
|
9
|
+
/**
|
|
10
|
+
* .what = extracts documentation from a skill file without showing implementation
|
|
11
|
+
* .why = agents should understand what skills do, not how they do it
|
|
12
|
+
* .how = reads file and extracts only comments/documentation at the top
|
|
13
|
+
*/
|
|
14
|
+
const extractSkillDocumentation = (filepath) => {
|
|
15
|
+
const content = (0, node_fs_1.readFileSync)(filepath, 'utf-8');
|
|
16
|
+
const lines = content.split('\n');
|
|
17
|
+
const docLines = [];
|
|
18
|
+
// Extract shebang and leading comments/documentation
|
|
19
|
+
for (const line of lines) {
|
|
20
|
+
const trimmed = line.trim();
|
|
21
|
+
// Include shebang
|
|
22
|
+
if (trimmed.startsWith('#!')) {
|
|
23
|
+
docLines.push(line);
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
// Include comment lines (shell, python, etc)
|
|
27
|
+
if (trimmed.startsWith('#') ||
|
|
28
|
+
trimmed.startsWith('//') ||
|
|
29
|
+
trimmed.startsWith('*')) {
|
|
30
|
+
docLines.push(line);
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
// Stop at first non-comment, non-blank line
|
|
34
|
+
if (trimmed !== '') {
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
// Include blank lines between comments
|
|
38
|
+
docLines.push(line);
|
|
39
|
+
}
|
|
40
|
+
// If we got some documentation, add a note about implementation being hidden
|
|
41
|
+
if (docLines.length > 0) {
|
|
42
|
+
docLines.push('');
|
|
43
|
+
docLines.push('# [implementation hidden - use skill to execute]');
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
docLines.push('# [no documentation found]');
|
|
47
|
+
docLines.push('# [implementation hidden - use skill to execute]');
|
|
48
|
+
}
|
|
49
|
+
return docLines.join('\n');
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* .what = adds the "roles boot" subcommand to the CLI
|
|
53
|
+
* .why = outputs role resources (briefs and skills) with stats for context loading
|
|
54
|
+
* .how = reads all files in .agent/repo=$repo/role=$role and prints them with formatting
|
|
55
|
+
*/
|
|
56
|
+
const invokeRolesBoot = ({ command }) => {
|
|
57
|
+
command
|
|
58
|
+
.command('boot')
|
|
59
|
+
.description('boot context from role resources (briefs and skills)')
|
|
60
|
+
.option('--repo <slug>', 'the repository slug for the role')
|
|
61
|
+
.option('--role <slug>', 'the role to boot resources for')
|
|
62
|
+
.action(async (opts) => {
|
|
63
|
+
if (!opts.repo)
|
|
64
|
+
helpful_errors_1.BadRequestError.throw('--repo is required (e.g., --repo ehmpathy)');
|
|
65
|
+
if (!opts.role)
|
|
66
|
+
helpful_errors_1.BadRequestError.throw('--role is required (e.g., --role mechanic)');
|
|
67
|
+
const repoSlug = opts.repo;
|
|
68
|
+
const roleSlug = opts.role;
|
|
69
|
+
const roleDir = (0, node_path_1.resolve)(process.cwd(), '.agent', `repo=${repoSlug}`, `role=${roleSlug}`);
|
|
70
|
+
const gitRoot = await (0, rhachet_artifact_git_1.getGitRepoRoot)({ from: roleDir });
|
|
71
|
+
// Check if role directory exists
|
|
72
|
+
if (!(0, node_fs_1.existsSync)(roleDir)) {
|
|
73
|
+
helpful_errors_1.BadRequestError.throw(`Role directory not found: ${roleDir}\nRun "rhachet roles link --repo ${repoSlug} --role ${roleSlug}" first`);
|
|
74
|
+
}
|
|
75
|
+
// Recursively read all files, including those in symlinked directories
|
|
76
|
+
const getAllFiles = (dir) => {
|
|
77
|
+
const entries = (0, node_fs_1.readdirSync)(dir);
|
|
78
|
+
const files = [];
|
|
79
|
+
for (const entry of entries) {
|
|
80
|
+
const fullPath = (0, node_path_1.resolve)(dir, entry);
|
|
81
|
+
const stats = (0, node_fs_1.statSync)(fullPath); // statSync follows symlinks
|
|
82
|
+
if (stats.isDirectory()) {
|
|
83
|
+
// Recursively traverse directories (including symlinked ones)
|
|
84
|
+
files.push(...getAllFiles(fullPath));
|
|
85
|
+
}
|
|
86
|
+
else if (stats.isFile()) {
|
|
87
|
+
files.push(fullPath);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return files;
|
|
91
|
+
};
|
|
92
|
+
const allFiles = getAllFiles(roleDir).sort();
|
|
93
|
+
if (allFiles.length === 0) {
|
|
94
|
+
console.log(``);
|
|
95
|
+
console.log(`⚠️ No resources found in ${roleDir}`);
|
|
96
|
+
console.log(``);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
// Separate files by type
|
|
100
|
+
const briefsDir = (0, node_path_1.resolve)(roleDir, 'briefs');
|
|
101
|
+
const skillsDir = (0, node_path_1.resolve)(roleDir, 'skills');
|
|
102
|
+
const briefFiles = allFiles.filter((f) => f.startsWith(briefsDir));
|
|
103
|
+
const skillFiles = allFiles.filter((f) => f.startsWith(skillsDir));
|
|
104
|
+
const otherFiles = allFiles.filter((f) => !f.startsWith(briefsDir) && !f.startsWith(skillsDir));
|
|
105
|
+
// Count total characters and approximate tokens
|
|
106
|
+
let totalChars = 0;
|
|
107
|
+
for (const filepath of allFiles) {
|
|
108
|
+
const isSkill = filepath.startsWith(skillsDir);
|
|
109
|
+
if (isSkill) {
|
|
110
|
+
// For skills, only count documentation
|
|
111
|
+
const doc = extractSkillDocumentation(filepath);
|
|
112
|
+
totalChars += doc.length;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
// For other files, count full content
|
|
116
|
+
const content = (0, node_fs_1.readFileSync)(filepath, 'utf-8');
|
|
117
|
+
totalChars += content.length;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
const approxTokens = Math.ceil(totalChars / 4);
|
|
121
|
+
const costPerMillionTokens = 3; // $3 per million tokens
|
|
122
|
+
const approxCost = (approxTokens / 1_000_000) * costPerMillionTokens;
|
|
123
|
+
const costFormatted = approxCost < 0.01
|
|
124
|
+
? `< $0.01`
|
|
125
|
+
: `$${approxCost.toFixed(2).replace(/\.?0+$/, '')}`;
|
|
126
|
+
// Print stats helper
|
|
127
|
+
const printStats = () => {
|
|
128
|
+
console.log('#####################################################');
|
|
129
|
+
console.log('#####################################################');
|
|
130
|
+
console.log('#####################################################');
|
|
131
|
+
console.log('## began:stats');
|
|
132
|
+
console.log('#####################################################');
|
|
133
|
+
console.log('');
|
|
134
|
+
console.log(' quant');
|
|
135
|
+
console.log(` ├── files = ${allFiles.length}`);
|
|
136
|
+
console.log(` │ ├── briefs = ${briefFiles.length}`);
|
|
137
|
+
console.log(` │ ├── skills = ${skillFiles.length}`);
|
|
138
|
+
console.log(` │ └── other = ${otherFiles.length}`);
|
|
139
|
+
console.log(` ├── chars = ${totalChars}`);
|
|
140
|
+
console.log(` └── tokens ≈ ${approxTokens} (${costFormatted} at $3/mil)`);
|
|
141
|
+
console.log('');
|
|
142
|
+
console.log(' treestruct');
|
|
143
|
+
const treeOutput = (0, node_child_process_1.execSync)(`tree -l ${roleDir}`, {
|
|
144
|
+
encoding: 'utf-8',
|
|
145
|
+
})
|
|
146
|
+
.split('\n')
|
|
147
|
+
.map((line) => line.replace(/ -> .*$/, ''))
|
|
148
|
+
.map((line) => line.replace(gitRoot, '@gitroot'))
|
|
149
|
+
.filter((line) => !line.match(/^\s*\d+\s+director(y|ies),/))
|
|
150
|
+
.filter((line) => line.trim() !== '')
|
|
151
|
+
.map((line) => ` ${line}`)
|
|
152
|
+
.join('\n');
|
|
153
|
+
console.log(treeOutput);
|
|
154
|
+
console.log('');
|
|
155
|
+
console.log(' quant');
|
|
156
|
+
console.log(` ├── files = ${allFiles.length}`);
|
|
157
|
+
console.log(` │ ├── briefs = ${briefFiles.length}`);
|
|
158
|
+
console.log(` │ ├── skills = ${skillFiles.length}`);
|
|
159
|
+
console.log(` │ └── other = ${otherFiles.length}`);
|
|
160
|
+
console.log(` ├── chars = ${totalChars}`);
|
|
161
|
+
console.log(` └── tokens ≈ ${approxTokens} (${costFormatted} at $3/mil)`);
|
|
162
|
+
console.log('');
|
|
163
|
+
console.log('#####################################################');
|
|
164
|
+
console.log('## ended:stats');
|
|
165
|
+
console.log('#####################################################');
|
|
166
|
+
console.log('#####################################################');
|
|
167
|
+
console.log('#####################################################');
|
|
168
|
+
console.log('');
|
|
169
|
+
};
|
|
170
|
+
// Print stats header
|
|
171
|
+
printStats();
|
|
172
|
+
// Print each file
|
|
173
|
+
for (const filepath of allFiles) {
|
|
174
|
+
const relativePath = `.agent/repo=${repoSlug}/role=${roleSlug}/${(0, node_path_1.relative)(roleDir, filepath)}`;
|
|
175
|
+
const isSkill = filepath.startsWith(skillsDir);
|
|
176
|
+
console.log('#####################################################');
|
|
177
|
+
console.log('#####################################################');
|
|
178
|
+
console.log('#####################################################');
|
|
179
|
+
console.log(`## began:${relativePath}`);
|
|
180
|
+
console.log('#####################################################');
|
|
181
|
+
console.log('');
|
|
182
|
+
// Get content based on file type
|
|
183
|
+
const content = isSkill
|
|
184
|
+
? extractSkillDocumentation(filepath)
|
|
185
|
+
: (0, node_fs_1.readFileSync)(filepath, 'utf-8');
|
|
186
|
+
// Print content with indentation
|
|
187
|
+
const indentedContent = content
|
|
188
|
+
.split('\n')
|
|
189
|
+
.map((line) => ` ${line}`)
|
|
190
|
+
.join('\n');
|
|
191
|
+
console.log(indentedContent);
|
|
192
|
+
console.log('');
|
|
193
|
+
console.log('#####################################################');
|
|
194
|
+
console.log(`## ended:${relativePath}`);
|
|
195
|
+
console.log('#####################################################');
|
|
196
|
+
console.log('#####################################################');
|
|
197
|
+
console.log('#####################################################');
|
|
198
|
+
console.log('');
|
|
199
|
+
}
|
|
200
|
+
// Print stats footer
|
|
201
|
+
printStats();
|
|
202
|
+
});
|
|
203
|
+
};
|
|
204
|
+
exports.invokeRolesBoot = invokeRolesBoot;
|
|
205
|
+
//# sourceMappingURL=invokeRolesBoot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invokeRolesBoot.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeRolesBoot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { RoleRegistry } from '../sdk';
|
|
3
|
+
/**
|
|
4
|
+
* .what = adds the "roles link" subcommand to the CLI
|
|
5
|
+
* .why = creates .agent/ directory structure and links role resources
|
|
6
|
+
* .how = findserts standard readmes and symlinks briefs and skills
|
|
7
|
+
*/
|
|
8
|
+
export declare const invokeRolesLink: ({ command, registries, }: {
|
|
9
|
+
command: Command;
|
|
10
|
+
registries: RoleRegistry[];
|
|
11
|
+
}) => void;
|