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/README.md
CHANGED
|
@@ -15,6 +15,7 @@ AI-powered terminal coding assistant integrated with Vigthoria's AI models and s
|
|
|
15
15
|
## Features
|
|
16
16
|
|
|
17
17
|
- 🤖 **Interactive Chat** - Natural language coding assistance
|
|
18
|
+
- 🧠 **Compact Session Memory** - Resume long conversations with summarized context instead of bloated transcripts
|
|
18
19
|
- ✏️ **File Editing** - AI-powered code modifications with diff preview
|
|
19
20
|
- 🔧 **Code Generation** - Generate code from descriptions
|
|
20
21
|
- 📖 **Code Explanation** - Understand complex code
|
|
@@ -95,7 +96,7 @@ If you see `ENOTFOUND registry.npmjs.org`, try these solutions:
|
|
|
95
96
|
4. **Direct tarball download:**
|
|
96
97
|
```bash
|
|
97
98
|
# Download directly
|
|
98
|
-
npm install -g https://
|
|
99
|
+
npm install -g https://cli.vigthoria.io/downloads/vigthoria-cli-1.6.9.tgz
|
|
99
100
|
```
|
|
100
101
|
|
|
101
102
|
5. **Use Git clone method (no npm registry needed):**
|
|
@@ -135,11 +136,16 @@ vigthoria chat
|
|
|
135
136
|
# or
|
|
136
137
|
vig c
|
|
137
138
|
|
|
139
|
+
# local project execution
|
|
140
|
+
npx vigthoria-chat
|
|
141
|
+
|
|
138
142
|
vigthoria chat-resume
|
|
139
143
|
# or
|
|
140
144
|
vigthoria chat --resume
|
|
141
145
|
```
|
|
142
146
|
|
|
147
|
+
Long-running sessions are compacted automatically into memory summaries so follow-up prompts keep project context without dragging the full raw transcript forever.
|
|
148
|
+
|
|
143
149
|
### 3. Edit Files
|
|
144
150
|
|
|
145
151
|
```bash
|
|
@@ -213,6 +219,8 @@ In chat mode, you can use these special commands:
|
|
|
213
219
|
- `/diff` - Show pending changes
|
|
214
220
|
- `/apply` - Apply pending changes
|
|
215
221
|
- `/model <name>` - Switch AI model
|
|
222
|
+
- `/context` - Show compact session memory and current context state
|
|
223
|
+
- `/compact` - Compact the current session into a memory summary
|
|
216
224
|
- `/clear` - Clear conversation
|
|
217
225
|
- `/help` - Show commands
|
|
218
226
|
- `/exit` - Exit chat
|
package/dist/commands/auth.d.ts
CHANGED
package/dist/commands/auth.js
CHANGED
|
@@ -153,6 +153,8 @@ class AuthCommand {
|
|
|
153
153
|
const statusDisplay = sub.status === 'active' ? chalk_1.default.green('Active') : chalk_1.default.red(sub.status || 'N/A');
|
|
154
154
|
console.log(chalk_1.default.gray(' Plan: ') + planDisplay);
|
|
155
155
|
console.log(chalk_1.default.gray(' Status: ') + statusDisplay);
|
|
156
|
+
console.log(chalk_1.default.gray(' Cloud Models: ') + (this.config.hasCloudAccess() ? chalk_1.default.green('Enabled') : chalk_1.default.yellow('Local only')));
|
|
157
|
+
console.log(chalk_1.default.gray(' Operator Mode: ') + (this.config.hasOperatorAccess() ? chalk_1.default.green('Enabled') : chalk_1.default.yellow('Enterprise/Admin only')));
|
|
156
158
|
if (sub.expiresAt) {
|
|
157
159
|
const expiresDate = new Date(sub.expiresAt);
|
|
158
160
|
const daysLeft = Math.ceil((expiresDate.getTime() - Date.now()) / (1000 * 60 * 60 * 24));
|
|
@@ -165,16 +167,66 @@ class AuthCommand {
|
|
|
165
167
|
const models = this.config.getAvailableModels();
|
|
166
168
|
models.forEach(m => {
|
|
167
169
|
console.log(chalk_1.default.gray(' • ') + chalk_1.default.cyan(m.id) + chalk_1.default.gray(' → ') + chalk_1.default.white(m.name));
|
|
168
|
-
|
|
170
|
+
const runtimeLabel = m.tier === 'cloud' ? 'cloud' : 'blackwell';
|
|
171
|
+
console.log(chalk_1.default.gray(` ${m.tier === 'cloud' ? '☁️ ' : '🏠 '} ${m.description}`));
|
|
172
|
+
console.log(chalk_1.default.gray(` Backend: ${m.backendModel} (${runtimeLabel})`));
|
|
169
173
|
});
|
|
170
174
|
console.log();
|
|
171
175
|
// API status
|
|
172
176
|
const spinner = (0, ora_1.default)('Checking API status...').start();
|
|
173
|
-
const
|
|
177
|
+
const apiStatus = await this.api.getHealthStatus();
|
|
174
178
|
spinner.stop();
|
|
175
179
|
console.log(chalk_1.default.white('API Status:'));
|
|
176
|
-
console.log(chalk_1.default.gray('
|
|
177
|
-
console.log(chalk_1.default.gray('
|
|
180
|
+
console.log(chalk_1.default.gray(' Overall: ') + (apiStatus.overallOk ? chalk_1.default.green('Healthy') : chalk_1.default.yellow('Degraded')));
|
|
181
|
+
console.log(chalk_1.default.gray(' Coder API: ') + (apiStatus.coder.ok ? chalk_1.default.green('Online') : chalk_1.default.red('Offline')) + chalk_1.default.gray(` (${apiStatus.coder.endpoint})`));
|
|
182
|
+
if (apiStatus.coder.error) {
|
|
183
|
+
console.log(chalk_1.default.gray(' Error: ') + chalk_1.default.red(apiStatus.coder.error));
|
|
184
|
+
}
|
|
185
|
+
console.log(chalk_1.default.gray(' Models API: ') + (apiStatus.models.ok ? chalk_1.default.green('Online') : chalk_1.default.red('Offline')) + chalk_1.default.gray(` (${apiStatus.models.endpoint})`));
|
|
186
|
+
if (apiStatus.models.details?.modelCount !== undefined) {
|
|
187
|
+
console.log(chalk_1.default.gray(' Models Available: ') + chalk_1.default.cyan(String(apiStatus.models.details.modelCount)));
|
|
188
|
+
}
|
|
189
|
+
if (apiStatus.models.error) {
|
|
190
|
+
console.log(chalk_1.default.gray(' Error: ') + chalk_1.default.red(apiStatus.models.error));
|
|
191
|
+
}
|
|
192
|
+
if (apiStatus.selfHosted) {
|
|
193
|
+
console.log(chalk_1.default.gray(' Self-hosted Models: ') + (apiStatus.selfHosted.ok ? chalk_1.default.green('Online') : chalk_1.default.yellow('Unavailable')) + chalk_1.default.gray(` (${apiStatus.selfHosted.endpoint})`));
|
|
194
|
+
if (apiStatus.selfHosted.error) {
|
|
195
|
+
console.log(chalk_1.default.gray(' Error: ') + chalk_1.default.yellow(apiStatus.selfHosted.error));
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
console.log(chalk_1.default.gray(' Self-hosted Models: ') + chalk_1.default.gray('disabled'));
|
|
200
|
+
}
|
|
201
|
+
const capabilitySpinner = (0, ora_1.default)('Checking live capability truth...').start();
|
|
202
|
+
const capabilityStatus = await this.api.getCapabilityTruthStatus({
|
|
203
|
+
workspacePath: process.cwd(),
|
|
204
|
+
projectPath: process.cwd(),
|
|
205
|
+
targetPath: process.cwd(),
|
|
206
|
+
});
|
|
207
|
+
capabilitySpinner.stop();
|
|
208
|
+
console.log();
|
|
209
|
+
console.log(chalk_1.default.white('Capability Truth:'));
|
|
210
|
+
console.log(chalk_1.default.gray(' Overall: ') + (capabilityStatus.overallOk ? chalk_1.default.green('Verified') : chalk_1.default.yellow('Partial')));
|
|
211
|
+
console.log(chalk_1.default.gray(' V3 Agent: ') + (capabilityStatus.v3Agent.ok ? chalk_1.default.green('Reachable') : chalk_1.default.red('Unavailable')));
|
|
212
|
+
if (capabilityStatus.v3Agent.error) {
|
|
213
|
+
console.log(chalk_1.default.gray(' Error: ') + chalk_1.default.red(capabilityStatus.v3Agent.error));
|
|
214
|
+
}
|
|
215
|
+
console.log(chalk_1.default.gray(' Hyper Loop: ') + (capabilityStatus.hyperLoop.ok ? chalk_1.default.green('Reachable') : chalk_1.default.red('Unavailable')));
|
|
216
|
+
if (capabilityStatus.hyperLoop.error) {
|
|
217
|
+
console.log(chalk_1.default.gray(' Error: ') + chalk_1.default.red(capabilityStatus.hyperLoop.error));
|
|
218
|
+
}
|
|
219
|
+
console.log(chalk_1.default.gray(' Repo Memory: ') + (capabilityStatus.repoMemory.ok ? chalk_1.default.green('Active') : chalk_1.default.yellow('Unavailable')));
|
|
220
|
+
if (capabilityStatus.repoMemory.details?.compactContextLength !== undefined) {
|
|
221
|
+
console.log(chalk_1.default.gray(' Compact Context: ') + chalk_1.default.cyan(`${capabilityStatus.repoMemory.details.compactContextLength} chars`));
|
|
222
|
+
}
|
|
223
|
+
if (capabilityStatus.repoMemory.error) {
|
|
224
|
+
console.log(chalk_1.default.gray(' Error: ') + chalk_1.default.yellow(capabilityStatus.repoMemory.error));
|
|
225
|
+
}
|
|
226
|
+
console.log(chalk_1.default.gray(' DevTools Bridge: ') + (capabilityStatus.devtoolsBridge.ok ? chalk_1.default.green('Reachable') : chalk_1.default.gray('Not running')));
|
|
227
|
+
if (capabilityStatus.devtoolsBridge.error) {
|
|
228
|
+
console.log(chalk_1.default.gray(' Error: ') + chalk_1.default.gray(capabilityStatus.devtoolsBridge.error));
|
|
229
|
+
}
|
|
178
230
|
console.log();
|
|
179
231
|
}
|
|
180
232
|
printLoginSuccess() {
|
|
@@ -187,9 +239,8 @@ class AuthCommand {
|
|
|
187
239
|
}
|
|
188
240
|
console.log();
|
|
189
241
|
console.log(chalk_1.default.gray('You can now use all Vigthoria CLI features.'));
|
|
190
|
-
console.log(chalk_1.default.gray('Run `vigthoria chat` to start coding with AI!'));
|
|
242
|
+
console.log(chalk_1.default.gray('Run `vigthoria chat` or `npx vigthoria-chat` to start coding with AI!'));
|
|
191
243
|
console.log();
|
|
192
244
|
}
|
|
193
245
|
}
|
|
194
246
|
exports.AuthCommand = AuthCommand;
|
|
195
|
-
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1,31 @@
|
|
|
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.BridgeCommand = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const ora_1 = __importDefault(require("ora"));
|
|
9
|
+
const api_js_1 = require("../utils/api.js");
|
|
10
|
+
class BridgeCommand {
|
|
11
|
+
api;
|
|
12
|
+
constructor(config, logger) {
|
|
13
|
+
this.api = new api_js_1.APIClient(config, logger);
|
|
14
|
+
}
|
|
15
|
+
async status() {
|
|
16
|
+
const spinner = (0, ora_1.default)('Checking DevTools Bridge...').start();
|
|
17
|
+
const bridge = await this.api.getDevtoolsBridgeStatus();
|
|
18
|
+
spinner.stop();
|
|
19
|
+
console.log();
|
|
20
|
+
console.log(chalk_1.default.white('DevTools Bridge:'));
|
|
21
|
+
console.log(chalk_1.default.gray(' Status: ') + (bridge.ok ? chalk_1.default.green('Reachable') : chalk_1.default.yellow('Not running')));
|
|
22
|
+
if (bridge.error) {
|
|
23
|
+
console.log(chalk_1.default.gray(' Error: ') + chalk_1.default.yellow(bridge.error));
|
|
24
|
+
}
|
|
25
|
+
console.log(chalk_1.default.gray(' Browser tasks: ') + (bridge.ok
|
|
26
|
+
? chalk_1.default.green('Local browser observability is available for debugging flows.')
|
|
27
|
+
: chalk_1.default.gray('CLI will continue without local browser observability until the bridge is running.')));
|
|
28
|
+
console.log();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.BridgeCommand = BridgeCommand;
|
package/dist/commands/chat.d.ts
CHANGED
|
@@ -5,10 +5,14 @@ interface ChatOptions {
|
|
|
5
5
|
model: string;
|
|
6
6
|
project: string;
|
|
7
7
|
agent?: boolean;
|
|
8
|
+
operator?: boolean;
|
|
9
|
+
workflow?: string;
|
|
10
|
+
savePlan?: boolean;
|
|
8
11
|
autoApprove?: boolean;
|
|
9
12
|
resume?: boolean;
|
|
10
13
|
stream?: boolean;
|
|
11
14
|
prompt?: string;
|
|
15
|
+
json?: boolean;
|
|
12
16
|
}
|
|
13
17
|
export declare class ChatCommand {
|
|
14
18
|
private config;
|
|
@@ -25,15 +29,38 @@ export declare class ChatCommand {
|
|
|
25
29
|
private directToolContinuationCount;
|
|
26
30
|
private currentModel;
|
|
27
31
|
private autoApprove;
|
|
32
|
+
private operatorMode;
|
|
33
|
+
private workflowTarget;
|
|
34
|
+
private savePlanToVigFlow;
|
|
35
|
+
private jsonOutput;
|
|
36
|
+
private hasOperatorAccess;
|
|
37
|
+
private operatorAccessMessage;
|
|
38
|
+
private getMessagesForModel;
|
|
39
|
+
private isDiagnosticPrompt;
|
|
40
|
+
private isBrowserTaskPrompt;
|
|
41
|
+
private inferAgentTaskType;
|
|
42
|
+
private buildTaskShapingInstructions;
|
|
43
|
+
private buildExecutionPrompt;
|
|
44
|
+
private getPromptRuntimeContext;
|
|
45
|
+
private describeV3AgentTool;
|
|
46
|
+
private updateV3AgentSpinner;
|
|
47
|
+
private updateOperatorSpinner;
|
|
28
48
|
constructor(config: Config, logger: Logger);
|
|
29
49
|
run(options: ChatOptions): Promise<void>;
|
|
50
|
+
private ensureProjectWorkspace;
|
|
30
51
|
private initializeSession;
|
|
31
52
|
private handleDirectPrompt;
|
|
53
|
+
private formatWorkflowTargetResult;
|
|
54
|
+
private runWorkflowTargetPrompt;
|
|
55
|
+
private runOperatorTurn;
|
|
32
56
|
private runSimplePrompt;
|
|
33
57
|
private runAgentTurn;
|
|
34
58
|
private tryDirectSingleFileFlow;
|
|
59
|
+
private tryV3AgentWorkflow;
|
|
35
60
|
private startInteractiveChat;
|
|
36
61
|
private showHelp;
|
|
62
|
+
private showContext;
|
|
63
|
+
private compactCurrentSession;
|
|
37
64
|
private ensureAgentSystemPrompt;
|
|
38
65
|
private buildAgentSystemPrompt;
|
|
39
66
|
private buildScopedUserPrompt;
|
|
@@ -52,4 +79,3 @@ export declare class ChatCommand {
|
|
|
52
79
|
getChatHistory(): ChatMessage[];
|
|
53
80
|
}
|
|
54
81
|
export {};
|
|
55
|
-
//# sourceMappingURL=chat.d.ts.map
|