visionclaw 0.1.0 → 0.1.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAgJlE"}
1
+ {"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAkJlE"}
@@ -97,6 +97,8 @@ During heartbeat wakes (no new messages), review your calendar, check for pendin
97
97
  - **manage_skills**: Create, update, delete, or list your skills (SKILL.md files invoked by the Skill tool)
98
98
  - **upgrade**: Check for and install updates to yourself
99
99
  - **manage_calendar**: Create, update, delete, list Google Calendar events
100
+ - **manage_calendar**: Create, update, delete, list Google Calendar events
101
+ - **manage_email**: List, search, read, send, reply, and manage Gmail messages
100
102
  - **memory**: Persistent memory storage (view, create, str_replace, insert, delete, rename files in /memories)
101
103
 
102
104
  ### Browser Tools (Playwright MCP)
@@ -1 +1 @@
1
- {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAwB;IACxD,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE;QAC7C,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,MAAM;KAClB,CAAC,CAAC;IAEH,OAAO;;UAEC,MAAM,CAAC,SAAS,oHAAoH,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;;;cAGnL,MAAM,CAAC,SAAS;eACf,MAAM,CAAC,KAAK;kDACuB,MAAM,CAAC,KAAK;EAC5D,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,6BAA6B;;;EAGzF,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,6BAA6B;EACpF,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,yBAAyB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE;EACrE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE;EAC9D,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,4BAA4B,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;EAa/K,WAAW;;;;;;;;;gCASmB,MAAM,CAAC,mBAAmB,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiG/D,GAAG,KAAK,EAAE;CACX,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,MAAwB;IAClD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,sDAAsD;IACtD,QAAQ,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IAE5E,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAwB;IACxD,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE;QAC7C,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,MAAM;KAClB,CAAC,CAAC;IAEH,OAAO;;UAEC,MAAM,CAAC,SAAS,oHAAoH,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;;;cAGnL,MAAM,CAAC,SAAS;eACf,MAAM,CAAC,KAAK;kDACuB,MAAM,CAAC,KAAK;EAC5D,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,6BAA6B;;;EAGzF,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,6BAA6B;EACpF,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,yBAAyB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE;EACrE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE;EAC9D,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,4BAA4B,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;EAa/K,WAAW;;;;;;;;;gCASmB,MAAM,CAAC,mBAAmB,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmG/D,GAAG,KAAK,EAAE;CACX,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,MAAwB;IAClD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,sDAAsD;IACtD,QAAQ,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IAE5E,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,55 @@
1
+ import type { VisionClawConfig } from "../config/types.js";
2
+ export interface GmailListEmailsOptions {
3
+ /** Gmail label to list from (default: INBOX) */
4
+ label?: string;
5
+ /** Only include unread messages (default: false) */
6
+ unreadOnly?: boolean;
7
+ /** Gmail search query (e.g. 'from:foo subject:bar newer_than:7d') */
8
+ query?: string;
9
+ /** Max results to return (default: 10) */
10
+ maxResults?: number;
11
+ }
12
+ export interface GmailEmailSummary {
13
+ id: string;
14
+ threadId?: string;
15
+ from?: string;
16
+ to?: string;
17
+ subject?: string;
18
+ date?: string;
19
+ snippet?: string;
20
+ labels?: string[];
21
+ }
22
+ export interface GmailEmailDetail extends GmailEmailSummary {
23
+ bodyText?: string;
24
+ }
25
+ /**
26
+ * Gmail email client wrapper (separate from the Gmail channel adapter).
27
+ * Provides programmatic email operations for agent tools.
28
+ */
29
+ export declare class GmailEmailClient {
30
+ private gmail;
31
+ private config;
32
+ constructor(config: VisionClawConfig);
33
+ listEmails(options?: GmailListEmailsOptions): Promise<GmailEmailSummary[]>;
34
+ getEmail(messageId: string): Promise<GmailEmailDetail>;
35
+ markRead(messageId: string): Promise<void>;
36
+ markUnread(messageId: string): Promise<void>;
37
+ archive(messageId: string): Promise<void>;
38
+ sendEmail(options: {
39
+ to: string;
40
+ subject: string;
41
+ body: string;
42
+ }): Promise<{
43
+ id?: string;
44
+ threadId?: string;
45
+ }>;
46
+ reply(options: {
47
+ messageId: string;
48
+ to?: string;
49
+ body: string;
50
+ }): Promise<{
51
+ id?: string;
52
+ threadId?: string;
53
+ }>;
54
+ }
55
+ //# sourceMappingURL=gmail-email.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gmail-email.d.ts","sourceRoot":"","sources":["../../src/email/gmail-email.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,WAAW,sBAAsB;IACrC,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAuDD;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,EAAE,gBAAgB;IA2B9B,UAAU,CAAC,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA+C9E,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwBtD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5C,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASzC,SAAS,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAgB9G,KAAK,CAAC,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAyCpH"}
@@ -0,0 +1,204 @@
1
+ import { google } from "googleapis";
2
+ import { loadGoogleTokens, saveGoogleTokens } from "../config/index.js";
3
+ function getHeader(headers, name) {
4
+ const h = (headers ?? []).find((x) => (x.name ?? "").toLowerCase() === name.toLowerCase());
5
+ return h?.value ?? undefined;
6
+ }
7
+ function decodeBase64Url(data) {
8
+ return Buffer.from(data, "base64url").toString("utf-8");
9
+ }
10
+ function extractTextFromPayload(payload) {
11
+ if (!payload)
12
+ return "";
13
+ // Prefer text/plain
14
+ if (payload.mimeType === "text/plain" && payload.body?.data) {
15
+ return decodeBase64Url(payload.body.data);
16
+ }
17
+ // Some emails put content in parts
18
+ const parts = payload.parts ?? [];
19
+ for (const p of parts) {
20
+ const t = extractTextFromPayload(p);
21
+ if (t)
22
+ return t;
23
+ }
24
+ // Fallback: direct body
25
+ if (payload.body?.data) {
26
+ return decodeBase64Url(payload.body.data);
27
+ }
28
+ return "";
29
+ }
30
+ function createRawEmail(options) {
31
+ const headers = [];
32
+ headers.push(`From: ${options.from}`);
33
+ headers.push(`To: ${options.to}`);
34
+ headers.push(`Subject: ${options.subject}`);
35
+ headers.push("MIME-Version: 1.0");
36
+ headers.push("Content-Type: text/plain; charset=utf-8");
37
+ if (options.inReplyTo)
38
+ headers.push(`In-Reply-To: ${options.inReplyTo}`);
39
+ if (options.references)
40
+ headers.push(`References: ${options.references}`);
41
+ const raw = `${headers.join("\r\n")}\r\n\r\n${options.body}`;
42
+ return Buffer.from(raw, "utf-8").toString("base64url");
43
+ }
44
+ /**
45
+ * Gmail email client wrapper (separate from the Gmail channel adapter).
46
+ * Provides programmatic email operations for agent tools.
47
+ */
48
+ export class GmailEmailClient {
49
+ gmail;
50
+ config;
51
+ constructor(config) {
52
+ this.config = config;
53
+ const tokens = loadGoogleTokens();
54
+ const oauth2Client = new google.auth.OAuth2(config.googleClientId, config.googleClientSecret);
55
+ oauth2Client.setCredentials({
56
+ access_token: tokens.access_token,
57
+ refresh_token: tokens.refresh_token,
58
+ token_type: tokens.token_type,
59
+ expiry_date: tokens.expiry_date,
60
+ });
61
+ oauth2Client.on("tokens", (newTokens) => {
62
+ const existing = loadGoogleTokens();
63
+ saveGoogleTokens({
64
+ ...existing,
65
+ access_token: newTokens.access_token ?? existing.access_token,
66
+ expiry_date: newTokens.expiry_date ?? existing.expiry_date,
67
+ });
68
+ });
69
+ this.gmail = google.gmail({ version: "v1", auth: oauth2Client });
70
+ }
71
+ async listEmails(options = {}) {
72
+ const label = options.label ?? "INBOX";
73
+ const maxResults = options.maxResults ?? 10;
74
+ const unreadOnly = options.unreadOnly ?? false;
75
+ const qParts = [];
76
+ if (options.query)
77
+ qParts.push(options.query);
78
+ if (unreadOnly)
79
+ qParts.push("is:unread");
80
+ const res = await this.gmail.users.messages.list({
81
+ userId: "me",
82
+ labelIds: [label],
83
+ q: qParts.length ? qParts.join(" ") : undefined,
84
+ maxResults,
85
+ });
86
+ const ids = (res.data.messages ?? []).map((m) => m.id).filter(Boolean);
87
+ if (ids.length === 0)
88
+ return [];
89
+ // Fetch metadata for each id (parallel, but keep it bounded by maxResults)
90
+ const msgs = await Promise.all(ids.map((id) => this.gmail.users.messages.get({
91
+ userId: "me",
92
+ id,
93
+ format: "metadata",
94
+ metadataHeaders: ["From", "To", "Subject", "Date"],
95
+ })));
96
+ return msgs.map((m) => {
97
+ const payload = m.data.payload;
98
+ const headers = payload?.headers ?? [];
99
+ return {
100
+ id: m.data.id ?? "",
101
+ threadId: m.data.threadId ?? undefined,
102
+ from: getHeader(headers, "From"),
103
+ to: getHeader(headers, "To"),
104
+ subject: getHeader(headers, "Subject"),
105
+ date: getHeader(headers, "Date"),
106
+ snippet: m.data.snippet ?? undefined,
107
+ labels: m.data.labelIds ?? undefined,
108
+ };
109
+ });
110
+ }
111
+ async getEmail(messageId) {
112
+ const res = await this.gmail.users.messages.get({
113
+ userId: "me",
114
+ id: messageId,
115
+ format: "full",
116
+ });
117
+ const payload = res.data.payload;
118
+ const headers = payload?.headers ?? [];
119
+ const bodyText = extractTextFromPayload(payload);
120
+ return {
121
+ id: res.data.id ?? messageId,
122
+ threadId: res.data.threadId ?? undefined,
123
+ from: getHeader(headers, "From"),
124
+ to: getHeader(headers, "To"),
125
+ subject: getHeader(headers, "Subject"),
126
+ date: getHeader(headers, "Date"),
127
+ snippet: res.data.snippet ?? undefined,
128
+ labels: res.data.labelIds ?? undefined,
129
+ bodyText: bodyText || undefined,
130
+ };
131
+ }
132
+ async markRead(messageId) {
133
+ await this.gmail.users.messages.modify({
134
+ userId: "me",
135
+ id: messageId,
136
+ requestBody: { removeLabelIds: ["UNREAD"] },
137
+ });
138
+ }
139
+ async markUnread(messageId) {
140
+ await this.gmail.users.messages.modify({
141
+ userId: "me",
142
+ id: messageId,
143
+ requestBody: { addLabelIds: ["UNREAD"] },
144
+ });
145
+ }
146
+ async archive(messageId) {
147
+ // Remove INBOX label; keeps message in "All Mail"
148
+ await this.gmail.users.messages.modify({
149
+ userId: "me",
150
+ id: messageId,
151
+ requestBody: { removeLabelIds: ["INBOX"] },
152
+ });
153
+ }
154
+ async sendEmail(options) {
155
+ const raw = createRawEmail({
156
+ from: this.config.gmail,
157
+ to: options.to,
158
+ subject: options.subject,
159
+ body: options.body,
160
+ });
161
+ const res = await this.gmail.users.messages.send({
162
+ userId: "me",
163
+ requestBody: { raw },
164
+ });
165
+ return { id: res.data.id ?? undefined, threadId: res.data.threadId ?? undefined };
166
+ }
167
+ async reply(options) {
168
+ // Fetch minimal headers for reply metadata
169
+ const original = await this.gmail.users.messages.get({
170
+ userId: "me",
171
+ id: options.messageId,
172
+ format: "metadata",
173
+ metadataHeaders: ["From", "To", "Subject", "Message-Id", "References"],
174
+ });
175
+ const headers = original.data.payload?.headers ?? [];
176
+ const from = getHeader(headers, "From");
177
+ const to = options.to ?? from ?? "";
178
+ const subject = getHeader(headers, "Subject") ?? "";
179
+ const messageIdHeader = getHeader(headers, "Message-Id");
180
+ const references = getHeader(headers, "References");
181
+ const replySubject = subject.toLowerCase().startsWith("re:")
182
+ ? subject
183
+ : `Re: ${subject}`;
184
+ const raw = createRawEmail({
185
+ from: this.config.gmail,
186
+ to,
187
+ subject: replySubject,
188
+ body: options.body,
189
+ inReplyTo: messageIdHeader,
190
+ references: references
191
+ ? `${references} ${messageIdHeader ?? ""}`.trim()
192
+ : messageIdHeader,
193
+ });
194
+ const res = await this.gmail.users.messages.send({
195
+ userId: "me",
196
+ requestBody: {
197
+ raw,
198
+ threadId: original.data.threadId ?? undefined,
199
+ },
200
+ });
201
+ return { id: res.data.id ?? undefined, threadId: res.data.threadId ?? undefined };
202
+ }
203
+ }
204
+ //# sourceMappingURL=gmail-email.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gmail-email.js","sourceRoot":"","sources":["../../src/email/gmail-email.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -6,6 +6,26 @@ import { runOnboarding } from "./onboarding/index.js";
6
6
  import { installBuiltinSkills } from "./skills/install.js";
7
7
  import { startAgentLoop } from "./agent/loop.js";
8
8
  import { startObsServer } from "./obs/server.js";
9
+ function hasFlag(...flags) {
10
+ const args = process.argv.slice(2);
11
+ return flags.some((f) => args.includes(f));
12
+ }
13
+ function printHelp() {
14
+ console.log(`VisionClaw\n\nUsage:\n visionclaw [--profile <name>]\n\nOptions:\n --profile <name> Use a specific profile (default: \"default\")\n -v, --version Print version and exit\n -h, --help Show this help and exit\n`);
15
+ }
16
+ async function printVersionAndExit() {
17
+ try {
18
+ const pkg = await import("../package.json", { assert: { type: "json" } });
19
+ // Node's JSON import returns { default: {...} }
20
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
21
+ const version = pkg.default?.version ?? pkg.version;
22
+ console.log(version ? String(version) : "unknown");
23
+ }
24
+ catch {
25
+ console.log("unknown");
26
+ }
27
+ process.exit(0);
28
+ }
9
29
  function parseProfileArg() {
10
30
  const args = process.argv.slice(2);
11
31
  const idx = args.indexOf("--profile");
@@ -15,6 +35,14 @@ function parseProfileArg() {
15
35
  return "default";
16
36
  }
17
37
  async function main() {
38
+ if (hasFlag("-h", "--help")) {
39
+ printHelp();
40
+ return;
41
+ }
42
+ if (hasFlag("-v", "--version")) {
43
+ await printVersionAndExit();
44
+ return;
45
+ }
18
46
  // Parse --profile before anything else
19
47
  const profile = parseProfileArg();
20
48
  setProfile(profile);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,SAAS,eAAe;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,uCAAuC;IACvC,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,UAAU,CAAC,OAAO,CAAC,CAAC;IACpB,MAAM,CAAC,IAAI,EAAE,CAAC;IAEd,MAAM,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC;IACrD,MAAM,CAAC,MAAM,CAAC,YAAY,UAAU,EAAE,IAAI,CAAC,CAAC;IAE5C,uDAAuD;IACvD,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;QACpB,MAAM,CAAC,MAAM,CAAC,uCAAuC,OAAO,6BAA6B,CAAC,CAAC;QAC3F,MAAM,aAAa,EAAE,CAAC;QACtB,MAAM,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAAC;IAC9D,CAAC;IAED,iEAAiE;IACjE,oBAAoB,EAAE,CAAC;IAEvB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,CAAC,MAAM,CAAC,mBAAmB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,MAAM,CAAC,uBAAuB,MAAM,CAAC,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC;IAC3E,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAElB,+EAA+E;IAC/E,IAAI,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;QACxB,cAAc,CAAC;YACb,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI;YACrB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI;YACrB,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU;SAClC,CAAC,CAAC;IACL,CAAC;IAED,oDAAoD;IACpD,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;IACxE,MAAM,eAAe,EAAE,CAAC;IAExB,4BAA4B;IAC5B,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC5B,MAAM,CAAC,GAAG,CAAC,gBAAgB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"google-auth.d.ts","sourceRoot":"","sources":["../../src/onboarding/google-auth.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAUvD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAgHvB"}
1
+ {"version":3,"file":"google-auth.d.ts","sourceRoot":"","sources":["../../src/onboarding/google-auth.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAUvD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAkHvB"}
@@ -22,12 +22,14 @@ export async function runGoogleOAuth(clientId, clientSecret) {
22
22
  return new Promise((resolve, reject) => {
23
23
  // Create a temporary HTTP server to receive the OAuth callback
24
24
  const server = http.createServer();
25
- server.listen(0, "127.0.0.1", () => {
25
+ // Listen on all interfaces to avoid IPv4/IPv6 binding issues on some OSes
26
+ server.listen(0, "0.0.0.0", () => {
26
27
  const addr = server.address();
27
28
  if (!addr || typeof addr === "string") {
28
29
  reject(new Error("Failed to start local server"));
29
30
  return;
30
31
  }
32
+ // Google requires the redirect URI to be exactly 127.0.0.1 (or localhost)
31
33
  const redirectUri = `http://127.0.0.1:${addr.port}/callback`;
32
34
  const oauth2Client = new google.auth.OAuth2(clientId, clientSecret, redirectUri);
33
35
  const authUrl = oauth2Client.generateAuthUrl({
@@ -1 +1 @@
1
- {"version":3,"file":"google-auth.js","sourceRoot":"","sources":["../../src/onboarding/google-auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google-auth.js","sourceRoot":"","sources":["../../src/onboarding/google-auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { z } from "zod";
2
+ export declare const manageEmailTool: import("@anthropic-ai/claude-agent-sdk").SdkMcpToolDefinition<{
3
+ action: z.ZodEnum<["list", "search", "read", "send", "reply", "mark_read", "mark_unread", "archive"]>;
4
+ label: z.ZodOptional<z.ZodString>;
5
+ unread_only: z.ZodOptional<z.ZodBoolean>;
6
+ query: z.ZodOptional<z.ZodString>;
7
+ max_results: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
8
+ message_id: z.ZodOptional<z.ZodString>;
9
+ to: z.ZodOptional<z.ZodString>;
10
+ subject: z.ZodOptional<z.ZodString>;
11
+ body: z.ZodOptional<z.ZodString>;
12
+ include_body: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
13
+ }>;
14
+ //# sourceMappingURL=email.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/tools/email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,eAAe;;;;;;;;;;;EAqL3B,CAAC"}
@@ -0,0 +1,186 @@
1
+ import { z } from "zod";
2
+ import { tool } from "@anthropic-ai/claude-agent-sdk";
3
+ import { getAgentState } from "../agent/loop.js";
4
+ import { GmailEmailClient } from "../email/gmail-email.js";
5
+ function ok(text) {
6
+ return { content: [{ type: "text", text }] };
7
+ }
8
+ function err(text) {
9
+ return { content: [{ type: "text", text }], isError: true };
10
+ }
11
+ export const manageEmailTool = tool("manage_email", "Manage your email (Gmail). List, search, read, send, reply, and update message state (read/unread/archive).", {
12
+ action: z
13
+ .enum([
14
+ "list",
15
+ "search",
16
+ "read",
17
+ "send",
18
+ "reply",
19
+ "mark_read",
20
+ "mark_unread",
21
+ "archive",
22
+ ])
23
+ .describe("Email action to perform"),
24
+ label: z
25
+ .string()
26
+ .optional()
27
+ .describe("Gmail label to list from (for list)"),
28
+ unread_only: z
29
+ .boolean()
30
+ .optional()
31
+ .describe("Only include unread emails (for list/search)"),
32
+ query: z
33
+ .string()
34
+ .optional()
35
+ .describe("Gmail search query (for search), e.g. 'from:boss subject:(invoice) newer_than:7d'"),
36
+ max_results: z
37
+ .number()
38
+ .int()
39
+ .min(1)
40
+ .max(50)
41
+ .optional()
42
+ .describe("Maximum number of emails to return (for list/search)")
43
+ .default(10),
44
+ message_id: z
45
+ .string()
46
+ .optional()
47
+ .describe("Gmail message ID (for read/reply/mark/archive)")
48
+ .describe("Gmail message ID"),
49
+ to: z
50
+ .string()
51
+ .optional()
52
+ .describe("Recipient email address (for send; optional for reply)")
53
+ .describe("Recipient email"),
54
+ subject: z
55
+ .string()
56
+ .optional()
57
+ .describe("Email subject (for send)")
58
+ .describe("Subject"),
59
+ body: z
60
+ .string()
61
+ .optional()
62
+ .describe("Email body (for send/reply)")
63
+ .describe("Body"),
64
+ include_body: z
65
+ .boolean()
66
+ .optional()
67
+ .describe("Include full plain-text body when reading (for read)")
68
+ .default(true),
69
+ }, async (args) => {
70
+ try {
71
+ const state = getAgentState();
72
+ const client = new GmailEmailClient(state.config);
73
+ switch (args.action) {
74
+ case "list": {
75
+ const emails = await client.listEmails({
76
+ label: args.label ?? "INBOX",
77
+ unreadOnly: args.unread_only ?? false,
78
+ maxResults: args.max_results ?? 10,
79
+ });
80
+ if (emails.length === 0)
81
+ return ok("No emails found.");
82
+ const lines = emails.map((m) => {
83
+ const from = m.from ?? "(unknown from)";
84
+ const subject = m.subject ?? "(no subject)";
85
+ const date = m.date ?? "";
86
+ const unread = (m.labels ?? []).includes("UNREAD") ? "[UNREAD] " : "";
87
+ return `- [${m.id}] ${unread}${date} | ${from} | ${subject}`;
88
+ });
89
+ return ok(`Found ${emails.length} email(s):\n${lines.join("\n")}`);
90
+ }
91
+ case "search": {
92
+ if (!args.query)
93
+ return err("Error: query is required for search");
94
+ const emails = await client.listEmails({
95
+ label: args.label ?? "INBOX",
96
+ unreadOnly: args.unread_only ?? false,
97
+ query: args.query,
98
+ maxResults: args.max_results ?? 10,
99
+ });
100
+ if (emails.length === 0)
101
+ return ok("No matching emails found.");
102
+ const lines = emails.map((m) => {
103
+ const from = m.from ?? "(unknown from)";
104
+ const subject = m.subject ?? "(no subject)";
105
+ const date = m.date ?? "";
106
+ const unread = (m.labels ?? []).includes("UNREAD") ? "[UNREAD] " : "";
107
+ return `- [${m.id}] ${unread}${date} | ${from} | ${subject}`;
108
+ });
109
+ return ok(`Found ${emails.length} email(s):\n${lines.join("\n")}`);
110
+ }
111
+ case "read": {
112
+ if (!args.message_id)
113
+ return err("Error: message_id is required for read");
114
+ const msg = await client.getEmail(args.message_id);
115
+ const headerLines = [];
116
+ headerLines.push(`ID: ${msg.id}`);
117
+ if (msg.threadId)
118
+ headerLines.push(`Thread: ${msg.threadId}`);
119
+ if (msg.date)
120
+ headerLines.push(`Date: ${msg.date}`);
121
+ if (msg.from)
122
+ headerLines.push(`From: ${msg.from}`);
123
+ if (msg.to)
124
+ headerLines.push(`To: ${msg.to}`);
125
+ if (msg.subject)
126
+ headerLines.push(`Subject: ${msg.subject}`);
127
+ if (msg.labels && msg.labels.length)
128
+ headerLines.push(`Labels: ${msg.labels.join(", ")}`);
129
+ const parts = [];
130
+ parts.push(headerLines.join("\n"));
131
+ parts.push("");
132
+ parts.push(`Snippet: ${msg.snippet ?? ""}`);
133
+ if ((args.include_body ?? true) && msg.bodyText) {
134
+ parts.push("\n---\nBody:\n" + msg.bodyText);
135
+ }
136
+ return ok(parts.join("\n"));
137
+ }
138
+ case "send": {
139
+ if (!args.to || !args.subject || !args.body) {
140
+ return err("Error: to, subject, and body are required for send");
141
+ }
142
+ const res = await client.sendEmail({
143
+ to: args.to,
144
+ subject: args.subject,
145
+ body: args.body,
146
+ });
147
+ return ok(`Email sent. Message ID: ${res.id ?? "(unknown)"}`);
148
+ }
149
+ case "reply": {
150
+ if (!args.message_id || !args.body) {
151
+ return err("Error: message_id and body are required for reply");
152
+ }
153
+ const res = await client.reply({
154
+ messageId: args.message_id,
155
+ to: args.to,
156
+ body: args.body,
157
+ });
158
+ return ok(`Reply sent. Message ID: ${res.id ?? "(unknown)"}`);
159
+ }
160
+ case "mark_read": {
161
+ if (!args.message_id)
162
+ return err("Error: message_id is required for mark_read");
163
+ await client.markRead(args.message_id);
164
+ return ok(`Marked as read: ${args.message_id}`);
165
+ }
166
+ case "mark_unread": {
167
+ if (!args.message_id)
168
+ return err("Error: message_id is required for mark_unread");
169
+ await client.markUnread(args.message_id);
170
+ return ok(`Marked as unread: ${args.message_id}`);
171
+ }
172
+ case "archive": {
173
+ if (!args.message_id)
174
+ return err("Error: message_id is required for archive");
175
+ await client.archive(args.message_id);
176
+ return ok(`Archived: ${args.message_id}`);
177
+ }
178
+ default:
179
+ return err(`Unknown action: ${args.action}`);
180
+ }
181
+ }
182
+ catch (e) {
183
+ return err(`Email operation failed: ${e instanceof Error ? e.message : String(e)}`);
184
+ }
185
+ });
186
+ //# sourceMappingURL=email.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/tools/email.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAkBpE;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAqBxE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAmBpE;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAsBxE"}
@@ -6,6 +6,7 @@ import { screenshotTool } from "./screenshot.js";
6
6
  import { manageSkillsTool } from "./skill.js";
7
7
  import { upgradeTool } from "./upgrade.js";
8
8
  import { manageCalendarTool } from "./calendar.js";
9
+ import { manageEmailTool } from "./email.js";
9
10
  import { memoryTool } from "./memory.js";
10
11
  import { computerUseClickTool, computerUseScrollTool, computerUseDragTool, computerUseTypeTool, computerUseKeyTool, computerUseScreenshotTool, } from "./computer-use.js";
11
12
  /**
@@ -24,6 +25,7 @@ export function createToolServer() {
24
25
  manageSkillsTool,
25
26
  upgradeTool,
26
27
  manageCalendarTool,
28
+ manageEmailTool,
27
29
  memoryTool,
28
30
  computerUseClickTool,
29
31
  computerUseScrollTool,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAE3B;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,kBAAkB,CAAC;QACxB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE;YACL,QAAQ;YACR,cAAc;YACd,UAAU;YACV,cAAc;YACd,gBAAgB;YAChB,WAAW;YACX,kBAAkB;YAClB,UAAU;YACV,oBAAoB;YACpB,qBAAqB;YACrB,mBAAmB;YACnB,mBAAmB;YACnB,kBAAkB;YAClB,yBAAyB;SAC1B;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAE3B;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,kBAAkB,CAAC;QACxB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE;YACL,QAAQ;YACR,cAAc;YACd,UAAU;YACV,cAAc;YACd,gBAAgB;YAChB,WAAW;YACX,kBAAkB;YAClB,eAAe;YACf,UAAU;YACV,oBAAoB;YACpB,qBAAqB;YACrB,mBAAmB;YACnB,mBAAmB;YACnB,kBAAkB;YAClB,yBAAyB;SAC1B;KACF,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "visionclaw",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "A personal assistant agent that runs on your desktop, receives commands from messaging channels, and executes tasks autonomously.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",