ft-scout 8.0.3 → 8.0.4
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/.firebase/hosting.d2Vi.cache +6 -6
- package/README.md +29 -13
- package/bin/src/commands/agent.d.ts.map +1 -1
- package/bin/src/commands/agent.js +42 -18
- package/bin/src/commands/agent.js.map +1 -1
- package/bin/src/engine/agentEngine.d.ts.map +1 -1
- package/bin/src/engine/agentEngine.js +16 -4
- package/bin/src/engine/agentEngine.js.map +1 -1
- package/bin/src/engine/appControl.d.ts.map +1 -1
- package/bin/src/engine/appControl.js +287 -17
- package/bin/src/engine/appControl.js.map +1 -1
- package/bin/src/engine/liveScreenEngine.d.ts.map +1 -0
- package/bin/src/engine/liveScreenEngine.js +390 -0
- package/bin/src/engine/liveScreenEngine.js.map +1 -0
- package/bin/src/engine/voiceEngine.d.ts.map +1 -1
- package/bin/src/engine/voiceEngine.js +1 -0
- package/bin/src/engine/voiceEngine.js.map +1 -1
- package/bin/src/index.js +5 -4
- package/bin/src/index.js.map +1 -1
- package/bin/src/utils/branding.js +1 -1
- package/firebase.json +20 -6
- package/package.json +1 -1
- package/web/app.js +13 -4
- package/web/styles.css +96 -1
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
import { exec, spawn } from 'child_process';
|
|
2
|
+
import { promisify } from 'util';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import OpenAI from 'openai';
|
|
5
|
+
import dotenv from 'dotenv';
|
|
6
|
+
import { showScreenAuraOverlay, startScreenAuraOverlay, stopScreenAuraOverlay } from './appControl.js';
|
|
7
|
+
dotenv.config({ quiet: true });
|
|
8
|
+
const execAsync = promisify(exec);
|
|
9
|
+
/**
|
|
10
|
+
* Capture current active app window or desktop screen directly in memory as a compressed JPEG base64 string.
|
|
11
|
+
* When targetApp is specified (e.g. 'chrome', 'browser', 'code'), captures ONLY that application's window rectangle.
|
|
12
|
+
* Zero files are written to disk.
|
|
13
|
+
*/
|
|
14
|
+
export async function captureLiveScreenFrameInMemory(targetApp) {
|
|
15
|
+
const platform = process.platform;
|
|
16
|
+
if (platform === 'win32') {
|
|
17
|
+
const cleanTarget = (targetApp || '').trim().replace(/"/g, '');
|
|
18
|
+
const psScript = `
|
|
19
|
+
Add-Type -AssemblyName System.Windows.Forms
|
|
20
|
+
Add-Type -AssemblyName System.Drawing
|
|
21
|
+
Add-Type -AssemblyName UIAutomationClient
|
|
22
|
+
|
|
23
|
+
$targetApp = "${cleanTarget}"
|
|
24
|
+
$screen = [System.Windows.Forms.Screen]::PrimaryScreen
|
|
25
|
+
$rect = $screen.Bounds
|
|
26
|
+
$activeTitle = "Desktop"
|
|
27
|
+
$isIsolated = $false
|
|
28
|
+
|
|
29
|
+
if ($targetApp) {
|
|
30
|
+
$procNames = @($targetApp)
|
|
31
|
+
if ($targetApp -match "browser|chrome|edge|web") {
|
|
32
|
+
$procNames = @("chrome", "msedge", "brave", "firefox")
|
|
33
|
+
} elseif ($targetApp -match "editor|code|vscode") {
|
|
34
|
+
$procNames = @("Code", "cursor", "notepad")
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
$proc = Get-Process -Name $procNames -ErrorAction SilentlyContinue | Where-Object { $_.MainWindowHandle -ne 0 } | Select-Object -First 1
|
|
38
|
+
if ($proc) {
|
|
39
|
+
$activeTitle = if ($proc.MainWindowTitle) { $proc.MainWindowTitle } else { $proc.ProcessName }
|
|
40
|
+
try {
|
|
41
|
+
$el = [System.Windows.Automation.AutomationElement]::FromHandle($proc.MainWindowHandle)
|
|
42
|
+
$b = $el.Current.BoundingRectangle
|
|
43
|
+
if ($b.Width -gt 80 -and $b.Height -gt 80) {
|
|
44
|
+
$rect = New-Object System.Drawing.Rectangle([int]$b.X, [int]$b.Y, [int]$b.Width, [int]$b.Height)
|
|
45
|
+
$isIsolated = $true
|
|
46
|
+
}
|
|
47
|
+
} catch {}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
$bmp = New-Object System.Drawing.Bitmap($rect.Width, $rect.Height)
|
|
52
|
+
$g = [System.Drawing.Graphics]::FromImage($bmp)
|
|
53
|
+
try {
|
|
54
|
+
$g.CopyFromScreen($rect.Location, [System.Drawing.Point]::Empty, $rect.Size)
|
|
55
|
+
} catch {}
|
|
56
|
+
|
|
57
|
+
$ms = New-Object System.IO.MemoryStream
|
|
58
|
+
$bmp.Save($ms, [System.Drawing.Imaging.ImageFormat]::Jpeg)
|
|
59
|
+
$base64 = [System.Convert]::ToBase64String($ms.ToArray())
|
|
60
|
+
$cur = [System.Windows.Forms.Cursor]::Position
|
|
61
|
+
|
|
62
|
+
$g.Dispose()
|
|
63
|
+
$bmp.Dispose()
|
|
64
|
+
$ms.Dispose()
|
|
65
|
+
|
|
66
|
+
@{
|
|
67
|
+
width = $rect.Width
|
|
68
|
+
height = $rect.Height
|
|
69
|
+
cursorX = $cur.X
|
|
70
|
+
cursorY = $cur.Y
|
|
71
|
+
activeWindow = $activeTitle
|
|
72
|
+
targetApp = $targetApp
|
|
73
|
+
isIsolated = $isIsolated
|
|
74
|
+
base64 = $base64
|
|
75
|
+
} | ConvertTo-Json -Compress
|
|
76
|
+
`;
|
|
77
|
+
try {
|
|
78
|
+
const encoded = Buffer.from(psScript, 'utf16le').toString('base64');
|
|
79
|
+
const { stdout } = await execAsync(`powershell -NoProfile -EncodedCommand ${encoded}`, {
|
|
80
|
+
maxBuffer: 30 * 1024 * 1024,
|
|
81
|
+
timeout: 8000,
|
|
82
|
+
});
|
|
83
|
+
const parsed = JSON.parse(stdout.trim());
|
|
84
|
+
if (parsed && parsed.base64) {
|
|
85
|
+
return {
|
|
86
|
+
data: parsed.base64,
|
|
87
|
+
mimeType: 'image/jpeg',
|
|
88
|
+
width: Number(parsed.width) || 1920,
|
|
89
|
+
height: Number(parsed.height) || 1080,
|
|
90
|
+
timestamp: Date.now(),
|
|
91
|
+
activeWindow: String(parsed.activeWindow || 'Desktop'),
|
|
92
|
+
targetApp: parsed.targetApp || targetApp,
|
|
93
|
+
isAppIsolated: Boolean(parsed.isIsolated),
|
|
94
|
+
cursorPosition: {
|
|
95
|
+
x: Number(parsed.cursorX) || 0,
|
|
96
|
+
y: Number(parsed.cursorY) || 0,
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else if (platform === 'darwin') {
|
|
106
|
+
try {
|
|
107
|
+
// macOS: capture directly to stdout as jpg
|
|
108
|
+
const { stdout } = await execAsync('screencapture -t jpg -x /dev/stdout', {
|
|
109
|
+
encoding: 'buffer',
|
|
110
|
+
maxBuffer: 20 * 1024 * 1024,
|
|
111
|
+
timeout: 5000,
|
|
112
|
+
});
|
|
113
|
+
if (stdout && stdout.length > 0) {
|
|
114
|
+
return {
|
|
115
|
+
data: Buffer.from(stdout).toString('base64'),
|
|
116
|
+
mimeType: 'image/jpeg',
|
|
117
|
+
width: 1920,
|
|
118
|
+
height: 1080,
|
|
119
|
+
timestamp: Date.now(),
|
|
120
|
+
activeWindow: 'Desktop',
|
|
121
|
+
cursorPosition: { x: 0, y: 0 },
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
// Linux: capture to stdout using scrot or import
|
|
131
|
+
try {
|
|
132
|
+
const { stdout } = await execAsync('import -window root jpg:- || scrot -b -F -', {
|
|
133
|
+
encoding: 'buffer',
|
|
134
|
+
maxBuffer: 20 * 1024 * 1024,
|
|
135
|
+
timeout: 5000,
|
|
136
|
+
});
|
|
137
|
+
if (stdout && stdout.length > 0) {
|
|
138
|
+
return {
|
|
139
|
+
data: Buffer.from(stdout).toString('base64'),
|
|
140
|
+
mimeType: 'image/jpeg',
|
|
141
|
+
width: 1920,
|
|
142
|
+
height: 1080,
|
|
143
|
+
timestamp: Date.now(),
|
|
144
|
+
activeWindow: 'Desktop',
|
|
145
|
+
cursorPosition: { x: 0, y: 0 },
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Call Vision AI directly with an in-memory base64 frame without writing anything to disk.
|
|
157
|
+
*/
|
|
158
|
+
export async function callVisionAiWithFrame(frame, prompt, maxTokens = 350) {
|
|
159
|
+
if (!frame || !frame.data)
|
|
160
|
+
return null;
|
|
161
|
+
const nvidiaKey = process.env.NVIDIA_API_KEY || process.env.NVCF_API_KEY;
|
|
162
|
+
const geminiKey = process.env.GEMINI_API_KEY;
|
|
163
|
+
const openaiKey = process.env.OPENAI_API_KEY;
|
|
164
|
+
const byokKey = process.env.BYOK_API_KEY;
|
|
165
|
+
const candidates = [];
|
|
166
|
+
if (geminiKey) {
|
|
167
|
+
candidates.push({ apiKey: geminiKey, baseURL: 'https://generativelanguage.googleapis.com/v1beta/openai', model: 'gemini-2.0-flash', timeout: 20000 });
|
|
168
|
+
}
|
|
169
|
+
if (nvidiaKey) {
|
|
170
|
+
candidates.push({ apiKey: nvidiaKey, baseURL: 'https://integrate.api.nvidia.com/v1', model: 'meta/llama-3.2-11b-vision-instruct', timeout: 35000 });
|
|
171
|
+
}
|
|
172
|
+
if (openaiKey) {
|
|
173
|
+
candidates.push({ apiKey: openaiKey, model: 'gpt-4o-mini', timeout: 20000 });
|
|
174
|
+
}
|
|
175
|
+
if (byokKey) {
|
|
176
|
+
candidates.push({ apiKey: byokKey, model: 'gpt-4o-mini', timeout: 20000 });
|
|
177
|
+
}
|
|
178
|
+
for (const cand of candidates) {
|
|
179
|
+
try {
|
|
180
|
+
const client = new OpenAI({ apiKey: cand.apiKey, baseURL: cand.baseURL, timeout: cand.timeout });
|
|
181
|
+
const resp = await client.chat.completions.create({
|
|
182
|
+
model: cand.model,
|
|
183
|
+
messages: [
|
|
184
|
+
{
|
|
185
|
+
role: 'user',
|
|
186
|
+
content: [
|
|
187
|
+
{ type: 'text', text: prompt },
|
|
188
|
+
{ type: 'image_url', image_url: { url: `data:image/jpeg;base64,${frame.data}` } },
|
|
189
|
+
],
|
|
190
|
+
},
|
|
191
|
+
],
|
|
192
|
+
max_tokens: maxTokens,
|
|
193
|
+
});
|
|
194
|
+
const reply = resp.choices[0]?.message?.content?.trim();
|
|
195
|
+
if (reply) {
|
|
196
|
+
return reply;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Continuous Live Screen Share Session Manager.
|
|
207
|
+
* Maintains real-time screen stream in memory and shares frames directly with the AI model.
|
|
208
|
+
*/
|
|
209
|
+
export class LiveScreenShareSession {
|
|
210
|
+
isStreaming = false;
|
|
211
|
+
timer = null;
|
|
212
|
+
latestFrame = null;
|
|
213
|
+
frameListeners = [];
|
|
214
|
+
streamStartTime = 0;
|
|
215
|
+
frameCount = 0;
|
|
216
|
+
targetApp = undefined;
|
|
217
|
+
isActive() {
|
|
218
|
+
return this.isStreaming;
|
|
219
|
+
}
|
|
220
|
+
setTargetApp(appName) {
|
|
221
|
+
this.targetApp = appName;
|
|
222
|
+
if (this.isStreaming) {
|
|
223
|
+
const appLabel = this.targetApp ? ` [App: ${this.targetApp}]` : '';
|
|
224
|
+
startScreenAuraOverlay(`Live Screen Share Active${appLabel} • Streaming to Model`).catch(() => { });
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
getTargetApp() {
|
|
228
|
+
return this.targetApp;
|
|
229
|
+
}
|
|
230
|
+
getLatestFrame() {
|
|
231
|
+
return this.latestFrame;
|
|
232
|
+
}
|
|
233
|
+
async getOrCaptureFrame() {
|
|
234
|
+
if (this.latestFrame && Date.now() - this.latestFrame.timestamp < 3000) {
|
|
235
|
+
return this.latestFrame;
|
|
236
|
+
}
|
|
237
|
+
const fresh = await captureLiveScreenFrameInMemory(this.targetApp);
|
|
238
|
+
if (fresh) {
|
|
239
|
+
this.latestFrame = fresh;
|
|
240
|
+
}
|
|
241
|
+
return this.latestFrame;
|
|
242
|
+
}
|
|
243
|
+
async start(options) {
|
|
244
|
+
if (this.isStreaming) {
|
|
245
|
+
return { success: true, message: 'Live screen sharing is already active.' };
|
|
246
|
+
}
|
|
247
|
+
this.isStreaming = true;
|
|
248
|
+
this.streamStartTime = Date.now();
|
|
249
|
+
this.frameCount = 0;
|
|
250
|
+
if (options?.targetApp) {
|
|
251
|
+
this.targetApp = options.targetApp;
|
|
252
|
+
}
|
|
253
|
+
if (options?.onFrame) {
|
|
254
|
+
this.frameListeners.push(options.onFrame);
|
|
255
|
+
}
|
|
256
|
+
// Show live visual screen share aura HUD continuously while screen sharing is running
|
|
257
|
+
const appLabel = this.targetApp ? ` [App: ${this.targetApp}]` : '';
|
|
258
|
+
startScreenAuraOverlay(`Live Screen Share Active${appLabel} • Streaming to Model`).catch(() => { });
|
|
259
|
+
console.log(chalk.bold.red('\n[LIVE SCREEN SHARE ACTIVE]') + chalk.cyan(` Real-time screen feed is streaming directly to the model (0 files saved to disk).${appLabel ? ` Focused window: ${this.targetApp}` : ''}`));
|
|
260
|
+
// Capture initial frame immediately
|
|
261
|
+
const initFrame = await captureLiveScreenFrameInMemory(this.targetApp);
|
|
262
|
+
if (initFrame) {
|
|
263
|
+
this.latestFrame = initFrame;
|
|
264
|
+
this.frameCount++;
|
|
265
|
+
this.notifyListeners(initFrame);
|
|
266
|
+
}
|
|
267
|
+
const intervalMs = Math.max(1000, options?.intervalMs || 2000);
|
|
268
|
+
this.timer = setInterval(async () => {
|
|
269
|
+
if (!this.isStreaming)
|
|
270
|
+
return;
|
|
271
|
+
try {
|
|
272
|
+
const frame = await captureLiveScreenFrameInMemory(this.targetApp);
|
|
273
|
+
if (frame) {
|
|
274
|
+
this.latestFrame = frame;
|
|
275
|
+
this.frameCount++;
|
|
276
|
+
this.notifyListeners(frame);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
catch { }
|
|
280
|
+
}, intervalMs);
|
|
281
|
+
return {
|
|
282
|
+
success: true,
|
|
283
|
+
message: `Live screen share initiated. ${this.targetApp ? `Only the ${this.targetApp} window is being shared.` : 'Screen is streaming to model in real time.'}`,
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
stop() {
|
|
287
|
+
if (!this.isStreaming) {
|
|
288
|
+
return { success: true, summary: 'Live screen share was not running.' };
|
|
289
|
+
}
|
|
290
|
+
this.isStreaming = false;
|
|
291
|
+
if (this.timer) {
|
|
292
|
+
clearInterval(this.timer);
|
|
293
|
+
this.timer = null;
|
|
294
|
+
}
|
|
295
|
+
this.frameListeners = [];
|
|
296
|
+
// Close persistent screen share aura overlay
|
|
297
|
+
stopScreenAuraOverlay();
|
|
298
|
+
const elapsedSecs = Math.round((Date.now() - this.streamStartTime) / 1000);
|
|
299
|
+
const summary = `Live screen share session ended. Streamed ${this.frameCount} frames over ${elapsedSecs}s in-memory.`;
|
|
300
|
+
console.log(chalk.yellow(`\n⚪ [LIVE SCREEN SHARE STOPPED] ${summary}`));
|
|
301
|
+
return { success: true, summary };
|
|
302
|
+
}
|
|
303
|
+
onFrame(callback) {
|
|
304
|
+
this.frameListeners.push(callback);
|
|
305
|
+
return () => {
|
|
306
|
+
this.frameListeners = this.frameListeners.filter((cb) => cb !== callback);
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
notifyListeners(frame) {
|
|
310
|
+
for (const listener of this.frameListeners) {
|
|
311
|
+
try {
|
|
312
|
+
listener(frame);
|
|
313
|
+
}
|
|
314
|
+
catch { }
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Inspect active live screen share stream directly in memory.
|
|
319
|
+
*/
|
|
320
|
+
async analyzeLiveStream(targetQuery) {
|
|
321
|
+
const frame = await this.getOrCaptureFrame();
|
|
322
|
+
if (!frame) {
|
|
323
|
+
return {
|
|
324
|
+
success: false,
|
|
325
|
+
output: 'Could not capture frame from live screen stream.',
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
let aiVision = '';
|
|
329
|
+
try {
|
|
330
|
+
const prompt = targetQuery
|
|
331
|
+
? `Analyze this live screen stream frame specifically regarding: "${targetQuery}". Keep it concise, noting active window, visible UI elements, buttons, or error messages.`
|
|
332
|
+
: `Briefly describe what is currently visible on this live application/screen stream: active window, main content/tabs, and system state in 2-3 sentences.`;
|
|
333
|
+
const reply = await callVisionAiWithFrame(frame, prompt, 350);
|
|
334
|
+
if (reply) {
|
|
335
|
+
aiVision = `\nScout Live Screen Stream Analysis:\n${reply.trim()}`;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
catch { }
|
|
339
|
+
const isolationLabel = frame.isAppIsolated
|
|
340
|
+
? `YES (Focused ONLY on "${frame.targetApp || frame.activeWindow}" window)`
|
|
341
|
+
: `Full Desktop (${frame.targetApp ? `Waiting for ${frame.targetApp} window to focus` : 'Default'})`;
|
|
342
|
+
const report = [
|
|
343
|
+
`=== SCOUT LIVE SCREEN SHARE FEED ===`,
|
|
344
|
+
`Status: Live Stream Active`,
|
|
345
|
+
`Target App: ${frame.targetApp || 'All Active Windows'}`,
|
|
346
|
+
`App Isolation: ${isolationLabel}`,
|
|
347
|
+
`Resolution: ${frame.width}x${frame.height}`,
|
|
348
|
+
`Active Window: "${frame.activeWindow}"`,
|
|
349
|
+
`Mouse Cursor: (${frame.cursorPosition.x}, ${frame.cursorPosition.y})`,
|
|
350
|
+
`Capture Mode: In-Memory Live Video Stream (Zero disk I/O / No screenshot files created)`,
|
|
351
|
+
`Live Feed Status: Screen is actively shared with the model in real time.${aiVision}`,
|
|
352
|
+
].join('\n');
|
|
353
|
+
return {
|
|
354
|
+
success: true,
|
|
355
|
+
output: report,
|
|
356
|
+
details: {
|
|
357
|
+
width: frame.width,
|
|
358
|
+
height: frame.height,
|
|
359
|
+
activeWindow: frame.activeWindow,
|
|
360
|
+
targetApp: frame.targetApp,
|
|
361
|
+
isAppIsolated: frame.isAppIsolated,
|
|
362
|
+
cursorPosition: frame.cursorPosition,
|
|
363
|
+
timestamp: frame.timestamp,
|
|
364
|
+
},
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
export const globalScreenShareSession = new LiveScreenShareSession();
|
|
369
|
+
export async function startLiveScreenShare(options) {
|
|
370
|
+
return await globalScreenShareSession.start(options);
|
|
371
|
+
}
|
|
372
|
+
export function stopLiveScreenShare() {
|
|
373
|
+
return globalScreenShareSession.stop();
|
|
374
|
+
}
|
|
375
|
+
export function isLiveScreenShareActive() {
|
|
376
|
+
return globalScreenShareSession.isActive();
|
|
377
|
+
}
|
|
378
|
+
export async function getLiveScreenFrame() {
|
|
379
|
+
return await globalScreenShareSession.getOrCaptureFrame();
|
|
380
|
+
}
|
|
381
|
+
export async function analyzeLiveScreen(targetQuery) {
|
|
382
|
+
return await globalScreenShareSession.analyzeLiveStream(targetQuery);
|
|
383
|
+
}
|
|
384
|
+
export function setLiveScreenTargetApp(appName) {
|
|
385
|
+
globalScreenShareSession.setTargetApp(appName);
|
|
386
|
+
}
|
|
387
|
+
export function getLiveScreenTargetApp() {
|
|
388
|
+
return globalScreenShareSession.getTargetApp();
|
|
389
|
+
}
|
|
390
|
+
//# sourceMappingURL=liveScreenEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"liveScreenEngine.js","sourceRoot":"","sources":["liveScreenEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voiceEngine.d.ts","sourceRoot":"","sources":["voiceEngine.ts"],"names":[],"mappings":"AAOA,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"voiceEngine.d.ts","sourceRoot":"","sources":["voiceEngine.ts"],"names":[],"mappings":"AAOA,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,GAAG,cAAc,CAAC,CAexF;AAED,MAAM,WAAW,YAAY;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASvD;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CnF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAoEpF"}
|
|
@@ -10,6 +10,7 @@ export async function promptInteractionMode() {
|
|
|
10
10
|
options: [
|
|
11
11
|
{ value: 'text', label: 'Text Interaction', hint: 'Text command input -> Text response' },
|
|
12
12
|
{ value: 'audio', label: 'Audio Interaction', hint: 'Voice command input (STT) -> Text + Voice response (TTS)' },
|
|
13
|
+
{ value: 'screen_share', label: 'Live Screen Share Interaction', hint: 'Real-time live screen share stream to model + Voice & Text' },
|
|
13
14
|
],
|
|
14
15
|
});
|
|
15
16
|
if (isCancel(choice))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voiceEngine.js","sourceRoot":"","sources":["voiceEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACvC,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;YACxB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC;YACpD,OAAO,EAAE;gBACL,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,qCAAqC,EAAE;gBACzF,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,0DAA0D,EAAE;
|
|
1
|
+
{"version":3,"file":"voiceEngine.js","sourceRoot":"","sources":["voiceEngine.ts"],"names":[],"mappings":"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"}
|
package/bin/src/index.js
CHANGED
|
@@ -32,13 +32,13 @@ program
|
|
|
32
32
|
.name('scout')
|
|
33
33
|
.alias('ft')
|
|
34
34
|
.description('FrontTerrain — The Onboarding Co-Pilot for New Codebases')
|
|
35
|
-
.version('8.0.
|
|
35
|
+
.version('8.0.4');
|
|
36
36
|
// Header UI on execution with FrontTerrain proprietary logo & version auto-checker
|
|
37
37
|
program.hook('preAction', async (_thisCommand, actionCommand) => {
|
|
38
|
-
intro(renderBranding('8.0.
|
|
38
|
+
intro(renderBranding('8.0.4'));
|
|
39
39
|
const cmdName = actionCommand ? actionCommand.name() : '';
|
|
40
40
|
if (cmdName !== 'upgrade') {
|
|
41
|
-
await checkForUpdates('8.0.
|
|
41
|
+
await checkForUpdates('8.0.4');
|
|
42
42
|
}
|
|
43
43
|
// Auth Guard: enforce authentication for all commands except login, signup, upgrade, help, dashboard, auth, status
|
|
44
44
|
const EXEMPT_COMMANDS = ['login', 'signin', 'signup', 'register', 'upgrade', 'help', 'dashboard', 'web-ui', 'gui', 'auth', 'status', 'quota', 'usage', 'credits'];
|
|
@@ -158,6 +158,7 @@ program
|
|
|
158
158
|
.option('-y, --yes', 'Automatically retain changes without prompting for review')
|
|
159
159
|
.option('-l, --lang <language>', 'Language for AI teardowns, explanations, and summaries')
|
|
160
160
|
.option('-V, --voice', 'Enable Text-to-Speech (TTS) & Speech-to-Text (STT) voice mode')
|
|
161
|
+
.option('-S, --screen-share', 'Enable real-time live screen share stream with the model (in-memory, no disk files)')
|
|
161
162
|
.option('--native', 'Force native script')
|
|
162
163
|
.action(async (goalParts, options) => {
|
|
163
164
|
const goalStr = Array.isArray(goalParts) && goalParts.length > 0 ? goalParts.join(' ') : undefined;
|
|
@@ -233,7 +234,7 @@ program
|
|
|
233
234
|
.command('upgrade')
|
|
234
235
|
.description('Check for updates and auto-upgrade Scout to the latest version')
|
|
235
236
|
.action(async () => {
|
|
236
|
-
await checkForUpdates('8.0.
|
|
237
|
+
await checkForUpdates('8.0.4', true);
|
|
237
238
|
outro(chalk.cyan('Upgrade check complete.'));
|
|
238
239
|
});
|
|
239
240
|
program
|
package/bin/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
export function renderBranding(version = '8.0.
|
|
2
|
+
export function renderBranding(version = '8.0.4') {
|
|
3
3
|
const logo = chalk.cyan.bold(' ███████╗████████╗') + ' ' + chalk.cyan.bold('███████╗ ██████╗ ██████╗ ██╗ ██╗████████╗') + '\n' +
|
|
4
4
|
chalk.cyan.bold(' ██╔════╝╚══██╔══╝') + ' ' + chalk.cyan.bold('██╔════╝ ██╔════╝██╔═══██╗ ██║ ██║╚══██╔══╝') + '\n' +
|
|
5
5
|
chalk.cyan.bold(' █████╗ ██║ ') + ' ' + chalk.cyan.bold(' ███████╗ ██║ ██║ ██║ ██║ ██║ ██║ ') + '\n' +
|
package/firebase.json
CHANGED
|
@@ -7,23 +7,37 @@
|
|
|
7
7
|
"**/.*",
|
|
8
8
|
"**/node_modules/**"
|
|
9
9
|
],
|
|
10
|
+
"cleanUrls": true,
|
|
11
|
+
"trailingSlash": false,
|
|
10
12
|
"rewrites": [
|
|
11
13
|
{
|
|
12
|
-
"source": "
|
|
13
|
-
"destination": "/
|
|
14
|
+
"source": "/auth",
|
|
15
|
+
"destination": "/authentication.html"
|
|
14
16
|
},
|
|
15
17
|
{
|
|
16
|
-
"source": "auth",
|
|
18
|
+
"source": "/auth/**",
|
|
17
19
|
"destination": "/authentication.html"
|
|
18
20
|
},
|
|
19
21
|
{
|
|
20
|
-
"source": "plans",
|
|
22
|
+
"source": "/plans",
|
|
21
23
|
"destination": "/paid_plans.html"
|
|
22
24
|
},
|
|
23
25
|
{
|
|
24
|
-
"source": "
|
|
26
|
+
"source": "/plans/**",
|
|
27
|
+
"destination": "/paid_plans.html"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"source": "/cli",
|
|
25
31
|
"destination": "/web_cli.html"
|
|
26
|
-
}
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"source": "/cli/**",
|
|
35
|
+
"destination": "/web_cli.html"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"source": "**",
|
|
39
|
+
"destination": "/index.html"
|
|
40
|
+
}
|
|
27
41
|
]
|
|
28
42
|
}
|
|
29
43
|
}
|
package/package.json
CHANGED
package/web/app.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* ==========================================================================
|
|
2
|
-
FrontTerrain Scout — Multi-Page Application Engine v8.0.
|
|
2
|
+
FrontTerrain Scout — Multi-Page Application Engine v8.0.4
|
|
3
3
|
========================================================================== */
|
|
4
4
|
|
|
5
5
|
const FIREBASE_CONFIG = {
|
|
@@ -436,11 +436,20 @@ function initTerminalSimulator() {
|
|
|
436
436
|
response.innerHTML = `
|
|
437
437
|
<span class="term-yellow">Available Scout Commands:</span><br>
|
|
438
438
|
↳ <code>scout agent</code> - Launch autonomous AI co-pilot agent & reasoning loop<br>
|
|
439
|
+
↳ <code>scout agent --screen-share</code> - Real-time in-memory screen streaming to vision AI with target window isolation<br>
|
|
439
440
|
↳ <code>scout status</code> - Inspect CLI authentication, active workspace & credit balance<br>
|
|
440
441
|
↳ <code>scout analyze</code> - Run instant AST codebase teardown and entry point indexing<br>
|
|
441
442
|
↳ <code>scout teardown</code> - Generate strategic onboarding map & architectural moat report<br>
|
|
442
443
|
↳ <code>scout byok</code> - Verify custom LLM proxy endpoint connection<br>
|
|
443
444
|
↳ <code>clear</code> - Clear terminal buffer<br>
|
|
445
|
+
`;
|
|
446
|
+
} else if (lower.includes('screen-share') || lower.includes('screenshare') || lower.includes('live') || lower.includes('-s') || lower.includes('/screenshare') || lower.includes('/livescreen')) {
|
|
447
|
+
response.innerHTML = `
|
|
448
|
+
<span class="term-bg-cyan" style="background-color: #00e5ff; color: #08090c; font-weight: bold; padding: 2px 8px; border-radius: 4px;"> SCOUT LIVE SCREEN SHARE & VISION ENGINE </span><br>
|
|
449
|
+
<span class="term-green">✔ Real-time in-memory screen streaming active (0 files written to disk).</span><br>
|
|
450
|
+
<span class="term-yellow">↳ Target App Isolation:</span> Chrome window bounds locked [BoundingRectangle]<br>
|
|
451
|
+
<span class="term-purple" style="color: #38bdf8;">↳ Visual HUD:</span> Continuous sky-blue (#00e5ff) aura HUD overlay active<br>
|
|
452
|
+
<span class="term-cyan">↳ Multimodal Vision:</span> Real-time video frame streaming to Gemini 2.0 Flash / NVIDIA Vision.<br>
|
|
444
453
|
`;
|
|
445
454
|
} else if (lower.includes('agent')) {
|
|
446
455
|
response.innerHTML = `
|
|
@@ -448,11 +457,11 @@ function initTerminalSimulator() {
|
|
|
448
457
|
<span class="term-green">✔ Agent Orchestrator active (Gemini 2.5 Flash / Deep Reasoning Engine)</span><br>
|
|
449
458
|
<span class="term-cyan">↳ Workspace Vector Memory:</span> 124 files indexed and loaded<br>
|
|
450
459
|
<span class="term-yellow">↳ Pair-Programming Status:</span> Ready for interactive tasks & refactoring loops<br>
|
|
451
|
-
<span class="term-dim">↳
|
|
460
|
+
<span class="term-dim">↳ Tip: Run 'scout agent --screen-share' to stream your active window directly to vision models.</span><br>
|
|
452
461
|
`;
|
|
453
462
|
} else if (lower.includes('status')) {
|
|
454
463
|
response.innerHTML = `
|
|
455
|
-
<span class="term-green">✔ Scout CLI Engine: v8.0.
|
|
464
|
+
<span class="term-green">✔ Scout CLI Engine: v8.0.4 Online</span><br>
|
|
456
465
|
↳ User: <strong>${escapeHtml(state.user ? state.user.name : 'Guest Session')}</strong><br>
|
|
457
466
|
↳ Active Subscription: <strong>${escapeHtml(TIER_DETAILS[state.currentTier].name)}</strong><br>
|
|
458
467
|
↳ Credit Quota: <strong>${state.byokEnabled ? 'BYOK Mode (Unlimited)' : `${state.creditsUsed} / ${state.creditsTotal} Credits Used`}</strong><br>
|
|
@@ -1284,7 +1293,7 @@ function initPacmanGame() {
|
|
|
1284
1293
|
function updateLivesUI() {
|
|
1285
1294
|
const livesEl = getEl('pacman-lives');
|
|
1286
1295
|
if (livesEl) {
|
|
1287
|
-
livesEl.innerHTML = Array(Math.max(0, lives)).fill('<span class="life-pacman"
|
|
1296
|
+
livesEl.innerHTML = Array(Math.max(0, lives)).fill('<span class="life-pacman">❤️</span>').join('');
|
|
1288
1297
|
}
|
|
1289
1298
|
}
|
|
1290
1299
|
|