@agentbrain/cli 1.2.0 ā 1.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/commands/handoff.d.ts.map +1 -1
- package/dist/commands/handoff.js +35 -21
- package/dist/commands/handoff.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +87 -35
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/setup.d.ts +3 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +135 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../src/commands/handoff.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,wBAAgB,oBAAoB,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../src/commands/handoff.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,wBAAgB,oBAAoB,IAAI,OAAO,CAmB9C"}
|
package/dist/commands/handoff.js
CHANGED
|
@@ -13,24 +13,34 @@ export function createHandoffCommand() {
|
|
|
13
13
|
.option('--path <path>', 'Repository path', process.cwd())
|
|
14
14
|
.option('--goal <goal>', 'Session goal or objective')
|
|
15
15
|
.option('--commits <number>', 'Number of recent commits to include (default: 5)', '5')
|
|
16
|
+
.option('--auto', 'Auto mode - skip prompts and banner (for git hooks)')
|
|
16
17
|
.action(async (options) => {
|
|
17
18
|
try {
|
|
18
19
|
await runHandoff(options);
|
|
19
20
|
}
|
|
20
21
|
catch (err) {
|
|
21
|
-
|
|
22
|
+
if (!options.auto) {
|
|
23
|
+
error(err instanceof Error ? err.message : 'Handoff generation failed');
|
|
24
|
+
}
|
|
22
25
|
process.exit(1);
|
|
23
26
|
}
|
|
24
27
|
});
|
|
25
28
|
return cmd;
|
|
26
29
|
}
|
|
27
30
|
async function runHandoff(options) {
|
|
28
|
-
|
|
31
|
+
const auto = options.auto;
|
|
32
|
+
if (!auto) {
|
|
33
|
+
displayBanner();
|
|
34
|
+
}
|
|
29
35
|
const repoPath = resolve(options.path);
|
|
30
|
-
|
|
36
|
+
if (!auto) {
|
|
37
|
+
info(`Repository: ${repoPath}`);
|
|
38
|
+
}
|
|
31
39
|
// Load AI config
|
|
32
40
|
const aiConfig = await loadAIConfig();
|
|
33
|
-
|
|
41
|
+
if (!auto) {
|
|
42
|
+
info(`Using ${aiConfig.provider} API\n`);
|
|
43
|
+
}
|
|
34
44
|
// Parse commit count
|
|
35
45
|
const commitCount = parseInt(options.commits, 10);
|
|
36
46
|
if (isNaN(commitCount) || commitCount < 1) {
|
|
@@ -38,21 +48,23 @@ async function runHandoff(options) {
|
|
|
38
48
|
}
|
|
39
49
|
// Get session goal if not provided
|
|
40
50
|
let goal = options.goal;
|
|
41
|
-
if (!goal) {
|
|
51
|
+
if (!goal && !auto) {
|
|
42
52
|
goal = await input({
|
|
43
53
|
message: 'Session goal (optional):',
|
|
44
54
|
default: '',
|
|
45
55
|
});
|
|
46
56
|
}
|
|
47
57
|
// Generate handoff
|
|
48
|
-
const spin = spinner('Analyzing changes and generating handoff...');
|
|
58
|
+
const spin = auto ? null : spinner('Analyzing changes and generating handoff...');
|
|
49
59
|
const result = await generateHandoff({
|
|
50
60
|
repoPath,
|
|
51
61
|
aiConfig,
|
|
52
62
|
goal: goal || undefined,
|
|
53
63
|
commitCount,
|
|
54
64
|
});
|
|
55
|
-
|
|
65
|
+
if (!auto) {
|
|
66
|
+
spin?.succeed('Handoff generation complete!');
|
|
67
|
+
}
|
|
56
68
|
// Write to disk
|
|
57
69
|
const outputDir = join(repoPath, 'agentbrain');
|
|
58
70
|
if (!existsSync(outputDir)) {
|
|
@@ -60,20 +72,22 @@ async function runHandoff(options) {
|
|
|
60
72
|
}
|
|
61
73
|
const filePath = join(outputDir, 'handoff.md');
|
|
62
74
|
await writeFile(filePath, result.doc.content, 'utf-8');
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
75
|
+
if (!auto) {
|
|
76
|
+
displayGeneratedFiles([
|
|
77
|
+
{ name: 'agentbrain/handoff.md', description: 'Session handoff document' },
|
|
78
|
+
]);
|
|
79
|
+
if (result.tokenCount > 0) {
|
|
80
|
+
const cost = aiConfig.provider === 'anthropic' ? (result.tokenCount / 1_000_000) * 3.0 : (result.tokenCount / 1_000_000) * 2.5;
|
|
81
|
+
info(`Tokens used: ${result.tokenCount.toLocaleString()} (~$${cost.toFixed(4)})`);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
info('No AI tokens used (no changes detected)');
|
|
85
|
+
}
|
|
86
|
+
success('Handoff document generated!');
|
|
87
|
+
console.log('\nš Next steps:\n');
|
|
88
|
+
console.log(' ⢠Share agentbrain/handoff.md with the next developer or session');
|
|
89
|
+
console.log(' ⢠Reference it at the start of your next session for context');
|
|
90
|
+
console.log();
|
|
72
91
|
}
|
|
73
|
-
success('Handoff document generated!');
|
|
74
|
-
console.log('\nš Next steps:\n');
|
|
75
|
-
console.log(' ⢠Share agentbrain/handoff.md with the next developer or session');
|
|
76
|
-
console.log(' ⢠Reference it at the start of your next session for context');
|
|
77
|
-
console.log();
|
|
78
92
|
}
|
|
79
93
|
//# sourceMappingURL=handoff.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../src/commands/handoff.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAEnG,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;SAC/B,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,eAAe,EAAE,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SACzD,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;SACpD,MAAM,CAAC,oBAAoB,EAAE,kDAAkD,EAAE,GAAG,CAAC;SACrF,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,OAAO,CAAC,CAAA;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../src/commands/handoff.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAEnG,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;SAC/B,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,eAAe,EAAE,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SACzD,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;SACpD,MAAM,CAAC,oBAAoB,EAAE,kDAAkD,EAAE,GAAG,CAAC;SACrF,MAAM,CAAC,QAAQ,EAAE,qDAAqD,CAAC;SACvE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,OAAO,CAAC,CAAA;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAA;YACzE,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,OAKzB;IACC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;IAEzB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,aAAa,EAAE,CAAA;IACjB,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAEtC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAA;IACjC,CAAC;IAED,iBAAiB;IACjB,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAA;IAErC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,CAAC,SAAS,QAAQ,CAAC,QAAQ,QAAQ,CAAC,CAAA;IAC1C,CAAC;IAED,qBAAqB;IACrB,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IACjD,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;IACtD,CAAC;IAED,mCAAmC;IACnC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;IAEvB,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,IAAI,GAAG,MAAM,KAAK,CAAC;YACjB,OAAO,EAAE,0BAA0B;YACnC,OAAO,EAAE,EAAE;SACZ,CAAC,CAAA;IACJ,CAAC;IAED,mBAAmB;IACnB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAA;IAEjF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;QACnC,QAAQ;QACR,QAAQ;QACR,IAAI,EAAE,IAAI,IAAI,SAAS;QACvB,WAAW;KACZ,CAAC,CAAA;IAEF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,EAAE,OAAO,CAAC,8BAA8B,CAAC,CAAA;IAC/C,CAAC;IAED,gBAAgB;IAChB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IAC9C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7C,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IAC9C,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAEtD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,qBAAqB,CAAC;YACpB,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,0BAA0B,EAAE;SAC3E,CAAC,CAAA;QAEF,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,GACR,QAAQ,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC,GAAG,GAAG,CAAA;YACnH,IAAI,CAAC,gBAAgB,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACnF,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,yCAAyC,CAAC,CAAA;QACjD,CAAC;QAED,OAAO,CAAC,6BAA6B,CAAC,CAAA;QAEtC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAA;QACjF,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAA;QAC7E,OAAO,CAAC,GAAG,EAAE,CAAA;IACf,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA6BnC,wBAAgB,iBAAiB,IAAI,OAAO,CAsB3C"}
|
package/dist/commands/init.js
CHANGED
|
@@ -5,7 +5,7 @@ import { resolve } from 'node:path';
|
|
|
5
5
|
import { writeFile, mkdir } from 'node:fs/promises';
|
|
6
6
|
import { existsSync } from 'node:fs';
|
|
7
7
|
import { join } from 'node:path';
|
|
8
|
-
import { loadAIConfig, generateContext, estimateContextCost, scanRepository, } from '@agentbrain/core';
|
|
8
|
+
import { loadAIConfig, generateContext, estimateContextCost, scanRepository, injectIntoAllAgents, detectAgents, AGENT_FILE_PATHS, } from '@agentbrain/core';
|
|
9
9
|
import { displayBanner, success, error, info, spinner, displayFileTable, displayCostEstimate, displayActualCost, displayGeneratedFiles, displayNextSteps, displayProviderInfo, } from '../display.js';
|
|
10
10
|
export function createInitCommand() {
|
|
11
11
|
const cmd = new Command('init')
|
|
@@ -14,51 +14,77 @@ export function createInitCommand() {
|
|
|
14
14
|
.option('--max-files <number>', 'Maximum files to analyze', '100')
|
|
15
15
|
.option('--no-cache', 'Skip cache and regenerate')
|
|
16
16
|
.option('--dry-run', 'Show what would be generated without actually generating')
|
|
17
|
+
.option('--silent', 'Suppress output (for git hooks)')
|
|
18
|
+
.option('--no-confirm', 'Skip confirmation prompts')
|
|
19
|
+
.option('--no-inject', 'Skip agent file injection')
|
|
17
20
|
.action(async (options) => {
|
|
18
21
|
try {
|
|
19
22
|
await runInit(options);
|
|
20
23
|
}
|
|
21
24
|
catch (err) {
|
|
22
|
-
|
|
25
|
+
if (!options.silent) {
|
|
26
|
+
error(err instanceof Error ? err.message : 'Initialization failed');
|
|
27
|
+
}
|
|
23
28
|
process.exit(1);
|
|
24
29
|
}
|
|
25
30
|
});
|
|
26
31
|
return cmd;
|
|
27
32
|
}
|
|
28
33
|
async function runInit(options) {
|
|
29
|
-
|
|
34
|
+
const silent = options.silent;
|
|
35
|
+
if (!silent) {
|
|
36
|
+
displayBanner();
|
|
37
|
+
}
|
|
30
38
|
const repoPath = resolve(options.path);
|
|
31
39
|
const maxFiles = parseInt(options.maxFiles, 10);
|
|
32
40
|
const useCache = options.cache;
|
|
33
|
-
|
|
41
|
+
const skipConfirm = !options.confirm;
|
|
42
|
+
const skipInject = !options.inject;
|
|
43
|
+
if (!silent) {
|
|
44
|
+
info(`Repository: ${repoPath}`);
|
|
45
|
+
}
|
|
34
46
|
// Load AI config
|
|
35
47
|
const aiConfig = await loadAIConfig();
|
|
36
|
-
|
|
48
|
+
if (!silent) {
|
|
49
|
+
displayProviderInfo(aiConfig.provider, aiConfig.models);
|
|
50
|
+
}
|
|
37
51
|
// Scan repository
|
|
38
|
-
const spin = spinner('Scanning repository...');
|
|
52
|
+
const spin = silent ? null : spinner('Scanning repository...');
|
|
39
53
|
const scanResult = await scanRepository(repoPath, { maxFiles });
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
54
|
+
if (!silent) {
|
|
55
|
+
spin?.succeed(`Found ${scanResult.totalFiles} files, selected ${scanResult.relevantFiles.length} relevant files`);
|
|
56
|
+
console.log();
|
|
57
|
+
displayFileTable(scanResult.relevantFiles, 8);
|
|
58
|
+
}
|
|
43
59
|
// Estimate cost
|
|
44
|
-
|
|
60
|
+
if (!silent) {
|
|
61
|
+
info('Estimating cost...');
|
|
62
|
+
}
|
|
45
63
|
const estimate = await estimateContextCost(repoPath, aiConfig, maxFiles);
|
|
46
|
-
|
|
64
|
+
if (!silent) {
|
|
65
|
+
displayCostEstimate(estimate);
|
|
66
|
+
}
|
|
47
67
|
if (options.dryRun) {
|
|
48
|
-
|
|
68
|
+
if (!silent) {
|
|
69
|
+
info('Dry run complete - no files generated');
|
|
70
|
+
}
|
|
49
71
|
return;
|
|
50
72
|
}
|
|
51
73
|
// Confirm generation
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
74
|
+
if (!skipConfirm) {
|
|
75
|
+
const confirmed = await confirm({
|
|
76
|
+
message: 'Generate context docs?',
|
|
77
|
+
default: true,
|
|
78
|
+
});
|
|
79
|
+
if (!confirmed) {
|
|
80
|
+
if (!silent) {
|
|
81
|
+
info('Cancelled');
|
|
82
|
+
}
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
59
85
|
}
|
|
60
86
|
// Generate context
|
|
61
|
-
const genSpin = spinner('Generating context documents...');
|
|
87
|
+
const genSpin = silent ? null : spinner('Generating context documents...');
|
|
62
88
|
let lastProgress = '';
|
|
63
89
|
const result = await generateContext({
|
|
64
90
|
repoPath,
|
|
@@ -66,13 +92,17 @@ async function runInit(options) {
|
|
|
66
92
|
maxFiles,
|
|
67
93
|
useCache,
|
|
68
94
|
onProgress: (msg) => {
|
|
69
|
-
if (msg !== lastProgress) {
|
|
70
|
-
genSpin
|
|
95
|
+
if (!silent && msg !== lastProgress) {
|
|
96
|
+
if (genSpin) {
|
|
97
|
+
genSpin.text = msg;
|
|
98
|
+
}
|
|
71
99
|
lastProgress = msg;
|
|
72
100
|
}
|
|
73
101
|
},
|
|
74
102
|
});
|
|
75
|
-
|
|
103
|
+
if (!silent) {
|
|
104
|
+
genSpin?.succeed('Context generation complete!');
|
|
105
|
+
}
|
|
76
106
|
// Write files to disk
|
|
77
107
|
const outputDir = join(repoPath, 'agentbrain');
|
|
78
108
|
if (!existsSync(outputDir)) {
|
|
@@ -83,18 +113,40 @@ async function runInit(options) {
|
|
|
83
113
|
const filePath = join(outputDir, fileName);
|
|
84
114
|
await writeFile(filePath, doc.content, 'utf-8');
|
|
85
115
|
}
|
|
116
|
+
// Inject into agent files
|
|
117
|
+
if (!skipInject) {
|
|
118
|
+
const agents = detectAgents(repoPath);
|
|
119
|
+
if (agents.length > 0) {
|
|
120
|
+
const gitHash = scanResult.gitHash;
|
|
121
|
+
const injectionResults = await injectIntoAllAgents(repoPath, gitHash);
|
|
122
|
+
if (!silent && injectionResults.length > 0) {
|
|
123
|
+
console.log();
|
|
124
|
+
info('Updated agent files with context loading instructions:');
|
|
125
|
+
for (const { agent, created, updated } of injectionResults) {
|
|
126
|
+
const action = created ? 'Created' : updated ? 'Updated' : 'Checked';
|
|
127
|
+
console.log(` ā ${action} ${AGENT_FILE_PATHS[agent]}`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
else if (!silent) {
|
|
132
|
+
console.log();
|
|
133
|
+
info('No agent files detected. Create CLAUDE.md, .cursor/rules, or .windsurfrules to enable auto-injection.');
|
|
134
|
+
}
|
|
135
|
+
}
|
|
86
136
|
// Display summary
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
'
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
137
|
+
if (!silent) {
|
|
138
|
+
displayGeneratedFiles([
|
|
139
|
+
{ name: 'agentbrain/context.md', description: 'Full repo intelligence' },
|
|
140
|
+
{ name: 'agentbrain/dependency-map.md', description: 'Service relationships' },
|
|
141
|
+
{ name: 'agentbrain/patterns.md', description: 'Coding patterns' },
|
|
142
|
+
]);
|
|
143
|
+
displayActualCost(result.totalTokens, result.cost);
|
|
144
|
+
const nextSteps = ['Run "agentbrain setup" to install git hooks for auto-refresh'];
|
|
145
|
+
if (detectAgents(repoPath).length === 0) {
|
|
146
|
+
nextSteps.push('Create CLAUDE.md, .cursor/rules, or .windsurfrules for your agent');
|
|
147
|
+
}
|
|
148
|
+
displayNextSteps(nextSteps);
|
|
149
|
+
success('AgentBrain initialization complete!');
|
|
150
|
+
}
|
|
99
151
|
}
|
|
100
152
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,uCAAuC;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EACL,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,cAAc,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA0BnC,wBAAgB,kBAAkB,IAAI,OAAO,CAgB5C"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
// Setup command - one-command complete setup
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { confirm, checkbox } from '@inquirer/prompts';
|
|
4
|
+
import { resolve } from 'node:path';
|
|
5
|
+
import { isGitRepository, installAllHooks, detectAgents, loadAIConfig, generateContext, injectIntoAllAgents, AGENT_FILE_PATHS, } from '@agentbrain/core';
|
|
6
|
+
import { writeFile, mkdir } from 'node:fs/promises';
|
|
7
|
+
import { existsSync } from 'node:fs';
|
|
8
|
+
import { join } from 'node:path';
|
|
9
|
+
import { displayBanner, success, error, info, spinner, displayGeneratedFiles, displayActualCost, } from '../display.js';
|
|
10
|
+
export function createSetupCommand() {
|
|
11
|
+
const cmd = new Command('setup')
|
|
12
|
+
.description('One-command setup for AgentBrain (init + hooks + agent files)')
|
|
13
|
+
.option('--path <path>', 'Repository path', process.cwd())
|
|
14
|
+
.option('--skip-hooks', 'Skip git hooks installation')
|
|
15
|
+
.option('--skip-agent-files', 'Skip agent file injection')
|
|
16
|
+
.action(async (options) => {
|
|
17
|
+
try {
|
|
18
|
+
await runSetup(options);
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
error(err instanceof Error ? err.message : 'Setup failed');
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
return cmd;
|
|
26
|
+
}
|
|
27
|
+
async function runSetup(options) {
|
|
28
|
+
displayBanner();
|
|
29
|
+
const repoPath = resolve(options.path);
|
|
30
|
+
info(`Repository: ${repoPath}`);
|
|
31
|
+
console.log();
|
|
32
|
+
// Check git repository
|
|
33
|
+
if (!isGitRepository(repoPath)) {
|
|
34
|
+
error('Not a git repository. Please run "git init" first.');
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
// Step 1: Detect or select agents
|
|
38
|
+
let selectedAgents = detectAgents(repoPath);
|
|
39
|
+
if (selectedAgents.length === 0 && !options.skipAgentFiles) {
|
|
40
|
+
info('No agent files detected. Which agent(s) do you use?\n');
|
|
41
|
+
const agents = await checkbox({
|
|
42
|
+
message: 'Select all that apply:',
|
|
43
|
+
choices: [
|
|
44
|
+
{ name: 'Claude Code (CLAUDE.md)', value: 'claude-code' },
|
|
45
|
+
{ name: 'Cursor (.cursor/rules)', value: 'cursor' },
|
|
46
|
+
{ name: 'Windsurf (.windsurfrules)', value: 'windsurf' },
|
|
47
|
+
],
|
|
48
|
+
});
|
|
49
|
+
selectedAgents = agents;
|
|
50
|
+
if (selectedAgents.length === 0) {
|
|
51
|
+
info('\nNo agents selected. Skipping agent file creation.');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Step 2: Load AI config
|
|
55
|
+
info('\nLoading AI configuration...');
|
|
56
|
+
const aiConfig = await loadAIConfig();
|
|
57
|
+
info(`ā Using ${aiConfig.provider} API`);
|
|
58
|
+
// Step 3: Generate context
|
|
59
|
+
console.log();
|
|
60
|
+
const confirmed = await confirm({
|
|
61
|
+
message: 'Generate initial context documentation?',
|
|
62
|
+
default: true,
|
|
63
|
+
});
|
|
64
|
+
if (!confirmed) {
|
|
65
|
+
info('Skipping context generation.');
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const spin = spinner('Generating context...');
|
|
69
|
+
const result = await generateContext({
|
|
70
|
+
repoPath,
|
|
71
|
+
aiConfig,
|
|
72
|
+
maxFiles: 100,
|
|
73
|
+
useCache: true,
|
|
74
|
+
onProgress: (msg) => {
|
|
75
|
+
spin.text = msg;
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
spin.succeed('Context generated!');
|
|
79
|
+
// Write files
|
|
80
|
+
const outputDir = join(repoPath, 'agentbrain');
|
|
81
|
+
if (!existsSync(outputDir)) {
|
|
82
|
+
await mkdir(outputDir, { recursive: true });
|
|
83
|
+
}
|
|
84
|
+
for (const doc of result.docs) {
|
|
85
|
+
const fileName = `${doc.type}.md`;
|
|
86
|
+
const filePath = join(outputDir, fileName);
|
|
87
|
+
await writeFile(filePath, doc.content, 'utf-8');
|
|
88
|
+
}
|
|
89
|
+
// Get git hash from result
|
|
90
|
+
const gitHash = result.docs[0]?.gitHash || 'unknown';
|
|
91
|
+
// Step 4: Inject into agent files
|
|
92
|
+
if (!options.skipAgentFiles && selectedAgents.length > 0) {
|
|
93
|
+
console.log();
|
|
94
|
+
info('Updating agent files...');
|
|
95
|
+
for (const agent of selectedAgents) {
|
|
96
|
+
await injectIntoAllAgents(repoPath, gitHash);
|
|
97
|
+
const filePath = AGENT_FILE_PATHS[agent];
|
|
98
|
+
console.log(` ā Updated ${filePath}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Step 5: Install git hooks
|
|
102
|
+
if (!options.skipHooks) {
|
|
103
|
+
console.log();
|
|
104
|
+
const installHooks = await confirm({
|
|
105
|
+
message: 'Install git hooks for auto-refresh on commits?',
|
|
106
|
+
default: true,
|
|
107
|
+
});
|
|
108
|
+
if (installHooks) {
|
|
109
|
+
const { installed } = await installAllHooks(repoPath);
|
|
110
|
+
info('Git hooks installed:');
|
|
111
|
+
for (const hook of installed) {
|
|
112
|
+
console.log(` ā ${hook}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// Summary
|
|
117
|
+
console.log();
|
|
118
|
+
displayGeneratedFiles([
|
|
119
|
+
{ name: 'agentbrain/context.md', description: 'Full repo intelligence' },
|
|
120
|
+
{ name: 'agentbrain/dependency-map.md', description: 'Service relationships' },
|
|
121
|
+
{ name: 'agentbrain/patterns.md', description: 'Coding patterns' },
|
|
122
|
+
]);
|
|
123
|
+
displayActualCost(result.totalTokens, result.cost);
|
|
124
|
+
console.log();
|
|
125
|
+
success('š AgentBrain setup complete!');
|
|
126
|
+
console.log();
|
|
127
|
+
console.log('What happens now:');
|
|
128
|
+
console.log(' ā Your agent will automatically load context at session start');
|
|
129
|
+
console.log(' ā Context refreshes automatically after every commit');
|
|
130
|
+
console.log(' ā Handoff documents generated automatically');
|
|
131
|
+
console.log();
|
|
132
|
+
console.log('Just start coding - AgentBrain works invisibly in the background!');
|
|
133
|
+
console.log();
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5,12 +5,14 @@ import { createConfigCommand } from './commands/config.js';
|
|
|
5
5
|
import { createInitCommand } from './commands/init.js';
|
|
6
6
|
import { createStandardsCommand } from './commands/standards.js';
|
|
7
7
|
import { createHandoffCommand } from './commands/handoff.js';
|
|
8
|
+
import { createSetupCommand } from './commands/setup.js';
|
|
8
9
|
const program = new Command();
|
|
9
10
|
program
|
|
10
11
|
.name('agentbrain')
|
|
11
12
|
.description('Generate smart context docs for coding agents')
|
|
12
|
-
.version('1.
|
|
13
|
+
.version('1.3.0');
|
|
13
14
|
// Add commands
|
|
15
|
+
program.addCommand(createSetupCommand());
|
|
14
16
|
program.addCommand(createInitCommand());
|
|
15
17
|
program.addCommand(createStandardsCommand());
|
|
16
18
|
program.addCommand(createHandoffCommand());
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,6BAA6B;AAE7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,6BAA6B;AAE7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAExD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,OAAO,CAAC,OAAO,CAAC,CAAA;AAEnB,eAAe;AACf,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAA;AACxC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAA;AACvC,OAAO,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAA;AAC5C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAA;AAC1C,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAA;AAEzC,kBAAkB;AAClB,OAAO,CAAC,KAAK,EAAE,CAAA"}
|