vibe-fabric 0.3.3 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/analyze.d.ts +33 -0
- package/dist/cli/commands/analyze.d.ts.map +1 -0
- package/dist/cli/commands/analyze.js +243 -0
- package/dist/cli/commands/analyze.js.map +1 -0
- package/dist/cli/commands/config/get.d.ts +9 -0
- package/dist/cli/commands/config/get.d.ts.map +1 -0
- package/dist/cli/commands/config/get.js +69 -0
- package/dist/cli/commands/config/get.js.map +1 -0
- package/dist/cli/commands/config/list.d.ts +24 -0
- package/dist/cli/commands/config/list.d.ts.map +1 -0
- package/dist/cli/commands/config/list.js +146 -0
- package/dist/cli/commands/config/list.js.map +1 -0
- package/dist/cli/commands/config/set.d.ts +14 -0
- package/dist/cli/commands/config/set.d.ts.map +1 -0
- package/dist/cli/commands/config/set.js +111 -0
- package/dist/cli/commands/config/set.js.map +1 -0
- package/dist/cli/commands/repo/list.d.ts +26 -0
- package/dist/cli/commands/repo/list.d.ts.map +1 -0
- package/dist/cli/commands/repo/list.js +197 -0
- package/dist/cli/commands/repo/list.js.map +1 -0
- package/dist/cli/commands/repo/remove.d.ts +29 -0
- package/dist/cli/commands/repo/remove.d.ts.map +1 -0
- package/dist/cli/commands/repo/remove.js +219 -0
- package/dist/cli/commands/repo/remove.js.map +1 -0
- package/dist/cli/commands/report.d.ts +16 -0
- package/dist/cli/commands/report.d.ts.map +1 -0
- package/dist/cli/commands/report.js +160 -0
- package/dist/cli/commands/report.js.map +1 -0
- package/dist/cli/index.js +14 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/config.d.ts +25 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +77 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/repo/templates/claude-agents.d.ts.map +1 -1
- package/dist/core/repo/templates/claude-agents.js +136 -28
- package/dist/core/repo/templates/claude-agents.js.map +1 -1
- package/dist/core/repo/templates/claude-prompts.d.ts +1 -1
- package/dist/core/repo/templates/claude-prompts.d.ts.map +1 -1
- package/dist/core/repo/templates/claude-prompts.js +412 -157
- package/dist/core/repo/templates/claude-prompts.js.map +1 -1
- package/dist/core/repo/templates/claude-scripts.d.ts.map +1 -1
- package/dist/core/repo/templates/claude-scripts.js +555 -94
- package/dist/core/repo/templates/claude-scripts.js.map +1 -1
- package/dist/core/repo/templates/vibe-readme.d.ts.map +1 -1
- package/dist/core/repo/templates/vibe-readme.js +177 -10
- package/dist/core/repo/templates/vibe-readme.js.map +1 -1
- package/dist/core/report.d.ts +25 -0
- package/dist/core/report.d.ts.map +1 -0
- package/dist/core/report.js +702 -0
- package/dist/core/report.js.map +1 -0
- package/dist/types/report.d.ts +158 -0
- package/dist/types/report.d.ts.map +1 -0
- package/dist/types/report.js +7 -0
- package/dist/types/report.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vibe report - Generate exportable project reports
|
|
3
|
+
*
|
|
4
|
+
* Generates project reports in Markdown, JSON, or HTML format for sharing
|
|
5
|
+
* with stakeholders or integration with external tools.
|
|
6
|
+
*/
|
|
7
|
+
import { Command, Option } from 'clipanion';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import ora from 'ora';
|
|
10
|
+
import { writeFile, mkdir } from 'fs/promises';
|
|
11
|
+
import { existsSync } from 'fs';
|
|
12
|
+
import path from 'path';
|
|
13
|
+
import { loadConfig } from '../../core/config.js';
|
|
14
|
+
import { findProjectRoot } from '../../core/project.js';
|
|
15
|
+
import { aggregateReportData, generateMarkdown, generateJson, generateHtml, } from '../../core/report.js';
|
|
16
|
+
/**
|
|
17
|
+
* Valid format values
|
|
18
|
+
*/
|
|
19
|
+
const VALID_FORMATS = ['markdown', 'json', 'html'];
|
|
20
|
+
/**
|
|
21
|
+
* Valid type values
|
|
22
|
+
*/
|
|
23
|
+
const VALID_TYPES = ['full', 'status', 'coverage', 'gaps'];
|
|
24
|
+
export class ReportCommand extends Command {
|
|
25
|
+
static paths = [['report']];
|
|
26
|
+
static usage = Command.Usage({
|
|
27
|
+
description: 'Generate exportable project reports',
|
|
28
|
+
details: `
|
|
29
|
+
Generates project reports in various formats for sharing with stakeholders
|
|
30
|
+
or integration with external tools.
|
|
31
|
+
|
|
32
|
+
Supported formats:
|
|
33
|
+
- markdown (default): GitHub-flavored Markdown
|
|
34
|
+
- json: Machine-readable JSON with schema
|
|
35
|
+
- html: Self-contained HTML with embedded CSS
|
|
36
|
+
|
|
37
|
+
Report types:
|
|
38
|
+
- full (default): All sections included
|
|
39
|
+
- status: Repository and scope status only
|
|
40
|
+
- coverage: PRD coverage analysis only
|
|
41
|
+
- gaps: Gap analysis only
|
|
42
|
+
|
|
43
|
+
Output is written to stdout by default, or to a file with --output.
|
|
44
|
+
`,
|
|
45
|
+
examples: [
|
|
46
|
+
['Generate Markdown report to stdout', 'vibe report'],
|
|
47
|
+
['Generate JSON report', 'vibe report --format json'],
|
|
48
|
+
['Generate HTML report to file', 'vibe report --format html --output report.html'],
|
|
49
|
+
['Generate coverage-only report', 'vibe report --type coverage'],
|
|
50
|
+
['Generate gaps report as JSON', 'vibe report --type gaps --format json'],
|
|
51
|
+
],
|
|
52
|
+
});
|
|
53
|
+
// Options
|
|
54
|
+
format = Option.String('--format,-f', 'markdown', {
|
|
55
|
+
description: 'Output format: markdown, json, html',
|
|
56
|
+
});
|
|
57
|
+
output = Option.String('--output,-o', {
|
|
58
|
+
description: 'Write report to file instead of stdout',
|
|
59
|
+
});
|
|
60
|
+
type = Option.String('--type,-t', 'full', {
|
|
61
|
+
description: 'Report type: full, status, coverage, gaps',
|
|
62
|
+
});
|
|
63
|
+
async execute() {
|
|
64
|
+
// Validate format
|
|
65
|
+
const format = this.format.toLowerCase();
|
|
66
|
+
if (!VALID_FORMATS.includes(format)) {
|
|
67
|
+
this.context.stderr.write(chalk.red(` Error: Invalid format '${this.format}'.\n`));
|
|
68
|
+
this.context.stderr.write(chalk.gray(` Valid formats: ${VALID_FORMATS.join(', ')}\n\n`));
|
|
69
|
+
return 1;
|
|
70
|
+
}
|
|
71
|
+
// Validate type
|
|
72
|
+
const reportType = this.type.toLowerCase();
|
|
73
|
+
if (!VALID_TYPES.includes(reportType)) {
|
|
74
|
+
this.context.stderr.write(chalk.red(` Error: Invalid type '${this.type}'.\n`));
|
|
75
|
+
this.context.stderr.write(chalk.gray(` Valid types: ${VALID_TYPES.join(', ')}\n\n`));
|
|
76
|
+
return 1;
|
|
77
|
+
}
|
|
78
|
+
// Find project root
|
|
79
|
+
const projectRoot = findProjectRoot(process.cwd());
|
|
80
|
+
if (!projectRoot) {
|
|
81
|
+
this.context.stderr.write(chalk.red(' Error: Not inside a vibe-fabric project.\n'));
|
|
82
|
+
this.context.stderr.write(chalk.gray(' Run `vibe init` to create a planning hub first.\n\n'));
|
|
83
|
+
return 1;
|
|
84
|
+
}
|
|
85
|
+
// Load config
|
|
86
|
+
const config = await loadConfig(projectRoot);
|
|
87
|
+
if (!config) {
|
|
88
|
+
this.context.stderr.write(chalk.red(' Error: Failed to load configuration.\n\n'));
|
|
89
|
+
return 1;
|
|
90
|
+
}
|
|
91
|
+
// Show spinner only when writing to file (stdout should be clean for piping)
|
|
92
|
+
const showSpinner = !!this.output;
|
|
93
|
+
const spinner = showSpinner ? ora('Generating report...').start() : null;
|
|
94
|
+
try {
|
|
95
|
+
// Aggregate data
|
|
96
|
+
const data = await aggregateReportData(projectRoot, config);
|
|
97
|
+
// Generate report
|
|
98
|
+
let report;
|
|
99
|
+
switch (format) {
|
|
100
|
+
case 'json':
|
|
101
|
+
report = generateJson(data, reportType);
|
|
102
|
+
break;
|
|
103
|
+
case 'html':
|
|
104
|
+
report = generateHtml(data, reportType);
|
|
105
|
+
break;
|
|
106
|
+
case 'markdown':
|
|
107
|
+
default:
|
|
108
|
+
report = generateMarkdown(data, reportType);
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
// Output report
|
|
112
|
+
if (this.output) {
|
|
113
|
+
// Write to file
|
|
114
|
+
const outputPath = path.resolve(this.output);
|
|
115
|
+
const outputDir = path.dirname(outputPath);
|
|
116
|
+
// Create directory if it doesn't exist
|
|
117
|
+
if (!existsSync(outputDir)) {
|
|
118
|
+
await mkdir(outputDir, { recursive: true });
|
|
119
|
+
}
|
|
120
|
+
await writeFile(outputPath, report, 'utf-8');
|
|
121
|
+
spinner?.succeed(chalk.green(`Report saved to ${outputPath}`));
|
|
122
|
+
// Show summary
|
|
123
|
+
this.context.stdout.write('\n');
|
|
124
|
+
this.context.stdout.write(chalk.gray(` Format: ${format}\n`));
|
|
125
|
+
this.context.stdout.write(chalk.gray(` Type: ${reportType}\n`));
|
|
126
|
+
this.context.stdout.write(chalk.gray(` Health: ${getHealthDisplay(data.summary.health)}\n`));
|
|
127
|
+
this.context.stdout.write('\n');
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
// Write to stdout
|
|
131
|
+
this.context.stdout.write(report);
|
|
132
|
+
if (!report.endsWith('\n')) {
|
|
133
|
+
this.context.stdout.write('\n');
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return 0;
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
spinner?.fail(chalk.red('Failed to generate report'));
|
|
140
|
+
this.context.stderr.write(chalk.red(` Error: ${error instanceof Error ? error.message : 'Unknown error'}\n\n`));
|
|
141
|
+
return 1;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Get colored health display
|
|
147
|
+
*/
|
|
148
|
+
function getHealthDisplay(health) {
|
|
149
|
+
switch (health) {
|
|
150
|
+
case 'healthy':
|
|
151
|
+
return chalk.green('healthy');
|
|
152
|
+
case 'warning':
|
|
153
|
+
return chalk.yellow('warning');
|
|
154
|
+
case 'critical':
|
|
155
|
+
return chalk.red('critical');
|
|
156
|
+
default:
|
|
157
|
+
return health;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/cli/commands/report.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -6,14 +6,21 @@ import { HelpCommand } from './commands/help.js';
|
|
|
6
6
|
import { DoctorCommand } from './commands/doctor.js';
|
|
7
7
|
import { RepoAddCommand } from './commands/repo/add.js';
|
|
8
8
|
import { RepoCreateCommand } from './commands/repo/create.js';
|
|
9
|
+
import { RepoListCommand } from './commands/repo/list.js';
|
|
10
|
+
import { RepoRemoveCommand } from './commands/repo/remove.js';
|
|
9
11
|
import { PrdCommand } from './commands/prd.js';
|
|
12
|
+
import { AnalyzeCommand } from './commands/analyze.js';
|
|
10
13
|
import { ScopeCommand } from './commands/scope.js';
|
|
11
14
|
import { SendCommand } from './commands/send.js';
|
|
12
15
|
import { SyncCommand } from './commands/sync.js';
|
|
13
16
|
import { StatusCommand } from './commands/status.js';
|
|
14
17
|
import { CoverageCommand } from './commands/coverage.js';
|
|
15
18
|
import { GapsCommand } from './commands/gaps.js';
|
|
19
|
+
import { ReportCommand } from './commands/report.js';
|
|
16
20
|
import { ClaudeCommandsCommand } from './commands/claude.js';
|
|
21
|
+
import { ConfigGetCommand } from './commands/config/get.js';
|
|
22
|
+
import { ConfigSetCommand } from './commands/config/set.js';
|
|
23
|
+
import { ConfigListCommand } from './commands/config/list.js';
|
|
17
24
|
import { runDashboard } from './ui/dashboard.js';
|
|
18
25
|
// Create CLI instance
|
|
19
26
|
const cli = new Cli({
|
|
@@ -28,14 +35,21 @@ cli.register(HelpCommand);
|
|
|
28
35
|
cli.register(DoctorCommand);
|
|
29
36
|
cli.register(RepoAddCommand);
|
|
30
37
|
cli.register(RepoCreateCommand);
|
|
38
|
+
cli.register(RepoListCommand);
|
|
39
|
+
cli.register(RepoRemoveCommand);
|
|
31
40
|
cli.register(PrdCommand);
|
|
41
|
+
cli.register(AnalyzeCommand);
|
|
32
42
|
cli.register(ScopeCommand);
|
|
33
43
|
cli.register(SendCommand);
|
|
34
44
|
cli.register(SyncCommand);
|
|
35
45
|
cli.register(StatusCommand);
|
|
36
46
|
cli.register(CoverageCommand);
|
|
37
47
|
cli.register(GapsCommand);
|
|
48
|
+
cli.register(ReportCommand);
|
|
38
49
|
cli.register(ClaudeCommandsCommand);
|
|
50
|
+
cli.register(ConfigGetCommand);
|
|
51
|
+
cli.register(ConfigSetCommand);
|
|
52
|
+
cli.register(ConfigListCommand);
|
|
39
53
|
// Register built-in commands
|
|
40
54
|
cli.register(Builtins.DefinitionsCommand);
|
|
41
55
|
// Run CLI
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,sBAAsB;AACtB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;IAClB,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,MAAM;IAClB,aAAa,EAAE,OAAO;CACvB,CAAC,CAAC;AAEH,oBAAoB;AACpB,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC1B,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAC7B,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC1B,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC5B,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAC7B,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAChC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACzB,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC3B,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC1B,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC1B,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC5B,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AAC9B,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC1B,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/core/config.d.ts
CHANGED
|
@@ -15,4 +15,29 @@ export declare function isVibeProject(dirPath: string): boolean;
|
|
|
15
15
|
* Get the config file path for a project
|
|
16
16
|
*/
|
|
17
17
|
export declare function getConfigPath(projectPath: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* Get a config value by dot-notation key
|
|
20
|
+
* @param config - The configuration object
|
|
21
|
+
* @param key - Dot-notation key (e.g., "project.name", "repos")
|
|
22
|
+
* @returns The value at the key, or undefined if not found
|
|
23
|
+
*/
|
|
24
|
+
export declare function getConfigValue(config: Config, key: string): unknown;
|
|
25
|
+
/**
|
|
26
|
+
* Set a config value by dot-notation key
|
|
27
|
+
* @param config - The configuration object to modify
|
|
28
|
+
* @param key - Dot-notation key (e.g., "project.name")
|
|
29
|
+
* @param value - The value to set
|
|
30
|
+
* @returns The modified config
|
|
31
|
+
*/
|
|
32
|
+
export declare function setConfigValue(config: Config, key: string, value: unknown): Config;
|
|
33
|
+
/**
|
|
34
|
+
* Parse a string value to appropriate type
|
|
35
|
+
* @param value - The string value to parse
|
|
36
|
+
* @returns The parsed value (boolean, number, or string)
|
|
37
|
+
*/
|
|
38
|
+
export declare function parseValue(value: string): unknown;
|
|
39
|
+
/**
|
|
40
|
+
* Get all valid config keys (for validation and autocomplete)
|
|
41
|
+
*/
|
|
42
|
+
export declare function getValidConfigKeys(): string[];
|
|
18
43
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAgB,MAAM,oBAAoB,CAAC;AAmB1D;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsB5E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBnF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEzD"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAgB,MAAM,oBAAoB,CAAC;AAmB1D;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsB5E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBnF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAWnE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACb,MAAM,CAcR;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAcjD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAc7C"}
|
package/dist/core/config.js
CHANGED
|
@@ -75,4 +75,81 @@ export function isVibeProject(dirPath) {
|
|
|
75
75
|
export function getConfigPath(projectPath) {
|
|
76
76
|
return path.join(projectPath, CONFIG_FILE_NAME);
|
|
77
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Get a config value by dot-notation key
|
|
80
|
+
* @param config - The configuration object
|
|
81
|
+
* @param key - Dot-notation key (e.g., "project.name", "repos")
|
|
82
|
+
* @returns The value at the key, or undefined if not found
|
|
83
|
+
*/
|
|
84
|
+
export function getConfigValue(config, key) {
|
|
85
|
+
const parts = key.split('.');
|
|
86
|
+
let current = config;
|
|
87
|
+
for (const part of parts) {
|
|
88
|
+
if (current === null || current === undefined)
|
|
89
|
+
return undefined;
|
|
90
|
+
if (typeof current !== 'object')
|
|
91
|
+
return undefined;
|
|
92
|
+
current = current[part];
|
|
93
|
+
}
|
|
94
|
+
return current;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Set a config value by dot-notation key
|
|
98
|
+
* @param config - The configuration object to modify
|
|
99
|
+
* @param key - Dot-notation key (e.g., "project.name")
|
|
100
|
+
* @param value - The value to set
|
|
101
|
+
* @returns The modified config
|
|
102
|
+
*/
|
|
103
|
+
export function setConfigValue(config, key, value) {
|
|
104
|
+
const parts = key.split('.');
|
|
105
|
+
const lastPart = parts.pop();
|
|
106
|
+
let current = config;
|
|
107
|
+
for (const part of parts) {
|
|
108
|
+
if (!(part in current) || typeof current[part] !== 'object') {
|
|
109
|
+
current[part] = {};
|
|
110
|
+
}
|
|
111
|
+
current = current[part];
|
|
112
|
+
}
|
|
113
|
+
current[lastPart] = value;
|
|
114
|
+
return config;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Parse a string value to appropriate type
|
|
118
|
+
* @param value - The string value to parse
|
|
119
|
+
* @returns The parsed value (boolean, number, or string)
|
|
120
|
+
*/
|
|
121
|
+
export function parseValue(value) {
|
|
122
|
+
// Boolean
|
|
123
|
+
if (value.toLowerCase() === 'true')
|
|
124
|
+
return true;
|
|
125
|
+
if (value.toLowerCase() === 'false')
|
|
126
|
+
return false;
|
|
127
|
+
// Number (only if it's a valid number and not empty)
|
|
128
|
+
const trimmed = value.trim();
|
|
129
|
+
if (trimmed !== '') {
|
|
130
|
+
const num = Number(trimmed);
|
|
131
|
+
if (!isNaN(num))
|
|
132
|
+
return num;
|
|
133
|
+
}
|
|
134
|
+
// String (return as-is)
|
|
135
|
+
return value;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Get all valid config keys (for validation and autocomplete)
|
|
139
|
+
*/
|
|
140
|
+
export function getValidConfigKeys() {
|
|
141
|
+
return [
|
|
142
|
+
'project',
|
|
143
|
+
'project.name',
|
|
144
|
+
'project.version',
|
|
145
|
+
'project.created',
|
|
146
|
+
'project.type',
|
|
147
|
+
'project.description',
|
|
148
|
+
'project.description.summary',
|
|
149
|
+
'project.description.goals',
|
|
150
|
+
'project.description.constraints',
|
|
151
|
+
'project.description.targetUsers',
|
|
152
|
+
'repos',
|
|
153
|
+
];
|
|
154
|
+
}
|
|
78
155
|
//# sourceMappingURL=config.js.map
|
package/dist/core/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-agents.d.ts","sourceRoot":"","sources":["../../../../src/core/repo/templates/claude-agents.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,YAAY,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"claude-agents.d.ts","sourceRoot":"","sources":["../../../../src/core/repo/templates/claude-agents.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,YAAY,EAAE,YAAY,EAwRtC,CAAC"}
|
|
@@ -117,25 +117,79 @@ description: Pre-execution research for Ralph autonomous mode
|
|
|
117
117
|
|
|
118
118
|
# Ralph Research Agent
|
|
119
119
|
|
|
120
|
-
You prepare context for autonomous execution
|
|
120
|
+
You prepare comprehensive context for autonomous task execution. Your research
|
|
121
|
+
enables subsequent sessions to execute tasks without needing to re-investigate
|
|
122
|
+
the codebase.
|
|
123
|
+
|
|
124
|
+
## Context
|
|
125
|
+
|
|
126
|
+
This agent runs ONCE at the start of a Ralph execution loop. The context you
|
|
127
|
+
gather will be saved to the plan file and used by ALL subsequent task sessions.
|
|
128
|
+
|
|
129
|
+
## Capabilities
|
|
130
|
+
|
|
131
|
+
- Read and analyze plan files
|
|
132
|
+
- Explore codebase structure via maps
|
|
133
|
+
- Search knowledge base for patterns and gotchas
|
|
134
|
+
- Identify key files for each task
|
|
135
|
+
- Detect potential blockers early
|
|
121
136
|
|
|
122
137
|
## Task
|
|
123
138
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
4. Gather relevant context (files, KB entries)
|
|
129
|
-
5. Identify potential blockers
|
|
139
|
+
1. **Read the Plan**
|
|
140
|
+
- Understand all tasks and their order
|
|
141
|
+
- Note dependencies between tasks
|
|
142
|
+
- Identify acceptance criteria
|
|
130
143
|
|
|
131
|
-
|
|
144
|
+
2. **Analyze Codebase**
|
|
145
|
+
- Read maps in \`vibe/maps/\` for architecture understanding
|
|
146
|
+
- Search \`vibe/knowledge-base/\` for relevant entries
|
|
147
|
+
- Check completed plans for similar work patterns
|
|
148
|
+
- Identify coding conventions and patterns
|
|
149
|
+
|
|
150
|
+
3. **Map Files to Tasks**
|
|
151
|
+
- For each task, list specific files to read
|
|
152
|
+
- For each task, list files to create or modify
|
|
153
|
+
- Identify shared utilities and types
|
|
154
|
+
- Locate test file conventions
|
|
155
|
+
|
|
156
|
+
4. **Document Findings**
|
|
157
|
+
- Append "Ralph Research Context" section to plan
|
|
158
|
+
- Include codebase summary, key patterns
|
|
159
|
+
- List files by task
|
|
160
|
+
- Note any potential blockers
|
|
161
|
+
|
|
162
|
+
## Output Format
|
|
163
|
+
|
|
164
|
+
Append to plan file:
|
|
165
|
+
|
|
166
|
+
\`\`\`markdown
|
|
167
|
+
## Ralph Research Context
|
|
168
|
+
|
|
169
|
+
### Codebase Summary
|
|
170
|
+
- [Architecture patterns]
|
|
171
|
+
- [Coding conventions]
|
|
172
|
+
- [Key utilities]
|
|
173
|
+
|
|
174
|
+
### Key Files by Task
|
|
175
|
+
|
|
176
|
+
**Task 1:**
|
|
177
|
+
- Read: [files]
|
|
178
|
+
- Modify: [files]
|
|
179
|
+
- Test: [test files]
|
|
180
|
+
|
|
181
|
+
[Continue for all tasks...]
|
|
182
|
+
|
|
183
|
+
### Potential Blockers
|
|
184
|
+
- [Identified risks]
|
|
185
|
+
\`\`\`
|
|
186
|
+
|
|
187
|
+
## Guidelines
|
|
132
188
|
|
|
133
|
-
|
|
134
|
-
-
|
|
135
|
-
-
|
|
136
|
-
-
|
|
137
|
-
- Known risks or considerations
|
|
138
|
-
- Success criteria for this session
|
|
189
|
+
- Be thorough - task sessions depend on this research
|
|
190
|
+
- Be specific - use actual file paths
|
|
191
|
+
- Be concise - avoid unnecessary prose
|
|
192
|
+
- EXIT immediately when complete
|
|
139
193
|
`,
|
|
140
194
|
},
|
|
141
195
|
// ralph-cleanup-agent.md
|
|
@@ -148,25 +202,79 @@ description: Post-execution verification for Ralph autonomous mode
|
|
|
148
202
|
|
|
149
203
|
# Ralph Cleanup Agent
|
|
150
204
|
|
|
151
|
-
You verify and
|
|
205
|
+
You verify and finalize work after all tasks are complete. This is the last
|
|
206
|
+
phase of a Ralph execution loop.
|
|
207
|
+
|
|
208
|
+
## Context
|
|
209
|
+
|
|
210
|
+
This agent runs ONCE after all tasks have been executed. You verify the complete
|
|
211
|
+
implementation, run quality checks, and prepare the plan for completion.
|
|
212
|
+
|
|
213
|
+
## Capabilities
|
|
214
|
+
|
|
215
|
+
- Run test suites and quality checks
|
|
216
|
+
- Verify acceptance criteria
|
|
217
|
+
- Update plan documentation
|
|
218
|
+
- Add knowledge base entries
|
|
219
|
+
- Finalize plan status
|
|
152
220
|
|
|
153
221
|
## Task
|
|
154
222
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
5. Prepare handoff notes for next session
|
|
223
|
+
1. **Run Quality Checks**
|
|
224
|
+
- Execute full test suite: \`npm test\`
|
|
225
|
+
- Run typecheck: \`npm run typecheck\`
|
|
226
|
+
- Run linter: \`npm run lint\`
|
|
227
|
+
- Run build: \`npm run build\`
|
|
161
228
|
|
|
162
|
-
|
|
229
|
+
2. **Verify Acceptance Criteria**
|
|
230
|
+
- Review each AC from the plan
|
|
231
|
+
- Mark each as verified or note issues
|
|
232
|
+
- Be honest about failures
|
|
233
|
+
|
|
234
|
+
3. **Review Changes**
|
|
235
|
+
- Check all modified files
|
|
236
|
+
- Remove debug code or console.logs
|
|
237
|
+
- Ensure formatting is consistent
|
|
238
|
+
|
|
239
|
+
4. **Finalize Documentation**
|
|
240
|
+
- Add completion summary to plan
|
|
241
|
+
- Update plan status to "complete"
|
|
242
|
+
- Create knowledge base entries for learnings
|
|
243
|
+
|
|
244
|
+
## Output Format
|
|
245
|
+
|
|
246
|
+
Add to plan file:
|
|
247
|
+
|
|
248
|
+
\`\`\`markdown
|
|
249
|
+
## Completion Summary
|
|
250
|
+
|
|
251
|
+
### Verification Date
|
|
252
|
+
[Date]
|
|
253
|
+
|
|
254
|
+
### Quality Checks
|
|
255
|
+
- [x] Tests pass
|
|
256
|
+
- [x] Typecheck passes
|
|
257
|
+
- [x] Lint passes
|
|
258
|
+
- [x] Build succeeds
|
|
259
|
+
|
|
260
|
+
### Acceptance Criteria
|
|
261
|
+
- [x] AC-1: Verified
|
|
262
|
+
- [x] AC-2: Verified
|
|
263
|
+
|
|
264
|
+
### Files Changed
|
|
265
|
+
- [List of all files]
|
|
266
|
+
|
|
267
|
+
### Status
|
|
268
|
+
**COMPLETE**
|
|
269
|
+
\`\`\`
|
|
270
|
+
|
|
271
|
+
## Guidelines
|
|
163
272
|
|
|
164
|
-
|
|
165
|
-
-
|
|
166
|
-
-
|
|
167
|
-
-
|
|
168
|
-
-
|
|
169
|
-
- Recommendations for next session
|
|
273
|
+
- Run ALL quality checks
|
|
274
|
+
- Be honest about failures
|
|
275
|
+
- Simple fixes (formatting) can be done
|
|
276
|
+
- Complex issues should be noted, not fixed
|
|
277
|
+
- EXIT immediately when complete
|
|
170
278
|
`,
|
|
171
279
|
},
|
|
172
280
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-agents.js","sourceRoot":"","sources":["../../../../src/core/repo/templates/claude-agents.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,qBAAqB;IACrB;QACE,IAAI,EAAE,mCAAmC;QACzC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCZ;KACE;IAED,mBAAmB;IACnB;QACE,IAAI,EAAE,iCAAiC;QACvC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCZ;KACE;IAED,gBAAgB;IAChB;QACE,IAAI,EAAE,8BAA8B;QACpC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;CAwBZ;KACE;IAED,0BAA0B;IAC1B;QACE,IAAI,EAAE,wCAAwC;QAC9C,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"claude-agents.js","sourceRoot":"","sources":["../../../../src/core/repo/templates/claude-agents.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,qBAAqB;IACrB;QACE,IAAI,EAAE,mCAAmC;QACzC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCZ;KACE;IAED,mBAAmB;IACnB;QACE,IAAI,EAAE,iCAAiC;QACvC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCZ;KACE;IAED,gBAAgB;IAChB;QACE,IAAI,EAAE,8BAA8B;QACpC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;CAwBZ;KACE;IAED,0BAA0B;IAC1B;QACE,IAAI,EAAE,wCAAwC;QAC9C,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFZ;KACE;IAED,yBAAyB;IACzB;QACE,IAAI,EAAE,uCAAuC;QAC7C,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFZ;KACE;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-prompts.d.ts","sourceRoot":"","sources":["../../../../src/core/repo/templates/claude-prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,aAAa,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"claude-prompts.d.ts","sourceRoot":"","sources":["../../../../src/core/repo/templates/claude-prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,aAAa,EAAE,YAAY,EAigBvC,CAAC"}
|