visionclaw 0.1.78 → 0.1.80
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/CHANGELOG.md +20 -0
- package/dist/agent/context.d.ts +1 -2
- package/dist/agent/context.d.ts.map +1 -1
- package/dist/agent/context.js +2 -2
- package/dist/agent/context.js.map +1 -1
- package/dist/agent/interrupt-handler.d.ts +5 -0
- package/dist/agent/interrupt-handler.d.ts.map +1 -1
- package/dist/agent/interrupt-handler.js +28 -1
- package/dist/agent/interrupt-handler.js.map +1 -1
- package/dist/agent/loop.d.ts +1 -0
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +7 -5
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/onboarding-gate.d.ts.map +1 -1
- package/dist/agent/onboarding-gate.js +0 -2
- package/dist/agent/onboarding-gate.js.map +1 -1
- package/dist/agent/session-manager.js +1 -1
- package/dist/agent/session-manager.js.map +1 -1
- package/dist/agent/system-prompt.js +2 -2
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/config/types.d.ts +1 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/obs/server.js +1 -1
- package/dist/obs/server.js.map +1 -1
- package/dist/onboarding/bot-profile.d.ts +32 -0
- package/dist/onboarding/bot-profile.d.ts.map +1 -0
- package/dist/onboarding/bot-profile.js +105 -0
- package/dist/onboarding/bot-profile.js.map +1 -0
- package/dist/onboarding/index.d.ts.map +1 -1
- package/dist/onboarding/index.js +40 -0
- package/dist/onboarding/index.js.map +1 -1
- package/dist/onboarding/macos-permissions.d.ts +49 -4
- package/dist/onboarding/macos-permissions.d.ts.map +1 -1
- package/dist/onboarding/macos-permissions.js +156 -25
- package/dist/onboarding/macos-permissions.js.map +1 -1
- package/dist/onboarding/onboarding-session.d.ts.map +1 -1
- package/dist/onboarding/onboarding-session.js +4 -15
- package/dist/onboarding/onboarding-session.js.map +1 -1
- package/dist/onboarding/onboarding-tools.d.ts +0 -34
- package/dist/onboarding/onboarding-tools.d.ts.map +1 -1
- package/dist/onboarding/onboarding-tools.js +3 -138
- package/dist/onboarding/onboarding-tools.js.map +1 -1
- package/dist/onboarding/prepare-mac.d.ts.map +1 -1
- package/dist/onboarding/prepare-mac.js +95 -24
- package/dist/onboarding/prepare-mac.js.map +1 -1
- package/dist/onboarding/send-invite.js +1 -1
- package/dist/onboarding/send-invite.js.map +1 -1
- package/dist/onboarding/set-owner.d.ts.map +1 -1
- package/dist/onboarding/set-owner.js +0 -1
- package/dist/onboarding/set-owner.js.map +1 -1
- package/dist/onboarding/telegram-onboarding.d.ts +0 -1
- package/dist/onboarding/telegram-onboarding.d.ts.map +1 -1
- package/dist/onboarding/telegram-onboarding.js +1 -31
- package/dist/onboarding/telegram-onboarding.js.map +1 -1
- package/dist/reconfigure.d.ts.map +1 -1
- package/dist/reconfigure.js +7 -8
- package/dist/reconfigure.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,66 @@
|
|
|
1
|
-
import { exec } from "node:child_process";
|
|
1
|
+
import { exec, execSync } from "node:child_process";
|
|
2
2
|
import { promisify } from "node:util";
|
|
3
3
|
const execAsync = promisify(exec);
|
|
4
|
+
// ─── Terminal Constants ─────────────────────────────────────────────────────
|
|
5
|
+
const TERMINAL_BUNDLE_ID = "com.apple.Terminal";
|
|
6
|
+
const TERMINAL_NAME = "Terminal";
|
|
7
|
+
// ─── TCC Permission Management ──────────────────────────────────────────────
|
|
8
|
+
const TCC_SERVICES = {
|
|
9
|
+
screenRecording: "kTCCServiceScreenCapture",
|
|
10
|
+
accessibility: "kTCCServiceAccessibility",
|
|
11
|
+
appleEvents: "kTCCServiceAppleEvents",
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Attempt to grant a TCC permission to Apple Terminal via the user TCC.db.
|
|
15
|
+
*
|
|
16
|
+
* On macOS Sonoma+ the user-level TCC.db can be modified with sqlite3 when
|
|
17
|
+
* SIP's TCC protection allows it (common on manufacturer-provisioned Macs or
|
|
18
|
+
* when using MDM). Falls back to opening System Settings if direct write fails.
|
|
19
|
+
*
|
|
20
|
+
* Returns true if the permission was successfully inserted/verified.
|
|
21
|
+
*/
|
|
22
|
+
export async function grantTCCPermission(service) {
|
|
23
|
+
if (process.platform !== "darwin")
|
|
24
|
+
return true;
|
|
25
|
+
const tccService = TCC_SERVICES[service];
|
|
26
|
+
const dbPath = `${process.env.HOME}/Library/Application Support/com.apple.TCC/TCC.db`;
|
|
27
|
+
try {
|
|
28
|
+
const { stdout: existing } = await execAsync(`sqlite3 "${dbPath}" "SELECT allowed FROM access WHERE service='${tccService}' AND client='${TERMINAL_BUNDLE_ID}';" 2>/dev/null`);
|
|
29
|
+
if (existing.trim() === "1")
|
|
30
|
+
return true;
|
|
31
|
+
await execAsync(`sqlite3 "${dbPath}" "INSERT OR REPLACE INTO access (service, client, client_type, auth_value, auth_reason, auth_version, flags) VALUES ('${tccService}', '${TERMINAL_BUNDLE_ID}', 0, 2, 3, 1, 0);" 2>/dev/null`);
|
|
32
|
+
const { stdout: verify } = await execAsync(`sqlite3 "${dbPath}" "SELECT auth_value FROM access WHERE service='${tccService}' AND client='${TERMINAL_BUNDLE_ID}';" 2>/dev/null`);
|
|
33
|
+
return verify.trim() === "2";
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Open the System Settings panel for a given TCC permission category.
|
|
41
|
+
*/
|
|
42
|
+
export function openSystemSettingsForPermission(permission) {
|
|
43
|
+
const urls = {
|
|
44
|
+
screenRecording: "x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture",
|
|
45
|
+
accessibility: "x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility",
|
|
46
|
+
appleEvents: "x-apple.systempreferences:com.apple.preference.security?Privacy_Automation",
|
|
47
|
+
};
|
|
48
|
+
try {
|
|
49
|
+
execSync(`open "${urls[permission]}"`, { stdio: "ignore" });
|
|
50
|
+
}
|
|
51
|
+
catch { /* non-fatal */ }
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Attempt to grant all required TCC permissions for Apple Terminal.
|
|
55
|
+
* Tries direct TCC.db writes; returns which permissions were successfully granted.
|
|
56
|
+
*/
|
|
57
|
+
export async function grantAllTerminalPermissions() {
|
|
58
|
+
return {
|
|
59
|
+
screenRecording: await grantTCCPermission("screenRecording"),
|
|
60
|
+
accessibility: await grantTCCPermission("accessibility"),
|
|
61
|
+
appleEvents: await grantTCCPermission("appleEvents"),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
4
64
|
/**
|
|
5
65
|
* Check if Screen Recording permission is granted on macOS.
|
|
6
66
|
*
|
|
@@ -169,38 +229,86 @@ export async function checkChromeInstalled() {
|
|
|
169
229
|
/**
|
|
170
230
|
* Check if Accessibility permission is granted on macOS.
|
|
171
231
|
*
|
|
172
|
-
* Uses AppleScript to test if we can
|
|
173
|
-
* Also tries the `tccutil` approach as a fallback.
|
|
232
|
+
* Uses AppleScript to test if we can query System Events.
|
|
174
233
|
*/
|
|
175
234
|
export async function checkAccessibilityPermission() {
|
|
176
235
|
if (process.platform !== "darwin")
|
|
177
236
|
return true;
|
|
178
237
|
try {
|
|
179
|
-
// Use the system's accessibility check via osascript
|
|
180
238
|
const { stdout } = await execAsync(`osascript -e 'tell application "System Events" to return name of first process'`);
|
|
181
|
-
// If this returns a process name, we have accessibility access
|
|
182
239
|
return stdout.trim().length > 0;
|
|
183
240
|
}
|
|
184
241
|
catch {
|
|
185
|
-
// "System Events got an error: osascript is not allowed assistive access"
|
|
186
242
|
return false;
|
|
187
243
|
}
|
|
188
244
|
}
|
|
189
245
|
/**
|
|
190
|
-
*
|
|
246
|
+
* Check if Automation (AppleScript) permission is granted on macOS.
|
|
247
|
+
*
|
|
248
|
+
* Tests whether osascript can send Apple Events to Finder, which requires
|
|
249
|
+
* the terminal app to have Automation permission.
|
|
191
250
|
*/
|
|
192
|
-
export function
|
|
193
|
-
if (
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
251
|
+
export async function checkAutomationPermission() {
|
|
252
|
+
if (process.platform !== "darwin")
|
|
253
|
+
return true;
|
|
254
|
+
try {
|
|
255
|
+
const { stdout } = await execAsync(`osascript -e 'tell application "Finder" to return name of startup disk' 2>&1`);
|
|
256
|
+
return stdout.trim().length > 0 && !stdout.includes("not allowed");
|
|
198
257
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
258
|
+
catch {
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Check if Files & Folders / Full Disk Access is sufficient.
|
|
264
|
+
*
|
|
265
|
+
* Tests whether we can read a protected location (~/Desktop).
|
|
266
|
+
* This is a heuristic — Full Disk Access is a superset but we only need
|
|
267
|
+
* enough access to read user directories and ~/screenshots.
|
|
268
|
+
*/
|
|
269
|
+
export async function checkFileAccessPermission() {
|
|
270
|
+
if (process.platform !== "darwin")
|
|
271
|
+
return true;
|
|
272
|
+
try {
|
|
273
|
+
await execAsync(`ls "${process.env.HOME}/Desktop" >/dev/null 2>&1`);
|
|
274
|
+
return true;
|
|
275
|
+
}
|
|
276
|
+
catch {
|
|
277
|
+
return false;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Print instructions for granting a macOS permission to Apple Terminal.
|
|
282
|
+
*/
|
|
283
|
+
export function printPermissionInstructions(permission) {
|
|
284
|
+
const instructions = {
|
|
285
|
+
"screen-recording": [
|
|
286
|
+
`\n To grant Screen Recording permission:`,
|
|
287
|
+
` 1. Open System Settings > Privacy & Security > Screen Recording`,
|
|
288
|
+
` 2. Click '+' and add Terminal`,
|
|
289
|
+
` 3. Restart Terminal after granting permission`,
|
|
290
|
+
],
|
|
291
|
+
"accessibility": [
|
|
292
|
+
`\n To grant Accessibility permission:`,
|
|
293
|
+
` 1. Open System Settings > Privacy & Security > Accessibility`,
|
|
294
|
+
` 2. Click '+' and add Terminal`,
|
|
295
|
+
` 3. Restart Terminal after granting permission`,
|
|
296
|
+
],
|
|
297
|
+
"automation": [
|
|
298
|
+
`\n To grant Automation permission:`,
|
|
299
|
+
` 1. Open System Settings > Privacy & Security > Automation`,
|
|
300
|
+
` 2. Enable access for Terminal to control other apps`,
|
|
301
|
+
` 3. Restart Terminal after granting permission`,
|
|
302
|
+
],
|
|
303
|
+
"file-access": [
|
|
304
|
+
`\n To grant Files & Folders / Full Disk Access:`,
|
|
305
|
+
` 1. Open System Settings > Privacy & Security > Full Disk Access`,
|
|
306
|
+
` 2. Click '+' and add Terminal`,
|
|
307
|
+
` 3. Restart Terminal after granting permission`,
|
|
308
|
+
],
|
|
309
|
+
};
|
|
310
|
+
for (const line of instructions[permission]) {
|
|
311
|
+
console.log(line);
|
|
204
312
|
}
|
|
205
313
|
}
|
|
206
314
|
/**
|
|
@@ -212,6 +320,7 @@ export async function checkMacOSPermissions() {
|
|
|
212
320
|
return true;
|
|
213
321
|
}
|
|
214
322
|
console.log("--- macOS Permissions Check ---\n");
|
|
323
|
+
console.log(` Terminal: ${TERMINAL_NAME} (${TERMINAL_BUNDLE_ID})\n`);
|
|
215
324
|
let allGranted = true;
|
|
216
325
|
// Screen Recording
|
|
217
326
|
process.stdout.write(" Screen Recording: ");
|
|
@@ -235,8 +344,30 @@ export async function checkMacOSPermissions() {
|
|
|
235
344
|
printPermissionInstructions("accessibility");
|
|
236
345
|
allGranted = false;
|
|
237
346
|
}
|
|
347
|
+
// Automation (AppleScript)
|
|
348
|
+
process.stdout.write(" Automation: ");
|
|
349
|
+
const automationOk = await checkAutomationPermission();
|
|
350
|
+
if (automationOk) {
|
|
351
|
+
console.log("Granted");
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
console.log("NOT GRANTED");
|
|
355
|
+
printPermissionInstructions("automation");
|
|
356
|
+
allGranted = false;
|
|
357
|
+
}
|
|
358
|
+
// Files & Folders
|
|
359
|
+
process.stdout.write(" File Access: ");
|
|
360
|
+
const fileOk = await checkFileAccessPermission();
|
|
361
|
+
if (fileOk) {
|
|
362
|
+
console.log("Granted");
|
|
363
|
+
}
|
|
364
|
+
else {
|
|
365
|
+
console.log("NOT GRANTED");
|
|
366
|
+
printPermissionInstructions("file-access");
|
|
367
|
+
allGranted = false;
|
|
368
|
+
}
|
|
238
369
|
// cliclick (for computer_use tools)
|
|
239
|
-
process.stdout.write(" cliclick:
|
|
370
|
+
process.stdout.write(" cliclick: ");
|
|
240
371
|
const cliclickOk = await checkCliclickInstalled();
|
|
241
372
|
if (cliclickOk) {
|
|
242
373
|
console.log("Installed");
|
|
@@ -247,7 +378,7 @@ export async function checkMacOSPermissions() {
|
|
|
247
378
|
allGranted = false;
|
|
248
379
|
}
|
|
249
380
|
// ffmpeg (for screenshot compression and audio transcription)
|
|
250
|
-
process.stdout.write(" ffmpeg:
|
|
381
|
+
process.stdout.write(" ffmpeg: ");
|
|
251
382
|
const ffmpegOk = await checkFfmpegInstalled();
|
|
252
383
|
if (ffmpegOk) {
|
|
253
384
|
console.log("Installed");
|
|
@@ -258,7 +389,7 @@ export async function checkMacOSPermissions() {
|
|
|
258
389
|
allGranted = false;
|
|
259
390
|
}
|
|
260
391
|
// Chrome / Chromium (for Playwright browser tools)
|
|
261
|
-
process.stdout.write(" Chrome:
|
|
392
|
+
process.stdout.write(" Chrome: ");
|
|
262
393
|
const chromeOk = await checkChromeInstalled();
|
|
263
394
|
if (chromeOk) {
|
|
264
395
|
console.log("Found");
|
|
@@ -269,7 +400,7 @@ export async function checkMacOSPermissions() {
|
|
|
269
400
|
allGranted = false;
|
|
270
401
|
}
|
|
271
402
|
// GitHub CLI (for code operations)
|
|
272
|
-
process.stdout.write(" gh (GitHub CLI):
|
|
403
|
+
process.stdout.write(" gh (GitHub CLI): ");
|
|
273
404
|
const ghOk = await checkGhInstalled();
|
|
274
405
|
if (ghOk) {
|
|
275
406
|
const ghAuth = await checkGhAuthenticated();
|
|
@@ -289,7 +420,7 @@ export async function checkMacOSPermissions() {
|
|
|
289
420
|
allGranted = false;
|
|
290
421
|
}
|
|
291
422
|
// whisper-cpp (for audio transcription)
|
|
292
|
-
process.stdout.write(" whisper-cli:
|
|
423
|
+
process.stdout.write(" whisper-cli: ");
|
|
293
424
|
const whisperOk = await checkWhisperCppInstalled();
|
|
294
425
|
if (whisperOk) {
|
|
295
426
|
console.log("Installed");
|
|
@@ -300,7 +431,7 @@ export async function checkMacOSPermissions() {
|
|
|
300
431
|
allGranted = false;
|
|
301
432
|
}
|
|
302
433
|
// whisper model (large-v3-turbo for transcription)
|
|
303
|
-
process.stdout.write(" Whisper model:
|
|
434
|
+
process.stdout.write(" Whisper model: ");
|
|
304
435
|
const modelOk = await checkWhisperModelExists();
|
|
305
436
|
if (modelOk) {
|
|
306
437
|
console.log("Found");
|
|
@@ -312,7 +443,7 @@ export async function checkMacOSPermissions() {
|
|
|
312
443
|
allGranted = false;
|
|
313
444
|
}
|
|
314
445
|
// pm2 (process manager for production)
|
|
315
|
-
process.stdout.write(" pm2:
|
|
446
|
+
process.stdout.write(" pm2: ");
|
|
316
447
|
const pm2Ok = await checkPm2Installed();
|
|
317
448
|
if (pm2Ok) {
|
|
318
449
|
console.log("Installed");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"macos-permissions.js","sourceRoot":"","sources":["../../src/onboarding/macos-permissions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"macos-permissions.js","sourceRoot":"","sources":["../../src/onboarding/macos-permissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding-session.d.ts","sourceRoot":"","sources":["../../src/onboarding/onboarding-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,gCAAgC,CAAC;AAUxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"onboarding-session.d.ts","sourceRoot":"","sources":["../../src/onboarding/onboarding-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,gCAAgC,CAAC;AAUxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA4C3D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,WAAW,CAA6B;gBAG9C,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;IAQ7C;;;;OAIG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAC/D,OAAO,CAAC,eAAe,CAAC;YAoCb,YAAY;IA4E1B,OAAO,CAAC,cAAc;IAoCtB,OAAO,CAAC,gBAAgB;IAQxB,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B,sBAAsB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;CAG7C"}
|
|
@@ -4,12 +4,10 @@ import path from "path";
|
|
|
4
4
|
import { loadOnboardingSessionId, saveOnboardingSessionId, getConfigDir, } from "../config/index.js";
|
|
5
5
|
import { buildAgentEnv, getModelId } from "../agent/client-factory.js";
|
|
6
6
|
import { logger } from "../logger.js";
|
|
7
|
-
import { AVATAR_OPTIONS } from "./onboarding-tools.js";
|
|
8
7
|
const ONBOARDING_QUERY_TIMEOUT_MS = 2 * 60 * 1000;
|
|
9
8
|
const MAX_QUERY_RETRIES = 2;
|
|
10
9
|
const RETRY_BASE_DELAY_MS = 3_000;
|
|
11
10
|
function buildOnboardingSystemPrompt(ownerEmail) {
|
|
12
|
-
const avatarList = AVATAR_OPTIONS.map((opt, i) => ` ${i + 1}. ${opt.label}`).join("\n");
|
|
13
11
|
return `# Identity
|
|
14
12
|
|
|
15
13
|
You are a setup assistant for a personal desktop agent. You are helping a new owner complete the initial configuration via Telegram.
|
|
@@ -19,14 +17,8 @@ You are a setup assistant for a personal desktop agent. You are helping a new ow
|
|
|
19
17
|
Collect the following information through natural conversation:
|
|
20
18
|
|
|
21
19
|
1. **Owner's name** — Ask what they'd like to be called. Make sure it's a real name (not gibberish, not a question, not a greeting). If the response doesn't look like a name, politely ask again.
|
|
22
|
-
2. **
|
|
23
|
-
3. **
|
|
24
|
-
4. **Coding tasks** — Ask if they plan to use the agent for complex, multi-step coding tasks (refactoring, debugging, feature implementation). If yes, dual-session mode will be enabled so the agent automatically switches to a focused coding session when needed, keeping the coding context separate from general conversations. Default is yes/enabled.
|
|
25
|
-
5. **Profile photo** — The user can choose a profile photo for the bot. Call \`send_avatar_options\` to show them the available options. They can pick a number or upload their own photo. This step is optional — the user can skip it.
|
|
26
|
-
|
|
27
|
-
## Available Avatar Options
|
|
28
|
-
|
|
29
|
-
${avatarList}
|
|
20
|
+
2. **Wakeup interval** — How often the agent should check in (in minutes). Default is 3 minutes. Range: 1 to 1440. If the user doesn't care, use the default.
|
|
21
|
+
3. **Coding tasks** — Ask if they plan to use the agent for complex, multi-step coding tasks (refactoring, debugging, feature implementation). If yes, dual-session mode will be enabled so the agent automatically switches to a focused coding session when needed, keeping the coding context separate from general conversations. Default is yes/enabled.
|
|
30
22
|
|
|
31
23
|
## Owner Information Already Known
|
|
32
24
|
|
|
@@ -42,14 +34,11 @@ ${avatarList}
|
|
|
42
34
|
|
|
43
35
|
## Tool Usage
|
|
44
36
|
|
|
45
|
-
-
|
|
46
|
-
- Call \`send_avatar_options\` to send the bundled avatar images to the user.
|
|
47
|
-
- Do NOT try to set the profile photo directly — just remember the user's choice (option number or uploaded file URL) and pass it in the \`profilePhotoSource\` parameter of \`complete_onboarding\`. The photo will be applied automatically.
|
|
48
|
-
- Call \`complete_onboarding\` when all information is confirmed. Include the \`profilePhotoSource\` if the user chose one.
|
|
37
|
+
- Call \`complete_onboarding\` when all information is confirmed.
|
|
49
38
|
|
|
50
39
|
## Conversation Flow
|
|
51
40
|
|
|
52
|
-
Start by greeting the user and asking for their name. Then proceed through
|
|
41
|
+
Start by greeting the user and asking for their name. Then proceed through wakeup interval and coding tasks in a natural conversational order. You don't have to follow a rigid sequence — adapt to the user's responses.
|
|
53
42
|
After onboarding is complete, notify the user that the onboarding is complete, the agent will be restarted and will be available in a few seconds.
|
|
54
43
|
|
|
55
44
|
You should politely reject any request that is not related to the onboarding process.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding-session.js","sourceRoot":"","sources":["../../src/onboarding/onboarding-session.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,GAGN,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"onboarding-session.js","sourceRoot":"","sources":["../../src/onboarding/onboarding-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,43 +1,9 @@
|
|
|
1
|
-
export declare const AVATAR_OPTIONS: readonly [{
|
|
2
|
-
readonly name: "visionclaw";
|
|
3
|
-
readonly label: "VisionClaw";
|
|
4
|
-
readonly file: "visionclaw.jpg";
|
|
5
|
-
}, {
|
|
6
|
-
readonly name: "robot";
|
|
7
|
-
readonly label: "Friendly Robot";
|
|
8
|
-
readonly file: "robot.jpg";
|
|
9
|
-
}, {
|
|
10
|
-
readonly name: "owl";
|
|
11
|
-
readonly label: "Wise Owl";
|
|
12
|
-
readonly file: "owl.jpg";
|
|
13
|
-
}, {
|
|
14
|
-
readonly name: "orb";
|
|
15
|
-
readonly label: "Crystal Orb";
|
|
16
|
-
readonly file: "orb.jpg";
|
|
17
|
-
}, {
|
|
18
|
-
readonly name: "fox";
|
|
19
|
-
readonly label: "Clever Fox";
|
|
20
|
-
readonly file: "fox.jpg";
|
|
21
|
-
}, {
|
|
22
|
-
readonly name: "cat";
|
|
23
|
-
readonly label: "Curious Cat";
|
|
24
|
-
readonly file: "cat.jpg";
|
|
25
|
-
}, {
|
|
26
|
-
readonly name: "abstract";
|
|
27
|
-
readonly label: "Abstract Geometry";
|
|
28
|
-
readonly file: "abstract.jpg";
|
|
29
|
-
}];
|
|
30
1
|
export interface OnboardingResult {
|
|
31
2
|
ownerName: string;
|
|
32
|
-
agentName: string;
|
|
33
3
|
wakeupIntervalMinutes: number;
|
|
34
4
|
dualSessionEnabled?: boolean;
|
|
35
|
-
profilePhotoSource?: string;
|
|
36
5
|
}
|
|
37
6
|
interface OnboardingToolDeps {
|
|
38
|
-
botToken: string;
|
|
39
|
-
chatId: number;
|
|
40
|
-
sendPhoto: (chatId: number, photoPath: string, caption: string) => Promise<void>;
|
|
41
7
|
onComplete: (result: OnboardingResult) => void;
|
|
42
8
|
}
|
|
43
9
|
export declare function createOnboardingToolServer(deps: OnboardingToolDeps): import("@anthropic-ai/claude-agent-sdk").McpSdkServerConfigWithInstance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding-tools.d.ts","sourceRoot":"","sources":["../../src/onboarding/onboarding-tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"onboarding-tools.d.ts","sourceRoot":"","sources":["../../src/onboarding/onboarding-tools.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,UAAU,kBAAkB;IAC1B,UAAU,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAChD;AA8CD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,kBAAkB,2EAQlE"}
|
|
@@ -1,145 +1,19 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { fileURLToPath } from "node:url";
|
|
4
1
|
import { z } from "zod";
|
|
5
2
|
import { tool, createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";
|
|
6
3
|
import { DEFAULT_HEARTBEAT_INTERVAL_MS } from "../config/types.js";
|
|
7
|
-
import { logger } from "../logger.js";
|
|
8
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
9
|
-
const AVATARS_DIR = path.resolve(__dirname, "../../assets/avatars");
|
|
10
|
-
export const AVATAR_OPTIONS = [
|
|
11
|
-
{ name: "visionclaw", label: "VisionClaw", file: "visionclaw.jpg" },
|
|
12
|
-
{ name: "robot", label: "Friendly Robot", file: "robot.jpg" },
|
|
13
|
-
{ name: "owl", label: "Wise Owl", file: "owl.jpg" },
|
|
14
|
-
{ name: "orb", label: "Crystal Orb", file: "orb.jpg" },
|
|
15
|
-
{ name: "fox", label: "Clever Fox", file: "fox.jpg" },
|
|
16
|
-
{ name: "cat", label: "Curious Cat", file: "cat.jpg" },
|
|
17
|
-
{ name: "abstract", label: "Abstract Geometry", file: "abstract.jpg" },
|
|
18
|
-
];
|
|
19
|
-
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
20
|
-
function createSendAvatarOptionsTool(deps) {
|
|
21
|
-
return tool("send_avatar_options", "Send the available avatar/profile photo options to the user as Telegram photos. " +
|
|
22
|
-
"IMPORTANT: You MUST first send a text message introducing the profile photo selection step " +
|
|
23
|
-
"before calling this tool. The user needs context before receiving the images.", {}, async () => {
|
|
24
|
-
const results = [];
|
|
25
|
-
for (let i = 0; i < AVATAR_OPTIONS.length; i++) {
|
|
26
|
-
const opt = AVATAR_OPTIONS[i];
|
|
27
|
-
const filePath = path.join(AVATARS_DIR, opt.file);
|
|
28
|
-
if (!fs.existsSync(filePath)) {
|
|
29
|
-
results.push(`Option ${i + 1} (${opt.label}): file not found`);
|
|
30
|
-
continue;
|
|
31
|
-
}
|
|
32
|
-
try {
|
|
33
|
-
await deps.sendPhoto(deps.chatId, filePath, `Option ${i + 1}: ${opt.label}`);
|
|
34
|
-
results.push(`Option ${i + 1}: ${opt.label} ✓`);
|
|
35
|
-
}
|
|
36
|
-
catch (err) {
|
|
37
|
-
results.push(`Option ${i + 1} (${opt.label}): failed to send - ${err instanceof Error ? err.message : String(err)}`);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return {
|
|
41
|
-
content: [{
|
|
42
|
-
type: "text",
|
|
43
|
-
text: `Sent ${AVATAR_OPTIONS.length} avatar options to the user:\n${results.join("\n")}\n\n` +
|
|
44
|
-
"The user can reply with an option number (1-7) or send their own photo. " +
|
|
45
|
-
"They can also skip by saying they don't want to set a profile photo.",
|
|
46
|
-
}],
|
|
47
|
-
};
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
async function callSetProfilePhoto(botToken, photoBuffer, maxRetries = 2) {
|
|
51
|
-
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
52
|
-
const file = new File([photoBuffer], "photo.jpg", { type: "image/jpeg" });
|
|
53
|
-
const form = new FormData();
|
|
54
|
-
form.append("photo", JSON.stringify({ type: "static", photo: "attach://photo_file" }));
|
|
55
|
-
form.append("photo_file", file);
|
|
56
|
-
const res = await fetch(`https://api.telegram.org/bot${botToken}/setMyProfilePhoto`, {
|
|
57
|
-
method: "POST",
|
|
58
|
-
body: form,
|
|
59
|
-
signal: AbortSignal.timeout(30_000),
|
|
60
|
-
});
|
|
61
|
-
const data = (await res.json());
|
|
62
|
-
if (data.ok)
|
|
63
|
-
return data;
|
|
64
|
-
const desc = data.description ?? "";
|
|
65
|
-
const isRetryable = /timeout|gateway|retry|temporarily/i.test(desc);
|
|
66
|
-
if (!isRetryable || attempt === maxRetries)
|
|
67
|
-
return data;
|
|
68
|
-
logger.warn(`setMyProfilePhoto attempt ${attempt + 1} failed (${desc}), retrying…`);
|
|
69
|
-
await new Promise((r) => setTimeout(r, 2000 * (attempt + 1)));
|
|
70
|
-
}
|
|
71
|
-
return { ok: false, description: "max retries exceeded" };
|
|
72
|
-
}
|
|
73
|
-
async function setProfilePhotoAsync(botToken, source) {
|
|
74
|
-
let photoPath;
|
|
75
|
-
let tempFile;
|
|
76
|
-
try {
|
|
77
|
-
const optionNum = parseInt(source, 10);
|
|
78
|
-
if (!isNaN(optionNum) && optionNum >= 1 && optionNum <= AVATAR_OPTIONS.length) {
|
|
79
|
-
const opt = AVATAR_OPTIONS[optionNum - 1];
|
|
80
|
-
photoPath = path.join(AVATARS_DIR, opt.file);
|
|
81
|
-
if (!fs.existsSync(photoPath)) {
|
|
82
|
-
logger.warn(`Avatar file not found at ${photoPath}`);
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
else if (source.startsWith("https://")) {
|
|
87
|
-
const res = await fetch(source);
|
|
88
|
-
if (!res.ok) {
|
|
89
|
-
logger.warn(`Failed to download user photo: HTTP ${res.status}`);
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
const buffer = Buffer.from(await res.arrayBuffer());
|
|
93
|
-
tempFile = path.join(AVATARS_DIR, `_temp_upload_${Date.now()}.jpg`);
|
|
94
|
-
fs.writeFileSync(tempFile, buffer);
|
|
95
|
-
photoPath = tempFile;
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
logger.warn(`Invalid profile photo source: ${source}`);
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
const fileBuffer = fs.readFileSync(photoPath);
|
|
102
|
-
logger.debug(`Setting bot profile photo from ${photoPath} (${fileBuffer.length} bytes)`);
|
|
103
|
-
const data = await callSetProfilePhoto(botToken, fileBuffer);
|
|
104
|
-
if (data.ok) {
|
|
105
|
-
logger.system("Telegram bot profile photo updated");
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
logger.warn(`setMyProfilePhoto failed: ${data.description ?? "unknown"}`);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
catch (err) {
|
|
112
|
-
logger.warn(`setMyProfilePhoto error: ${err instanceof Error ? err.message : String(err)}`);
|
|
113
|
-
}
|
|
114
|
-
finally {
|
|
115
|
-
if (tempFile && fs.existsSync(tempFile)) {
|
|
116
|
-
fs.unlinkSync(tempFile);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
4
|
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
121
5
|
function createCompleteOnboardingTool(deps) {
|
|
122
6
|
return tool("complete_onboarding", "Finalize onboarding with the collected information. Call this ONLY after you have " +
|
|
123
|
-
"gathered all required info (owner name,
|
|
124
|
-
"and the user has confirmed.
|
|
7
|
+
"gathered all required info (owner name, wakeup interval) " +
|
|
8
|
+
"and the user has confirmed. " +
|
|
125
9
|
"After calling this tool, send a brief goodbye/welcome message and stop.", {
|
|
126
10
|
ownerName: z.string().min(1).describe("The owner's name"),
|
|
127
|
-
agentName: z
|
|
128
|
-
.string()
|
|
129
|
-
.default("VisionClaw")
|
|
130
|
-
.describe('The name the user chose for the agent (default: "VisionClaw")'),
|
|
131
11
|
wakeupIntervalMinutes: z
|
|
132
12
|
.number()
|
|
133
13
|
.min(1)
|
|
134
14
|
.max(1440)
|
|
135
15
|
.default(DEFAULT_HEARTBEAT_INTERVAL_MS / 60_000)
|
|
136
16
|
.describe("How often the agent wakes up, in minutes (1-1440, default: 3)"),
|
|
137
|
-
profilePhotoSource: z
|
|
138
|
-
.string()
|
|
139
|
-
.optional()
|
|
140
|
-
.describe("The user's profile photo choice: an option number ('1' through '7') for a bundled avatar, " +
|
|
141
|
-
"a Telegram file URL (https://api.telegram.org/file/...) from a user-uploaded image, " +
|
|
142
|
-
"or omit / leave empty if the user chose to skip."),
|
|
143
17
|
dualSessionEnabled: z
|
|
144
18
|
.boolean()
|
|
145
19
|
.default(true)
|
|
@@ -148,22 +22,14 @@ function createCompleteOnboardingTool(deps) {
|
|
|
148
22
|
}, (args) => {
|
|
149
23
|
deps.onComplete({
|
|
150
24
|
ownerName: args.ownerName,
|
|
151
|
-
agentName: args.agentName,
|
|
152
25
|
wakeupIntervalMinutes: args.wakeupIntervalMinutes,
|
|
153
26
|
dualSessionEnabled: args.dualSessionEnabled,
|
|
154
|
-
profilePhotoSource: args.profilePhotoSource,
|
|
155
27
|
});
|
|
156
|
-
if (args.profilePhotoSource) {
|
|
157
|
-
setProfilePhotoAsync(deps.botToken, args.profilePhotoSource).catch((err) => {
|
|
158
|
-
logger.warn(`Background profile photo upload failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
28
|
return Promise.resolve({
|
|
162
29
|
content: [{
|
|
163
30
|
type: "text",
|
|
164
|
-
text: `Onboarding finalized! Owner: ${args.ownerName},
|
|
31
|
+
text: `Onboarding finalized! Owner: ${args.ownerName}, ` +
|
|
165
32
|
`Wakeup: every ${args.wakeupIntervalMinutes} min. ` +
|
|
166
|
-
(args.profilePhotoSource ? "Profile photo is being applied. " : "") +
|
|
167
33
|
"Send a brief welcome message to the user and then stop.",
|
|
168
34
|
}],
|
|
169
35
|
});
|
|
@@ -175,7 +41,6 @@ export function createOnboardingToolServer(deps) {
|
|
|
175
41
|
name: "onboarding",
|
|
176
42
|
version: "0.1.0",
|
|
177
43
|
tools: [
|
|
178
|
-
createSendAvatarOptionsTool(deps),
|
|
179
44
|
createCompleteOnboardingTool(deps),
|
|
180
45
|
],
|
|
181
46
|
});
|