vigthoria-cli 1.6.8 → 1.6.13
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 +1 -1
- package/dist/commands/auth.d.ts +0 -1
- package/dist/commands/auth.js +34 -2
- package/dist/commands/bridge.d.ts +7 -0
- package/dist/commands/bridge.js +31 -0
- package/dist/commands/chat.d.ts +50 -3
- package/dist/commands/chat.js +1033 -70
- package/dist/commands/config.d.ts +0 -1
- package/dist/commands/config.js +0 -1
- 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 +137 -17
- package/dist/utils/api.d.ts +172 -2
- package/dist/utils/api.js +2046 -69
- package/dist/utils/config.d.ts +14 -7
- package/dist/utils/config.js +27 -12
- 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 +2 -2
- package/dist/utils/session.js +2 -2
- package/dist/utils/tools.d.ts +0 -1
- package/dist/utils/tools.js +33 -7
- package/package.json +21 -3
- 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
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,6 +64,8 @@ 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"));
|
|
@@ -94,7 +98,7 @@ function getVersion() {
|
|
|
94
98
|
catch (e) {
|
|
95
99
|
// Fallback to hardcoded version
|
|
96
100
|
}
|
|
97
|
-
return '1.6.
|
|
101
|
+
return '1.6.12';
|
|
98
102
|
}
|
|
99
103
|
const VERSION = getVersion();
|
|
100
104
|
/**
|
|
@@ -150,10 +154,11 @@ async function main() {
|
|
|
150
154
|
const logger = new logger_js_1.Logger();
|
|
151
155
|
const invokedBinaryName = getInvokedBinaryName();
|
|
152
156
|
const firstArg = process.argv[2];
|
|
157
|
+
const jsonOutputRequested = process.argv.includes('--json');
|
|
153
158
|
if (invokedBinaryName === 'vigthoria-chat') {
|
|
154
159
|
const knownCommands = new Set([
|
|
155
160
|
'chat', 'chat-resume', 'agent', 'edit', 'generate', 'explain', 'fix', 'review',
|
|
156
|
-
'hub', 'repo', 'deploy', 'login', 'logout', 'status', 'config', 'update',
|
|
161
|
+
'hub', 'repo', 'deploy', 'operator', 'workflow', 'flow', 'login', 'logout', 'status', 'config', 'update',
|
|
157
162
|
'--help', '-h', '--version', '-V', 'help', 'version',
|
|
158
163
|
]);
|
|
159
164
|
if (!firstArg || firstArg.startsWith('-') || !knownCommands.has(firstArg)) {
|
|
@@ -167,15 +172,19 @@ async function main() {
|
|
|
167
172
|
// Calculate padding for centering
|
|
168
173
|
const titlePad = Math.floor((boxWidth - 4 - titleText.length) / 2);
|
|
169
174
|
const versionPad = Math.floor((boxWidth - 4 - versionText.length) / 2);
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
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
|
+
}
|
|
177
184
|
// Check for updates in background (don't wait)
|
|
178
|
-
|
|
185
|
+
if (process.env.VIGTHORIA_NO_UPDATE_CHECK !== '1' && !jsonOutputRequested) {
|
|
186
|
+
checkForUpdatesQuietly();
|
|
187
|
+
}
|
|
179
188
|
program
|
|
180
189
|
.name(invokedBinaryName === 'vigthoria-chat' ? 'vigthoria-chat' : 'vigthoria')
|
|
181
190
|
.description('AI-powered terminal coding assistant for Vigthoria Coder subscribers')
|
|
@@ -185,19 +194,26 @@ async function main() {
|
|
|
185
194
|
.command('chat')
|
|
186
195
|
.alias('c')
|
|
187
196
|
.description('Start interactive chat with Vigthoria AI')
|
|
188
|
-
.option('-m, --model <model>', 'Select AI model (fast, balanced, code, creative, cloud, ultra)'
|
|
189
|
-
.option('-p, --project <path>', 'Set project context path'
|
|
197
|
+
.option('-m, --model <model>', 'Select AI model (fast, balanced, code, creative, cloud, ultra)')
|
|
198
|
+
.option('-p, --project <path>', 'Set project context path')
|
|
199
|
+
.option('--new-project [name]', 'Create or use a managed local workspace folder when no --project path is given')
|
|
190
200
|
.option('-a, --agent', 'Enable agentic mode (default: true for best quality)', true)
|
|
191
201
|
.option('--no-agent', 'Disable agentic mode (simple chat only)')
|
|
192
202
|
.option('-r, --resume', 'Resume last session for this project', false)
|
|
193
203
|
.option('--prompt <text>', 'Run a single prompt directly and exit')
|
|
204
|
+
.option('-w, --workflow <selector>', 'Route prompts through a named or explicit VigFlow workflow target')
|
|
205
|
+
.option('--json', 'Emit machine-readable JSON output for direct prompt runs', false)
|
|
194
206
|
.option('--auto-approve', 'Auto-approve agent actions (dangerous!)', false)
|
|
195
207
|
.action(async (options) => {
|
|
196
208
|
const chat = new chat_js_1.ChatCommand(config, logger);
|
|
197
209
|
await chat.run({
|
|
198
210
|
model: options.model,
|
|
199
211
|
project: options.project,
|
|
212
|
+
projectProvided: typeof options.project === 'string' && options.project.trim().length > 0,
|
|
213
|
+
newProject: options.newProject,
|
|
200
214
|
agent: options.agent,
|
|
215
|
+
workflow: options.workflow,
|
|
216
|
+
json: options.json,
|
|
201
217
|
autoApprove: options.autoApprove,
|
|
202
218
|
resume: options.resume,
|
|
203
219
|
prompt: options.prompt,
|
|
@@ -206,18 +222,25 @@ async function main() {
|
|
|
206
222
|
program
|
|
207
223
|
.command('chat-resume')
|
|
208
224
|
.description('Resume the latest chat session for the current or specified project')
|
|
209
|
-
.option('-m, --model <model>', 'Select AI model (fast, balanced, code, creative, cloud, ultra)'
|
|
210
|
-
.option('-p, --project <path>', 'Set project context path'
|
|
225
|
+
.option('-m, --model <model>', 'Select AI model (fast, balanced, code, creative, cloud, ultra)')
|
|
226
|
+
.option('-p, --project <path>', 'Set project context path')
|
|
227
|
+
.option('--new-project [name]', 'Create or use a managed local workspace folder when no --project path is given')
|
|
211
228
|
.option('-a, --agent', 'Enable agentic mode (default: true for best quality)', true)
|
|
212
229
|
.option('--no-agent', 'Disable agentic mode (simple chat only)')
|
|
213
230
|
.option('--prompt <text>', 'Run a single prompt directly and exit after resuming context')
|
|
231
|
+
.option('-w, --workflow <selector>', 'Route prompts through a named or explicit VigFlow workflow target')
|
|
232
|
+
.option('--json', 'Emit machine-readable JSON output for direct prompt runs', false)
|
|
214
233
|
.option('--auto-approve', 'Auto-approve agent actions (dangerous!)', false)
|
|
215
234
|
.action(async (options) => {
|
|
216
235
|
const chat = new chat_js_1.ChatCommand(config, logger);
|
|
217
236
|
await chat.run({
|
|
218
237
|
model: options.model,
|
|
219
238
|
project: options.project,
|
|
239
|
+
projectProvided: typeof options.project === 'string' && options.project.trim().length > 0,
|
|
240
|
+
newProject: options.newProject,
|
|
220
241
|
agent: options.agent,
|
|
242
|
+
workflow: options.workflow,
|
|
243
|
+
json: options.json,
|
|
221
244
|
autoApprove: options.autoApprove,
|
|
222
245
|
resume: true,
|
|
223
246
|
prompt: options.prompt,
|
|
@@ -229,20 +252,63 @@ async function main() {
|
|
|
229
252
|
.command('agent')
|
|
230
253
|
.alias('a')
|
|
231
254
|
.description('Start agentic mode - AI can read/write files, run commands')
|
|
232
|
-
.option('-m, --model <model>', 'Select AI model (agent, code, cloud, ultra)'
|
|
233
|
-
.option('-p, --project <path>', 'Set project context path'
|
|
255
|
+
.option('-m, --model <model>', 'Select AI model (agent, code, cloud, ultra)')
|
|
256
|
+
.option('-p, --project <path>', 'Set project context path')
|
|
257
|
+
.option('--new-project [name]', 'Create or use a managed local workspace folder when no --project path is given')
|
|
234
258
|
.option('--prompt <text>', 'Run a single agent prompt directly and exit')
|
|
259
|
+
.option('-w, --workflow <selector>', 'Run the prompt through a named or explicit VigFlow workflow target')
|
|
260
|
+
.option('--json', 'Emit machine-readable JSON output for direct prompt runs', false)
|
|
235
261
|
.option('--auto-approve', 'Auto-approve all actions (dangerous!)', false)
|
|
236
262
|
.action(async (options) => {
|
|
237
263
|
const chat = new chat_js_1.ChatCommand(config, logger);
|
|
238
264
|
await chat.run({
|
|
239
265
|
model: options.model,
|
|
240
266
|
project: options.project,
|
|
267
|
+
projectProvided: typeof options.project === 'string' && options.project.trim().length > 0,
|
|
268
|
+
newProject: options.newProject,
|
|
241
269
|
agent: true,
|
|
270
|
+
operator: false,
|
|
271
|
+
workflow: options.workflow,
|
|
272
|
+
json: options.json,
|
|
242
273
|
autoApprove: options.autoApprove,
|
|
243
274
|
prompt: options.prompt,
|
|
244
275
|
});
|
|
245
276
|
});
|
|
277
|
+
program
|
|
278
|
+
.command('operator')
|
|
279
|
+
.alias('op')
|
|
280
|
+
.description('Start BMAD operator mode for infrastructure and system workflows')
|
|
281
|
+
.option('-m, --model <model>', 'Select operator model (code-8b, code, agent)')
|
|
282
|
+
.option('-p, --project <path>', 'Set project context path')
|
|
283
|
+
.option('--new-project [name]', 'Create or use a managed local workspace folder when no --project path is given')
|
|
284
|
+
.option('--prompt <text>', 'Run a single operator prompt directly and exit')
|
|
285
|
+
.option('-w, --workflow <selector>', 'Run the prompt through a named or explicit VigFlow workflow target')
|
|
286
|
+
.option('--save-plan', 'Save the completed BMAD plan into VigFlow for rerun and audit', false)
|
|
287
|
+
.option('--json', 'Emit machine-readable JSON output for direct prompt runs', false)
|
|
288
|
+
.action(async (options) => {
|
|
289
|
+
const chat = new chat_js_1.ChatCommand(config, logger);
|
|
290
|
+
await chat.run({
|
|
291
|
+
model: options.model,
|
|
292
|
+
project: options.project,
|
|
293
|
+
projectProvided: typeof options.project === 'string' && options.project.trim().length > 0,
|
|
294
|
+
newProject: options.newProject,
|
|
295
|
+
agent: false,
|
|
296
|
+
operator: true,
|
|
297
|
+
workflow: options.workflow,
|
|
298
|
+
savePlan: options.savePlan,
|
|
299
|
+
json: options.json,
|
|
300
|
+
prompt: options.prompt,
|
|
301
|
+
});
|
|
302
|
+
});
|
|
303
|
+
program
|
|
304
|
+
.command('bridge')
|
|
305
|
+
.description('Inspect local DevTools Bridge availability for browser debugging tasks')
|
|
306
|
+
.command('status')
|
|
307
|
+
.description('Show live DevTools Bridge status')
|
|
308
|
+
.action(async () => {
|
|
309
|
+
const bridge = new bridge_js_1.BridgeCommand(config, logger);
|
|
310
|
+
await bridge.status();
|
|
311
|
+
});
|
|
246
312
|
// Edit command - Edit files with AI
|
|
247
313
|
program
|
|
248
314
|
.command('edit <file>')
|
|
@@ -299,6 +365,61 @@ async function main() {
|
|
|
299
365
|
const review = new review_js_1.ReviewCommand(config, logger);
|
|
300
366
|
await review.run(file, options);
|
|
301
367
|
});
|
|
368
|
+
const workflowCommand = program
|
|
369
|
+
.command('workflow')
|
|
370
|
+
.alias('flow')
|
|
371
|
+
.description('List, instantiate, and run repeatable VigFlow workflows');
|
|
372
|
+
workflowCommand
|
|
373
|
+
.command('templates')
|
|
374
|
+
.alias('catalog')
|
|
375
|
+
.description('List available VigFlow templates')
|
|
376
|
+
.option('-c, --category <category>', 'Filter templates by category')
|
|
377
|
+
.option('-s, --search <query>', 'Search template names, descriptions, and tags')
|
|
378
|
+
.option('--json', 'Emit machine-readable JSON output', false)
|
|
379
|
+
.action(async (options) => {
|
|
380
|
+
const workflow = new workflow_js_1.WorkflowCommand(config, logger);
|
|
381
|
+
await workflow.templates(options);
|
|
382
|
+
});
|
|
383
|
+
workflowCommand
|
|
384
|
+
.command('list')
|
|
385
|
+
.alias('ls')
|
|
386
|
+
.description('List workflows created for the current account')
|
|
387
|
+
.option('--json', 'Emit machine-readable JSON output', false)
|
|
388
|
+
.action(async (options) => {
|
|
389
|
+
const workflow = new workflow_js_1.WorkflowCommand(config, logger);
|
|
390
|
+
await workflow.list(options);
|
|
391
|
+
});
|
|
392
|
+
workflowCommand
|
|
393
|
+
.command('use-template <templateId>')
|
|
394
|
+
.description('Create a workflow from a built-in or saved template')
|
|
395
|
+
.option('-n, --name <name>', 'Override the workflow name')
|
|
396
|
+
.option('-v, --variables <json>', 'Template variables as a JSON object')
|
|
397
|
+
.option('--json', 'Emit machine-readable JSON output', false)
|
|
398
|
+
.action(async (templateId, options) => {
|
|
399
|
+
const workflow = new workflow_js_1.WorkflowCommand(config, logger);
|
|
400
|
+
await workflow.useTemplate(templateId, options);
|
|
401
|
+
});
|
|
402
|
+
workflowCommand
|
|
403
|
+
.command('run <workflowId>')
|
|
404
|
+
.description('Run a workflow immediately')
|
|
405
|
+
.option('-d, --data <json>', 'Execution input data as a JSON object')
|
|
406
|
+
.option('--json', 'Emit machine-readable JSON output', false)
|
|
407
|
+
.action(async (workflowId, options) => {
|
|
408
|
+
const workflow = new workflow_js_1.WorkflowCommand(config, logger);
|
|
409
|
+
await workflow.run(workflowId, options);
|
|
410
|
+
});
|
|
411
|
+
workflowCommand
|
|
412
|
+
.command('status <executionId>')
|
|
413
|
+
.description('Get the current or final status of a workflow execution')
|
|
414
|
+
.option('--json', 'Emit machine-readable JSON output', false)
|
|
415
|
+
.action(async (executionId, options) => {
|
|
416
|
+
const workflow = new workflow_js_1.WorkflowCommand(config, logger);
|
|
417
|
+
await workflow.status(executionId, options);
|
|
418
|
+
});
|
|
419
|
+
workflowCommand.action(async () => {
|
|
420
|
+
const workflow = new workflow_js_1.WorkflowCommand(config, logger);
|
|
421
|
+
await workflow.templates({});
|
|
422
|
+
});
|
|
302
423
|
// ==================== HUB / MARKETPLACE COMMANDS ====================
|
|
303
424
|
// Hub command - Discover and activate API modules
|
|
304
425
|
const hubCommand = program
|
|
@@ -620,4 +741,3 @@ main().catch((err) => {
|
|
|
620
741
|
console.error(chalk_1.default.red('Error:'), err.message);
|
|
621
742
|
process.exit(1);
|
|
622
743
|
});
|
|
623
|
-
//# sourceMappingURL=index.js.map
|