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.
Files changed (74) hide show
  1. package/README.md +9 -1
  2. package/dist/commands/auth.d.ts +0 -1
  3. package/dist/commands/auth.js +57 -6
  4. package/dist/commands/bridge.d.ts +7 -0
  5. package/dist/commands/bridge.js +31 -0
  6. package/dist/commands/chat.d.ts +27 -1
  7. package/dist/commands/chat.js +508 -14
  8. package/dist/commands/config.d.ts +0 -1
  9. package/dist/commands/config.js +10 -3
  10. package/dist/commands/deploy.d.ts +0 -1
  11. package/dist/commands/deploy.js +0 -1
  12. package/dist/commands/edit.d.ts +0 -1
  13. package/dist/commands/edit.js +0 -1
  14. package/dist/commands/explain.d.ts +0 -1
  15. package/dist/commands/explain.js +0 -1
  16. package/dist/commands/generate.d.ts +0 -1
  17. package/dist/commands/generate.js +0 -1
  18. package/dist/commands/hub.d.ts +0 -1
  19. package/dist/commands/hub.js +0 -1
  20. package/dist/commands/repo.d.ts +0 -1
  21. package/dist/commands/repo.js +0 -1
  22. package/dist/commands/review.d.ts +0 -1
  23. package/dist/commands/review.js +0 -1
  24. package/dist/commands/workflow.d.ts +31 -0
  25. package/dist/commands/workflow.js +140 -0
  26. package/dist/index.d.ts +2 -1
  27. package/dist/index.js +135 -11
  28. package/dist/utils/api.d.ts +210 -1
  29. package/dist/utils/api.js +1789 -47
  30. package/dist/utils/config.d.ts +14 -7
  31. package/dist/utils/config.js +22 -11
  32. package/dist/utils/files.d.ts +0 -1
  33. package/dist/utils/files.js +0 -1
  34. package/dist/utils/logger.d.ts +0 -1
  35. package/dist/utils/logger.js +0 -1
  36. package/dist/utils/session.d.ts +14 -2
  37. package/dist/utils/session.js +105 -4
  38. package/dist/utils/tools.d.ts +0 -1
  39. package/dist/utils/tools.js +0 -1
  40. package/package.json +23 -4
  41. package/dist/commands/auth.d.ts.map +0 -1
  42. package/dist/commands/auth.js.map +0 -1
  43. package/dist/commands/chat.d.ts.map +0 -1
  44. package/dist/commands/chat.js.map +0 -1
  45. package/dist/commands/config.d.ts.map +0 -1
  46. package/dist/commands/config.js.map +0 -1
  47. package/dist/commands/deploy.d.ts.map +0 -1
  48. package/dist/commands/deploy.js.map +0 -1
  49. package/dist/commands/edit.d.ts.map +0 -1
  50. package/dist/commands/edit.js.map +0 -1
  51. package/dist/commands/explain.d.ts.map +0 -1
  52. package/dist/commands/explain.js.map +0 -1
  53. package/dist/commands/generate.d.ts.map +0 -1
  54. package/dist/commands/generate.js.map +0 -1
  55. package/dist/commands/hub.d.ts.map +0 -1
  56. package/dist/commands/hub.js.map +0 -1
  57. package/dist/commands/repo.d.ts.map +0 -1
  58. package/dist/commands/repo.js.map +0 -1
  59. package/dist/commands/review.d.ts.map +0 -1
  60. package/dist/commands/review.js.map +0 -1
  61. package/dist/index.d.ts.map +0 -1
  62. package/dist/index.js.map +0 -1
  63. package/dist/utils/api.d.ts.map +0 -1
  64. package/dist/utils/api.js.map +0 -1
  65. package/dist/utils/config.d.ts.map +0 -1
  66. package/dist/utils/config.js.map +0 -1
  67. package/dist/utils/files.d.ts.map +0 -1
  68. package/dist/utils/files.js.map +0 -1
  69. package/dist/utils/logger.d.ts.map +0 -1
  70. package/dist/utils/logger.js.map +0 -1
  71. package/dist/utils/session.d.ts.map +0 -1
  72. package/dist/utils/session.js.map +0 -1
  73. package/dist/utils/tools.d.ts.map +0 -1
  74. 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://registry.npmjs.org/vigthoria-cli/-/vigthoria-cli-1.6.3.tgz
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
@@ -21,4 +21,3 @@ export declare class AuthCommand {
21
21
  private printLoginSuccess;
22
22
  }
23
23
  export {};
24
- //# sourceMappingURL=auth.d.ts.map
@@ -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
- console.log(chalk_1.default.gray(' ' + m.description));
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 apiOk = await this.api.healthCheck();
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(' Server: ') + (apiOk ? chalk_1.default.green('Online') : chalk_1.default.red('Offline')));
177
- console.log(chalk_1.default.gray(' Endpoint: ') + chalk_1.default.gray(this.config.get('apiUrl')));
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,7 @@
1
+ import { Config } from '../utils/config.js';
2
+ import { Logger } from '../utils/logger.js';
3
+ export declare class BridgeCommand {
4
+ private api;
5
+ constructor(config: Config, logger: Logger);
6
+ status(): Promise<void>;
7
+ }
@@ -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;
@@ -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