vigthoria-cli 1.13.20 → 1.13.22

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 (185) hide show
  1. package/completions/_vigthoria +49 -0
  2. package/completions/vigthoria.bash +6 -0
  3. package/completions/vigthoria.fish +41 -0
  4. package/dist/commands/auth.d.ts +1 -0
  5. package/dist/commands/auth.js +63 -128
  6. package/dist/commands/background.d.ts +0 -2
  7. package/dist/commands/background.js +26 -34
  8. package/dist/commands/bridge.js +45 -41
  9. package/dist/commands/cancel.d.ts +1 -0
  10. package/dist/commands/cancel.js +22 -16
  11. package/dist/commands/chat.d.ts +3 -42
  12. package/dist/commands/chat.js +378 -1123
  13. package/dist/commands/coding-registration.d.ts +4 -0
  14. package/dist/commands/coding-registration.js +24 -0
  15. package/dist/commands/config.js +23 -29
  16. package/dist/commands/conversation-registration.d.ts +4 -0
  17. package/dist/commands/conversation-registration.js +122 -0
  18. package/dist/commands/deploy.d.ts +8 -2
  19. package/dist/commands/deploy.js +92 -90
  20. package/dist/commands/device.d.ts +1 -2
  21. package/dist/commands/device.js +37 -21
  22. package/dist/commands/doctor-registration.d.ts +4 -0
  23. package/dist/commands/doctor-registration.js +200 -0
  24. package/dist/commands/edit.js +22 -33
  25. package/dist/commands/explain.js +7 -10
  26. package/dist/commands/fork.d.ts +1 -2
  27. package/dist/commands/fork.js +72 -22
  28. package/dist/commands/game.d.ts +1 -1
  29. package/dist/commands/game.js +17 -6
  30. package/dist/commands/generate.js +7 -9
  31. package/dist/commands/history.js +11 -7
  32. package/dist/commands/hub.d.ts +2 -2
  33. package/dist/commands/hub.js +34 -35
  34. package/dist/commands/legion.d.ts +0 -1
  35. package/dist/commands/legion.js +62 -79
  36. package/dist/commands/music.d.ts +1 -2
  37. package/dist/commands/music.js +62 -27
  38. package/dist/commands/platform-registration.d.ts +4 -0
  39. package/dist/commands/platform-registration.js +45 -0
  40. package/dist/commands/preview.d.ts +0 -1
  41. package/dist/commands/preview.js +82 -35
  42. package/dist/commands/product-run-registration.d.ts +4 -0
  43. package/dist/commands/product-run-registration.js +490 -0
  44. package/dist/commands/replay.d.ts +1 -2
  45. package/dist/commands/replay.js +15 -11
  46. package/dist/commands/repo.d.ts +14 -7
  47. package/dist/commands/repo.js +245 -196
  48. package/dist/commands/review.js +9 -12
  49. package/dist/commands/security.d.ts +1 -2
  50. package/dist/commands/security.js +12 -6
  51. package/dist/commands/update-registration.d.ts +3 -0
  52. package/dist/commands/update-registration.js +338 -0
  53. package/dist/commands/v4-registration.d.ts +4 -0
  54. package/dist/commands/v4-registration.js +24 -0
  55. package/dist/commands/v4.d.ts +1 -1
  56. package/dist/commands/v4.js +46 -8
  57. package/dist/commands/wallet.d.ts +1 -3
  58. package/dist/commands/wallet.js +18 -45
  59. package/dist/commands/workflow.d.ts +2 -0
  60. package/dist/commands/workflow.js +52 -39
  61. package/dist/index.js +122 -1589
  62. package/dist/utils/agent-stream-state.d.ts +27 -0
  63. package/dist/utils/agent-stream-state.js +93 -0
  64. package/dist/utils/agentRoute.d.ts +2 -1
  65. package/dist/utils/agentRoute.js +22 -9
  66. package/dist/utils/agentRunOutcome.d.ts +16 -0
  67. package/dist/utils/agentRunOutcome.js +37 -2
  68. package/dist/utils/api-client-factory.d.ts +8 -0
  69. package/dist/utils/api-client-factory.js +8 -0
  70. package/dist/utils/api.d.ts +44 -266
  71. package/dist/utils/api.js +647 -3180
  72. package/dist/utils/auth-session.d.ts +41 -0
  73. package/dist/utils/auth-session.js +224 -0
  74. package/dist/utils/brain-hub-client.d.ts +0 -4
  75. package/dist/utils/brain-hub-client.js +6 -3
  76. package/dist/utils/bridge-client.js +2 -0
  77. package/dist/utils/capability-health-service.d.ts +48 -0
  78. package/dist/utils/capability-health-service.js +64 -0
  79. package/dist/utils/chat-prompt-policy.d.ts +18 -0
  80. package/dist/utils/chat-prompt-policy.js +61 -0
  81. package/dist/utils/chat-tool-call-parser.d.ts +11 -0
  82. package/dist/utils/chat-tool-call-parser.js +71 -0
  83. package/dist/utils/cli-state.d.ts +22 -4
  84. package/dist/utils/cli-state.js +105 -47
  85. package/dist/utils/code-operations-service.d.ts +104 -0
  86. package/dist/utils/code-operations-service.js +837 -0
  87. package/dist/utils/codebase-indexer.d.ts +1 -0
  88. package/dist/utils/codebase-indexer.js +28 -8
  89. package/dist/utils/command-contract.d.ts +61 -0
  90. package/dist/utils/command-contract.js +149 -0
  91. package/dist/utils/command-policy.d.ts +10 -0
  92. package/dist/utils/command-policy.js +54 -0
  93. package/dist/utils/config.d.ts +13 -5
  94. package/dist/utils/config.js +220 -94
  95. package/dist/utils/context-ranker.js +11 -2
  96. package/dist/utils/context-state.d.ts +39 -0
  97. package/dist/utils/context-state.js +52 -0
  98. package/dist/utils/deckEvents.d.ts +0 -5
  99. package/dist/utils/deckEvents.js +3 -2
  100. package/dist/utils/desktop-bridge-client.js +2 -0
  101. package/dist/utils/direct-output-policy.d.ts +3 -0
  102. package/dist/utils/direct-output-policy.js +76 -0
  103. package/dist/utils/durable-json.d.ts +57 -0
  104. package/dist/utils/durable-json.js +319 -0
  105. package/dist/utils/fastAgentRouter.d.ts +5 -6
  106. package/dist/utils/fastAgentRouter.js +17 -25
  107. package/dist/utils/files.js +21 -13
  108. package/dist/utils/frontend-preview-service.d.ts +76 -0
  109. package/dist/utils/frontend-preview-service.js +482 -0
  110. package/dist/utils/goaEvents.d.ts +0 -4
  111. package/dist/utils/goaEvents.js +5 -2
  112. package/dist/utils/logger.d.ts +2 -1
  113. package/dist/utils/logger.js +27 -20
  114. package/dist/utils/mcp-context-client.d.ts +24 -0
  115. package/dist/utils/mcp-context-client.js +58 -0
  116. package/dist/utils/model-governance.d.ts +18 -0
  117. package/dist/utils/model-governance.js +75 -0
  118. package/dist/utils/model-transport-service.d.ts +44 -0
  119. package/dist/utils/model-transport-service.js +111 -0
  120. package/dist/utils/mutation-journal.d.ts +42 -0
  121. package/dist/utils/mutation-journal.js +387 -0
  122. package/dist/utils/network-policy.d.ts +24 -0
  123. package/dist/utils/network-policy.js +202 -0
  124. package/dist/utils/operator-client.d.ts +45 -0
  125. package/dist/utils/operator-client.js +159 -0
  126. package/dist/utils/post-write-validator.js +7 -9
  127. package/dist/utils/preview-screenshot-adapter.d.ts +13 -0
  128. package/dist/utils/preview-screenshot-adapter.js +36 -0
  129. package/dist/utils/process-policy.d.ts +23 -0
  130. package/dist/utils/process-policy.js +284 -0
  131. package/dist/utils/project-memory.d.ts +13 -3
  132. package/dist/utils/project-memory.js +70 -17
  133. package/dist/utils/prompt-workspace-resolver.d.ts +14 -0
  134. package/dist/utils/prompt-workspace-resolver.js +64 -0
  135. package/dist/utils/release-install.d.ts +11 -0
  136. package/dist/utils/release-install.js +155 -0
  137. package/dist/utils/release-policy.d.ts +64 -0
  138. package/dist/utils/release-policy.js +293 -0
  139. package/dist/utils/requestIntent.js +22 -3
  140. package/dist/utils/runtime-capability.d.ts +8 -0
  141. package/dist/utils/runtime-capability.js +16 -0
  142. package/dist/utils/secret-policy.d.ts +20 -0
  143. package/dist/utils/secret-policy.js +160 -0
  144. package/dist/utils/session.d.ts +17 -3
  145. package/dist/utils/session.js +354 -110
  146. package/dist/utils/tool-approval-service.d.ts +17 -0
  147. package/dist/utils/tool-approval-service.js +78 -0
  148. package/dist/utils/tool-capability-providers.d.ts +57 -0
  149. package/dist/utils/tool-capability-providers.js +57 -0
  150. package/dist/utils/tools.d.ts +2 -23
  151. package/dist/utils/tools.js +216 -508
  152. package/dist/utils/update-policy.d.ts +18 -0
  153. package/dist/utils/update-policy.js +137 -0
  154. package/dist/utils/v3-agent-client.d.ts +40 -0
  155. package/dist/utils/v3-agent-client.js +165 -0
  156. package/dist/utils/v3-workspace-service.d.ts +28 -0
  157. package/dist/utils/v3-workspace-service.js +279 -0
  158. package/dist/utils/vigflow-client.d.ts +95 -0
  159. package/dist/utils/vigflow-client.js +105 -0
  160. package/dist/utils/workspace-boundary.d.ts +45 -0
  161. package/dist/utils/workspace-boundary.js +377 -0
  162. package/dist/utils/workspace-brain-service.d.ts +2 -0
  163. package/dist/utils/workspace-brain-service.js +11 -1
  164. package/dist/utils/workspace-cache.js +37 -15
  165. package/dist/utils/workspace-stream.js +35 -10
  166. package/install.ps1 +85 -142
  167. package/install.sh +75 -80
  168. package/package.json +43 -9
  169. package/release-policy.json +43 -0
  170. package/scripts/release/LOCAL_MACHINE_USER_VERIFICATION.md +1 -1
  171. package/scripts/release/generate-completions.mjs +24 -0
  172. package/scripts/release/install-release.mjs +10 -0
  173. package/scripts/release/publish-cli-release.mjs +116 -0
  174. package/scripts/release/publish-cli-release.sh +2 -70
  175. package/scripts/release/resolve-release-manifest.mjs +26 -0
  176. package/scripts/release/test-balanced-model-live.sh +42 -0
  177. package/scripts/release/validate-live-service-gates.sh +90 -0
  178. package/scripts/release/validate-no-go-gates.sh +135 -174
  179. package/scripts/release/verify-runtime-consistency.mjs +4 -1
  180. package/dist/commands/index.d.ts +0 -12
  181. package/dist/commands/index.js +0 -194
  182. package/dist/commands/update.d.ts +0 -9
  183. package/dist/commands/update.js +0 -301
  184. package/dist/utils/templateInstantPath.d.ts +0 -18
  185. package/dist/utils/templateInstantPath.js +0 -228
