vigthoria-cli 1.6.5 → 1.6.9
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/README.md +9 -1
- package/dist/commands/auth.d.ts +0 -1
- package/dist/commands/auth.js +57 -6
- package/dist/commands/bridge.d.ts +7 -0
- package/dist/commands/bridge.js +31 -0
- package/dist/commands/chat.d.ts +27 -1
- package/dist/commands/chat.js +508 -14
- package/dist/commands/config.d.ts +0 -1
- package/dist/commands/config.js +10 -3
- package/dist/commands/deploy.d.ts +0 -1
- package/dist/commands/deploy.js +0 -1
- package/dist/commands/edit.d.ts +0 -1
- package/dist/commands/edit.js +0 -1
- package/dist/commands/explain.d.ts +0 -1
- package/dist/commands/explain.js +0 -1
- package/dist/commands/generate.d.ts +0 -1
- package/dist/commands/generate.js +0 -1
- package/dist/commands/hub.d.ts +0 -1
- package/dist/commands/hub.js +0 -1
- package/dist/commands/repo.d.ts +0 -1
- package/dist/commands/repo.js +0 -1
- package/dist/commands/review.d.ts +0 -1
- package/dist/commands/review.js +0 -1
- package/dist/commands/workflow.d.ts +31 -0
- package/dist/commands/workflow.js +140 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +135 -11
- package/dist/utils/api.d.ts +210 -1
- package/dist/utils/api.js +1789 -47
- package/dist/utils/config.d.ts +14 -7
- package/dist/utils/config.js +22 -11
- package/dist/utils/files.d.ts +0 -1
- package/dist/utils/files.js +0 -1
- package/dist/utils/logger.d.ts +0 -1
- package/dist/utils/logger.js +0 -1
- package/dist/utils/session.d.ts +14 -2
- package/dist/utils/session.js +105 -4
- package/dist/utils/tools.d.ts +0 -1
- package/dist/utils/tools.js +0 -1
- package/package.json +23 -4
- package/dist/commands/auth.d.ts.map +0 -1
- package/dist/commands/auth.js.map +0 -1
- package/dist/commands/chat.d.ts.map +0 -1
- package/dist/commands/chat.js.map +0 -1
- package/dist/commands/config.d.ts.map +0 -1
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/deploy.d.ts.map +0 -1
- package/dist/commands/deploy.js.map +0 -1
- package/dist/commands/edit.d.ts.map +0 -1
- package/dist/commands/edit.js.map +0 -1
- package/dist/commands/explain.d.ts.map +0 -1
- package/dist/commands/explain.js.map +0 -1
- package/dist/commands/generate.d.ts.map +0 -1
- package/dist/commands/generate.js.map +0 -1
- package/dist/commands/hub.d.ts.map +0 -1
- package/dist/commands/hub.js.map +0 -1
- package/dist/commands/repo.d.ts.map +0 -1
- package/dist/commands/repo.js.map +0 -1
- package/dist/commands/review.d.ts.map +0 -1
- package/dist/commands/review.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/utils/api.d.ts.map +0 -1
- package/dist/utils/api.js.map +0 -1
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/files.d.ts.map +0 -1
- package/dist/utils/files.js.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/session.d.ts.map +0 -1
- package/dist/utils/session.js.map +0 -1
- package/dist/utils/tools.d.ts.map +0 -1
- package/dist/utils/tools.js.map +0 -1
package/dist/commands/config.js
CHANGED
|
@@ -148,7 +148,7 @@ class ConfigCommand {
|
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
console.log();
|
|
151
|
-
console.log(chalk_1.default.gray('Project initialized! Run `vigthoria chat` to start.'));
|
|
151
|
+
console.log(chalk_1.default.gray('Project initialized! Run `vigthoria chat` or `npx vigthoria-chat` to start.'));
|
|
152
152
|
console.log();
|
|
153
153
|
}
|
|
154
154
|
setConfig(keyValue) {
|
|
@@ -165,6 +165,9 @@ class ConfigCommand {
|
|
|
165
165
|
'showDiffs': (v) => this.config.set('preferences', { ...this.config.get('preferences'), showDiffs: v === 'true' }),
|
|
166
166
|
'maxTokens': (v) => this.config.set('preferences', { ...this.config.get('preferences'), maxTokens: parseInt(v, 10) }),
|
|
167
167
|
'apiUrl': (v) => this.config.set('apiUrl', v),
|
|
168
|
+
'modelsApiUrl': (v) => this.config.set('modelsApiUrl', v),
|
|
169
|
+
'wsUrl': (v) => this.config.set('wsUrl', v),
|
|
170
|
+
'selfHostedModelsApiUrl': (v) => this.config.set('selfHostedModelsApiUrl', v === 'null' || v === 'off' ? null : v),
|
|
168
171
|
};
|
|
169
172
|
if (configMap[key]) {
|
|
170
173
|
configMap[key](value);
|
|
@@ -172,13 +175,16 @@ class ConfigCommand {
|
|
|
172
175
|
}
|
|
173
176
|
else {
|
|
174
177
|
this.logger.error(`Unknown config key: ${key}`);
|
|
175
|
-
console.log(chalk_1.default.gray('Available keys: model, theme, autoApply, showDiffs, maxTokens, apiUrl'));
|
|
178
|
+
console.log(chalk_1.default.gray('Available keys: model, theme, autoApply, showDiffs, maxTokens, apiUrl, modelsApiUrl, wsUrl, selfHostedModelsApiUrl'));
|
|
176
179
|
}
|
|
177
180
|
}
|
|
178
181
|
getConfig(key) {
|
|
179
182
|
const all = this.config.getAll();
|
|
180
183
|
const flatConfig = {
|
|
181
184
|
apiUrl: all.apiUrl,
|
|
185
|
+
modelsApiUrl: all.modelsApiUrl,
|
|
186
|
+
wsUrl: all.wsUrl,
|
|
187
|
+
selfHostedModelsApiUrl: all.selfHostedModelsApiUrl,
|
|
182
188
|
model: all.preferences.defaultModel,
|
|
183
189
|
theme: all.preferences.theme,
|
|
184
190
|
autoApply: all.preferences.autoApplyFixes,
|
|
@@ -201,7 +207,9 @@ class ConfigCommand {
|
|
|
201
207
|
console.log();
|
|
202
208
|
console.log(chalk_1.default.white('API:'));
|
|
203
209
|
console.log(chalk_1.default.gray(' URL: ') + chalk_1.default.cyan(all.apiUrl));
|
|
210
|
+
console.log(chalk_1.default.gray(' Models API: ') + chalk_1.default.cyan(all.modelsApiUrl));
|
|
204
211
|
console.log(chalk_1.default.gray(' WebSocket: ') + chalk_1.default.cyan(all.wsUrl));
|
|
212
|
+
console.log(chalk_1.default.gray(' Self-hosted Models: ') + chalk_1.default.cyan(all.selfHostedModelsApiUrl || 'disabled'));
|
|
205
213
|
console.log();
|
|
206
214
|
console.log(chalk_1.default.white('Preferences:'));
|
|
207
215
|
console.log(chalk_1.default.gray(' Default Model: ') + chalk_1.default.cyan(all.preferences.defaultModel));
|
|
@@ -297,4 +305,3 @@ class ConfigCommand {
|
|
|
297
305
|
}
|
|
298
306
|
}
|
|
299
307
|
exports.ConfigCommand = ConfigCommand;
|
|
300
|
-
//# sourceMappingURL=config.js.map
|
package/dist/commands/deploy.js
CHANGED
package/dist/commands/edit.d.ts
CHANGED
package/dist/commands/edit.js
CHANGED
package/dist/commands/explain.js
CHANGED
package/dist/commands/hub.d.ts
CHANGED
package/dist/commands/hub.js
CHANGED
package/dist/commands/repo.d.ts
CHANGED
package/dist/commands/repo.js
CHANGED
package/dist/commands/review.js
CHANGED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Config } from '../utils/config.js';
|
|
2
|
+
import { Logger } from '../utils/logger.js';
|
|
3
|
+
interface WorkflowOutputOptions {
|
|
4
|
+
json?: boolean;
|
|
5
|
+
}
|
|
6
|
+
interface WorkflowTemplateOptions extends WorkflowOutputOptions {
|
|
7
|
+
category?: string;
|
|
8
|
+
search?: string;
|
|
9
|
+
}
|
|
10
|
+
interface WorkflowUseOptions extends WorkflowOutputOptions {
|
|
11
|
+
name?: string;
|
|
12
|
+
variables?: string;
|
|
13
|
+
}
|
|
14
|
+
interface WorkflowRunOptions extends WorkflowOutputOptions {
|
|
15
|
+
data?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare class WorkflowCommand {
|
|
18
|
+
private config;
|
|
19
|
+
private logger;
|
|
20
|
+
private api;
|
|
21
|
+
constructor(config: Config, logger: Logger);
|
|
22
|
+
private ensureAuthenticated;
|
|
23
|
+
private parseJsonOption;
|
|
24
|
+
private printJson;
|
|
25
|
+
templates(options: WorkflowTemplateOptions): Promise<void>;
|
|
26
|
+
list(options: WorkflowOutputOptions): Promise<void>;
|
|
27
|
+
useTemplate(templateId: string, options: WorkflowUseOptions): Promise<void>;
|
|
28
|
+
run(workflowId: string, options: WorkflowRunOptions): Promise<void>;
|
|
29
|
+
status(executionId: string, options: WorkflowOutputOptions): Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.WorkflowCommand = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const api_js_1 = require("../utils/api.js");
|
|
9
|
+
class WorkflowCommand {
|
|
10
|
+
config;
|
|
11
|
+
logger;
|
|
12
|
+
api;
|
|
13
|
+
constructor(config, logger) {
|
|
14
|
+
this.config = config;
|
|
15
|
+
this.logger = logger;
|
|
16
|
+
this.api = new api_js_1.APIClient(config, logger);
|
|
17
|
+
}
|
|
18
|
+
ensureAuthenticated(json = false) {
|
|
19
|
+
if (this.config.isAuthenticated()) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const message = 'Not authenticated. Run vigthoria login first.';
|
|
23
|
+
if (json) {
|
|
24
|
+
console.log(JSON.stringify({ success: false, error: message }, null, 2));
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
this.logger.error(message);
|
|
28
|
+
}
|
|
29
|
+
throw new Error(message);
|
|
30
|
+
}
|
|
31
|
+
parseJsonOption(rawValue, fieldName) {
|
|
32
|
+
if (!rawValue) {
|
|
33
|
+
return {};
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
const parsed = JSON.parse(rawValue);
|
|
37
|
+
if (!parsed || Array.isArray(parsed) || typeof parsed !== 'object') {
|
|
38
|
+
throw new Error(`${fieldName} must be a JSON object.`);
|
|
39
|
+
}
|
|
40
|
+
return parsed;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
throw new Error(`Invalid ${fieldName} JSON: ${error.message}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
printJson(payload) {
|
|
47
|
+
console.log(JSON.stringify(payload, null, 2));
|
|
48
|
+
}
|
|
49
|
+
async templates(options) {
|
|
50
|
+
this.ensureAuthenticated(Boolean(options.json));
|
|
51
|
+
const templates = await this.api.listVigFlowTemplates({
|
|
52
|
+
category: options.category,
|
|
53
|
+
search: options.search,
|
|
54
|
+
});
|
|
55
|
+
if (options.json) {
|
|
56
|
+
this.printJson({ success: true, templates });
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
this.logger.section('Workflow Templates');
|
|
60
|
+
if (templates.length === 0) {
|
|
61
|
+
console.log(chalk_1.default.yellow('No templates matched your filters.'));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
this.logger.table(['ID', 'Name', 'Category', 'Tags'], templates.map((template) => [
|
|
65
|
+
template.id,
|
|
66
|
+
template.name,
|
|
67
|
+
template.category,
|
|
68
|
+
(template.tags || []).slice(0, 3).join(', '),
|
|
69
|
+
]));
|
|
70
|
+
}
|
|
71
|
+
async list(options) {
|
|
72
|
+
this.ensureAuthenticated(Boolean(options.json));
|
|
73
|
+
const workflows = await this.api.listVigFlowWorkflows();
|
|
74
|
+
if (options.json) {
|
|
75
|
+
this.printJson({ success: true, workflows });
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
this.logger.section('Workflows');
|
|
79
|
+
if (workflows.length === 0) {
|
|
80
|
+
console.log(chalk_1.default.yellow('No workflows found for this account.'));
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
this.logger.table(['ID', 'Name', 'Nodes', 'Runs', 'Updated'], workflows.map((workflow) => [
|
|
84
|
+
workflow.id,
|
|
85
|
+
workflow.name,
|
|
86
|
+
String(workflow.nodeCount),
|
|
87
|
+
String(workflow.executionCount),
|
|
88
|
+
workflow.updatedAt ? new Date(workflow.updatedAt).toLocaleString() : '-',
|
|
89
|
+
]));
|
|
90
|
+
}
|
|
91
|
+
async useTemplate(templateId, options) {
|
|
92
|
+
this.ensureAuthenticated(Boolean(options.json));
|
|
93
|
+
const variables = this.parseJsonOption(options.variables, 'variables');
|
|
94
|
+
const workflow = await this.api.useVigFlowTemplate(templateId, {
|
|
95
|
+
name: options.name,
|
|
96
|
+
variables,
|
|
97
|
+
});
|
|
98
|
+
if (options.json) {
|
|
99
|
+
this.printJson({ success: true, workflow });
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
this.logger.success(`Created workflow ${workflow.name}`);
|
|
103
|
+
console.log(chalk_1.default.gray(`Workflow ID: ${workflow.id}`));
|
|
104
|
+
if (workflow.fromTemplate) {
|
|
105
|
+
console.log(chalk_1.default.gray(`Template: ${workflow.fromTemplate}`));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async run(workflowId, options) {
|
|
109
|
+
this.ensureAuthenticated(Boolean(options.json));
|
|
110
|
+
const data = this.parseJsonOption(options.data, 'data');
|
|
111
|
+
const execution = await this.api.runVigFlowWorkflow(workflowId, { data });
|
|
112
|
+
if (options.json) {
|
|
113
|
+
this.printJson({ success: true, execution });
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
this.logger.success(`Workflow execution ${execution.status}`);
|
|
117
|
+
console.log(chalk_1.default.gray(`Execution ID: ${execution.executionId}`));
|
|
118
|
+
console.log(chalk_1.default.gray(`Nodes executed: ${execution.nodesExecuted ?? 0}`));
|
|
119
|
+
if (execution.error) {
|
|
120
|
+
console.log(chalk_1.default.red(execution.error));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async status(executionId, options) {
|
|
124
|
+
this.ensureAuthenticated(Boolean(options.json));
|
|
125
|
+
const execution = await this.api.getVigFlowExecutionStatus(executionId);
|
|
126
|
+
if (options.json) {
|
|
127
|
+
this.printJson({ success: true, execution });
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
this.logger.box([
|
|
131
|
+
`Execution: ${execution.id}`,
|
|
132
|
+
`Workflow: ${execution.workflowId}`,
|
|
133
|
+
`Status: ${execution.status}`,
|
|
134
|
+
`Nodes: ${execution.nodesExecuted ?? 0}/${execution.totalNodes ?? '-'}`,
|
|
135
|
+
`Started: ${execution.startedAt || '-'}`,
|
|
136
|
+
`Completed: ${execution.completedAt || '-'}`,
|
|
137
|
+
].join('\n'), 'Workflow Status');
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
exports.WorkflowCommand = WorkflowCommand;
|
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* vigthoria login - Authenticate with Vigthoria
|
|
13
13
|
* vigthoria config - Configure settings
|
|
14
14
|
* vigthoria hub - Discover & activate API modules
|
|
15
|
+
* vigthoria workflow - Manage repeatable VigFlow workflows
|
|
16
|
+
* vigthoria operator - Start BMAD operator mode
|
|
15
17
|
*/
|
|
16
18
|
export {};
|
|
17
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
* vigthoria login - Authenticate with Vigthoria
|
|
14
14
|
* vigthoria config - Configure settings
|
|
15
15
|
* vigthoria hub - Discover & activate API modules
|
|
16
|
+
* vigthoria workflow - Manage repeatable VigFlow workflows
|
|
17
|
+
* vigthoria operator - Start BMAD operator mode
|
|
16
18
|
*/
|
|
17
19
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
20
|
if (k2 === undefined) k2 = k;
|
|
@@ -62,11 +64,17 @@ const review_js_1 = require("./commands/review.js");
|
|
|
62
64
|
const hub_js_1 = require("./commands/hub.js");
|
|
63
65
|
const repo_js_1 = require("./commands/repo.js");
|
|
64
66
|
const deploy_js_1 = require("./commands/deploy.js");
|
|
67
|
+
const bridge_js_1 = require("./commands/bridge.js");
|
|
68
|
+
const workflow_js_1 = require("./commands/workflow.js");
|
|
65
69
|
const config_js_2 = require("./utils/config.js");
|
|
66
70
|
const logger_js_1 = require("./utils/logger.js");
|
|
67
71
|
const chalk_1 = __importDefault(require("chalk"));
|
|
68
72
|
const fs = __importStar(require("fs"));
|
|
69
73
|
const path = __importStar(require("path"));
|
|
74
|
+
function getInvokedBinaryName() {
|
|
75
|
+
const executable = process.argv[1] || 'vigthoria';
|
|
76
|
+
return path.basename(executable, path.extname(executable)).toLowerCase();
|
|
77
|
+
}
|
|
70
78
|
// Get version from package.json dynamically
|
|
71
79
|
function getVersion() {
|
|
72
80
|
try {
|
|
@@ -90,7 +98,7 @@ function getVersion() {
|
|
|
90
98
|
catch (e) {
|
|
91
99
|
// Fallback to hardcoded version
|
|
92
100
|
}
|
|
93
|
-
return '1.6.
|
|
101
|
+
return '1.6.9';
|
|
94
102
|
}
|
|
95
103
|
const VERSION = getVersion();
|
|
96
104
|
/**
|
|
@@ -144,6 +152,19 @@ async function main() {
|
|
|
144
152
|
const program = new commander_1.Command();
|
|
145
153
|
const config = new config_js_2.Config();
|
|
146
154
|
const logger = new logger_js_1.Logger();
|
|
155
|
+
const invokedBinaryName = getInvokedBinaryName();
|
|
156
|
+
const firstArg = process.argv[2];
|
|
157
|
+
const jsonOutputRequested = process.argv.includes('--json');
|
|
158
|
+
if (invokedBinaryName === 'vigthoria-chat') {
|
|
159
|
+
const knownCommands = new Set([
|
|
160
|
+
'chat', 'chat-resume', 'agent', 'edit', 'generate', 'explain', 'fix', 'review',
|
|
161
|
+
'hub', 'repo', 'deploy', 'operator', 'workflow', 'flow', 'login', 'logout', 'status', 'config', 'update',
|
|
162
|
+
'--help', '-h', '--version', '-V', 'help', 'version',
|
|
163
|
+
]);
|
|
164
|
+
if (!firstArg || firstArg.startsWith('-') || !knownCommands.has(firstArg)) {
|
|
165
|
+
process.argv.splice(2, 0, 'chat');
|
|
166
|
+
}
|
|
167
|
+
}
|
|
147
168
|
// Banner - Fixed alignment with proper padding
|
|
148
169
|
const boxWidth = 61; // Inner content width
|
|
149
170
|
const titleText = 'VIGTHORIA CLI - AI-Powered Coding Assistant';
|
|
@@ -151,17 +172,21 @@ async function main() {
|
|
|
151
172
|
// Calculate padding for centering
|
|
152
173
|
const titlePad = Math.floor((boxWidth - 4 - titleText.length) / 2);
|
|
153
174
|
const versionPad = Math.floor((boxWidth - 4 - versionText.length) / 2);
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
175
|
+
if (process.env.VIGTHORIA_NO_BANNER !== '1' && !jsonOutputRequested) {
|
|
176
|
+
console.log(chalk_1.default.cyan('╔' + '═'.repeat(boxWidth) + '╗'));
|
|
177
|
+
console.log(chalk_1.default.cyan('║' + ' '.repeat(boxWidth) + '║'));
|
|
178
|
+
console.log(chalk_1.default.cyan('║') + ' '.repeat(titlePad) + chalk_1.default.bold.white('VIGTHORIA CLI') + chalk_1.default.cyan(' - AI-Powered Coding Assistant') + ' '.repeat(boxWidth - titlePad - titleText.length) + chalk_1.default.cyan('║'));
|
|
179
|
+
console.log(chalk_1.default.cyan('║') + ' '.repeat(versionPad) + chalk_1.default.gray(versionText) + ' '.repeat(boxWidth - versionPad - versionText.length) + chalk_1.default.cyan('║'));
|
|
180
|
+
console.log(chalk_1.default.cyan('║' + ' '.repeat(boxWidth) + '║'));
|
|
181
|
+
console.log(chalk_1.default.cyan('╚' + '═'.repeat(boxWidth) + '╝'));
|
|
182
|
+
console.log();
|
|
183
|
+
}
|
|
161
184
|
// Check for updates in background (don't wait)
|
|
162
|
-
|
|
185
|
+
if (process.env.VIGTHORIA_NO_UPDATE_CHECK !== '1' && !jsonOutputRequested) {
|
|
186
|
+
checkForUpdatesQuietly();
|
|
187
|
+
}
|
|
163
188
|
program
|
|
164
|
-
.name('vigthoria')
|
|
189
|
+
.name(invokedBinaryName === 'vigthoria-chat' ? 'vigthoria-chat' : 'vigthoria')
|
|
165
190
|
.description('AI-powered terminal coding assistant for Vigthoria Coder subscribers')
|
|
166
191
|
.version(VERSION);
|
|
167
192
|
// Chat command - Interactive mode (Agent mode is default for best results)
|
|
@@ -175,6 +200,8 @@ async function main() {
|
|
|
175
200
|
.option('--no-agent', 'Disable agentic mode (simple chat only)')
|
|
176
201
|
.option('-r, --resume', 'Resume last session for this project', false)
|
|
177
202
|
.option('--prompt <text>', 'Run a single prompt directly and exit')
|
|
203
|
+
.option('-w, --workflow <selector>', 'Route prompts through a named or explicit VigFlow workflow target')
|
|
204
|
+
.option('--json', 'Emit machine-readable JSON output for direct prompt runs', false)
|
|
178
205
|
.option('--auto-approve', 'Auto-approve agent actions (dangerous!)', false)
|
|
179
206
|
.action(async (options) => {
|
|
180
207
|
const chat = new chat_js_1.ChatCommand(config, logger);
|
|
@@ -182,6 +209,8 @@ async function main() {
|
|
|
182
209
|
model: options.model,
|
|
183
210
|
project: options.project,
|
|
184
211
|
agent: options.agent,
|
|
212
|
+
workflow: options.workflow,
|
|
213
|
+
json: options.json,
|
|
185
214
|
autoApprove: options.autoApprove,
|
|
186
215
|
resume: options.resume,
|
|
187
216
|
prompt: options.prompt,
|
|
@@ -195,6 +224,8 @@ async function main() {
|
|
|
195
224
|
.option('-a, --agent', 'Enable agentic mode (default: true for best quality)', true)
|
|
196
225
|
.option('--no-agent', 'Disable agentic mode (simple chat only)')
|
|
197
226
|
.option('--prompt <text>', 'Run a single prompt directly and exit after resuming context')
|
|
227
|
+
.option('-w, --workflow <selector>', 'Route prompts through a named or explicit VigFlow workflow target')
|
|
228
|
+
.option('--json', 'Emit machine-readable JSON output for direct prompt runs', false)
|
|
198
229
|
.option('--auto-approve', 'Auto-approve agent actions (dangerous!)', false)
|
|
199
230
|
.action(async (options) => {
|
|
200
231
|
const chat = new chat_js_1.ChatCommand(config, logger);
|
|
@@ -202,6 +233,8 @@ async function main() {
|
|
|
202
233
|
model: options.model,
|
|
203
234
|
project: options.project,
|
|
204
235
|
agent: options.agent,
|
|
236
|
+
workflow: options.workflow,
|
|
237
|
+
json: options.json,
|
|
205
238
|
autoApprove: options.autoApprove,
|
|
206
239
|
resume: true,
|
|
207
240
|
prompt: options.prompt,
|
|
@@ -216,6 +249,8 @@ async function main() {
|
|
|
216
249
|
.option('-m, --model <model>', 'Select AI model (agent, code, cloud, ultra)', 'agent')
|
|
217
250
|
.option('-p, --project <path>', 'Set project context path', process.cwd())
|
|
218
251
|
.option('--prompt <text>', 'Run a single agent prompt directly and exit')
|
|
252
|
+
.option('-w, --workflow <selector>', 'Run the prompt through a named or explicit VigFlow workflow target')
|
|
253
|
+
.option('--json', 'Emit machine-readable JSON output for direct prompt runs', false)
|
|
219
254
|
.option('--auto-approve', 'Auto-approve all actions (dangerous!)', false)
|
|
220
255
|
.action(async (options) => {
|
|
221
256
|
const chat = new chat_js_1.ChatCommand(config, logger);
|
|
@@ -223,10 +258,45 @@ async function main() {
|
|
|
223
258
|
model: options.model,
|
|
224
259
|
project: options.project,
|
|
225
260
|
agent: true,
|
|
261
|
+
operator: false,
|
|
262
|
+
workflow: options.workflow,
|
|
263
|
+
json: options.json,
|
|
226
264
|
autoApprove: options.autoApprove,
|
|
227
265
|
prompt: options.prompt,
|
|
228
266
|
});
|
|
229
267
|
});
|
|
268
|
+
program
|
|
269
|
+
.command('operator')
|
|
270
|
+
.alias('op')
|
|
271
|
+
.description('Start BMAD operator mode for infrastructure and system workflows')
|
|
272
|
+
.option('-m, --model <model>', 'Select operator model (code-8b, code, agent)', 'code-8b')
|
|
273
|
+
.option('-p, --project <path>', 'Set project context path', process.cwd())
|
|
274
|
+
.option('--prompt <text>', 'Run a single operator prompt directly and exit')
|
|
275
|
+
.option('-w, --workflow <selector>', 'Run the prompt through a named or explicit VigFlow workflow target')
|
|
276
|
+
.option('--save-plan', 'Save the completed BMAD plan into VigFlow for rerun and audit', false)
|
|
277
|
+
.option('--json', 'Emit machine-readable JSON output for direct prompt runs', false)
|
|
278
|
+
.action(async (options) => {
|
|
279
|
+
const chat = new chat_js_1.ChatCommand(config, logger);
|
|
280
|
+
await chat.run({
|
|
281
|
+
model: options.model,
|
|
282
|
+
project: options.project,
|
|
283
|
+
agent: false,
|
|
284
|
+
operator: true,
|
|
285
|
+
workflow: options.workflow,
|
|
286
|
+
savePlan: options.savePlan,
|
|
287
|
+
json: options.json,
|
|
288
|
+
prompt: options.prompt,
|
|
289
|
+
});
|
|
290
|
+
});
|
|
291
|
+
program
|
|
292
|
+
.command('bridge')
|
|
293
|
+
.description('Inspect local DevTools Bridge availability for browser debugging tasks')
|
|
294
|
+
.command('status')
|
|
295
|
+
.description('Show live DevTools Bridge status')
|
|
296
|
+
.action(async () => {
|
|
297
|
+
const bridge = new bridge_js_1.BridgeCommand(config, logger);
|
|
298
|
+
await bridge.status();
|
|
299
|
+
});
|
|
230
300
|
// Edit command - Edit files with AI
|
|
231
301
|
program
|
|
232
302
|
.command('edit <file>')
|
|
@@ -283,6 +353,61 @@ async function main() {
|
|
|
283
353
|
const review = new review_js_1.ReviewCommand(config, logger);
|
|
284
354
|
await review.run(file, options);
|
|
285
355
|
});
|
|
356
|
+
const workflowCommand = program
|
|
357
|
+
.command('workflow')
|
|
358
|
+
.alias('flow')
|
|
359
|
+
.description('List, instantiate, and run repeatable VigFlow workflows');
|
|
360
|
+
workflowCommand
|
|
361
|
+
.command('templates')
|
|
362
|
+
.alias('catalog')
|
|
363
|
+
.description('List available VigFlow templates')
|
|
364
|
+
.option('-c, --category <category>', 'Filter templates by category')
|
|
365
|
+
.option('-s, --search <query>', 'Search template names, descriptions, and tags')
|
|
366
|
+
.option('--json', 'Emit machine-readable JSON output', false)
|
|
367
|
+
.action(async (options) => {
|
|
368
|
+
const workflow = new workflow_js_1.WorkflowCommand(config, logger);
|
|
369
|
+
await workflow.templates(options);
|
|
370
|
+
});
|
|
371
|
+
workflowCommand
|
|
372
|
+
.command('list')
|
|
373
|
+
.alias('ls')
|
|
374
|
+
.description('List workflows created for the current account')
|
|
375
|
+
.option('--json', 'Emit machine-readable JSON output', false)
|
|
376
|
+
.action(async (options) => {
|
|
377
|
+
const workflow = new workflow_js_1.WorkflowCommand(config, logger);
|
|
378
|
+
await workflow.list(options);
|
|
379
|
+
});
|
|
380
|
+
workflowCommand
|
|
381
|
+
.command('use-template <templateId>')
|
|
382
|
+
.description('Create a workflow from a built-in or saved template')
|
|
383
|
+
.option('-n, --name <name>', 'Override the workflow name')
|
|
384
|
+
.option('-v, --variables <json>', 'Template variables as a JSON object')
|
|
385
|
+
.option('--json', 'Emit machine-readable JSON output', false)
|
|
386
|
+
.action(async (templateId, options) => {
|
|
387
|
+
const workflow = new workflow_js_1.WorkflowCommand(config, logger);
|
|
388
|
+
await workflow.useTemplate(templateId, options);
|
|
389
|
+
});
|
|
390
|
+
workflowCommand
|
|
391
|
+
.command('run <workflowId>')
|
|
392
|
+
.description('Run a workflow immediately')
|
|
393
|
+
.option('-d, --data <json>', 'Execution input data as a JSON object')
|
|
394
|
+
.option('--json', 'Emit machine-readable JSON output', false)
|
|
395
|
+
.action(async (workflowId, options) => {
|
|
396
|
+
const workflow = new workflow_js_1.WorkflowCommand(config, logger);
|
|
397
|
+
await workflow.run(workflowId, options);
|
|
398
|
+
});
|
|
399
|
+
workflowCommand
|
|
400
|
+
.command('status <executionId>')
|
|
401
|
+
.description('Get the current or final status of a workflow execution')
|
|
402
|
+
.option('--json', 'Emit machine-readable JSON output', false)
|
|
403
|
+
.action(async (executionId, options) => {
|
|
404
|
+
const workflow = new workflow_js_1.WorkflowCommand(config, logger);
|
|
405
|
+
await workflow.status(executionId, options);
|
|
406
|
+
});
|
|
407
|
+
workflowCommand.action(async () => {
|
|
408
|
+
const workflow = new workflow_js_1.WorkflowCommand(config, logger);
|
|
409
|
+
await workflow.templates({});
|
|
410
|
+
});
|
|
286
411
|
// ==================== HUB / MARKETPLACE COMMANDS ====================
|
|
287
412
|
// Hub command - Discover and activate API modules
|
|
288
413
|
const hubCommand = program
|
|
@@ -604,4 +729,3 @@ main().catch((err) => {
|
|
|
604
729
|
console.error(chalk_1.default.red('Error:'), err.message);
|
|
605
730
|
process.exit(1);
|
|
606
731
|
});
|
|
607
|
-
//# sourceMappingURL=index.js.map
|