vibe-fabric 0.3.3 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/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/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,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vibe analyze - Repository Analysis Command
|
|
3
|
+
*
|
|
4
|
+
* AI-powered repository analysis using Claude.
|
|
5
|
+
* Analyzes configured repositories to generate structural maps.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'clipanion';
|
|
8
|
+
export declare class AnalyzeCommand extends Command {
|
|
9
|
+
static paths: string[][];
|
|
10
|
+
static usage: import("clipanion").Usage;
|
|
11
|
+
check: boolean;
|
|
12
|
+
resume: boolean;
|
|
13
|
+
repo: string | undefined;
|
|
14
|
+
cancel: boolean;
|
|
15
|
+
execute(): Promise<number>;
|
|
16
|
+
/**
|
|
17
|
+
* Handle --cancel flag
|
|
18
|
+
*/
|
|
19
|
+
private handleCancel;
|
|
20
|
+
/**
|
|
21
|
+
* Run check mode (report-only)
|
|
22
|
+
*/
|
|
23
|
+
private runCheck;
|
|
24
|
+
/**
|
|
25
|
+
* Run interactive analysis
|
|
26
|
+
*/
|
|
27
|
+
private runInteractive;
|
|
28
|
+
/**
|
|
29
|
+
* Start the Python runner
|
|
30
|
+
*/
|
|
31
|
+
private startRunner;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=analyze.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAY5C,qBAAa,cAAe,SAAQ,OAAO;IACzC,OAAgB,KAAK,aAAiB;IAEtC,OAAgB,KAAK,4BAmBlB;IAEH,KAAK,UAEF;IAEH,MAAM,UAEH;IAEH,IAAI,qBAED;IAEH,MAAM,UAEH;IAEG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAuEhC;;OAEG;YACW,YAAY;IAwC1B;;OAEG;YACW,QAAQ;IAsBtB;;OAEG;YACW,cAAc;IA0D5B;;OAEG;YACW,WAAW;CAwE1B"}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vibe analyze - Repository Analysis Command
|
|
3
|
+
*
|
|
4
|
+
* AI-powered repository analysis using Claude.
|
|
5
|
+
* Analyzes configured repositories to generate structural maps.
|
|
6
|
+
*/
|
|
7
|
+
import { Command, Option } from 'clipanion';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import { confirm, select } from '@inquirer/prompts';
|
|
10
|
+
import { loadConfig } from '../../core/config.js';
|
|
11
|
+
import { findProjectRoot } from '../../core/project.js';
|
|
12
|
+
import { runVibeRunner, checkOperationInProgress, cancelOperation, RunnerError, } from '../../core/runner.js';
|
|
13
|
+
export class AnalyzeCommand extends Command {
|
|
14
|
+
static paths = [['analyze']];
|
|
15
|
+
static usage = Command.Usage({
|
|
16
|
+
description: 'Analyze repositories and generate maps',
|
|
17
|
+
details: `
|
|
18
|
+
AI-powered repository analysis using Claude.
|
|
19
|
+
|
|
20
|
+
Analyzes configured repositories to generate:
|
|
21
|
+
- Entity maps (from ORMs like Prisma, TypeORM)
|
|
22
|
+
- API maps (from routes, controllers)
|
|
23
|
+
- Module maps (from project structure)
|
|
24
|
+
|
|
25
|
+
Results are saved to docs/sync-cache/{repo}/maps/
|
|
26
|
+
`,
|
|
27
|
+
examples: [
|
|
28
|
+
['Analyze all repos', 'vibe analyze'],
|
|
29
|
+
['Analyze specific repo', 'vibe analyze --repo backend'],
|
|
30
|
+
['Check what would be analyzed', 'vibe analyze --check'],
|
|
31
|
+
['Resume interrupted analysis', 'vibe analyze --resume'],
|
|
32
|
+
['Cancel current operation', 'vibe analyze --cancel'],
|
|
33
|
+
],
|
|
34
|
+
});
|
|
35
|
+
check = Option.Boolean('--check,-c', false, {
|
|
36
|
+
description: 'Show what would be analyzed (no changes)',
|
|
37
|
+
});
|
|
38
|
+
resume = Option.Boolean('--resume,-r', false, {
|
|
39
|
+
description: 'Resume interrupted operation',
|
|
40
|
+
});
|
|
41
|
+
repo = Option.String('--repo', {
|
|
42
|
+
description: 'Analyze specific repo by alias',
|
|
43
|
+
});
|
|
44
|
+
cancel = Option.Boolean('--cancel', false, {
|
|
45
|
+
description: 'Cancel current operation',
|
|
46
|
+
});
|
|
47
|
+
async execute() {
|
|
48
|
+
// Find project root
|
|
49
|
+
const projectRoot = findProjectRoot(process.cwd());
|
|
50
|
+
if (!projectRoot) {
|
|
51
|
+
this.context.stderr.write(chalk.red('Error: Not inside a vibe-fabric project.\n'));
|
|
52
|
+
this.context.stderr.write(chalk.gray('Run ') + chalk.cyan('vibe init') + chalk.gray(' to create a project.\n'));
|
|
53
|
+
return 1;
|
|
54
|
+
}
|
|
55
|
+
// Handle cancel flag
|
|
56
|
+
if (this.cancel) {
|
|
57
|
+
return this.handleCancel(projectRoot);
|
|
58
|
+
}
|
|
59
|
+
// Load config to check repos
|
|
60
|
+
const config = await loadConfig(projectRoot);
|
|
61
|
+
if (!config) {
|
|
62
|
+
this.context.stderr.write(chalk.red('Error: Could not load project configuration.\n'));
|
|
63
|
+
return 1;
|
|
64
|
+
}
|
|
65
|
+
// Check if repos are configured
|
|
66
|
+
if (!config.repos || config.repos.length === 0) {
|
|
67
|
+
this.context.stderr.write(chalk.red('Error: No repositories configured.\n\n'));
|
|
68
|
+
this.context.stderr.write('Add repositories first with:\n');
|
|
69
|
+
this.context.stderr.write(chalk.cyan(' vibe repo add <github-url>\n\n'));
|
|
70
|
+
this.context.stderr.write(chalk.gray('Example:\n'));
|
|
71
|
+
this.context.stderr.write(chalk.gray(' vibe repo add https://github.com/org/backend\n'));
|
|
72
|
+
return 1;
|
|
73
|
+
}
|
|
74
|
+
// If --repo specified, verify it exists
|
|
75
|
+
if (this.repo) {
|
|
76
|
+
const repoExists = config.repos.some(r => r.alias === this.repo);
|
|
77
|
+
if (!repoExists) {
|
|
78
|
+
this.context.stderr.write(chalk.red(`Error: Repository '${this.repo}' not found.\n\n`));
|
|
79
|
+
this.context.stderr.write('Available repositories:\n');
|
|
80
|
+
for (const r of config.repos) {
|
|
81
|
+
this.context.stderr.write(` - ${r.alias}\n`);
|
|
82
|
+
}
|
|
83
|
+
return 1;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Handle check mode
|
|
87
|
+
if (this.check) {
|
|
88
|
+
return this.runCheck(projectRoot, config);
|
|
89
|
+
}
|
|
90
|
+
// Interactive mode
|
|
91
|
+
return this.runInteractive(projectRoot);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Handle --cancel flag
|
|
95
|
+
*/
|
|
96
|
+
async handleCancel(projectRoot) {
|
|
97
|
+
const existing = await checkOperationInProgress(projectRoot);
|
|
98
|
+
if (!existing) {
|
|
99
|
+
this.context.stdout.write(chalk.yellow('No operation in progress.\n'));
|
|
100
|
+
return 0;
|
|
101
|
+
}
|
|
102
|
+
if (existing.operation !== 'analyze') {
|
|
103
|
+
this.context.stdout.write(chalk.yellow(`Different operation in progress: ${existing.operation}\n`));
|
|
104
|
+
this.context.stdout.write(chalk.gray('Use the corresponding command to cancel it.\n'));
|
|
105
|
+
return 1;
|
|
106
|
+
}
|
|
107
|
+
const confirmed = await confirm({
|
|
108
|
+
message: 'Cancel analyze operation?',
|
|
109
|
+
default: false,
|
|
110
|
+
});
|
|
111
|
+
if (!confirmed) {
|
|
112
|
+
this.context.stdout.write(chalk.gray('Cancelled.\n'));
|
|
113
|
+
return 0;
|
|
114
|
+
}
|
|
115
|
+
try {
|
|
116
|
+
await cancelOperation(projectRoot);
|
|
117
|
+
this.context.stdout.write(chalk.green('Operation cancelled.\n'));
|
|
118
|
+
return 0;
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
this.context.stderr.write(chalk.red(`Failed to cancel: ${error instanceof Error ? error.message : error}\n`));
|
|
122
|
+
return 1;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Run check mode (report-only)
|
|
127
|
+
*/
|
|
128
|
+
async runCheck(_projectRoot, config) {
|
|
129
|
+
this.context.stdout.write('\n');
|
|
130
|
+
this.context.stdout.write(chalk.bold.blue(' ANALYZE CHECK') + '\n');
|
|
131
|
+
this.context.stdout.write(chalk.gray(' ─'.repeat(25)) + '\n\n');
|
|
132
|
+
const repos = this.repo
|
|
133
|
+
? config.repos.filter(r => r.alias === this.repo)
|
|
134
|
+
: config.repos;
|
|
135
|
+
this.context.stdout.write(chalk.bold('Repositories to analyze:\n\n'));
|
|
136
|
+
for (const repo of repos) {
|
|
137
|
+
this.context.stdout.write(` ${chalk.cyan(repo.alias)}\n`);
|
|
138
|
+
this.context.stdout.write(chalk.gray(` URL: ${repo.url}\n`));
|
|
139
|
+
this.context.stdout.write(chalk.gray(` Branch: ${repo.branch || 'main'}\n`));
|
|
140
|
+
this.context.stdout.write('\n');
|
|
141
|
+
}
|
|
142
|
+
this.context.stdout.write(chalk.gray('Run without --check to start analysis.\n'));
|
|
143
|
+
return 0;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Run interactive analysis
|
|
147
|
+
*/
|
|
148
|
+
async runInteractive(projectRoot) {
|
|
149
|
+
// Check for existing operation
|
|
150
|
+
const existing = await checkOperationInProgress(projectRoot);
|
|
151
|
+
if (existing && !this.resume) {
|
|
152
|
+
// Check if it's an analyze operation
|
|
153
|
+
if (existing.operation !== 'analyze') {
|
|
154
|
+
this.context.stdout.write('\n');
|
|
155
|
+
this.context.stdout.write(chalk.yellow(`A different operation is in progress: ${existing.operation}\n`));
|
|
156
|
+
this.context.stdout.write(chalk.gray('Cancel it first or use the corresponding command.\n'));
|
|
157
|
+
return 1;
|
|
158
|
+
}
|
|
159
|
+
this.context.stdout.write('\n');
|
|
160
|
+
this.context.stdout.write(chalk.yellow('An analyze operation is already in progress.\n'));
|
|
161
|
+
this.context.stdout.write(chalk.gray(`Phase: ${existing.phase}, Task: ${existing.current_task}/${existing.total_tasks}\n`));
|
|
162
|
+
this.context.stdout.write('\n');
|
|
163
|
+
const action = await select({
|
|
164
|
+
message: 'What would you like to do?',
|
|
165
|
+
choices: [
|
|
166
|
+
{ name: 'Resume the existing operation', value: 'resume' },
|
|
167
|
+
{ name: 'Cancel and start fresh', value: 'cancel' },
|
|
168
|
+
{ name: 'Exit', value: 'exit' },
|
|
169
|
+
],
|
|
170
|
+
});
|
|
171
|
+
if (action === 'exit') {
|
|
172
|
+
return 0;
|
|
173
|
+
}
|
|
174
|
+
if (action === 'cancel') {
|
|
175
|
+
await cancelOperation(projectRoot);
|
|
176
|
+
this.context.stdout.write(chalk.green('Previous operation cancelled.\n\n'));
|
|
177
|
+
}
|
|
178
|
+
if (action === 'resume') {
|
|
179
|
+
return this.startRunner(projectRoot, true);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (this.resume && !existing) {
|
|
183
|
+
this.context.stderr.write(chalk.red('No operation to resume.\n'));
|
|
184
|
+
this.context.stderr.write(chalk.gray('Start a new operation with: vibe analyze\n'));
|
|
185
|
+
return 1;
|
|
186
|
+
}
|
|
187
|
+
return this.startRunner(projectRoot, this.resume);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Start the Python runner
|
|
191
|
+
*/
|
|
192
|
+
async startRunner(projectRoot, resume) {
|
|
193
|
+
this.context.stdout.write('\n');
|
|
194
|
+
this.context.stdout.write(chalk.bold.blue(' VIBE ANALYZE') + '\n');
|
|
195
|
+
this.context.stdout.write(chalk.gray(' ─'.repeat(25)) + '\n\n');
|
|
196
|
+
if (!resume) {
|
|
197
|
+
this.context.stdout.write(chalk.gray(' Starting repository analysis with Claude...\n\n'));
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
this.context.stdout.write(chalk.gray(' Resuming analysis operation...\n\n'));
|
|
201
|
+
}
|
|
202
|
+
try {
|
|
203
|
+
await runVibeRunner('analyze', projectRoot, {
|
|
204
|
+
resume,
|
|
205
|
+
loop: true,
|
|
206
|
+
});
|
|
207
|
+
return 0;
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
if (error instanceof RunnerError) {
|
|
211
|
+
this.context.stderr.write('\n');
|
|
212
|
+
switch (error.code) {
|
|
213
|
+
case 'UV_NOT_INSTALLED':
|
|
214
|
+
this.context.stderr.write(chalk.red('UV is not installed.\n\n'));
|
|
215
|
+
this.context.stderr.write('Install UV with:\n');
|
|
216
|
+
this.context.stderr.write(chalk.cyan(' curl -LsSf https://astral.sh/uv/install.sh | sh\n\n'));
|
|
217
|
+
this.context.stderr.write(chalk.gray('UV is required to run Python scripts for AI operations.\n'));
|
|
218
|
+
break;
|
|
219
|
+
case 'RUNNER_NOT_FOUND':
|
|
220
|
+
this.context.stderr.write(chalk.red('Runner script not found.\n\n'));
|
|
221
|
+
this.context.stderr.write('The runner script should be at:\n' +
|
|
222
|
+
chalk.cyan(' .claude/scripts/vibe-runner.py\n\n'));
|
|
223
|
+
this.context.stderr.write(chalk.gray('Run ') + chalk.cyan('vibe doctor') + chalk.gray(' to diagnose.\n'));
|
|
224
|
+
break;
|
|
225
|
+
case 'RUNNER_FAILED':
|
|
226
|
+
this.context.stderr.write(chalk.red('Runner failed.\n\n'));
|
|
227
|
+
this.context.stderr.write(chalk.gray(`${error.message}\n\n`));
|
|
228
|
+
this.context.stderr.write('Your progress has been saved. Run ' +
|
|
229
|
+
chalk.cyan('vibe analyze --resume') +
|
|
230
|
+
' to continue.\n');
|
|
231
|
+
break;
|
|
232
|
+
default:
|
|
233
|
+
this.context.stderr.write(chalk.red(`Error: ${error.message}\n`));
|
|
234
|
+
}
|
|
235
|
+
return 1;
|
|
236
|
+
}
|
|
237
|
+
// Unexpected error
|
|
238
|
+
this.context.stderr.write(chalk.red(`Unexpected error: ${error instanceof Error ? error.message : error}\n`));
|
|
239
|
+
return 1;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=analyze.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Command } from 'clipanion';
|
|
2
|
+
export declare class ConfigGetCommand extends Command {
|
|
3
|
+
static paths: string[][];
|
|
4
|
+
static usage: import("clipanion").Usage;
|
|
5
|
+
key: string;
|
|
6
|
+
json: boolean;
|
|
7
|
+
execute(): Promise<number>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=get.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/config/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAK5C,qBAAa,gBAAiB,SAAQ,OAAO;IAC3C,OAAgB,KAAK,aAAuB;IAE5C,OAAgB,KAAK,4BAclB;IAEH,GAAG,SAAkD;IAErD,IAAI,UAED;IAEG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;CAwDjC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Command, Option } from 'clipanion';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { loadConfig, getConfigValue } from '../../../core/config.js';
|
|
4
|
+
import { findProjectRoot } from '../../../core/project.js';
|
|
5
|
+
export class ConfigGetCommand extends Command {
|
|
6
|
+
static paths = [['config', 'get']];
|
|
7
|
+
static usage = Command.Usage({
|
|
8
|
+
description: 'Get a configuration value',
|
|
9
|
+
details: `
|
|
10
|
+
Retrieves a value from the project configuration (vibe-fabric.toml).
|
|
11
|
+
|
|
12
|
+
Use dot notation to access nested values (e.g., project.name).
|
|
13
|
+
Arrays and objects are automatically output as JSON.
|
|
14
|
+
`,
|
|
15
|
+
examples: [
|
|
16
|
+
['Get project name', 'vibe config get project.name'],
|
|
17
|
+
['Get project created date', 'vibe config get project.created'],
|
|
18
|
+
['Get all repos', 'vibe config get repos'],
|
|
19
|
+
['Get as JSON', 'vibe config get project --json'],
|
|
20
|
+
],
|
|
21
|
+
});
|
|
22
|
+
key = Option.String({ required: true, name: 'key' });
|
|
23
|
+
json = Option.Boolean('--json,-j', false, {
|
|
24
|
+
description: 'Output as JSON (default for arrays/objects)',
|
|
25
|
+
});
|
|
26
|
+
async execute() {
|
|
27
|
+
try {
|
|
28
|
+
// Find project root
|
|
29
|
+
const projectRoot = findProjectRoot(process.cwd());
|
|
30
|
+
if (!projectRoot) {
|
|
31
|
+
this.context.stderr.write(chalk.red('Error: Not inside a vibe-fabric project.\n'));
|
|
32
|
+
this.context.stderr.write(chalk.gray('Run `vibe init` to create a planning hub first.\n'));
|
|
33
|
+
return 1;
|
|
34
|
+
}
|
|
35
|
+
// Load configuration
|
|
36
|
+
const config = await loadConfig(projectRoot);
|
|
37
|
+
if (!config) {
|
|
38
|
+
this.context.stderr.write(chalk.red('Error: Failed to load configuration.\n'));
|
|
39
|
+
this.context.stderr.write(chalk.gray('Run `vibe doctor` to diagnose configuration issues.\n'));
|
|
40
|
+
return 1;
|
|
41
|
+
}
|
|
42
|
+
// Get the value
|
|
43
|
+
const value = getConfigValue(config, this.key);
|
|
44
|
+
if (value === undefined) {
|
|
45
|
+
this.context.stderr.write(chalk.red(`Error: Key not found: ${this.key}\n`));
|
|
46
|
+
this.context.stderr.write(chalk.gray('Available top-level keys: project, repos\n'));
|
|
47
|
+
return 1;
|
|
48
|
+
}
|
|
49
|
+
// Output the value
|
|
50
|
+
if (this.json || typeof value === 'object') {
|
|
51
|
+
this.context.stdout.write(JSON.stringify(value, null, 2) + '\n');
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
this.context.stdout.write(String(value) + '\n');
|
|
55
|
+
}
|
|
56
|
+
return 0;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
if (error instanceof Error) {
|
|
60
|
+
this.context.stderr.write(chalk.red(`Error: ${error.message}\n`));
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
this.context.stderr.write(chalk.red('An unexpected error occurred.\n'));
|
|
64
|
+
}
|
|
65
|
+
return 1;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/cli/commands/config/get.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Command } from 'clipanion';
|
|
2
|
+
export declare class ConfigListCommand extends Command {
|
|
3
|
+
static paths: string[][];
|
|
4
|
+
static usage: import("clipanion").Usage;
|
|
5
|
+
json: boolean;
|
|
6
|
+
execute(): Promise<number>;
|
|
7
|
+
/**
|
|
8
|
+
* Print a formatted tree view of the configuration
|
|
9
|
+
*/
|
|
10
|
+
private printFormattedConfig;
|
|
11
|
+
/**
|
|
12
|
+
* Recursively print an object with indentation
|
|
13
|
+
*/
|
|
14
|
+
private printObject;
|
|
15
|
+
/**
|
|
16
|
+
* Format a value for display
|
|
17
|
+
*/
|
|
18
|
+
private formatValue;
|
|
19
|
+
/**
|
|
20
|
+
* Get a brief summary of an object for array display
|
|
21
|
+
*/
|
|
22
|
+
private getObjectSummary;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/config/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAK5C,qBAAa,iBAAkB,SAAQ,OAAO;IAC5C,OAAgB,KAAK,aAAwB;IAE7C,OAAgB,KAAK,4BAYlB;IAEH,IAAI,UAED;IAEG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IA4ChC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAgDnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAoBnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAYzB"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { Command, Option } from 'clipanion';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { loadConfig } from '../../../core/config.js';
|
|
4
|
+
import { findProjectRoot } from '../../../core/project.js';
|
|
5
|
+
export class ConfigListCommand extends Command {
|
|
6
|
+
static paths = [['config', 'list']];
|
|
7
|
+
static usage = Command.Usage({
|
|
8
|
+
description: 'List all configuration values',
|
|
9
|
+
details: `
|
|
10
|
+
Displays all configuration values from vibe-fabric.toml.
|
|
11
|
+
|
|
12
|
+
By default, shows a formatted tree view.
|
|
13
|
+
Use --json for machine-readable output.
|
|
14
|
+
`,
|
|
15
|
+
examples: [
|
|
16
|
+
['List all config', 'vibe config list'],
|
|
17
|
+
['List as JSON', 'vibe config list --json'],
|
|
18
|
+
],
|
|
19
|
+
});
|
|
20
|
+
json = Option.Boolean('--json,-j', false, {
|
|
21
|
+
description: 'Output as JSON',
|
|
22
|
+
});
|
|
23
|
+
async execute() {
|
|
24
|
+
try {
|
|
25
|
+
// Find project root
|
|
26
|
+
const projectRoot = findProjectRoot(process.cwd());
|
|
27
|
+
if (!projectRoot) {
|
|
28
|
+
this.context.stderr.write(chalk.red('Error: Not inside a vibe-fabric project.\n'));
|
|
29
|
+
this.context.stderr.write(chalk.gray('Run `vibe init` to create a planning hub first.\n'));
|
|
30
|
+
return 1;
|
|
31
|
+
}
|
|
32
|
+
// Load configuration
|
|
33
|
+
const config = await loadConfig(projectRoot);
|
|
34
|
+
if (!config) {
|
|
35
|
+
this.context.stderr.write(chalk.red('Error: Failed to load configuration.\n'));
|
|
36
|
+
this.context.stderr.write(chalk.gray('Run `vibe doctor` to diagnose configuration issues.\n'));
|
|
37
|
+
return 1;
|
|
38
|
+
}
|
|
39
|
+
// Output based on format
|
|
40
|
+
if (this.json) {
|
|
41
|
+
this.context.stdout.write(JSON.stringify(config, null, 2) + '\n');
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
this.printFormattedConfig(config);
|
|
45
|
+
}
|
|
46
|
+
return 0;
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
if (error instanceof Error) {
|
|
50
|
+
this.context.stderr.write(chalk.red(`Error: ${error.message}\n`));
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this.context.stderr.write(chalk.red('An unexpected error occurred.\n'));
|
|
54
|
+
}
|
|
55
|
+
return 1;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Print a formatted tree view of the configuration
|
|
60
|
+
*/
|
|
61
|
+
printFormattedConfig(config) {
|
|
62
|
+
this.context.stdout.write('\n');
|
|
63
|
+
this.context.stdout.write(chalk.bold.blue(' CONFIGURATION\n'));
|
|
64
|
+
this.context.stdout.write(chalk.gray(' ─'.repeat(25)) + '\n\n');
|
|
65
|
+
this.printObject(config, ' ');
|
|
66
|
+
this.context.stdout.write('\n');
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Recursively print an object with indentation
|
|
70
|
+
*/
|
|
71
|
+
printObject(obj, indent) {
|
|
72
|
+
const entries = Object.entries(obj);
|
|
73
|
+
for (let i = 0; i < entries.length; i++) {
|
|
74
|
+
const entry = entries[i];
|
|
75
|
+
if (!entry)
|
|
76
|
+
continue;
|
|
77
|
+
const [key, value] = entry;
|
|
78
|
+
const isLast = i === entries.length - 1;
|
|
79
|
+
const prefix = isLast ? '└─' : '├─';
|
|
80
|
+
const childIndent = isLast ? ' ' : '│ ';
|
|
81
|
+
if (Array.isArray(value)) {
|
|
82
|
+
this.context.stdout.write(`${indent}${prefix} ${chalk.cyan(key)}: ${chalk.gray(`[${value.length} items]`)}\n`);
|
|
83
|
+
// Show array items briefly
|
|
84
|
+
for (let j = 0; j < Math.min(value.length, 3); j++) {
|
|
85
|
+
const itemPrefix = j === Math.min(value.length, 3) - 1 && value.length <= 3 ? '└─' : '├─';
|
|
86
|
+
const item = value[j];
|
|
87
|
+
if (typeof item === 'object' && item !== null) {
|
|
88
|
+
const summary = this.getObjectSummary(item);
|
|
89
|
+
this.context.stdout.write(`${indent}${childIndent}${itemPrefix} ${chalk.gray(summary)}\n`);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
this.context.stdout.write(`${indent}${childIndent}${itemPrefix} ${this.formatValue(item)}\n`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (value.length > 3) {
|
|
96
|
+
this.context.stdout.write(`${indent}${childIndent}└─ ${chalk.gray(`... and ${value.length - 3} more`)}\n`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
else if (typeof value === 'object' && value !== null) {
|
|
100
|
+
this.context.stdout.write(`${indent}${prefix} ${chalk.cyan(key)}:\n`);
|
|
101
|
+
this.printObject(value, indent + childIndent);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
this.context.stdout.write(`${indent}${prefix} ${chalk.cyan(key)}: ${this.formatValue(value)}\n`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Format a value for display
|
|
110
|
+
*/
|
|
111
|
+
formatValue(value) {
|
|
112
|
+
if (value === undefined || value === null) {
|
|
113
|
+
return chalk.gray('(not set)');
|
|
114
|
+
}
|
|
115
|
+
if (typeof value === 'boolean') {
|
|
116
|
+
return value ? chalk.green('true') : chalk.yellow('false');
|
|
117
|
+
}
|
|
118
|
+
if (typeof value === 'number') {
|
|
119
|
+
return chalk.magenta(String(value));
|
|
120
|
+
}
|
|
121
|
+
if (typeof value === 'string') {
|
|
122
|
+
// Truncate long strings
|
|
123
|
+
if (value.length > 50) {
|
|
124
|
+
return chalk.white(`"${value.substring(0, 47)}..."`);
|
|
125
|
+
}
|
|
126
|
+
return chalk.white(`"${value}"`);
|
|
127
|
+
}
|
|
128
|
+
return chalk.white(String(value));
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get a brief summary of an object for array display
|
|
132
|
+
*/
|
|
133
|
+
getObjectSummary(obj) {
|
|
134
|
+
// Try to find meaningful identifying fields
|
|
135
|
+
const identifiers = ['alias', 'name', 'id', 'title'];
|
|
136
|
+
for (const key of identifiers) {
|
|
137
|
+
if (key in obj && typeof obj[key] === 'string') {
|
|
138
|
+
return `${key}: "${obj[key]}"`;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Fall back to showing number of keys
|
|
142
|
+
const keys = Object.keys(obj);
|
|
143
|
+
return `{${keys.length} fields}`;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/cli/commands/config/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Command } from 'clipanion';
|
|
2
|
+
export declare class ConfigSetCommand extends Command {
|
|
3
|
+
static paths: string[][];
|
|
4
|
+
static usage: import("clipanion").Usage;
|
|
5
|
+
key: string;
|
|
6
|
+
value: string;
|
|
7
|
+
json: boolean;
|
|
8
|
+
execute(): Promise<number>;
|
|
9
|
+
/**
|
|
10
|
+
* Format a value for display
|
|
11
|
+
*/
|
|
12
|
+
private formatValue;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=set.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/config/set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAY5C,qBAAa,gBAAiB,SAAQ,OAAO;IAC3C,OAAgB,KAAK,aAAuB;IAE5C,OAAgB,KAAK,4BAmBlB;IAEH,GAAG,SAAkD;IACrD,KAAK,SAAoD;IAEzD,IAAI,UAED;IAEG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAyFhC;;OAEG;IACH,OAAO,CAAC,WAAW;CAOpB"}
|