beth-copilot 1.0.14 → 1.0.16
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/CHANGELOG.md +195 -177
- package/README.md +528 -185
- package/bin/cli.js +47 -0
- package/dist/cli/commands/doctor.e2e.test.d.ts +8 -0
- package/dist/cli/commands/doctor.e2e.test.d.ts.map +1 -0
- package/dist/cli/commands/doctor.e2e.test.js +428 -0
- package/dist/cli/commands/doctor.e2e.test.js.map +1 -0
- package/dist/cli/commands/doctor.test.js +1 -1
- package/dist/cli/commands/help.e2e.test.d.ts +9 -0
- package/dist/cli/commands/help.e2e.test.d.ts.map +1 -0
- package/dist/cli/commands/help.e2e.test.js +150 -0
- package/dist/cli/commands/help.e2e.test.js.map +1 -0
- package/dist/cli/commands/init.test.d.ts +6 -0
- package/dist/cli/commands/init.test.d.ts.map +1 -0
- package/dist/cli/commands/init.test.js +289 -0
- package/dist/cli/commands/init.test.js.map +1 -0
- package/dist/cli/commands/mcp.e2e.test.d.ts +9 -0
- package/dist/cli/commands/mcp.e2e.test.d.ts.map +1 -0
- package/dist/cli/commands/mcp.e2e.test.js +139 -0
- package/dist/cli/commands/mcp.e2e.test.js.map +1 -0
- package/dist/cli/commands/pipeline.e2e.test.d.ts +9 -0
- package/dist/cli/commands/pipeline.e2e.test.d.ts.map +1 -0
- package/dist/cli/commands/pipeline.e2e.test.js +192 -0
- package/dist/cli/commands/pipeline.e2e.test.js.map +1 -0
- package/dist/cli/commands/quickstart.test.d.ts +6 -0
- package/dist/cli/commands/quickstart.test.d.ts.map +1 -0
- package/dist/cli/commands/quickstart.test.js +232 -0
- package/dist/cli/commands/quickstart.test.js.map +1 -0
- package/dist/core/agents/frontmatter.test.d.ts +8 -0
- package/dist/core/agents/frontmatter.test.d.ts.map +1 -0
- package/dist/core/agents/frontmatter.test.js +589 -0
- package/dist/core/agents/frontmatter.test.js.map +1 -0
- package/dist/core/agents/handoffs.test.d.ts +8 -0
- package/dist/core/agents/handoffs.test.d.ts.map +1 -0
- package/dist/core/agents/handoffs.test.js +320 -0
- package/dist/core/agents/handoffs.test.js.map +1 -0
- package/dist/core/agents/loader.test.js +1 -1
- package/dist/core/agents/suite.test.d.ts +8 -0
- package/dist/core/agents/suite.test.d.ts.map +1 -0
- package/dist/core/agents/suite.test.js +207 -0
- package/dist/core/agents/suite.test.js.map +1 -0
- package/dist/core/agents/tools.test.d.ts +8 -0
- package/dist/core/agents/tools.test.d.ts.map +1 -0
- package/dist/core/agents/tools.test.js +332 -0
- package/dist/core/agents/tools.test.js.map +1 -0
- package/dist/core/context.d.ts +171 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +353 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/context.test.d.ts +8 -0
- package/dist/core/context.test.d.ts.map +1 -0
- package/dist/core/context.test.js +253 -0
- package/dist/core/context.test.js.map +1 -0
- package/dist/core/handoffs.d.ts +151 -0
- package/dist/core/handoffs.d.ts.map +1 -0
- package/dist/core/handoffs.js +220 -0
- package/dist/core/handoffs.js.map +1 -0
- package/dist/core/handoffs.test.d.ts +8 -0
- package/dist/core/handoffs.test.d.ts.map +1 -0
- package/dist/core/handoffs.test.js +231 -0
- package/dist/core/handoffs.test.js.map +1 -0
- package/dist/core/orchestrator.d.ts +246 -0
- package/dist/core/orchestrator.d.ts.map +1 -0
- package/dist/core/orchestrator.js +514 -0
- package/dist/core/orchestrator.js.map +1 -0
- package/dist/core/orchestrator.test.d.ts +8 -0
- package/dist/core/orchestrator.test.d.ts.map +1 -0
- package/dist/core/orchestrator.test.js +517 -0
- package/dist/core/orchestrator.test.js.map +1 -0
- package/dist/core/router.d.ts +102 -0
- package/dist/core/router.d.ts.map +1 -0
- package/dist/core/router.js +178 -0
- package/dist/core/router.js.map +1 -0
- package/dist/core/router.test.d.ts +8 -0
- package/dist/core/router.test.d.ts.map +1 -0
- package/dist/core/router.test.js +215 -0
- package/dist/core/router.test.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/init.test.js +288 -0
- package/dist/providers/azure.d.ts +147 -0
- package/dist/providers/azure.d.ts.map +1 -0
- package/dist/providers/azure.js +491 -0
- package/dist/providers/azure.js.map +1 -0
- package/dist/providers/azure.test.d.ts +11 -0
- package/dist/providers/azure.test.d.ts.map +1 -0
- package/dist/providers/azure.test.js +330 -0
- package/dist/providers/azure.test.js.map +1 -0
- package/dist/providers/config.d.ts +87 -0
- package/dist/providers/config.d.ts.map +1 -0
- package/dist/providers/config.js +193 -0
- package/dist/providers/config.js.map +1 -0
- package/dist/providers/config.test.d.ts +7 -0
- package/dist/providers/config.test.d.ts.map +1 -0
- package/dist/providers/config.test.js +370 -0
- package/dist/providers/config.test.js.map +1 -0
- package/dist/providers/index.d.ts +18 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +14 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/interface.d.ts +191 -0
- package/dist/providers/interface.d.ts.map +1 -0
- package/dist/providers/interface.js +94 -0
- package/dist/providers/interface.js.map +1 -0
- package/dist/providers/retry.d.ts +128 -0
- package/dist/providers/retry.d.ts.map +1 -0
- package/dist/providers/retry.js +205 -0
- package/dist/providers/retry.js.map +1 -0
- package/dist/providers/retry.test.d.ts +7 -0
- package/dist/providers/retry.test.d.ts.map +1 -0
- package/dist/providers/retry.test.js +439 -0
- package/dist/providers/retry.test.js.map +1 -0
- package/dist/providers/streaming.d.ts +157 -0
- package/dist/providers/streaming.d.ts.map +1 -0
- package/dist/providers/streaming.js +233 -0
- package/dist/providers/streaming.js.map +1 -0
- package/dist/providers/streaming.test.d.ts +7 -0
- package/dist/providers/streaming.test.d.ts.map +1 -0
- package/dist/providers/streaming.test.js +372 -0
- package/dist/providers/streaming.test.js.map +1 -0
- package/dist/providers/types.d.ts +209 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +53 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/providers/types.test.d.ts +7 -0
- package/dist/providers/types.test.d.ts.map +1 -0
- package/dist/providers/types.test.js +141 -0
- package/dist/providers/types.test.js.map +1 -0
- package/dist/tools/cli/beads.d.ts +27 -0
- package/dist/tools/cli/beads.d.ts.map +1 -0
- package/dist/tools/cli/beads.js +172 -0
- package/dist/tools/cli/beads.js.map +1 -0
- package/dist/tools/cli/beads.test.d.ts +8 -0
- package/dist/tools/cli/beads.test.d.ts.map +1 -0
- package/dist/tools/cli/beads.test.js +264 -0
- package/dist/tools/cli/beads.test.js.map +1 -0
- package/dist/tools/cli/editFile.d.ts +17 -0
- package/dist/tools/cli/editFile.d.ts.map +1 -0
- package/dist/tools/cli/editFile.js +125 -0
- package/dist/tools/cli/editFile.js.map +1 -0
- package/dist/tools/cli/editFile.test.d.ts +8 -0
- package/dist/tools/cli/editFile.test.d.ts.map +1 -0
- package/dist/tools/cli/editFile.test.js +177 -0
- package/dist/tools/cli/editFile.test.js.map +1 -0
- package/dist/tools/cli/readFile.d.ts +25 -0
- package/dist/tools/cli/readFile.d.ts.map +1 -0
- package/dist/tools/cli/readFile.js +118 -0
- package/dist/tools/cli/readFile.js.map +1 -0
- package/dist/tools/cli/readFile.test.d.ts +8 -0
- package/dist/tools/cli/readFile.test.d.ts.map +1 -0
- package/dist/tools/cli/readFile.test.js +194 -0
- package/dist/tools/cli/readFile.test.js.map +1 -0
- package/dist/tools/cli/search.d.ts +16 -0
- package/dist/tools/cli/search.d.ts.map +1 -0
- package/dist/tools/cli/search.js +261 -0
- package/dist/tools/cli/search.js.map +1 -0
- package/dist/tools/cli/search.test.d.ts +8 -0
- package/dist/tools/cli/search.test.d.ts.map +1 -0
- package/dist/tools/cli/search.test.js +172 -0
- package/dist/tools/cli/search.test.js.map +1 -0
- package/dist/tools/cli/subagent.d.ts +43 -0
- package/dist/tools/cli/subagent.d.ts.map +1 -0
- package/dist/tools/cli/subagent.js +99 -0
- package/dist/tools/cli/subagent.js.map +1 -0
- package/dist/tools/cli/subagent.test.d.ts +8 -0
- package/dist/tools/cli/subagent.test.d.ts.map +1 -0
- package/dist/tools/cli/subagent.test.js +190 -0
- package/dist/tools/cli/subagent.test.js.map +1 -0
- package/dist/tools/cli/terminal.d.ts +19 -0
- package/dist/tools/cli/terminal.d.ts.map +1 -0
- package/dist/tools/cli/terminal.js +164 -0
- package/dist/tools/cli/terminal.js.map +1 -0
- package/dist/tools/cli/terminal.test.d.ts +8 -0
- package/dist/tools/cli/terminal.test.d.ts.map +1 -0
- package/dist/tools/cli/terminal.test.js +161 -0
- package/dist/tools/cli/terminal.test.js.map +1 -0
- package/dist/tools/index.d.ts +25 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +41 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/interface.d.ts +64 -0
- package/dist/tools/interface.d.ts.map +1 -0
- package/dist/tools/interface.js +37 -0
- package/dist/tools/interface.js.map +1 -0
- package/dist/tools/interface.test.d.ts +7 -0
- package/dist/tools/interface.test.d.ts.map +1 -0
- package/dist/tools/interface.test.js +179 -0
- package/dist/tools/interface.test.js.map +1 -0
- package/dist/tools/mcp/bridge.d.ts +48 -0
- package/dist/tools/mcp/bridge.d.ts.map +1 -0
- package/dist/tools/mcp/bridge.js +128 -0
- package/dist/tools/mcp/bridge.js.map +1 -0
- package/dist/tools/mcp/bridge.test.d.ts +8 -0
- package/dist/tools/mcp/bridge.test.d.ts.map +1 -0
- package/dist/tools/mcp/bridge.test.js +300 -0
- package/dist/tools/mcp/bridge.test.js.map +1 -0
- package/dist/tools/mcp/client.d.ts +135 -0
- package/dist/tools/mcp/client.d.ts.map +1 -0
- package/dist/tools/mcp/client.js +263 -0
- package/dist/tools/mcp/client.js.map +1 -0
- package/dist/tools/mcp/client.test.d.ts +8 -0
- package/dist/tools/mcp/client.test.d.ts.map +1 -0
- package/dist/tools/mcp/client.test.js +390 -0
- package/dist/tools/mcp/client.test.js.map +1 -0
- package/dist/tools/registry.d.ts +82 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +99 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/registry.test.d.ts +7 -0
- package/dist/tools/registry.test.d.ts.map +1 -0
- package/dist/tools/registry.test.js +199 -0
- package/dist/tools/registry.test.js.map +1 -0
- package/dist/tools/suite.test.d.ts +11 -0
- package/dist/tools/suite.test.d.ts.map +1 -0
- package/dist/tools/suite.test.js +119 -0
- package/dist/tools/suite.test.js.map +1 -0
- package/dist/tools/types.d.ts +75 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +30 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/types.test.d.ts +7 -0
- package/dist/tools/types.test.d.ts.map +1 -0
- package/dist/tools/types.test.js +178 -0
- package/dist/tools/types.test.js.map +1 -0
- package/package.json +60 -56
- package/sbom.json +3302 -8
- package/templates/.github/agents/beth.agent.md +329 -329
- package/templates/.github/agents/developer.agent.md +572 -572
- package/templates/.github/agents/product-manager.agent.md +272 -272
- package/templates/.github/agents/researcher.agent.md +338 -338
- package/templates/.github/agents/security-reviewer.agent.md +465 -465
- package/templates/.github/agents/tester.agent.md +496 -496
- package/templates/.github/agents/ux-designer.agent.md +393 -393
- package/templates/mcp.json.example +4 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.e2e.test.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.e2e.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* E2E tests for the full init → doctor pipeline.
|
|
3
|
+
* Run with: node --test dist/cli/commands/pipeline.e2e.test.js
|
|
4
|
+
*
|
|
5
|
+
* Tests the intended user journey: run init, then doctor to verify,
|
|
6
|
+
* confirming the two commands compose correctly.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=pipeline.e2e.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.e2e.test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/pipeline.e2e.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* E2E tests for the full init → doctor pipeline.
|
|
3
|
+
* Run with: node --test dist/cli/commands/pipeline.e2e.test.js
|
|
4
|
+
*
|
|
5
|
+
* Tests the intended user journey: run init, then doctor to verify,
|
|
6
|
+
* confirming the two commands compose correctly.
|
|
7
|
+
*/
|
|
8
|
+
import { describe, it, beforeEach, afterEach } from 'node:test';
|
|
9
|
+
import assert from 'node:assert';
|
|
10
|
+
import { execSync } from 'child_process';
|
|
11
|
+
import { existsSync, mkdirSync, rmSync, readdirSync, readFileSync, writeFileSync } from 'fs';
|
|
12
|
+
import { join, resolve } from 'path';
|
|
13
|
+
import { tmpdir } from 'os';
|
|
14
|
+
const CLI_PATH = resolve(join(import.meta.dirname, '..', '..', '..', 'bin', 'cli.js'));
|
|
15
|
+
// Expected counts from templates
|
|
16
|
+
const EXPECTED_AGENT_COUNT = 7;
|
|
17
|
+
const EXPECTED_SKILL_COUNT = 6;
|
|
18
|
+
/**
|
|
19
|
+
* Run a CLI command in a directory.
|
|
20
|
+
*/
|
|
21
|
+
function runCli(cwd, command, flags = []) {
|
|
22
|
+
const argStr = flags.length > 0 ? ` ${flags.join(' ')}` : '';
|
|
23
|
+
try {
|
|
24
|
+
const stdout = execSync(`node "${CLI_PATH}" ${command}${argStr}`, {
|
|
25
|
+
cwd,
|
|
26
|
+
encoding: 'utf-8',
|
|
27
|
+
env: { ...process.env, NO_COLOR: '1' },
|
|
28
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
29
|
+
});
|
|
30
|
+
return { stdout, stderr: '', code: 0 };
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
const e = error;
|
|
34
|
+
return { stdout: e.stdout || '', stderr: e.stderr || '', code: e.status || 1 };
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
describe('init → doctor pipeline E2E', () => {
|
|
38
|
+
let testDir;
|
|
39
|
+
beforeEach(() => {
|
|
40
|
+
testDir = join(tmpdir(), `beth-pipeline-${Date.now()}-${Math.random().toString(36).slice(2)}`);
|
|
41
|
+
mkdirSync(testDir, { recursive: true });
|
|
42
|
+
});
|
|
43
|
+
afterEach(() => {
|
|
44
|
+
if (existsSync(testDir)) {
|
|
45
|
+
rmSync(testDir, { recursive: true, force: true });
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
describe('init creates what doctor checks', () => {
|
|
49
|
+
it('should pass agent check after init', () => {
|
|
50
|
+
// Step 1: Run init
|
|
51
|
+
const initResult = runCli(testDir, 'init', ['--skip-beads']);
|
|
52
|
+
assert.strictEqual(initResult.code, 0, `Init should succeed. Output: ${initResult.stdout}`);
|
|
53
|
+
// Step 2: Run doctor
|
|
54
|
+
const doctorResult = runCli(testDir, 'doctor');
|
|
55
|
+
// Agent check should pass (init installed 7 agents)
|
|
56
|
+
assert.ok(doctorResult.stdout.includes('agents configured') || doctorResult.stdout.includes('Agents'), 'Doctor should find agents after init');
|
|
57
|
+
assert.ok(doctorResult.stdout.includes(`${EXPECTED_AGENT_COUNT} agents`), `Doctor should find ${EXPECTED_AGENT_COUNT} agents`);
|
|
58
|
+
});
|
|
59
|
+
it('should pass skills check after init', () => {
|
|
60
|
+
const initResult = runCli(testDir, 'init', ['--skip-beads']);
|
|
61
|
+
assert.strictEqual(initResult.code, 0, 'Init should succeed');
|
|
62
|
+
const doctorResult = runCli(testDir, 'doctor');
|
|
63
|
+
assert.ok(doctorResult.stdout.includes('skills configured') || doctorResult.stdout.includes('Skills'), 'Doctor should find skills after init');
|
|
64
|
+
assert.ok(doctorResult.stdout.includes(`${EXPECTED_SKILL_COUNT} skills`), `Doctor should find ${EXPECTED_SKILL_COUNT} skills`);
|
|
65
|
+
});
|
|
66
|
+
it('should warn about beads when init used --skip-beads', () => {
|
|
67
|
+
runCli(testDir, 'init', ['--skip-beads']);
|
|
68
|
+
const doctorResult = runCli(testDir, 'doctor');
|
|
69
|
+
// beads warning expected (init skipped it, so .beads/ doesn't exist)
|
|
70
|
+
assert.ok(doctorResult.stdout.includes('⚠') || doctorResult.stdout.includes('not initialized'), 'Doctor should warn about missing .beads after init --skip-beads');
|
|
71
|
+
});
|
|
72
|
+
it('Node.js check should always pass', () => {
|
|
73
|
+
runCli(testDir, 'init', ['--skip-beads']);
|
|
74
|
+
const doctorResult = runCli(testDir, 'doctor');
|
|
75
|
+
assert.ok(doctorResult.stdout.includes('Node.js') && doctorResult.stdout.includes('✓'), 'Node.js check should pass');
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
describe('doctor detects init --skip-* gaps', () => {
|
|
79
|
+
it('should still pass agent/skills checks with --skip-mcp', () => {
|
|
80
|
+
runCli(testDir, 'init', ['--skip-beads', '--skip-mcp']);
|
|
81
|
+
const doctorResult = runCli(testDir, 'doctor');
|
|
82
|
+
// Agents and skills should still be checked and pass
|
|
83
|
+
assert.ok(doctorResult.stdout.includes(`${EXPECTED_AGENT_COUNT} agents`), 'Agent check should pass even with --skip-mcp');
|
|
84
|
+
});
|
|
85
|
+
it('should still pass agent/skills checks with --skip-backlog', () => {
|
|
86
|
+
runCli(testDir, 'init', ['--skip-beads', '--skip-backlog']);
|
|
87
|
+
const doctorResult = runCli(testDir, 'doctor');
|
|
88
|
+
assert.ok(doctorResult.stdout.includes(`${EXPECTED_AGENT_COUNT} agents`), 'Agent check should pass even with --skip-backlog');
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
describe('init --force then doctor', () => {
|
|
92
|
+
it('should pass doctor after init --force over existing files', () => {
|
|
93
|
+
// First init
|
|
94
|
+
runCli(testDir, 'init', ['--skip-beads']);
|
|
95
|
+
// Corrupt an agent file
|
|
96
|
+
const bethAgent = join(testDir, '.github', 'agents', 'beth.agent.md');
|
|
97
|
+
writeFileSync(bethAgent, 'corrupted content');
|
|
98
|
+
// Doctor should show a warning (corrupted agent has no valid frontmatter)
|
|
99
|
+
const doctorBefore = runCli(testDir, 'doctor');
|
|
100
|
+
assert.ok(doctorBefore.stdout.includes('⚠') || doctorBefore.stdout.includes('issues'), 'Doctor should detect corrupted agent');
|
|
101
|
+
// Re-init with --force
|
|
102
|
+
runCli(testDir, 'init', ['--skip-beads', '--force']);
|
|
103
|
+
// Doctor should now be healthy again
|
|
104
|
+
const doctorAfter = runCli(testDir, 'doctor');
|
|
105
|
+
assert.ok(doctorAfter.stdout.includes(`${EXPECTED_AGENT_COUNT} agents configured`), 'Doctor should pass after init --force repairs the corrupted file');
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
describe('full installed structure validation', () => {
|
|
109
|
+
it('should have complete directory structure after init', () => {
|
|
110
|
+
runCli(testDir, 'init', ['--skip-beads']);
|
|
111
|
+
// Verify the full expected structure
|
|
112
|
+
assert.ok(existsSync(join(testDir, '.github', 'agents')), '.github/agents should exist');
|
|
113
|
+
assert.ok(existsSync(join(testDir, '.github', 'skills')), '.github/skills should exist');
|
|
114
|
+
assert.ok(existsSync(join(testDir, '.github', 'copilot-instructions.md')), 'copilot-instructions.md should exist');
|
|
115
|
+
assert.ok(existsSync(join(testDir, '.vscode', 'settings.json')), '.vscode/settings.json should exist');
|
|
116
|
+
assert.ok(existsSync(join(testDir, 'AGENTS.md')), 'AGENTS.md should exist');
|
|
117
|
+
assert.ok(existsSync(join(testDir, 'Backlog.md')), 'Backlog.md should exist');
|
|
118
|
+
assert.ok(existsSync(join(testDir, 'mcp.json.example')), 'mcp.json.example should exist');
|
|
119
|
+
});
|
|
120
|
+
it('all installed agent files should have valid frontmatter', () => {
|
|
121
|
+
runCli(testDir, 'init', ['--skip-beads']);
|
|
122
|
+
const agentsDir = join(testDir, '.github', 'agents');
|
|
123
|
+
const agentFiles = readdirSync(agentsDir).filter(f => f.endsWith('.agent.md'));
|
|
124
|
+
assert.strictEqual(agentFiles.length, EXPECTED_AGENT_COUNT, `Should have ${EXPECTED_AGENT_COUNT} agent files`);
|
|
125
|
+
for (const file of agentFiles) {
|
|
126
|
+
const content = readFileSync(join(agentsDir, file), 'utf-8');
|
|
127
|
+
// Should have frontmatter delimiters
|
|
128
|
+
assert.ok(content.startsWith('---'), `${file} should start with YAML frontmatter delimiter`);
|
|
129
|
+
// Should contain name field
|
|
130
|
+
assert.ok(content.includes('name:'), `${file} should have name field in frontmatter`);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
it('all installed skill directories should have SKILL.md', () => {
|
|
134
|
+
runCli(testDir, 'init', ['--skip-beads']);
|
|
135
|
+
const skillsDir = join(testDir, '.github', 'skills');
|
|
136
|
+
const skillDirs = readdirSync(skillsDir, { withFileTypes: true })
|
|
137
|
+
.filter(d => d.isDirectory())
|
|
138
|
+
.map(d => d.name);
|
|
139
|
+
assert.ok(skillDirs.length >= EXPECTED_SKILL_COUNT, `Should have at least ${EXPECTED_SKILL_COUNT} skill dirs`);
|
|
140
|
+
const missingSkillMd = [];
|
|
141
|
+
for (const dir of skillDirs) {
|
|
142
|
+
const skillMd = join(skillsDir, dir, 'SKILL.md');
|
|
143
|
+
const agentsMd = join(skillsDir, dir, 'AGENTS.md');
|
|
144
|
+
if (!existsSync(skillMd) && !existsSync(agentsMd)) {
|
|
145
|
+
missingSkillMd.push(dir);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
assert.strictEqual(missingSkillMd.length, 0, `Skill directories missing SKILL.md or AGENTS.md: ${missingSkillMd.join(', ')}`);
|
|
149
|
+
});
|
|
150
|
+
it('installed mcp.json.example should be valid JSON', () => {
|
|
151
|
+
runCli(testDir, 'init', ['--skip-beads']);
|
|
152
|
+
const mcpPath = join(testDir, 'mcp.json.example');
|
|
153
|
+
const content = readFileSync(mcpPath, 'utf-8');
|
|
154
|
+
assert.doesNotThrow(() => {
|
|
155
|
+
JSON.parse(content);
|
|
156
|
+
}, 'mcp.json.example should be valid JSON');
|
|
157
|
+
});
|
|
158
|
+
it('installed .vscode/settings.json should be valid JSONC', () => {
|
|
159
|
+
runCli(testDir, 'init', ['--skip-beads']);
|
|
160
|
+
const settingsPath = join(testDir, '.vscode', 'settings.json');
|
|
161
|
+
const content = readFileSync(settingsPath, 'utf-8');
|
|
162
|
+
// VS Code settings use JSONC (JSON with comments) — strip comments before parsing
|
|
163
|
+
const stripped = content.replace(/\/\/.*$/gm, '').replace(/\/\*[\s\S]*?\*\//g, '');
|
|
164
|
+
assert.doesNotThrow(() => {
|
|
165
|
+
JSON.parse(stripped);
|
|
166
|
+
}, '.vscode/settings.json should be valid JSONC');
|
|
167
|
+
});
|
|
168
|
+
it('installed .vscode/settings.json should enable subagent delegation', () => {
|
|
169
|
+
runCli(testDir, 'init', ['--skip-beads']);
|
|
170
|
+
const settingsPath = join(testDir, '.vscode', 'settings.json');
|
|
171
|
+
const content = readFileSync(settingsPath, 'utf-8');
|
|
172
|
+
const stripped = content.replace(/\/\/.*$/gm, '').replace(/\/\*[\s\S]*?\*\//g, '');
|
|
173
|
+
const settings = JSON.parse(stripped);
|
|
174
|
+
assert.strictEqual(settings['chat.customAgentInSubagent.enabled'], true, '.vscode/settings.json should enable agent-to-agent (A2A) delegation');
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
describe('doctor output after complete init', () => {
|
|
178
|
+
it('doctor summary should show no failures after full init', () => {
|
|
179
|
+
runCli(testDir, 'init', ['--skip-beads']);
|
|
180
|
+
// Simulate beads init so doctor has no failures
|
|
181
|
+
mkdirSync(join(testDir, '.beads'), { recursive: true });
|
|
182
|
+
const doctorResult = runCli(testDir, 'doctor');
|
|
183
|
+
// Should not have any ✗ failures
|
|
184
|
+
const failureCount = (doctorResult.stdout.match(/✗/g) || []).length;
|
|
185
|
+
// beads CLI might not be installed, which would be a failure
|
|
186
|
+
// but agents, skills, Node.js, and beads init should all pass
|
|
187
|
+
const passCount = (doctorResult.stdout.match(/✓/g) || []).length;
|
|
188
|
+
assert.ok(passCount >= 4, `Should have at least 4 passing checks (Node.js, Agents, Skills, Beads Init). Got ${passCount} passes, ${failureCount} failures. Output:\n${doctorResult.stdout}`);
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
//# sourceMappingURL=pipeline.e2e.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.e2e.test.js","sourceRoot":"","sources":["../../../src/cli/commands/pipeline.e2e.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quickstart.test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/quickstart.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* E2E tests for quickstart command.
|
|
3
|
+
* Run with: node --test dist/cli/commands/quickstart.test.js
|
|
4
|
+
*/
|
|
5
|
+
import { describe, it, beforeEach, afterEach } from 'node:test';
|
|
6
|
+
import assert from 'node:assert';
|
|
7
|
+
import { execSync, spawnSync } from 'child_process';
|
|
8
|
+
import { existsSync, mkdirSync, writeFileSync, rmSync } from 'fs';
|
|
9
|
+
import { join, resolve } from 'path';
|
|
10
|
+
import { tmpdir } from 'os';
|
|
11
|
+
// Path to CLI
|
|
12
|
+
const CLI_PATH = resolve(join(import.meta.dirname, '../../../bin/cli.js'));
|
|
13
|
+
// Check if beads CLI is available for conditional tests
|
|
14
|
+
function isBeadsInstalled() {
|
|
15
|
+
try {
|
|
16
|
+
execSync('bd --version', { stdio: 'ignore' });
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const BEADS_AVAILABLE = isBeadsInstalled();
|
|
24
|
+
// Skip reason for tests requiring beads
|
|
25
|
+
const SKIP_NO_BEADS = !BEADS_AVAILABLE ? 'beads CLI not installed' : false;
|
|
26
|
+
const SKIP_BEADS_INSTALLED = BEADS_AVAILABLE ? 'beads CLI is installed, cannot test missing CLI' : false;
|
|
27
|
+
/**
|
|
28
|
+
* Run quickstart command in a directory
|
|
29
|
+
*/
|
|
30
|
+
function runQuickstart(cwd, args = []) {
|
|
31
|
+
const result = spawnSync('node', [CLI_PATH, 'quickstart', ...args], {
|
|
32
|
+
cwd,
|
|
33
|
+
encoding: 'utf-8',
|
|
34
|
+
env: { ...process.env, FORCE_COLOR: '0' },
|
|
35
|
+
});
|
|
36
|
+
return {
|
|
37
|
+
stdout: result.stdout || '',
|
|
38
|
+
stderr: result.stderr || '',
|
|
39
|
+
status: result.status,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Create a minimal Beth initialized project structure
|
|
44
|
+
*/
|
|
45
|
+
function createBethProject(dir) {
|
|
46
|
+
const agentsDir = join(dir, '.github', 'agents');
|
|
47
|
+
mkdirSync(agentsDir, { recursive: true });
|
|
48
|
+
// Create a minimal Beth agent file
|
|
49
|
+
const bethAgent = `---
|
|
50
|
+
name: Beth
|
|
51
|
+
description: AI orchestrator
|
|
52
|
+
model: Claude Opus 4.5
|
|
53
|
+
tools:
|
|
54
|
+
- readFile
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
# Beth Agent
|
|
58
|
+
`;
|
|
59
|
+
writeFileSync(join(agentsDir, 'beth.agent.md'), bethAgent);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Create skills directory structure
|
|
63
|
+
*/
|
|
64
|
+
function createSkillsDir(dir) {
|
|
65
|
+
const skillsDir = join(dir, '.github', 'skills', 'test-skill');
|
|
66
|
+
mkdirSync(skillsDir, { recursive: true });
|
|
67
|
+
writeFileSync(join(skillsDir, 'SKILL.md'), '# Test Skill');
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Simulate beads initialization by creating .beads directory
|
|
71
|
+
*/
|
|
72
|
+
function simulateBeadsInit(dir) {
|
|
73
|
+
const beadsDir = join(dir, '.beads');
|
|
74
|
+
mkdirSync(beadsDir, { recursive: true });
|
|
75
|
+
// Create minimal beads structure
|
|
76
|
+
writeFileSync(join(beadsDir, 'config.json'), JSON.stringify({ version: '1.0' }));
|
|
77
|
+
}
|
|
78
|
+
describe('quickstart command E2E', () => {
|
|
79
|
+
let testDir;
|
|
80
|
+
beforeEach(() => {
|
|
81
|
+
// Create a temp directory for testing
|
|
82
|
+
testDir = join(tmpdir(), `beth-quickstart-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
|
|
83
|
+
mkdirSync(testDir, { recursive: true });
|
|
84
|
+
});
|
|
85
|
+
afterEach(() => {
|
|
86
|
+
// Clean up temp directory
|
|
87
|
+
if (existsSync(testDir)) {
|
|
88
|
+
rmSync(testDir, { recursive: true, force: true });
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
describe('Beth initialization check', () => {
|
|
92
|
+
it('should exit with error if Beth not initialized (no .github/agents)', () => {
|
|
93
|
+
// Run quickstart in empty directory
|
|
94
|
+
const result = runQuickstart(testDir);
|
|
95
|
+
assert.strictEqual(result.status, 1, 'Should exit with status 1');
|
|
96
|
+
assert.ok(result.stdout.includes('Beth not initialized') || result.stdout.includes('not initialized'), 'Should indicate Beth is not initialized');
|
|
97
|
+
assert.ok(result.stdout.includes('npx beth-copilot init'), 'Should suggest running init command');
|
|
98
|
+
});
|
|
99
|
+
it('should detect Beth is initialized when .github/agents exists', () => {
|
|
100
|
+
createBethProject(testDir);
|
|
101
|
+
// Even if beads is missing, it should pass the Beth check first
|
|
102
|
+
const result = runQuickstart(testDir);
|
|
103
|
+
// Should show Beth is initialized (may fail later for beads)
|
|
104
|
+
assert.ok(result.stdout.includes('Beth is initialized') || result.stdout.includes('✓'), 'Should confirm Beth is initialized');
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
describe('beads CLI detection', () => {
|
|
108
|
+
it('should detect missing beads CLI', { skip: SKIP_BEADS_INSTALLED }, () => {
|
|
109
|
+
createBethProject(testDir);
|
|
110
|
+
const result = runQuickstart(testDir);
|
|
111
|
+
assert.strictEqual(result.status, 1, 'Should exit with status 1 when beads missing');
|
|
112
|
+
assert.ok(result.stdout.includes('beads CLI not found') || result.stdout.includes('not found'), 'Should indicate beads CLI is not found');
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
describe('beads initialization', () => {
|
|
116
|
+
it('should detect uninitialized beads (no .beads directory)', { skip: SKIP_NO_BEADS }, () => {
|
|
117
|
+
createBethProject(testDir);
|
|
118
|
+
// Verify .beads doesn't exist initially
|
|
119
|
+
assert.strictEqual(existsSync(join(testDir, '.beads')), false);
|
|
120
|
+
// Note: quickstart will try to run `bd init` which may or may not succeed
|
|
121
|
+
// depending on the environment. We're testing detection, not initialization.
|
|
122
|
+
const result = runQuickstart(testDir);
|
|
123
|
+
// The command should attempt to initialize beads or indicate it's not initialized
|
|
124
|
+
assert.ok(result.stdout.includes('beads') || result.stdout.includes('Initializing'), 'Should mention beads in output');
|
|
125
|
+
});
|
|
126
|
+
it('should recognize existing beads initialization', { skip: SKIP_NO_BEADS }, () => {
|
|
127
|
+
createBethProject(testDir);
|
|
128
|
+
simulateBeadsInit(testDir);
|
|
129
|
+
const result = runQuickstart(testDir);
|
|
130
|
+
assert.ok(result.stdout.includes('beads already initialized') ||
|
|
131
|
+
result.stdout.includes('already initialized'), 'Should indicate beads is already initialized');
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
describe('Quick Start Guide output', () => {
|
|
135
|
+
it('should show Quick Start Guide with VS Code instructions', { skip: SKIP_NO_BEADS }, () => {
|
|
136
|
+
createBethProject(testDir);
|
|
137
|
+
createSkillsDir(testDir);
|
|
138
|
+
simulateBeadsInit(testDir);
|
|
139
|
+
const result = runQuickstart(testDir);
|
|
140
|
+
// Check for Quick Start Guide section
|
|
141
|
+
assert.ok(result.stdout.includes('Quick Start Guide'), 'Should show Quick Start Guide heading');
|
|
142
|
+
// Check for VS Code instructions
|
|
143
|
+
assert.ok(result.stdout.includes('VS Code') || result.stdout.includes('Open this project'), 'Should mention VS Code');
|
|
144
|
+
// Check for Copilot Chat instruction
|
|
145
|
+
assert.ok(result.stdout.includes('Copilot Chat') || result.stdout.includes('Ctrl+Alt+I'), 'Should mention Copilot Chat shortcut');
|
|
146
|
+
// Check for @Beth instruction
|
|
147
|
+
assert.ok(result.stdout.includes('@Beth'), 'Should mention @Beth');
|
|
148
|
+
});
|
|
149
|
+
it('should show Beth tagline quote', { skip: SKIP_NO_BEADS }, () => {
|
|
150
|
+
createBethProject(testDir);
|
|
151
|
+
createSkillsDir(testDir);
|
|
152
|
+
simulateBeadsInit(testDir);
|
|
153
|
+
const result = runQuickstart(testDir);
|
|
154
|
+
// Check for the tagline quote
|
|
155
|
+
assert.ok(result.stdout.includes('They broke my wings and forgot I had claws'), 'Should show Beth tagline quote');
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
describe('doctor integration', () => {
|
|
159
|
+
it('should run doctor check and show results', { skip: SKIP_NO_BEADS }, () => {
|
|
160
|
+
createBethProject(testDir);
|
|
161
|
+
createSkillsDir(testDir);
|
|
162
|
+
simulateBeadsInit(testDir);
|
|
163
|
+
const result = runQuickstart(testDir);
|
|
164
|
+
// Should show health check is running
|
|
165
|
+
assert.ok(result.stdout.includes('health check') || result.stdout.includes('Running'), 'Should indicate health check is running');
|
|
166
|
+
// Doctor output should include some checks
|
|
167
|
+
assert.ok(result.stdout.includes('Node.js') ||
|
|
168
|
+
result.stdout.includes('agents') ||
|
|
169
|
+
result.stdout.includes('✓'), 'Should show doctor check results');
|
|
170
|
+
});
|
|
171
|
+
it('should pass --verbose flag through to doctor command', { skip: SKIP_NO_BEADS }, () => {
|
|
172
|
+
createBethProject(testDir);
|
|
173
|
+
createSkillsDir(testDir);
|
|
174
|
+
simulateBeadsInit(testDir);
|
|
175
|
+
// Run with verbose flag
|
|
176
|
+
const verboseResult = runQuickstart(testDir, ['--verbose']);
|
|
177
|
+
// Verbose output should be longer or contain more details
|
|
178
|
+
// At minimum, both should succeed
|
|
179
|
+
assert.ok(verboseResult.status === 0 || verboseResult.stdout.includes('Quick Start Guide'), 'Verbose command should run successfully');
|
|
180
|
+
// Note: exact behavior depends on what --verbose adds
|
|
181
|
+
// We verify the flag is accepted without error
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
describe('full success scenario', () => {
|
|
185
|
+
it('should succeed in fully initialized project', { skip: SKIP_NO_BEADS }, () => {
|
|
186
|
+
// Create complete project structure
|
|
187
|
+
createBethProject(testDir);
|
|
188
|
+
createSkillsDir(testDir);
|
|
189
|
+
simulateBeadsInit(testDir);
|
|
190
|
+
// Also create AGENTS.md and Backlog.md
|
|
191
|
+
writeFileSync(join(testDir, 'AGENTS.md'), '# Agent Instructions');
|
|
192
|
+
writeFileSync(join(testDir, 'Backlog.md'), '# Backlog');
|
|
193
|
+
const result = runQuickstart(testDir);
|
|
194
|
+
// Command should succeed
|
|
195
|
+
assert.strictEqual(result.status, 0, 'Should exit with status 0');
|
|
196
|
+
// Should show success indicators
|
|
197
|
+
assert.ok(result.stdout.includes('✓') || result.stdout.includes('Beth is initialized'), 'Should show success indicators');
|
|
198
|
+
// Should complete with Quick Start Guide
|
|
199
|
+
assert.ok(result.stdout.includes('Quick Start Guide'), 'Should show Quick Start Guide at end');
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
describe('error handling', () => {
|
|
203
|
+
it('should show helpful error when run outside a project', () => {
|
|
204
|
+
// Run in temp dir with nothing - should fail gracefully
|
|
205
|
+
const result = runQuickstart(testDir);
|
|
206
|
+
assert.ok(result.status !== 0, 'Should exit with non-zero status');
|
|
207
|
+
assert.ok(result.stdout.includes('init') || result.stdout.includes('not initialized'), 'Should suggest how to initialize');
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
describe('quickstart output format', () => {
|
|
212
|
+
let testDir;
|
|
213
|
+
beforeEach(() => {
|
|
214
|
+
testDir = join(tmpdir(), `beth-qs-format-${Date.now()}-${Math.random().toString(36).slice(2)}`);
|
|
215
|
+
mkdirSync(testDir, { recursive: true });
|
|
216
|
+
});
|
|
217
|
+
afterEach(() => {
|
|
218
|
+
if (existsSync(testDir)) {
|
|
219
|
+
rmSync(testDir, { recursive: true, force: true });
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
it('should show Beth Quickstart header', () => {
|
|
223
|
+
const result = runQuickstart(testDir);
|
|
224
|
+
assert.ok(result.stdout.includes('Beth Quickstart'), 'Should show Beth Quickstart header');
|
|
225
|
+
});
|
|
226
|
+
it('should show decorative separator lines', () => {
|
|
227
|
+
const result = runQuickstart(testDir);
|
|
228
|
+
// Check for separator line (─ repeated)
|
|
229
|
+
assert.ok(result.stdout.includes('─') || result.stdout.includes('-'), 'Should show separator lines');
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
//# sourceMappingURL=quickstart.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quickstart.test.js","sourceRoot":"","sources":["../../../src/cli/commands/quickstart.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontmatter.test.d.ts","sourceRoot":"","sources":["../../../src/core/agents/frontmatter.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|