@@ -1,228 +0,0 @@
1
- /**
2
- * Sub-second path: Template Service match → write index.html (skip V3 planner).
3
- */
4
- import * as fs from 'fs';
5
- import * as path from 'path';
6
- import { stripExecutionShaping } from './requestIntent.js';
7
- function escapeJsString(value) {
8
- return String(value || '').replace(/\\/g, '\\\\').replace(/'/g, "\\'");
9
- }
10
- function escapeHtml(value) {
11
- return String(value || '')
12
- .replace(/&/g, '&')
13
- .replace(/</g, '&lt;')
14
- .replace(/>/g, '&gt;')
15
- .replace(/"/g, '&quot;');
16
- }
17
- function extractPopupMessage(vision) {
18
- const explicitShown = vision.match(/(?:popup\s+is\s+shown|popup\s+shown|shown|shows?|display(?:s|ed)?)\s*:?\s*["']([^"']+)["']/i);
19
- if (explicitShown?.[1])
20
- return explicitShown[1];
21
- const popupPhrases = [...vision.matchAll(/popup[^"']*(?:message|text|says?|shown|with)\s*:?\s*["']([^"']+)["']/gi)];
22
- if (popupPhrases.length > 0)
23
- return popupPhrases[popupPhrases.length - 1][1];
24
- const quoted = vision.match(/(?:alert|message)\s*(?:with|says?|text|:)\s*["']([^"']+)["']/i);
25
- if (quoted?.[1])
26
- return quoted[1];
27
- if (/\bhello\s*world\b/i.test(vision))
28
- return 'hello world';
29
- return 'Hello World';
30
- }
31
- function extractButtonLabel(vision) {
32
- const label = vision.match(/\blabel\s+["']([^"']+)["']/i)
33
- || vision.match(/\bbutton(?:\s+(?:text|label|called|named))?\s+["']([^"']+)["']/i);
34
- if (label?.[1])
35
- return label[1];
36
- if (/\bclick\b/i.test(vision))
37
- return 'CLICK';
38
- return 'Click';
39
- }
40
- function isSimplePopupButtonPrompt(vision) {
41
- const text = String(vision || '').toLowerCase();
42
- return /\b(popup|alert|message)\b/.test(text)
43
- && /\b(button|click|label)\b/.test(text)
44
- && /\bhello\s*world\b/.test(text);
45
- }
46
- function exactPopupButtonHtml(vision) {
47
- const popupMessage = extractPopupMessage(vision);
48
- const buttonLabel = extractButtonLabel(vision);
49
- const blue = /\bblue\b/i.test(vision) ? '#0000ff' : '#0a0a1a';
50
- return `<!DOCTYPE html>
51
- <html lang="en">
52
- <head>
53
- <meta charset="UTF-8">
54
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
55
- <title>${escapeHtml(buttonLabel)} Popup</title>
56
- <style>
57
- * { box-sizing: border-box; }
58
- body {
59
- min-height: 100vh;
60
- margin: 0;
61
- display: grid;
62
- place-items: center;
63
- background: ${blue};
64
- font-family: Arial, sans-serif;
65
- }
66
- button {
67
- padding: 14px 28px;
68
- border: 0;
69
- border-radius: 10px;
70
- background: #ffffff;
71
- color: #0000aa;
72
- font-size: 20px;
73
- font-weight: 700;
74
- cursor: pointer;
75
- box-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);
76
- }
77
- </style>
78
- </head>
79
- <body>
80
- <button id="vigthoria-popup-button" type="button">${escapeHtml(buttonLabel)}</button>
81
- <script>
82
- document.getElementById('vigthoria-popup-button').addEventListener('click', function () {
83
- alert('${escapeJsString(popupMessage)}');
84
- });
85
- </script>
86
- </body>
87
- </html>
88
- `;
89
- }
90
- function ensurePopupScript(html, vision) {
91
- const text = String(vision || '').toLowerCase();
92
- if (!/\b(popup|alert|hello\s*world)\b/.test(text)) {
93
- return html;
94
- }
95
- if (isSimplePopupButtonPrompt(vision)) {
96
- return exactPopupButtonHtml(vision);
97
- }
98
- if (/\balert\s*\(/i.test(html)) {
99
- return html;
100
- }
101
- const script = `<script>document.addEventListener('DOMContentLoaded',()=>{const b=document.querySelector('button,a.cta,.cta');if(b)b.addEventListener('click',()=>alert('${escapeJsString(extractPopupMessage(vision))}'));});</script>`;
102
- if (/<\/body>/i.test(html)) {
103
- return html.replace(/<\/body>/i, `${script}\n</body>`);
104
- }
105
- return `${html}\n${script}`;
106
- }
107
- function minimalHelloWorldHtml(popupMessage = 'Hello World') {
108
- const safe = escapeJsString(popupMessage || 'Hello World');
109
- return `<!DOCTYPE html>
110
- <html lang="en">
111
- <head>
112
- <meta charset="UTF-8">
113
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
114
- <title>Hello World</title>
115
- <style>
116
- body { font-family: system-ui, sans-serif; display: grid; place-items: center; min-height: 100vh; margin: 0; background: #0a0a1a; color: #e6f0ff; }
117
- h1 { font-size: 2rem; }
118
- </style>
119
- </head>
120
- <body>
121
- <h1>Hello World</h1>
122
- <button type="button" onclick="alert('${safe}')">CLICK</button>
123
- </body>
124
- </html>
125
- `;
126
- }
127
- // The Template Service (port 4011) hard-rejects any `vision` payload over
128
- // 2000 characters with an HTTP 400. Real prompts (especially resumed-session
129
- // `/retry` context on an existing project) routinely exceed that, which
130
- // otherwise made this fast-path fail every single time for non-trivial
131
- // requests instead of ever getting a chance to match. Cap to the server's
132
- // own limit so template matching still gets a fair shot on long prompts.
133
- const TEMPLATE_SERVICE_MAX_VISION_CHARS = 2000;
134
- async function fetchTemplateMatch(api, vision, timeoutMs = 15000) {
135
- const bases = api.getTemplateServiceBaseUrls();
136
- let lastError = 'Template Service unreachable';
137
- const boundedVision = String(vision || '').slice(0, TEMPLATE_SERVICE_MAX_VISION_CHARS);
138
- for (const base of bases) {
139
- const controller = new AbortController();
140
- const timer = setTimeout(() => controller.abort(), timeoutMs);
141
- try {
142
- const response = await fetch(`${base}/match`, {
143
- method: 'POST',
144
- headers: { 'Content-Type': 'application/json' },
145
- body: JSON.stringify({ vision: boundedVision }),
146
- signal: controller.signal,
147
- });
148
- clearTimeout(timer);
149
- const payload = await response.json().catch(() => null);
150
- if (!response.ok) {
151
- lastError = payload?.error || `HTTP ${response.status} from ${base}`;
152
- continue;
153
- }
154
- if (!payload?.success || !payload?.html) {
155
- lastError = payload?.message || payload?.error || 'No template match';
156
- continue;
157
- }
158
- const templateMeta = payload.template;
159
- const templateName = typeof templateMeta === 'string'
160
- ? templateMeta
161
- : (templateMeta?.name || templateMeta?.id);
162
- return {
163
- html: String(payload.html),
164
- template: templateName,
165
- confidence: Number(payload.confidence) || 0,
166
- processingMs: Number(payload.processing_time || payload.processingTime) || 0,
167
- };
168
- }
169
- catch (err) {
170
- clearTimeout(timer);
171
- lastError = err?.message || String(err);
172
- }
173
- }
174
- return { error: lastError };
175
- }
176
- export async function runTemplateInstantPath(api, vision, workspacePath, options = {}) {
177
- const entryPath = options.entryPath || 'index.html';
178
- const target = path.join(workspacePath, entryPath);
179
- const cleanVision = stripExecutionShaping(vision);
180
- const preferMinimal = options.forceMinimalFallback === true;
181
- const keepScaffold = String(process.env.VIGTHORIA_EXPRESS_KEEP_SCAFFOLD || process.env.CLI_EXPRESS_KEEP_SCAFFOLD || '').trim().toLowerCase();
182
- if (['1', 'true', 'yes'].includes(keepScaffold)) {
183
- try {
184
- const stat = fs.statSync(target);
185
- if (stat.isFile() && stat.size >= 8000) {
186
- return {
187
- ok: true,
188
- entryPath,
189
- templateName: 'express-preserved-scaffold',
190
- confidence: 1,
191
- processingMs: 0,
192
- };
193
- }
194
- }
195
- catch {
196
- // fall through to normal template match
197
- }
198
- }
199
- let html;
200
- let usedFallback = false;
201
- let match = {};
202
- if (preferMinimal) {
203
- html = minimalHelloWorldHtml(extractPopupMessage(cleanVision));
204
- usedFallback = true;
205
- }
206
- else {
207
- match = await fetchTemplateMatch(api, cleanVision);
208
- html = match.html;
209
- if (!html && options.allowFallback !== false) {
210
- html = minimalHelloWorldHtml(extractPopupMessage(cleanVision));
211
- usedFallback = true;
212
- }
213
- }
214
- if (!html) {
215
- return { ok: false, error: match.error || 'Template match failed' };
216
- }
217
- html = ensurePopupScript(html, cleanVision);
218
- fs.mkdirSync(path.dirname(target), { recursive: true });
219
- fs.writeFileSync(target, html, 'utf8');
220
- return {
221
- ok: true,
222
- entryPath,
223
- templateName: match.template || (usedFallback ? 'minimal-hello-world' : undefined),
224
- confidence: match.confidence,
225
- processingMs: match.processingMs,
226
- usedFallback,
227
- };
228
- }