visionclaw 0.1.32 → 0.1.34
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/assets/avatars/abstract.jpg +0 -0
- package/assets/avatars/cat.jpg +0 -0
- package/assets/avatars/fox.jpg +0 -0
- package/assets/avatars/orb.jpg +0 -0
- package/assets/avatars/owl.jpg +0 -0
- package/assets/avatars/robot.jpg +0 -0
- package/assets/avatars/visionclaw.jpg +0 -0
- package/dist/agent/context.d.ts +2 -1
- 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/loop.d.ts +2 -1
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +111 -8
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/session.d.ts +3 -1
- package/dist/agent/session.d.ts.map +1 -1
- package/dist/agent/session.js +7 -4
- package/dist/agent/session.js.map +1 -1
- package/dist/agent/system-prompt.d.ts +2 -2
- package/dist/agent/system-prompt.d.ts.map +1 -1
- package/dist/agent/system-prompt.js +14 -10
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/channels/discord.d.ts +7 -0
- package/dist/channels/discord.d.ts.map +1 -1
- package/dist/channels/discord.js +10 -2
- package/dist/channels/discord.js.map +1 -1
- package/dist/channels/gmail.js +1 -1
- package/dist/channels/gmail.js.map +1 -1
- package/dist/channels/interface.d.ts +8 -0
- package/dist/channels/interface.d.ts.map +1 -1
- package/dist/channels/manager.d.ts +10 -0
- package/dist/channels/manager.d.ts.map +1 -1
- package/dist/channels/manager.js +23 -0
- package/dist/channels/manager.js.map +1 -1
- package/dist/channels/telegram.d.ts +7 -0
- package/dist/channels/telegram.d.ts.map +1 -1
- package/dist/channels/telegram.js +18 -4
- package/dist/channels/telegram.js.map +1 -1
- package/dist/config/index.d.ts +10 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +56 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/types.d.ts +23 -9
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +22 -7
- package/dist/config/types.js.map +1 -1
- package/dist/index.js +31 -16
- package/dist/index.js.map +1 -1
- package/dist/obs/notify.d.ts.map +1 -1
- package/dist/obs/notify.js +6 -5
- package/dist/obs/notify.js.map +1 -1
- package/dist/onboarding/index.d.ts +6 -1
- package/dist/onboarding/index.d.ts.map +1 -1
- package/dist/onboarding/index.js +25 -83
- package/dist/onboarding/index.js.map +1 -1
- package/dist/onboarding/onboarding-session.d.ts +33 -0
- package/dist/onboarding/onboarding-session.d.ts.map +1 -0
- package/dist/onboarding/onboarding-session.js +207 -0
- package/dist/onboarding/onboarding-session.js.map +1 -0
- package/dist/onboarding/onboarding-tools.d.ts +43 -0
- package/dist/onboarding/onboarding-tools.d.ts.map +1 -0
- package/dist/onboarding/onboarding-tools.js +178 -0
- package/dist/onboarding/onboarding-tools.js.map +1 -0
- package/dist/onboarding/send-invite.d.ts +7 -0
- package/dist/onboarding/send-invite.d.ts.map +1 -0
- package/dist/onboarding/send-invite.js +61 -0
- package/dist/onboarding/send-invite.js.map +1 -0
- package/dist/onboarding/set-owner.d.ts +8 -0
- package/dist/onboarding/set-owner.d.ts.map +1 -0
- package/dist/onboarding/set-owner.js +53 -0
- package/dist/onboarding/set-owner.js.map +1 -0
- package/dist/onboarding/telegram-onboarding.d.ts +47 -0
- package/dist/onboarding/telegram-onboarding.d.ts.map +1 -0
- package/dist/onboarding/telegram-onboarding.js +208 -0
- package/dist/onboarding/telegram-onboarding.js.map +1 -0
- package/dist/reconfigure.d.ts.map +1 -1
- package/dist/reconfigure.js +49 -47
- package/dist/reconfigure.js.map +1 -1
- package/dist/tools/notify.d.ts +1 -0
- package/dist/tools/notify.d.ts.map +1 -1
- package/dist/tools/notify.js +27 -0
- package/dist/tools/notify.js.map +1 -1
- package/dist/tools/sleep-interval.js +5 -5
- package/dist/tools/sleep-interval.js.map +1 -1
- package/package.json +5 -2
package/dist/config/types.d.ts
CHANGED
|
@@ -12,12 +12,10 @@ export declare const ChannelConfigSchema: z.ZodObject<{
|
|
|
12
12
|
telegram: z.ZodOptional<z.ZodObject<{
|
|
13
13
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
14
14
|
botToken: z.ZodOptional<z.ZodString>;
|
|
15
|
-
allowedChatIds: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
|
|
16
15
|
}, z.core.$strip>>;
|
|
17
16
|
discord: z.ZodOptional<z.ZodObject<{
|
|
18
17
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
19
18
|
botToken: z.ZodOptional<z.ZodString>;
|
|
20
|
-
allowedChannelIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
21
19
|
}, z.core.$strip>>;
|
|
22
20
|
}, z.core.$strip>;
|
|
23
21
|
export type ChannelConfig = z.infer<typeof ChannelConfigSchema>;
|
|
@@ -33,25 +31,23 @@ export declare const ObsConfigSchema: z.ZodObject<{
|
|
|
33
31
|
}>>;
|
|
34
32
|
}, z.core.$strip>;
|
|
35
33
|
export type ObsConfig = z.infer<typeof ObsConfigSchema>;
|
|
34
|
+
/**
|
|
35
|
+
* Pre-ship manufacturer config.
|
|
36
|
+
* Contains runtime dependencies and infrastructure settings.
|
|
37
|
+
*/
|
|
36
38
|
export declare const VisionClawConfigSchema: z.ZodObject<{
|
|
37
|
-
agentName: z.ZodDefault<z.ZodString>;
|
|
38
|
-
ownerName: z.ZodDefault<z.ZodString>;
|
|
39
|
-
ownerEmail: z.ZodOptional<z.ZodString>;
|
|
40
39
|
gmail: z.ZodEmail;
|
|
41
40
|
googleClientId: z.ZodString;
|
|
42
41
|
googleClientSecret: z.ZodString;
|
|
43
|
-
phoneNumber: z.ZodOptional<z.ZodString>;
|
|
44
42
|
anthropicApiKey: z.ZodString;
|
|
45
43
|
channels: z.ZodDefault<z.ZodObject<{
|
|
46
44
|
telegram: z.ZodOptional<z.ZodObject<{
|
|
47
45
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
48
46
|
botToken: z.ZodOptional<z.ZodString>;
|
|
49
|
-
allowedChatIds: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
|
|
50
47
|
}, z.core.$strip>>;
|
|
51
48
|
discord: z.ZodOptional<z.ZodObject<{
|
|
52
49
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
53
50
|
botToken: z.ZodOptional<z.ZodString>;
|
|
54
|
-
allowedChannelIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
55
51
|
}, z.core.$strip>>;
|
|
56
52
|
}, z.core.$strip>>;
|
|
57
53
|
obs: z.ZodDefault<z.ZodObject<{
|
|
@@ -65,8 +61,26 @@ export declare const VisionClawConfigSchema: z.ZodObject<{
|
|
|
65
61
|
off: "off";
|
|
66
62
|
}>>;
|
|
67
63
|
}, z.core.$strip>>;
|
|
68
|
-
heartbeatIntervalMs: z.ZodDefault<z.ZodNumber>;
|
|
69
64
|
skillsDir: z.ZodOptional<z.ZodString>;
|
|
70
65
|
}, z.core.$strip>;
|
|
71
66
|
export type VisionClawConfig = z.infer<typeof VisionClawConfigSchema>;
|
|
67
|
+
/**
|
|
68
|
+
* Post-ship owner config.
|
|
69
|
+
* Populated during Telegram onboarding after the agent is delivered.
|
|
70
|
+
*/
|
|
71
|
+
export declare const OwnerConfigSchema: z.ZodObject<{
|
|
72
|
+
agentName: z.ZodDefault<z.ZodString>;
|
|
73
|
+
ownerName: z.ZodString;
|
|
74
|
+
ownerEmail: z.ZodString;
|
|
75
|
+
phoneNumber: z.ZodOptional<z.ZodString>;
|
|
76
|
+
telegramChatId: z.ZodOptional<z.ZodNumber>;
|
|
77
|
+
allowedTelegramChatIds: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
|
|
78
|
+
allowedDiscordChannelIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
79
|
+
heartbeatIntervalMs: z.ZodDefault<z.ZodNumber>;
|
|
80
|
+
onboardingComplete: z.ZodDefault<z.ZodBoolean>;
|
|
81
|
+
onboardingCode: z.ZodOptional<z.ZodString>;
|
|
82
|
+
onboardingCodeVerified: z.ZodDefault<z.ZodBoolean>;
|
|
83
|
+
onboardedAt: z.ZodOptional<z.ZodString>;
|
|
84
|
+
}, z.core.$strip>;
|
|
85
|
+
export type OwnerConfig = z.infer<typeof OwnerConfigSchema>;
|
|
72
86
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,6BAA6B,QAAgB,CAAC;AAE3D,eAAO,MAAM,kBAAkB;;;;;;iBAM7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,6BAA6B,QAAgB,CAAC;AAE3D,eAAO,MAAM,kBAAkB;;;;;;iBAM7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,mBAAmB;;;;;;;;;iBAa9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,eAAe;;;;;;;;;;iBAM1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAcjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;iBAa5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
|
package/dist/config/types.js
CHANGED
|
@@ -13,14 +13,12 @@ export const ChannelConfigSchema = z.object({
|
|
|
13
13
|
.object({
|
|
14
14
|
enabled: z.boolean().default(false),
|
|
15
15
|
botToken: z.string().optional(),
|
|
16
|
-
allowedChatIds: z.array(z.number()).default([]),
|
|
17
16
|
})
|
|
18
17
|
.optional(),
|
|
19
18
|
discord: z
|
|
20
19
|
.object({
|
|
21
20
|
enabled: z.boolean().default(false),
|
|
22
21
|
botToken: z.string().optional(),
|
|
23
|
-
allowedChannelIds: z.array(z.string()).default([]),
|
|
24
22
|
})
|
|
25
23
|
.optional(),
|
|
26
24
|
});
|
|
@@ -31,14 +29,14 @@ export const ObsConfigSchema = z.object({
|
|
|
31
29
|
bufferSize: z.number().int().default(1000),
|
|
32
30
|
tunnel: z.enum(["cloudflared", "ngrok", "off"]).default("cloudflared"),
|
|
33
31
|
});
|
|
32
|
+
/**
|
|
33
|
+
* Pre-ship manufacturer config.
|
|
34
|
+
* Contains runtime dependencies and infrastructure settings.
|
|
35
|
+
*/
|
|
34
36
|
export const VisionClawConfigSchema = z.object({
|
|
35
|
-
agentName: z.string().default("VisionClaw"),
|
|
36
|
-
ownerName: z.string().default(""),
|
|
37
|
-
ownerEmail: z.string().optional(),
|
|
38
37
|
gmail: z.email(),
|
|
39
38
|
googleClientId: z.string(),
|
|
40
39
|
googleClientSecret: z.string(),
|
|
41
|
-
phoneNumber: z.string().optional(),
|
|
42
40
|
anthropicApiKey: z.string(),
|
|
43
41
|
channels: ChannelConfigSchema.default({}),
|
|
44
42
|
obs: ObsConfigSchema.default({
|
|
@@ -48,7 +46,24 @@ export const VisionClawConfigSchema = z.object({
|
|
|
48
46
|
bufferSize: 1000,
|
|
49
47
|
tunnel: "cloudflared",
|
|
50
48
|
}),
|
|
51
|
-
heartbeatIntervalMs: z.number().default(DEFAULT_HEARTBEAT_INTERVAL_MS),
|
|
52
49
|
skillsDir: z.string().optional(),
|
|
53
50
|
});
|
|
51
|
+
/**
|
|
52
|
+
* Post-ship owner config.
|
|
53
|
+
* Populated during Telegram onboarding after the agent is delivered.
|
|
54
|
+
*/
|
|
55
|
+
export const OwnerConfigSchema = z.object({
|
|
56
|
+
agentName: z.string().default("VisionClaw"),
|
|
57
|
+
ownerName: z.string(),
|
|
58
|
+
ownerEmail: z.string().min(1).refine((v) => v.includes("@"), { message: "Invalid email" }),
|
|
59
|
+
phoneNumber: z.string().optional(),
|
|
60
|
+
telegramChatId: z.number().optional(),
|
|
61
|
+
allowedTelegramChatIds: z.array(z.number()).default([]),
|
|
62
|
+
allowedDiscordChannelIds: z.array(z.string()).default([]),
|
|
63
|
+
heartbeatIntervalMs: z.number().default(DEFAULT_HEARTBEAT_INTERVAL_MS),
|
|
64
|
+
onboardingComplete: z.boolean().default(false),
|
|
65
|
+
onboardingCode: z.string().optional(),
|
|
66
|
+
onboardingCodeVerified: z.boolean().default(false),
|
|
67
|
+
onboardedAt: z.string().optional(),
|
|
68
|
+
});
|
|
54
69
|
//# sourceMappingURL=types.js.map
|
package/dist/config/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,sEAAsE;AACtE,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAExE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IACxC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC;QACN,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { setProfile, getProfile, configExists, loadConfig } from "./config/index.js";
|
|
2
|
+
import { setProfile, getProfile, configExists, loadConfig, isOnboardingComplete } from "./config/index.js";
|
|
3
3
|
import { logger } from "./logger.js";
|
|
4
|
-
import {
|
|
4
|
+
import { runSetup } from "./onboarding/index.js";
|
|
5
5
|
import { installBuiltinSkills } from "./skills/install.js";
|
|
6
6
|
import { startAgentLoop, getAgentState } from "./agent/loop.js";
|
|
7
7
|
import { startObsServer } from "./obs/server.js";
|
|
@@ -24,7 +24,7 @@ function printHelp() {
|
|
|
24
24
|
console.log(`VisionClaw\n\nUsage:\n visionclaw [--profile <name>] [--debug]\n\nOptions:\n --profile <name> Use a specific profile (default: "default")\n -d, --debug Enable debug logging (sets LOG_LEVEL=debug)\n -v, --version Print version and exit\n -h, --help Show this help and exit\n`);
|
|
25
25
|
}
|
|
26
26
|
function printCommandHelp() {
|
|
27
|
-
console.log(`VisionClaw\n\nUsage:\n visionclaw [command] [options]\n\nCommands:\n reconfigure Update an existing profile without starting the agent\n reinstall-skills Reinstall built-in skills (does not start the agent)\n\nGlobal options:\n --profile <name> Use a specific profile (default: "default")\n -d, --debug Enable debug logging (sets LOG_LEVEL=debug)\n -v, --version Print version and exit\n -h, --help Show this help and exit\n`);
|
|
27
|
+
console.log(`VisionClaw\n\nUsage:\n visionclaw [command] [options]\n\nCommands:\n setup Run manufacturer (pre-ship) setup without starting the agent\n set-owner Set the owner email for post-ship onboarding\n reconfigure Update an existing profile without starting the agent\n reinstall-skills Reinstall built-in skills (does not start the agent)\n\nGlobal options:\n --profile <name> Use a specific profile (default: "default")\n -d, --debug Enable debug logging (sets LOG_LEVEL=debug)\n -v, --version Print version and exit\n -h, --help Show this help and exit\n`);
|
|
28
28
|
}
|
|
29
29
|
async function printVersionAndExit() {
|
|
30
30
|
try {
|
|
@@ -73,6 +73,21 @@ async function main() {
|
|
|
73
73
|
logger.system(`VisionClaw - Personal Desktop Agent`);
|
|
74
74
|
logger.system(`Profile: ${getProfile()}\n`);
|
|
75
75
|
// Subcommands
|
|
76
|
+
if (parsed.command === "setup") {
|
|
77
|
+
if (configExists()) {
|
|
78
|
+
logger.system(`Profile "${parsed.profile}" is already configured. Use "reconfigure" to update it.`);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
logger.system(`Starting manufacturer setup for profile "${parsed.profile}"...\n`);
|
|
82
|
+
await runSetup();
|
|
83
|
+
logger.system("\nManufacturer setup complete!");
|
|
84
|
+
process.exit(0);
|
|
85
|
+
}
|
|
86
|
+
if (parsed.command === "set-owner") {
|
|
87
|
+
const { runSetOwner } = (await import("./onboarding/set-owner.js"));
|
|
88
|
+
runSetOwner(parsed.commandArgs);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
76
91
|
if (parsed.command === "reconfigure") {
|
|
77
92
|
// NOTE: Under Node16 moduleResolution, runtime ESM imports require an explicit extension.
|
|
78
93
|
// This resolves at runtime after compilation because `dist/reconfigure.js` exists.
|
|
@@ -92,19 +107,17 @@ async function main() {
|
|
|
92
107
|
printCommandHelp();
|
|
93
108
|
process.exit(1);
|
|
94
109
|
}
|
|
95
|
-
// If no config exists for this profile, run onboarding
|
|
110
|
+
// If no config exists for this profile, run manufacturer onboarding
|
|
96
111
|
if (!configExists()) {
|
|
97
|
-
logger.system(`No configuration found for profile "${parsed.profile}". Starting
|
|
98
|
-
await
|
|
99
|
-
logger.system("\
|
|
112
|
+
logger.system(`No configuration found for profile "${parsed.profile}". Starting manufacturer setup...\n`);
|
|
113
|
+
await runSetup();
|
|
114
|
+
logger.system("\nManufacturer setup complete!\n");
|
|
100
115
|
}
|
|
101
116
|
// Install/update built-in skills (safe to call on every startup)
|
|
102
117
|
installBuiltinSkills();
|
|
103
118
|
const config = loadConfig();
|
|
104
119
|
logger.system(`Agent identity: ${config.gmail}`);
|
|
105
|
-
|
|
106
|
-
logger.system("");
|
|
107
|
-
// Start runtime observability server (advanced config; not part of onboarding)
|
|
120
|
+
// Start runtime observability server
|
|
108
121
|
if (config.obs.enabled) {
|
|
109
122
|
const obs = startObsServer({
|
|
110
123
|
host: config.obs.host || "0.0.0.0",
|
|
@@ -139,19 +152,21 @@ async function main() {
|
|
|
139
152
|
obs.tunnelUrl
|
|
140
153
|
.then((url) => {
|
|
141
154
|
if (url) {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
155
|
+
if (isOnboardingComplete()) {
|
|
156
|
+
notifyOwnerTunnelUrl(url, config).catch((_err) => {
|
|
157
|
+
// notification errors are logged inside notifyOwnerTunnelUrl
|
|
158
|
+
});
|
|
159
|
+
}
|
|
145
160
|
}
|
|
146
161
|
})
|
|
147
|
-
.catch(() => {
|
|
148
|
-
// tunnel errors are
|
|
162
|
+
.catch((_err) => {
|
|
163
|
+
// tunnel errors are logged inside startTunnel
|
|
149
164
|
});
|
|
150
165
|
}
|
|
151
166
|
// Cache display size for computer_use tools (macOS)
|
|
152
167
|
const { initDisplaySize } = await import("./tools/desktop-executor.js");
|
|
153
168
|
await initDisplaySize();
|
|
154
|
-
// Start the main agent loop
|
|
169
|
+
// Start the main agent loop (handles onboarding gate internally)
|
|
155
170
|
await startAgentLoop(config);
|
|
156
171
|
}
|
|
157
172
|
main().catch((err) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/obs/notify.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notify.d.ts","sourceRoot":"","sources":["../../src/obs/notify.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"notify.d.ts","sourceRoot":"","sources":["../../src/obs/notify.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,IAAI,CAAC,CAiDf"}
|
package/dist/obs/notify.js
CHANGED
|
@@ -16,11 +16,12 @@ export async function notifyOwnerTunnelUrl(tunnelUrl, config) {
|
|
|
16
16
|
logger.warn("Cannot notify tunnel URL — agent state not yet initialized");
|
|
17
17
|
return;
|
|
18
18
|
}
|
|
19
|
+
const { ownerConfig } = state;
|
|
19
20
|
const message = `VisionClaw console is now publicly accessible:\n${tunnelUrl}/console`;
|
|
20
|
-
const {
|
|
21
|
+
const { discord } = config.channels;
|
|
21
22
|
const tasks = [];
|
|
22
|
-
if (telegram?.enabled &&
|
|
23
|
-
for (const chatId of
|
|
23
|
+
if (config.channels.telegram?.enabled && ownerConfig.allowedTelegramChatIds.length > 0) {
|
|
24
|
+
for (const chatId of ownerConfig.allowedTelegramChatIds) {
|
|
24
25
|
tasks.push(state.channelManager
|
|
25
26
|
.sendMessage("telegram", String(chatId), message)
|
|
26
27
|
.catch((err) => {
|
|
@@ -28,8 +29,8 @@ export async function notifyOwnerTunnelUrl(tunnelUrl, config) {
|
|
|
28
29
|
}));
|
|
29
30
|
}
|
|
30
31
|
}
|
|
31
|
-
if (discord?.enabled &&
|
|
32
|
-
for (const channelId of
|
|
32
|
+
if (discord?.enabled && ownerConfig.allowedDiscordChannelIds.length > 0) {
|
|
33
|
+
for (const channelId of ownerConfig.allowedDiscordChannelIds) {
|
|
33
34
|
tasks.push(state.channelManager
|
|
34
35
|
.sendMessage("discord", channelId, message)
|
|
35
36
|
.catch((err) => {
|
package/dist/obs/notify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notify.js","sourceRoot":"","sources":["../../src/obs/notify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,SAAiB,EACjB,MAAwB;IAExB,IAAI,KAAK,CAAC;IACV,IAAI,CAAC;QACH,KAAK,GAAG,aAAa,EAAE,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,mDAAmD,SAAS,UAAU,CAAC;IACvF,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"notify.js","sourceRoot":"","sources":["../../src/obs/notify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,SAAiB,EACjB,MAAwB;IAExB,IAAI,KAAK,CAAC;IACV,IAAI,CAAC;QACH,KAAK,GAAG,aAAa,EAAE,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IAED,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC9B,MAAM,OAAO,GAAG,mDAAmD,SAAS,UAAU,CAAC;IACvF,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;IAEpC,MAAM,KAAK,GAAoB,EAAE,CAAC;IAElC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,IAAI,WAAW,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvF,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,sBAAsB,EAAE,CAAC;YACxD,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,cAAc;iBACjB,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;iBAChD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;gBACtB,MAAM,CAAC,IAAI,CACT,8CAA8C,MAAM,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC5G,CAAC;YACJ,CAAC,CAAC,CACL,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,OAAO,EAAE,OAAO,IAAI,WAAW,CAAC,wBAAwB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxE,KAAK,MAAM,SAAS,IAAI,WAAW,CAAC,wBAAwB,EAAE,CAAC;YAC7D,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,cAAc;iBACjB,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC;iBAC1C,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;gBACtB,MAAM,CAAC,IAAI,CACT,gDAAgD,SAAS,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACjH,CAAC;YACJ,CAAC,CAAC,CACL,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,MAAM,CAAC,wDAAwD,SAAS,EAAE,CAAC,CAAC;QACnF,OAAO;IACT,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -1,2 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Pre-ship manufacturer setup.
|
|
3
|
+
* Collects runtime dependencies and infrastructure config only.
|
|
4
|
+
* Owner identity is set separately via `visionclaw set-owner`.
|
|
5
|
+
*/
|
|
6
|
+
export declare function runSetup(): Promise<void>;
|
|
2
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/onboarding/index.ts"],"names":[],"mappings":"AAYA,wBAAsB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/onboarding/index.ts"],"names":[],"mappings":"AAYA;;;;GAIG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAsO9C"}
|
package/dist/onboarding/index.js
CHANGED
|
@@ -4,13 +4,17 @@ import { saveConfig, ensureConfigDir } from "../config/index.js";
|
|
|
4
4
|
import { runGoogleOAuth } from "./google-auth.js";
|
|
5
5
|
import { checkMacOSPermissions } from "./macos-permissions.js";
|
|
6
6
|
import { installBuiltinSkills } from "../skills/install.js";
|
|
7
|
-
import { DEFAULT_HEARTBEAT_INTERVAL_MS } from "../config/types.js";
|
|
8
7
|
function isBinaryAvailable(name) {
|
|
9
8
|
return spawnSync(name, ["--version"], { stdio: "ignore" }).status === 0;
|
|
10
9
|
}
|
|
11
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Pre-ship manufacturer setup.
|
|
12
|
+
* Collects runtime dependencies and infrastructure config only.
|
|
13
|
+
* Owner identity is set separately via `visionclaw set-owner`.
|
|
14
|
+
*/
|
|
15
|
+
export async function runSetup() {
|
|
12
16
|
ensureConfigDir();
|
|
13
|
-
console.log("=== VisionClaw
|
|
17
|
+
console.log("=== VisionClaw Manufacturer Setup ===\n");
|
|
14
18
|
// --- macOS permission check (screen recording + accessibility) ---
|
|
15
19
|
const permissionsOk = await checkMacOSPermissions();
|
|
16
20
|
if (!permissionsOk) {
|
|
@@ -21,29 +25,12 @@ export async function runOnboarding() {
|
|
|
21
25
|
initial: true,
|
|
22
26
|
}));
|
|
23
27
|
if (!continueResult.continueSetup) {
|
|
24
|
-
console.log("\nPlease grant the required permissions and run
|
|
28
|
+
console.log("\nPlease grant the required permissions and run setup again.");
|
|
25
29
|
process.exit(0);
|
|
26
30
|
}
|
|
27
31
|
}
|
|
28
32
|
console.log("VisionClaw needs a dedicated Gmail account to serve as its identity.");
|
|
29
33
|
console.log("The agent will use this account for email and Google Calendar.\n");
|
|
30
|
-
// --- Required: Owner identity ---
|
|
31
|
-
const ownerNameResult = (await prompts({
|
|
32
|
-
type: "text",
|
|
33
|
-
name: "ownerName",
|
|
34
|
-
message: "Your name (the agent's owner):",
|
|
35
|
-
validate: (v) => v.trim().length > 0 ? true : "Name is required",
|
|
36
|
-
}));
|
|
37
|
-
const ownerName = ownerNameResult.ownerName;
|
|
38
|
-
if (!ownerName) {
|
|
39
|
-
throw new Error("Onboarding cancelled");
|
|
40
|
-
}
|
|
41
|
-
const ownerEmailResult = (await prompts({
|
|
42
|
-
type: "text",
|
|
43
|
-
name: "ownerEmail",
|
|
44
|
-
message: "Your personal email (so the agent can identify you):",
|
|
45
|
-
}));
|
|
46
|
-
const ownerEmail = ownerEmailResult.ownerEmail;
|
|
47
34
|
// --- Required: Anthropic API Key ---
|
|
48
35
|
const anthropicResult = (await prompts({
|
|
49
36
|
type: "password",
|
|
@@ -53,7 +40,7 @@ export async function runOnboarding() {
|
|
|
53
40
|
}));
|
|
54
41
|
const anthropicApiKey = anthropicResult.anthropicApiKey;
|
|
55
42
|
if (!anthropicApiKey) {
|
|
56
|
-
throw new Error("
|
|
43
|
+
throw new Error("Setup cancelled");
|
|
57
44
|
}
|
|
58
45
|
// --- Required: Gmail address ---
|
|
59
46
|
const gmailResult = (await prompts({
|
|
@@ -64,16 +51,8 @@ export async function runOnboarding() {
|
|
|
64
51
|
}));
|
|
65
52
|
const gmail = gmailResult.gmail;
|
|
66
53
|
if (!gmail) {
|
|
67
|
-
throw new Error("
|
|
54
|
+
throw new Error("Setup cancelled");
|
|
68
55
|
}
|
|
69
|
-
// --- Required: Agent name ---
|
|
70
|
-
const agentNameResult = (await prompts({
|
|
71
|
-
type: "text",
|
|
72
|
-
name: "agentName",
|
|
73
|
-
message: "Agent name:",
|
|
74
|
-
initial: "VisionClaw",
|
|
75
|
-
}));
|
|
76
|
-
const agentName = agentNameResult.agentName;
|
|
77
56
|
// --- Required: Google OAuth2 credentials ---
|
|
78
57
|
console.log("\n--- Google Cloud OAuth2 Credentials ---");
|
|
79
58
|
console.log("Create OAuth2 credentials at https://console.cloud.google.com/apis/credentials");
|
|
@@ -86,7 +65,7 @@ export async function runOnboarding() {
|
|
|
86
65
|
}));
|
|
87
66
|
const googleClientId = googleClientIdResult.googleClientId;
|
|
88
67
|
if (!googleClientId) {
|
|
89
|
-
throw new Error("
|
|
68
|
+
throw new Error("Setup cancelled");
|
|
90
69
|
}
|
|
91
70
|
const googleClientSecretResult = (await prompts({
|
|
92
71
|
type: "password",
|
|
@@ -96,20 +75,19 @@ export async function runOnboarding() {
|
|
|
96
75
|
}));
|
|
97
76
|
const googleClientSecret = googleClientSecretResult.googleClientSecret;
|
|
98
77
|
if (!googleClientSecret) {
|
|
99
|
-
throw new Error("
|
|
78
|
+
throw new Error("Setup cancelled");
|
|
100
79
|
}
|
|
101
80
|
// Run Google OAuth flow
|
|
102
81
|
console.log("\nStarting Google OAuth2 authorization...");
|
|
103
82
|
await runGoogleOAuth(googleClientId, googleClientSecret);
|
|
104
83
|
console.log("Google authorization successful!");
|
|
105
|
-
// ---
|
|
84
|
+
// --- Command Channels ---
|
|
106
85
|
console.log("\n--- Command Channels ---");
|
|
107
|
-
console.log("You need at least one channel to communicate with the agent.");
|
|
108
86
|
console.log(`Gmail (${gmail.trim()}) is always available as a channel.\n`);
|
|
109
87
|
const channelChoiceResult = (await prompts({
|
|
110
88
|
type: "multiselect",
|
|
111
89
|
name: "channels",
|
|
112
|
-
message: "Which channels do you want to enable?",
|
|
90
|
+
message: "Which additional channels do you want to enable?",
|
|
113
91
|
choices: [
|
|
114
92
|
{ title: `Gmail (${gmail.trim()})`, value: "gmail", selected: true },
|
|
115
93
|
{ title: "Telegram", value: "telegram" },
|
|
@@ -120,11 +98,10 @@ export async function runOnboarding() {
|
|
|
120
98
|
}));
|
|
121
99
|
const selectedChannels = channelChoiceResult.channels ?? ["gmail"];
|
|
122
100
|
if (selectedChannels.length === 0) {
|
|
123
|
-
throw new Error("At least one channel is required.
|
|
101
|
+
throw new Error("At least one channel is required. Setup cancelled.");
|
|
124
102
|
}
|
|
125
|
-
// --- Telegram setup ---
|
|
103
|
+
// --- Telegram setup (bot token only, chat IDs come from owner setup) ---
|
|
126
104
|
let telegramBotToken;
|
|
127
|
-
let telegramChatIds = [];
|
|
128
105
|
if (selectedChannels.includes("telegram")) {
|
|
129
106
|
const telegramResult = (await prompts({
|
|
130
107
|
type: "text",
|
|
@@ -134,22 +111,11 @@ export async function runOnboarding() {
|
|
|
134
111
|
}));
|
|
135
112
|
telegramBotToken = telegramResult.botToken;
|
|
136
113
|
if (!telegramBotToken) {
|
|
137
|
-
throw new Error("Telegram bot token is required.
|
|
138
|
-
}
|
|
139
|
-
console.log("\nTo find your Telegram Chat ID, message @userinfobot on Telegram -- it will reply with your ID.");
|
|
140
|
-
const chatIdResult = (await prompts({
|
|
141
|
-
type: "text",
|
|
142
|
-
name: "chatId",
|
|
143
|
-
message: "Your Telegram Chat ID (numeric, e.g. 5788338436):",
|
|
144
|
-
validate: (v) => /^\d+$/.test(v.trim()) ? true : "Must be a numeric Chat ID",
|
|
145
|
-
}));
|
|
146
|
-
if (chatIdResult.chatId) {
|
|
147
|
-
telegramChatIds = [Number(chatIdResult.chatId)];
|
|
114
|
+
throw new Error("Telegram bot token is required. Setup cancelled.");
|
|
148
115
|
}
|
|
149
116
|
}
|
|
150
|
-
// --- Discord
|
|
117
|
+
// --- Discord Setup ---
|
|
151
118
|
let discordBotToken;
|
|
152
|
-
let discordChannelIds = [];
|
|
153
119
|
if (selectedChannels.includes("discord")) {
|
|
154
120
|
console.log("\nCreate a bot at https://discord.com/developers/applications");
|
|
155
121
|
console.log("Enable MESSAGE CONTENT intent under Bot settings.\n");
|
|
@@ -161,24 +127,9 @@ export async function runOnboarding() {
|
|
|
161
127
|
}));
|
|
162
128
|
discordBotToken = discordResult.botToken;
|
|
163
129
|
if (!discordBotToken) {
|
|
164
|
-
throw new Error("Discord bot token is required.
|
|
165
|
-
}
|
|
166
|
-
const channelIdResult = (await prompts({
|
|
167
|
-
type: "text",
|
|
168
|
-
name: "channelId",
|
|
169
|
-
message: "Discord channel ID to listen on (right-click channel > Copy Channel ID, or leave blank for DMs only):",
|
|
170
|
-
}));
|
|
171
|
-
if (channelIdResult.channelId?.trim()) {
|
|
172
|
-
discordChannelIds = [channelIdResult.channelId.trim()];
|
|
130
|
+
throw new Error("Discord bot token is required. Setup cancelled.");
|
|
173
131
|
}
|
|
174
132
|
}
|
|
175
|
-
// --- Optional: Phone number ---
|
|
176
|
-
const phoneNumberResult = (await prompts({
|
|
177
|
-
type: "text",
|
|
178
|
-
name: "phoneNumber",
|
|
179
|
-
message: "Phone number (optional, for reference):",
|
|
180
|
-
}));
|
|
181
|
-
const phoneNumber = phoneNumberResult.phoneNumber;
|
|
182
133
|
// --- Remote access: OBS tunnel ---
|
|
183
134
|
console.log("\n--- Remote Access (OBS Tunnel) ---");
|
|
184
135
|
const hasCloudfared = isBinaryAvailable("cloudflared");
|
|
@@ -200,7 +151,6 @@ export async function runOnboarding() {
|
|
|
200
151
|
console.log("Found: ngrok — tunnel will use ngrok by default.\n");
|
|
201
152
|
}
|
|
202
153
|
else {
|
|
203
|
-
// Both available — let the user choose
|
|
204
154
|
const tunnelResult = (await prompts({
|
|
205
155
|
type: "select",
|
|
206
156
|
name: "tunnel",
|
|
@@ -218,25 +168,18 @@ export async function runOnboarding() {
|
|
|
218
168
|
const enabledList = selectedChannels.join(", ");
|
|
219
169
|
console.log(`\nEnabled channels: ${enabledList}`);
|
|
220
170
|
const config = {
|
|
221
|
-
agentName: agentName ?? "VisionClaw",
|
|
222
|
-
ownerName: ownerName.trim(),
|
|
223
|
-
ownerEmail: typeof ownerEmail === "string" ? ownerEmail.trim() || undefined : undefined,
|
|
224
171
|
gmail: gmail.trim(),
|
|
225
172
|
googleClientId: googleClientId.trim(),
|
|
226
173
|
googleClientSecret: googleClientSecret.trim(),
|
|
227
|
-
phoneNumber: typeof phoneNumber === "string" ? phoneNumber.trim() || undefined : undefined,
|
|
228
174
|
anthropicApiKey: anthropicApiKey.trim(),
|
|
229
175
|
channels: {
|
|
230
176
|
telegram: telegramBotToken
|
|
231
|
-
? { enabled: true, botToken: telegramBotToken
|
|
232
|
-
: { enabled: false
|
|
177
|
+
? { enabled: true, botToken: telegramBotToken }
|
|
178
|
+
: { enabled: false },
|
|
233
179
|
discord: discordBotToken
|
|
234
|
-
? { enabled: true, botToken: discordBotToken
|
|
235
|
-
: { enabled: false
|
|
180
|
+
? { enabled: true, botToken: discordBotToken }
|
|
181
|
+
: { enabled: false },
|
|
236
182
|
},
|
|
237
|
-
// Advanced configuration (not prompted during onboarding)
|
|
238
|
-
// Defaults are applied by the schema, but include explicit values to keep
|
|
239
|
-
// the generated config file self-describing.
|
|
240
183
|
obs: {
|
|
241
184
|
enabled: true,
|
|
242
185
|
host: "127.0.0.1",
|
|
@@ -244,11 +187,10 @@ export async function runOnboarding() {
|
|
|
244
187
|
bufferSize: 1000,
|
|
245
188
|
tunnel: tunnelChoice,
|
|
246
189
|
},
|
|
247
|
-
heartbeatIntervalMs: DEFAULT_HEARTBEAT_INTERVAL_MS,
|
|
248
190
|
};
|
|
249
191
|
saveConfig(config);
|
|
250
|
-
// Install built-in skills (e.g. transcribe-audio)
|
|
251
192
|
installBuiltinSkills();
|
|
252
|
-
console.log("
|
|
193
|
+
console.log("Manufacturer configuration saved successfully!");
|
|
194
|
+
console.log('\nNext step: run "visionclaw set-owner --email <owner-email>" to set up the owner.');
|
|
253
195
|
}
|
|
254
196
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/onboarding/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/onboarding/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type McpServerConfig } from "@anthropic-ai/claude-agent-sdk";
|
|
2
|
+
import type { VisionClawConfig } from "../config/types.js";
|
|
3
|
+
export interface OnboardingReply {
|
|
4
|
+
text: string;
|
|
5
|
+
completed: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Lightweight Agent SDK session for onboarding.
|
|
9
|
+
*
|
|
10
|
+
* Each call to `sendAndGetReply` creates a one-shot `query()` call
|
|
11
|
+
* (resumed from the saved session ID if available) and streams the
|
|
12
|
+
* response to collect text and detect tool calls.
|
|
13
|
+
*/
|
|
14
|
+
export declare class OnboardingSession {
|
|
15
|
+
private config;
|
|
16
|
+
private ownerEmail;
|
|
17
|
+
private sessionId;
|
|
18
|
+
private mcpServers;
|
|
19
|
+
private onCompleted;
|
|
20
|
+
constructor(config: VisionClawConfig, ownerEmail: string, mcpServers: Record<string, McpServerConfig>);
|
|
21
|
+
/**
|
|
22
|
+
* Send a user message and collect the agent's text reply.
|
|
23
|
+
* Retries on timeout or transient errors when no text was collected.
|
|
24
|
+
* The optional `onRetry` callback is invoked before each retry attempt.
|
|
25
|
+
*/
|
|
26
|
+
sendAndGetReply(userMessage: string, onRetry?: (attempt: number, maxRetries: number) => Promise<void>): Promise<OnboardingReply>;
|
|
27
|
+
private executeQuery;
|
|
28
|
+
private processMessage;
|
|
29
|
+
private captureSessionId;
|
|
30
|
+
getSessionId(): string | null;
|
|
31
|
+
setOnCompletedCallback(cb: () => void): void;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=onboarding-session.d.ts.map
|