@redplanethq/corebrain 2.5.9 → 2.5.11
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/dist/assets/AppIcon.icns +0 -0
- package/dist/assets/assets/AppIcon.icns +0 -0
- package/dist/commands/gateway/config.d.ts +1 -0
- package/dist/commands/gateway/config.d.ts.map +1 -1
- package/dist/commands/gateway/config.js +281 -149
- package/dist/commands/gateway/config.js.map +1 -1
- package/dist/commands/integrations/add.d.ts +8 -0
- package/dist/commands/integrations/add.d.ts.map +1 -0
- package/dist/commands/integrations/add.js +375 -0
- package/dist/commands/integrations/add.js.map +1 -0
- package/dist/commands/integrations/list.d.ts +8 -0
- package/dist/commands/integrations/list.d.ts.map +1 -0
- package/dist/commands/integrations/list.js +74 -0
- package/dist/commands/integrations/list.js.map +1 -0
- package/dist/commands/integrations/remove.d.ts +10 -0
- package/dist/commands/integrations/remove.d.ts.map +1 -0
- package/dist/commands/integrations/remove.js +107 -0
- package/dist/commands/integrations/remove.js.map +1 -0
- package/dist/commands/search.d.ts +8 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +239 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/server/gateway-client.d.ts.map +1 -1
- package/dist/server/gateway-client.js +19 -1
- package/dist/server/gateway-client.js.map +1 -1
- package/dist/server/tools/coding-tools.d.ts.map +1 -1
- package/dist/server/tools/coding-tools.js +10 -2
- package/dist/server/tools/coding-tools.js.map +1 -1
- package/dist/server/tools/healthkit-tools.d.ts +29 -0
- package/dist/server/tools/healthkit-tools.d.ts.map +1 -0
- package/dist/server/tools/healthkit-tools.js +192 -0
- package/dist/server/tools/healthkit-tools.js.map +1 -0
- package/dist/server/tools/imessage-tools.d.ts +34 -0
- package/dist/server/tools/imessage-tools.d.ts.map +1 -0
- package/dist/server/tools/imessage-tools.js +262 -0
- package/dist/server/tools/imessage-tools.js.map +1 -0
- package/dist/server/tools/utils-tools.d.ts +13 -0
- package/dist/server/tools/utils-tools.d.ts.map +1 -0
- package/dist/server/tools/utils-tools.js +59 -0
- package/dist/server/tools/utils-tools.js.map +1 -0
- package/dist/types/config.d.ts +3 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/utils/app-bundle.d.ts +25 -0
- package/dist/utils/app-bundle.d.ts.map +1 -0
- package/dist/utils/app-bundle.js +117 -0
- package/dist/utils/app-bundle.js.map +1 -0
- package/dist/utils/coding-sessions.d.ts +1 -1
- package/dist/utils/coding-sessions.d.ts.map +1 -1
- package/dist/utils/coding-sessions.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import zod from 'zod';
|
|
2
|
+
import { spawn } from 'node:child_process';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { existsSync } from 'node:fs';
|
|
5
|
+
// ============ Binary path ============
|
|
6
|
+
const BINARY_PATH = join('/Applications', 'CoreBrainGateway.app', 'Contents', 'MacOS', 'CoreBrainHealthKit');
|
|
7
|
+
export function isHealthKitBinaryInstalled() {
|
|
8
|
+
return existsSync(BINARY_PATH);
|
|
9
|
+
}
|
|
10
|
+
// ============ Zod Schemas ============
|
|
11
|
+
export const HealthKitWorkoutsSchema = zod.object({
|
|
12
|
+
limit: zod.number().optional().default(10).describe('Number of workouts to return (default: 10)'),
|
|
13
|
+
start: zod.string().optional().describe('Start date filter (ISO 8601 or YYYY-MM-DD)'),
|
|
14
|
+
end: zod.string().optional().describe('End date filter (ISO 8601 or YYYY-MM-DD)'),
|
|
15
|
+
});
|
|
16
|
+
export const HealthKitHeartRateSchema = zod.object({
|
|
17
|
+
limit: zod.number().optional().default(50).describe('Number of readings to return (default: 50)'),
|
|
18
|
+
start: zod.string().optional().describe('Start date filter (ISO 8601 or YYYY-MM-DD)'),
|
|
19
|
+
end: zod.string().optional().describe('End date filter (ISO 8601 or YYYY-MM-DD)'),
|
|
20
|
+
});
|
|
21
|
+
export const HealthKitStepsSchema = zod.object({
|
|
22
|
+
start: zod.string().optional().describe('Start date (ISO 8601 or YYYY-MM-DD, default: 7 days ago)'),
|
|
23
|
+
end: zod.string().optional().describe('End date (ISO 8601 or YYYY-MM-DD, default: now)'),
|
|
24
|
+
});
|
|
25
|
+
export const HealthKitSleepSchema = zod.object({
|
|
26
|
+
limit: zod.number().optional().default(50).describe('Number of sleep records to return (default: 50)'),
|
|
27
|
+
start: zod.string().optional().describe('Start date filter (ISO 8601 or YYYY-MM-DD)'),
|
|
28
|
+
end: zod.string().optional().describe('End date filter (ISO 8601 or YYYY-MM-DD)'),
|
|
29
|
+
});
|
|
30
|
+
// ============ JSON Schemas ============
|
|
31
|
+
const jsonSchemas = {
|
|
32
|
+
healthkit_workouts: {
|
|
33
|
+
type: 'object',
|
|
34
|
+
properties: {
|
|
35
|
+
limit: { type: 'number', description: 'Number of workouts to return (default: 10)' },
|
|
36
|
+
start: { type: 'string', description: 'Start date filter (ISO 8601 or YYYY-MM-DD)' },
|
|
37
|
+
end: { type: 'string', description: 'End date filter (ISO 8601 or YYYY-MM-DD)' },
|
|
38
|
+
},
|
|
39
|
+
required: [],
|
|
40
|
+
},
|
|
41
|
+
healthkit_heart_rate: {
|
|
42
|
+
type: 'object',
|
|
43
|
+
properties: {
|
|
44
|
+
limit: { type: 'number', description: 'Number of readings to return (default: 50)' },
|
|
45
|
+
start: { type: 'string', description: 'Start date filter (ISO 8601 or YYYY-MM-DD)' },
|
|
46
|
+
end: { type: 'string', description: 'End date filter (ISO 8601 or YYYY-MM-DD)' },
|
|
47
|
+
},
|
|
48
|
+
required: [],
|
|
49
|
+
},
|
|
50
|
+
healthkit_steps: {
|
|
51
|
+
type: 'object',
|
|
52
|
+
properties: {
|
|
53
|
+
start: { type: 'string', description: 'Start date (default: 7 days ago)' },
|
|
54
|
+
end: { type: 'string', description: 'End date (default: now)' },
|
|
55
|
+
},
|
|
56
|
+
required: [],
|
|
57
|
+
},
|
|
58
|
+
healthkit_sleep: {
|
|
59
|
+
type: 'object',
|
|
60
|
+
properties: {
|
|
61
|
+
limit: { type: 'number', description: 'Number of sleep records to return (default: 50)' },
|
|
62
|
+
start: { type: 'string', description: 'Start date filter (ISO 8601 or YYYY-MM-DD)' },
|
|
63
|
+
end: { type: 'string', description: 'End date filter (ISO 8601 or YYYY-MM-DD)' },
|
|
64
|
+
},
|
|
65
|
+
required: [],
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
// ============ Tool Definitions ============
|
|
69
|
+
export const healthkitTools = [
|
|
70
|
+
{
|
|
71
|
+
name: 'healthkit_workouts',
|
|
72
|
+
description: 'Get recent workouts/fitness sessions from HealthKit. Returns type, duration, calories, distance.',
|
|
73
|
+
inputSchema: jsonSchemas.healthkit_workouts,
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: 'healthkit_heart_rate',
|
|
77
|
+
description: 'Get heart rate readings from HealthKit.',
|
|
78
|
+
inputSchema: jsonSchemas.healthkit_heart_rate,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: 'healthkit_steps',
|
|
82
|
+
description: 'Get step count for a date range from HealthKit.',
|
|
83
|
+
inputSchema: jsonSchemas.healthkit_steps,
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: 'healthkit_sleep',
|
|
87
|
+
description: 'Get sleep analysis records from HealthKit (inBed, core, deep, rem, awake).',
|
|
88
|
+
inputSchema: jsonSchemas.healthkit_sleep,
|
|
89
|
+
},
|
|
90
|
+
];
|
|
91
|
+
// ============ Binary runner ============
|
|
92
|
+
function runBinary(command, args) {
|
|
93
|
+
return new Promise((resolve, reject) => {
|
|
94
|
+
if (!isHealthKitBinaryInstalled()) {
|
|
95
|
+
reject(new Error('CoreBrainHealthKit binary not found. Run: cd packages/cli/src/swift && ./build-healthkit.sh YOUR_TEAM_ID'));
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const proc = spawn(BINARY_PATH, [command, ...args], {
|
|
99
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
100
|
+
});
|
|
101
|
+
let stdout = '';
|
|
102
|
+
let stderr = '';
|
|
103
|
+
proc.stdout.on('data', (d) => { stdout += d.toString(); });
|
|
104
|
+
proc.stderr.on('data', (d) => { stderr += d.toString(); });
|
|
105
|
+
proc.on('close', (code, signal) => {
|
|
106
|
+
if (stdout.trim()) {
|
|
107
|
+
try {
|
|
108
|
+
const parsed = JSON.parse(stdout.trim());
|
|
109
|
+
if (parsed.error) {
|
|
110
|
+
reject(new Error(parsed.error));
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
resolve(parsed);
|
|
114
|
+
}
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
reject(new Error(`Failed to parse HealthKit output: ${stdout}`));
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (code !== 0 || signal) {
|
|
123
|
+
reject(new Error(`HealthKit binary exited with code ${code} signal ${signal}: ${stderr}`));
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
resolve({});
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
proc.on('error', (err) => {
|
|
130
|
+
reject(new Error(`Failed to spawn HealthKit binary: ${err.message}`));
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
// ============ Tool Execution ============
|
|
135
|
+
export async function executeHealthKitTool(toolName, params) {
|
|
136
|
+
try {
|
|
137
|
+
switch (toolName) {
|
|
138
|
+
case 'healthkit_workouts': {
|
|
139
|
+
const p = HealthKitWorkoutsSchema.parse(params);
|
|
140
|
+
const args = ['--limit', String(p.limit)];
|
|
141
|
+
if (p.start)
|
|
142
|
+
args.push('--start', p.start);
|
|
143
|
+
if (p.end)
|
|
144
|
+
args.push('--end', p.end);
|
|
145
|
+
const result = await runBinary('workouts', args);
|
|
146
|
+
return { success: true, result };
|
|
147
|
+
}
|
|
148
|
+
case 'healthkit_heart_rate': {
|
|
149
|
+
const p = HealthKitHeartRateSchema.parse(params);
|
|
150
|
+
const args = ['--limit', String(p.limit)];
|
|
151
|
+
if (p.start)
|
|
152
|
+
args.push('--start', p.start);
|
|
153
|
+
if (p.end)
|
|
154
|
+
args.push('--end', p.end);
|
|
155
|
+
const result = await runBinary('heart_rate', args);
|
|
156
|
+
return { success: true, result };
|
|
157
|
+
}
|
|
158
|
+
case 'healthkit_steps': {
|
|
159
|
+
const p = HealthKitStepsSchema.parse(params);
|
|
160
|
+
const args = [];
|
|
161
|
+
if (p.start)
|
|
162
|
+
args.push('--start', p.start);
|
|
163
|
+
if (p.end)
|
|
164
|
+
args.push('--end', p.end);
|
|
165
|
+
const result = await runBinary('steps', args);
|
|
166
|
+
return { success: true, result };
|
|
167
|
+
}
|
|
168
|
+
case 'healthkit_sleep': {
|
|
169
|
+
const p = HealthKitSleepSchema.parse(params);
|
|
170
|
+
const args = ['--limit', String(p.limit)];
|
|
171
|
+
if (p.start)
|
|
172
|
+
args.push('--start', p.start);
|
|
173
|
+
if (p.end)
|
|
174
|
+
args.push('--end', p.end);
|
|
175
|
+
const result = await runBinary('sleep', args);
|
|
176
|
+
return { success: true, result };
|
|
177
|
+
}
|
|
178
|
+
default:
|
|
179
|
+
return { success: false, error: `Unknown tool: ${toolName}` };
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
catch (err) {
|
|
183
|
+
if (err instanceof zod.ZodError) {
|
|
184
|
+
return { success: false, error: `Invalid parameters: ${err.message}` };
|
|
185
|
+
}
|
|
186
|
+
return {
|
|
187
|
+
success: false,
|
|
188
|
+
error: err instanceof Error ? err.message : 'Unknown error',
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=healthkit-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"healthkit-tools.js","sourceRoot":"","sources":["../../../src/server/tools/healthkit-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import zod from 'zod';
|
|
2
|
+
import type { GatewayTool } from '../../server/tools/browser-tools.js';
|
|
3
|
+
export declare const IMessageGetThreadsSchema: zod.ZodObject<{
|
|
4
|
+
limit: zod.ZodDefault<zod.ZodOptional<zod.ZodNumber>>;
|
|
5
|
+
sender: zod.ZodOptional<zod.ZodString>;
|
|
6
|
+
after: zod.ZodOptional<zod.ZodString>;
|
|
7
|
+
before: zod.ZodOptional<zod.ZodString>;
|
|
8
|
+
}, zod.core.$strip>;
|
|
9
|
+
export declare const IMessageGetMessagesSchema: zod.ZodObject<{
|
|
10
|
+
threadId: zod.ZodString;
|
|
11
|
+
limit: zod.ZodDefault<zod.ZodOptional<zod.ZodNumber>>;
|
|
12
|
+
after: zod.ZodOptional<zod.ZodString>;
|
|
13
|
+
before: zod.ZodOptional<zod.ZodString>;
|
|
14
|
+
fromMe: zod.ZodOptional<zod.ZodBoolean>;
|
|
15
|
+
}, zod.core.$strip>;
|
|
16
|
+
export declare const IMessageSearchSchema: zod.ZodObject<{
|
|
17
|
+
query: zod.ZodString;
|
|
18
|
+
limit: zod.ZodDefault<zod.ZodOptional<zod.ZodNumber>>;
|
|
19
|
+
after: zod.ZodOptional<zod.ZodString>;
|
|
20
|
+
before: zod.ZodOptional<zod.ZodString>;
|
|
21
|
+
sender: zod.ZodOptional<zod.ZodString>;
|
|
22
|
+
fromMe: zod.ZodOptional<zod.ZodBoolean>;
|
|
23
|
+
}, zod.core.$strip>;
|
|
24
|
+
export declare const IMessageSendSchema: zod.ZodObject<{
|
|
25
|
+
to: zod.ZodString;
|
|
26
|
+
message: zod.ZodString;
|
|
27
|
+
}, zod.core.$strip>;
|
|
28
|
+
export declare const imessageTools: GatewayTool[];
|
|
29
|
+
export declare function executeIMessageTool(toolName: string, params: Record<string, unknown>): Promise<{
|
|
30
|
+
success: boolean;
|
|
31
|
+
result?: unknown;
|
|
32
|
+
error?: string;
|
|
33
|
+
}>;
|
|
34
|
+
//# sourceMappingURL=imessage-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imessage-tools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/imessage-tools.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAItB,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAC;AAQ9D,eAAO,MAAM,wBAAwB;;;;;mBAKnC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;mBAMpC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;mBAO/B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;mBAG7B,CAAC;AAkDH,eAAO,MAAM,aAAa,EAAE,WAAW,EAqBtC,CAAC;AA0CF,wBAAsB,mBAAmB,CACxC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC,CA+I/D"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import zod from 'zod';
|
|
2
|
+
import { execSync } from 'node:child_process';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
// ============ Constants ============
|
|
6
|
+
const DB_PATH = join(homedir(), 'Library/Messages/chat.db');
|
|
7
|
+
// ============ Zod Schemas ============
|
|
8
|
+
export const IMessageGetThreadsSchema = zod.object({
|
|
9
|
+
limit: zod.number().optional().default(10).describe('Number of threads to return (default: 10)'),
|
|
10
|
+
sender: zod.string().optional().describe('Filter by phone number or sender ID (partial match)'),
|
|
11
|
+
after: zod.string().optional().describe('Filter threads active after this date (ISO 8601 or YYYY-MM-DD)'),
|
|
12
|
+
before: zod.string().optional().describe('Filter threads active before this date (ISO 8601 or YYYY-MM-DD)'),
|
|
13
|
+
});
|
|
14
|
+
export const IMessageGetMessagesSchema = zod.object({
|
|
15
|
+
threadId: zod.string().describe('Chat identifier (phone number, email, or sender ID)'),
|
|
16
|
+
limit: zod.number().optional().default(20).describe('Number of messages to return (default: 20)'),
|
|
17
|
+
after: zod.string().optional().describe('Filter messages after this date (ISO 8601 or YYYY-MM-DD)'),
|
|
18
|
+
before: zod.string().optional().describe('Filter messages before this date (ISO 8601 or YYYY-MM-DD)'),
|
|
19
|
+
fromMe: zod.boolean().optional().describe('true = only sent, false = only received'),
|
|
20
|
+
});
|
|
21
|
+
export const IMessageSearchSchema = zod.object({
|
|
22
|
+
query: zod.string().describe('Text to search for in messages'),
|
|
23
|
+
limit: zod.number().optional().default(20).describe('Number of results to return (default: 20)'),
|
|
24
|
+
after: zod.string().optional().describe('Search messages after this date — recommended to limit scope (ISO 8601 or YYYY-MM-DD)'),
|
|
25
|
+
before: zod.string().optional().describe('Search messages before this date — recommended to limit scope (ISO 8601 or YYYY-MM-DD)'),
|
|
26
|
+
sender: zod.string().optional().describe('Limit search to a specific sender (partial match)'),
|
|
27
|
+
fromMe: zod.boolean().optional().describe('true = only sent messages, false = only received'),
|
|
28
|
+
});
|
|
29
|
+
export const IMessageSendSchema = zod.object({
|
|
30
|
+
to: zod.string().describe('Phone number or email to send to'),
|
|
31
|
+
message: zod.string().describe('Message text to send'),
|
|
32
|
+
});
|
|
33
|
+
// ============ JSON Schemas ============
|
|
34
|
+
const jsonSchemas = {
|
|
35
|
+
imessage_get_threads: {
|
|
36
|
+
type: 'object',
|
|
37
|
+
properties: {
|
|
38
|
+
limit: { type: 'number', description: 'Number of threads to return (default: 10)' },
|
|
39
|
+
sender: { type: 'string', description: 'Filter by phone number or sender ID (partial match)' },
|
|
40
|
+
after: { type: 'string', description: 'Filter threads active after this date (ISO 8601 or YYYY-MM-DD)' },
|
|
41
|
+
before: { type: 'string', description: 'Filter threads active before this date (ISO 8601 or YYYY-MM-DD)' },
|
|
42
|
+
},
|
|
43
|
+
required: [],
|
|
44
|
+
},
|
|
45
|
+
imessage_get_messages: {
|
|
46
|
+
type: 'object',
|
|
47
|
+
properties: {
|
|
48
|
+
threadId: { type: 'string', description: 'Chat identifier (phone number, email, or sender ID)' },
|
|
49
|
+
limit: { type: 'number', description: 'Number of messages to return (default: 20)' },
|
|
50
|
+
after: { type: 'string', description: 'Filter messages after this date (ISO 8601 or YYYY-MM-DD)' },
|
|
51
|
+
before: { type: 'string', description: 'Filter messages before this date (ISO 8601 or YYYY-MM-DD)' },
|
|
52
|
+
fromMe: { type: 'boolean', description: 'true = only sent, false = only received' },
|
|
53
|
+
},
|
|
54
|
+
required: ['threadId'],
|
|
55
|
+
},
|
|
56
|
+
imessage_search: {
|
|
57
|
+
type: 'object',
|
|
58
|
+
properties: {
|
|
59
|
+
query: { type: 'string', description: 'Text to search for in messages' },
|
|
60
|
+
limit: { type: 'number', description: 'Number of results to return (default: 20)' },
|
|
61
|
+
after: { type: 'string', description: 'Search messages after this date — recommended to limit scope (ISO 8601 or YYYY-MM-DD)' },
|
|
62
|
+
before: { type: 'string', description: 'Search messages before this date — recommended to limit scope (ISO 8601 or YYYY-MM-DD)' },
|
|
63
|
+
sender: { type: 'string', description: 'Limit search to a specific sender (partial match)' },
|
|
64
|
+
fromMe: { type: 'boolean', description: 'true = only sent messages, false = only received' },
|
|
65
|
+
},
|
|
66
|
+
required: ['query'],
|
|
67
|
+
},
|
|
68
|
+
imessage_send: {
|
|
69
|
+
type: 'object',
|
|
70
|
+
properties: {
|
|
71
|
+
to: { type: 'string', description: 'Phone number or email to send to' },
|
|
72
|
+
message: { type: 'string', description: 'Message text to send' },
|
|
73
|
+
},
|
|
74
|
+
required: ['to', 'message'],
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
// ============ Tool Definitions ============
|
|
78
|
+
export const imessageTools = [
|
|
79
|
+
{
|
|
80
|
+
name: 'imessage_get_threads',
|
|
81
|
+
description: 'Get recent iMessage/SMS conversation threads. Can filter by sender and date range.',
|
|
82
|
+
inputSchema: jsonSchemas.imessage_get_threads,
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: 'imessage_get_messages',
|
|
86
|
+
description: 'Get messages from a specific thread by sender ID, phone number, or email. Can filter by date range and sent/received.',
|
|
87
|
+
inputSchema: jsonSchemas.imessage_get_messages,
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: 'imessage_search',
|
|
91
|
+
description: 'Search iMessage/SMS history by text. Use after/before to limit scope. Works for SMS too.',
|
|
92
|
+
inputSchema: jsonSchemas.imessage_search,
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
name: 'imessage_send',
|
|
96
|
+
description: 'Send an iMessage to a phone number or email address.',
|
|
97
|
+
inputSchema: jsonSchemas.imessage_send,
|
|
98
|
+
},
|
|
99
|
+
];
|
|
100
|
+
// ============ Query Runner ============
|
|
101
|
+
// Uses osascript "do shell script" to run sqlite3 under the user's login session.
|
|
102
|
+
// This only requires Automation permission (one-time popup) — no Full Disk Access needed.
|
|
103
|
+
function runSQL(sql) {
|
|
104
|
+
// Base64-encode SQL to avoid all shell quoting/escaping issues.
|
|
105
|
+
// The gateway runs via CoreBrainGateway.app which has Full Disk Access —
|
|
106
|
+
// so we pipe directly to sqlite3 without any osascript wrapper.
|
|
107
|
+
const b64 = Buffer.from(sql).toString('base64');
|
|
108
|
+
let output;
|
|
109
|
+
try {
|
|
110
|
+
output = execSync(`echo "${b64}" | base64 -d | sqlite3 -json "${DB_PATH}"`, { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 }).trim();
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
114
|
+
if (msg.includes('authorization denied') || msg.includes('unable to open')) {
|
|
115
|
+
throw new Error('Full Disk Access required for iMessage tools. Run: corebrain gateway config and re-enable iMessage to complete setup.');
|
|
116
|
+
}
|
|
117
|
+
throw new Error(`iMessage query failed: ${msg}`);
|
|
118
|
+
}
|
|
119
|
+
return output ? JSON.parse(output) : [];
|
|
120
|
+
}
|
|
121
|
+
function escapeSQL(str) {
|
|
122
|
+
return str.replace(/'/g, "''");
|
|
123
|
+
}
|
|
124
|
+
// Convert ISO/YYYY-MM-DD date to Apple CoreData nanosecond timestamp
|
|
125
|
+
function toAppleTs(dateStr) {
|
|
126
|
+
const secs = Math.floor(new Date(dateStr).getTime() / 1000);
|
|
127
|
+
return (secs - 978307200) * 1_000_000_000;
|
|
128
|
+
}
|
|
129
|
+
// ============ Tool Execution ============
|
|
130
|
+
export async function executeIMessageTool(toolName, params) {
|
|
131
|
+
try {
|
|
132
|
+
switch (toolName) {
|
|
133
|
+
case 'imessage_get_threads': {
|
|
134
|
+
const p = IMessageGetThreadsSchema.parse(params);
|
|
135
|
+
const conditions = [];
|
|
136
|
+
if (p.sender) {
|
|
137
|
+
conditions.push(`c.chat_identifier LIKE '%${escapeSQL(p.sender)}%'`);
|
|
138
|
+
}
|
|
139
|
+
if (p.after) {
|
|
140
|
+
conditions.push(`m.date >= ${toAppleTs(p.after)}`);
|
|
141
|
+
}
|
|
142
|
+
if (p.before) {
|
|
143
|
+
conditions.push(`m.date <= ${toAppleTs(p.before)}`);
|
|
144
|
+
}
|
|
145
|
+
const where = conditions.length ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
146
|
+
const sql = `
|
|
147
|
+
SELECT
|
|
148
|
+
c.chat_identifier,
|
|
149
|
+
c.display_name,
|
|
150
|
+
datetime(MAX(m.date)/1000000000 + 978307200, 'unixepoch', 'localtime') AS last_message_date,
|
|
151
|
+
COUNT(m.ROWID) AS message_count
|
|
152
|
+
FROM chat c
|
|
153
|
+
LEFT JOIN chat_message_join cmj ON c.ROWID = cmj.chat_id
|
|
154
|
+
LEFT JOIN message m ON cmj.message_id = m.ROWID
|
|
155
|
+
${where}
|
|
156
|
+
GROUP BY c.ROWID
|
|
157
|
+
ORDER BY MAX(m.date) DESC
|
|
158
|
+
LIMIT ${p.limit}
|
|
159
|
+
`;
|
|
160
|
+
const threads = runSQL(sql);
|
|
161
|
+
return { success: true, result: { threads, count: threads.length } };
|
|
162
|
+
}
|
|
163
|
+
case 'imessage_get_messages': {
|
|
164
|
+
const p = IMessageGetMessagesSchema.parse(params);
|
|
165
|
+
const conditions = [
|
|
166
|
+
`c.chat_identifier LIKE '%${escapeSQL(p.threadId)}%'`,
|
|
167
|
+
];
|
|
168
|
+
if (p.after)
|
|
169
|
+
conditions.push(`m.date >= ${toAppleTs(p.after)}`);
|
|
170
|
+
if (p.before)
|
|
171
|
+
conditions.push(`m.date <= ${toAppleTs(p.before)}`);
|
|
172
|
+
if (p.fromMe !== undefined)
|
|
173
|
+
conditions.push(`m.is_from_me = ${p.fromMe ? 1 : 0}`);
|
|
174
|
+
const sql = `
|
|
175
|
+
SELECT
|
|
176
|
+
COALESCE(h.id, 'me') AS sender,
|
|
177
|
+
m.text,
|
|
178
|
+
m.is_from_me,
|
|
179
|
+
datetime(m.date/1000000000 + 978307200, 'unixepoch', 'localtime') AS date,
|
|
180
|
+
m.is_read
|
|
181
|
+
FROM message m
|
|
182
|
+
JOIN chat_message_join cmj ON m.ROWID = cmj.message_id
|
|
183
|
+
JOIN chat c ON cmj.chat_id = c.ROWID
|
|
184
|
+
LEFT JOIN handle h ON m.handle_id = h.ROWID
|
|
185
|
+
WHERE ${conditions.join(' AND ')}
|
|
186
|
+
ORDER BY m.date DESC
|
|
187
|
+
LIMIT ${p.limit}
|
|
188
|
+
`;
|
|
189
|
+
const messages = runSQL(sql);
|
|
190
|
+
return {
|
|
191
|
+
success: true,
|
|
192
|
+
result: {
|
|
193
|
+
threadId: p.threadId,
|
|
194
|
+
messages: messages.reverse(),
|
|
195
|
+
count: messages.length,
|
|
196
|
+
},
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
case 'imessage_search': {
|
|
200
|
+
const p = IMessageSearchSchema.parse(params);
|
|
201
|
+
const conditions = [
|
|
202
|
+
`m.text LIKE '%${escapeSQL(p.query)}%'`,
|
|
203
|
+
];
|
|
204
|
+
if (p.sender) {
|
|
205
|
+
conditions.push(`(c.chat_identifier LIKE '%${escapeSQL(p.sender)}%' OR h.id LIKE '%${escapeSQL(p.sender)}%')`);
|
|
206
|
+
}
|
|
207
|
+
if (p.after)
|
|
208
|
+
conditions.push(`m.date >= ${toAppleTs(p.after)}`);
|
|
209
|
+
if (p.before)
|
|
210
|
+
conditions.push(`m.date <= ${toAppleTs(p.before)}`);
|
|
211
|
+
if (p.fromMe !== undefined)
|
|
212
|
+
conditions.push(`m.is_from_me = ${p.fromMe ? 1 : 0}`);
|
|
213
|
+
const sql = `
|
|
214
|
+
SELECT
|
|
215
|
+
c.chat_identifier,
|
|
216
|
+
COALESCE(h.id, 'me') AS sender,
|
|
217
|
+
m.text,
|
|
218
|
+
m.is_from_me,
|
|
219
|
+
datetime(m.date/1000000000 + 978307200, 'unixepoch', 'localtime') AS date
|
|
220
|
+
FROM message m
|
|
221
|
+
JOIN chat_message_join cmj ON m.ROWID = cmj.message_id
|
|
222
|
+
JOIN chat c ON cmj.chat_id = c.ROWID
|
|
223
|
+
LEFT JOIN handle h ON m.handle_id = h.ROWID
|
|
224
|
+
WHERE ${conditions.join(' AND ')}
|
|
225
|
+
ORDER BY m.date DESC
|
|
226
|
+
LIMIT ${p.limit}
|
|
227
|
+
`;
|
|
228
|
+
const messages = runSQL(sql);
|
|
229
|
+
return { success: true, result: { query: p.query, messages, count: messages.length } };
|
|
230
|
+
}
|
|
231
|
+
case 'imessage_send': {
|
|
232
|
+
const p = IMessageSendSchema.parse(params);
|
|
233
|
+
const to = p.to.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
234
|
+
const msg = p.message.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
235
|
+
const script = [
|
|
236
|
+
'tell application "Messages"',
|
|
237
|
+
'set targetService to 1st account whose service type = iMessage',
|
|
238
|
+
`set targetBuddy to participant "${to}" of targetService`,
|
|
239
|
+
`send "${msg}" to targetBuddy`,
|
|
240
|
+
'end tell',
|
|
241
|
+
].join('\n');
|
|
242
|
+
execSync(`osascript -e '${script.replace(/'/g, "'\\''")}'`, { encoding: 'utf-8' });
|
|
243
|
+
return {
|
|
244
|
+
success: true,
|
|
245
|
+
result: { message: `Message sent to ${p.to}`, to: p.to, text: p.message },
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
default:
|
|
249
|
+
return { success: false, error: `Unknown tool: ${toolName}` };
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
catch (err) {
|
|
253
|
+
if (err instanceof zod.ZodError) {
|
|
254
|
+
return { success: false, error: `Invalid parameters: ${err.message}` };
|
|
255
|
+
}
|
|
256
|
+
return {
|
|
257
|
+
success: false,
|
|
258
|
+
error: err instanceof Error ? err.message : 'Unknown error',
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=imessage-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imessage-tools.js","sourceRoot":"","sources":["../../../src/server/tools/imessage-tools.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AAChC,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAG/B,sCAAsC;AAEtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,0BAA0B,CAAC,CAAC;AAE5D,wCAAwC;AAExC,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC,MAAM,CAAC;IAClD,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IAChG,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;IAC/F,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC;IACzG,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;CAC3G,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC,MAAM,CAAC;IACnD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;IACtF,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IACjG,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;IACnG,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;IACrG,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CACpF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC,MAAM,CAAC;IAC9C,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC9D,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IAChG,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uFAAuF,CAAC;IAChI,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wFAAwF,CAAC;IAClI,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IAC7F,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;CAC7F,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC,MAAM,CAAC;IAC5C,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IAC7D,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;CACtD,CAAC,CAAC;AAEH,yCAAyC;AAEzC,MAAM,WAAW,GAA4C;IAC5D,oBAAoB,EAAE;QACrB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACX,KAAK,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAC;YACjF,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qDAAqD,EAAC;YAC5F,KAAK,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gEAAgE,EAAC;YACtG,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iEAAiE,EAAC;SACxG;QACD,QAAQ,EAAE,EAAE;KACZ;IACD,qBAAqB,EAAE;QACtB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACX,QAAQ,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qDAAqD,EAAC;YAC9F,KAAK,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAC;YAClF,KAAK,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0DAA0D,EAAC;YAChG,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2DAA2D,EAAC;YAClG,MAAM,EAAE,EAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,yCAAyC,EAAC;SACjF;QACD,QAAQ,EAAE,CAAC,UAAU,CAAC;KACtB;IACD,eAAe,EAAE;QAChB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACX,KAAK,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAC;YACtE,KAAK,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAC;YACjF,KAAK,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uFAAuF,EAAC;YAC7H,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wFAAwF,EAAC;YAC/H,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mDAAmD,EAAC;YAC1F,MAAM,EAAE,EAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,kDAAkD,EAAC;SAC1F;QACD,QAAQ,EAAE,CAAC,OAAO,CAAC;KACnB;IACD,aAAa,EAAE;QACd,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACX,EAAE,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAC;YACrE,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAC;SAC9D;QACD,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC;KAC3B;CACD,CAAC;AAEF,6CAA6C;AAE7C,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC3C;QACC,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,oFAAoF;QACjG,WAAW,EAAE,WAAW,CAAC,oBAAqB;KAC9C;IACD;QACC,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,uHAAuH;QACpI,WAAW,EAAE,WAAW,CAAC,qBAAsB;KAC/C;IACD;QACC,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,0FAA0F;QACvG,WAAW,EAAE,WAAW,CAAC,eAAgB;KACzC;IACD;QACC,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,sDAAsD;QACnE,WAAW,EAAE,WAAW,CAAC,aAAc;KACvC;CACD,CAAC;AAEF,yCAAyC;AACzC,kFAAkF;AAClF,0FAA0F;AAE1F,SAAS,MAAM,CAAC,GAAW;IAC1B,gEAAgE;IAChE,yEAAyE;IACzE,gEAAgE;IAChE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACJ,MAAM,GAAG,QAAQ,CAChB,SAAS,GAAG,kCAAkC,OAAO,GAAG,EACxD,EAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAC,CAChD,CAAC,IAAI,EAAE,CAAC;IACV,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC5E,MAAM,IAAI,KAAK,CACd,uHAAuH,CACvH,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,MAAM,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAe,CAAC,CAAC,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,qEAAqE;AACrE,SAAS,SAAS,CAAC,OAAe;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,aAAa,CAAC;AAC3C,CAAC;AAED,2CAA2C;AAE3C,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,QAAgB,EAChB,MAA+B;IAE/B,IAAI,CAAC;QACJ,QAAQ,QAAQ,EAAE,CAAC;YAClB,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC7B,MAAM,CAAC,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjD,MAAM,UAAU,GAAa,EAAE,CAAC;gBAEhC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;oBACd,UAAU,CAAC,IAAI,CAAC,4BAA4B,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACtE,CAAC;gBACD,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;oBACb,UAAU,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACpD,CAAC;gBACD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;oBACd,UAAU,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACrD,CAAC;gBAED,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAE3E,MAAM,GAAG,GAAG;;;;;;;;;OAST,KAAK;;;aAGC,CAAC,CAAC,KAAK;KACf,CAAC;gBAEF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC5B,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAC,EAAC,CAAC;YAClE,CAAC;YAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;gBAC9B,MAAM,CAAC,GAAG,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAClD,MAAM,UAAU,GAAa;oBAC5B,4BAA4B,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI;iBACrD,CAAC;gBAEF,IAAI,CAAC,CAAC,KAAK;oBAAE,UAAU,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAChE,IAAI,CAAC,CAAC,MAAM;oBAAE,UAAU,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAClE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;oBAAE,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAElF,MAAM,GAAG,GAAG;;;;;;;;;;;aAWH,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;;aAExB,CAAC,CAAC,KAAK;KACf,CAAC;gBAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7B,OAAO;oBACN,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE;wBACP,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE;wBAC5B,KAAK,EAAE,QAAQ,CAAC,MAAM;qBACtB;iBACD,CAAC;YACH,CAAC;YAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACxB,MAAM,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC7C,MAAM,UAAU,GAAa;oBAC5B,iBAAiB,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;iBACvC,CAAC;gBAEF,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;oBACd,UAAU,CAAC,IAAI,CACd,6BAA6B,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,qBAAqB,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAC7F,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,CAAC,KAAK;oBAAE,UAAU,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAChE,IAAI,CAAC,CAAC,MAAM;oBAAE,UAAU,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAClE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;oBAAE,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAElF,MAAM,GAAG,GAAG;;;;;;;;;;;aAWH,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;;aAExB,CAAC,CAAC,KAAK;KACf,CAAC;gBAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7B,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAC,EAAC,CAAC;YACpF,CAAC;YAED,KAAK,eAAe,CAAC,CAAC,CAAC;gBACtB,MAAM,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC3C,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC5D,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAElE,MAAM,MAAM,GAAG;oBACd,6BAA6B;oBAC7B,gEAAgE;oBAChE,mCAAmC,EAAE,oBAAoB;oBACzD,SAAS,GAAG,kBAAkB;oBAC9B,UAAU;iBACV,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEb,QAAQ,CAAC,iBAAiB,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAC,CAAC,CAAC;gBAEjF,OAAO;oBACN,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE,EAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAC;iBACvE,CAAC;YACH,CAAC;YAED;gBACC,OAAO,EAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,QAAQ,EAAE,EAAC,CAAC;QAC9D,CAAC;IACF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IAAI,GAAG,YAAY,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjC,OAAO,EAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,GAAG,CAAC,OAAO,EAAE,EAAC,CAAC;QACtE,CAAC;QACD,OAAO;YACN,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAC3D,CAAC;IACH,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import zod from 'zod';
|
|
2
|
+
import type { GatewayTool } from './browser-tools.js';
|
|
3
|
+
export declare const SleepSchema: zod.ZodObject<{
|
|
4
|
+
seconds: zod.ZodNumber;
|
|
5
|
+
reason: zod.ZodOptional<zod.ZodString>;
|
|
6
|
+
}, zod.core.$strip>;
|
|
7
|
+
export declare const utilsTools: GatewayTool[];
|
|
8
|
+
export declare function executeUtilsTool(toolName: string, params: Record<string, unknown>): Promise<{
|
|
9
|
+
success: boolean;
|
|
10
|
+
result?: unknown;
|
|
11
|
+
error?: string;
|
|
12
|
+
}>;
|
|
13
|
+
//# sourceMappingURL=utils-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-tools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/utils-tools.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAIjD,eAAO,MAAM,WAAW;;;mBAGtB,CAAC;AAIH,eAAO,MAAM,UAAU,EAAE,WAAW,EAoBnC,CAAC;AAiBF,wBAAsB,gBAAgB,CACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC,CAkB/D"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import zod from 'zod';
|
|
2
|
+
// ============ Zod Schemas ============
|
|
3
|
+
export const SleepSchema = zod.object({
|
|
4
|
+
seconds: zod.number().min(1).max(300),
|
|
5
|
+
reason: zod.string().optional(),
|
|
6
|
+
});
|
|
7
|
+
// ============ Tool Definitions ============
|
|
8
|
+
export const utilsTools = [
|
|
9
|
+
{
|
|
10
|
+
name: 'sleep',
|
|
11
|
+
description: 'Pause execution for the given number of seconds (1–300). Use this to wait between polling operations, e.g. after starting a coding session before reading its output.',
|
|
12
|
+
inputSchema: {
|
|
13
|
+
type: 'object',
|
|
14
|
+
properties: {
|
|
15
|
+
seconds: {
|
|
16
|
+
type: 'number',
|
|
17
|
+
description: 'Number of seconds to sleep (1–300)',
|
|
18
|
+
},
|
|
19
|
+
reason: {
|
|
20
|
+
type: 'string',
|
|
21
|
+
description: 'Optional reason for sleeping (for logging)',
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
required: ['seconds'],
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
// ============ Tool Handlers ============
|
|
29
|
+
async function handleSleep(params) {
|
|
30
|
+
await new Promise(resolve => setTimeout(resolve, params.seconds * 1000));
|
|
31
|
+
return {
|
|
32
|
+
success: true,
|
|
33
|
+
result: {
|
|
34
|
+
slept: params.seconds,
|
|
35
|
+
...(params.reason ? { reason: params.reason } : {}),
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// ============ Tool Execution ============
|
|
40
|
+
export async function executeUtilsTool(toolName, params) {
|
|
41
|
+
try {
|
|
42
|
+
switch (toolName) {
|
|
43
|
+
case 'sleep':
|
|
44
|
+
return await handleSleep(SleepSchema.parse(params));
|
|
45
|
+
default:
|
|
46
|
+
return { success: false, error: `Unknown tool: ${toolName}` };
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
if (err instanceof zod.ZodError) {
|
|
51
|
+
return { success: false, error: `Invalid parameters: ${err.message}` };
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
success: false,
|
|
55
|
+
error: err instanceof Error ? err.message : 'Unknown error',
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=utils-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-tools.js","sourceRoot":"","sources":["../../../src/server/tools/utils-tools.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,wCAAwC;AAExC,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC;IACrC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACrC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAEH,6CAA6C;AAE7C,MAAM,CAAC,MAAM,UAAU,GAAkB;IACxC;QACC,IAAI,EAAE,OAAO;QACb,WAAW,EACV,uKAAuK;QACxK,WAAW,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oCAAoC;iBACjD;gBACD,MAAM,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4CAA4C;iBACzD;aACD;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACrB;KACD;CACD,CAAC;AAEF,0CAA0C;AAE1C,KAAK,UAAU,WAAW,CAAC,MAAqC;IAC/D,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;IAC/E,OAAO;QACN,OAAO,EAAE,IAAI;QACb,MAAM,EAAE;YACP,KAAK,EAAE,MAAM,CAAC,OAAO;YACrB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACjD;KACD,CAAC;AACH,CAAC;AAED,2CAA2C;AAE3C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACrC,QAAgB,EAChB,MAA+B;IAE/B,IAAI,CAAC;QACJ,QAAQ,QAAQ,EAAE,CAAC;YAClB,KAAK,OAAO;gBACX,OAAO,MAAM,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAErD;gBACC,OAAO,EAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,QAAQ,EAAE,EAAC,CAAC;QAC9D,CAAC;IACF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IAAI,GAAG,YAAY,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjC,OAAO,EAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,GAAG,CAAC,OAAO,EAAE,EAAC,CAAC;QACtE,CAAC;QACD,OAAO;YACN,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAC3D,CAAC;IACH,CAAC;AACF,CAAC"}
|
package/dist/types/config.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
|