@getpaseo/server 0.1.104-beta.5 → 0.1.104
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/server/server/agent/mcp-server.js +0 -1
- package/dist/server/server/agent/mcp-shared.js +1 -1
- package/dist/server/server/agent/tools/paseo-tools.js +2 -79
- package/dist/server/server/browser-tools/tools.js +0 -49
- package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-bridge-c2eadf48e74404945431866f748641cd.js → desktop-attachment-bridge-050f4066430884830408272e3d9c9f0b.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-050f4066430884830408272e3d9c9f0b.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-050f4066430884830408272e3d9c9f0b.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-store-2fedddc19192dc5c2aa1f476ca8bda07.js → desktop-attachment-store-31c8a92a7d9967d424e7b11a100a0264.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-store-2fedddc19192dc5c2aa1f476ca8bda07.js.br → desktop-attachment-store-31c8a92a7d9967d424e7b11a100a0264.js.br} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-31c8a92a7d9967d424e7b11a100a0264.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{index-94c14e94d2f9f042833a435dd50042c7.js → index-8d9d8c6fc19839009bd4e58964e2cc66.js} +44 -43
- package/dist/server/web-ui/_expo/static/js/web/index-8d9d8c6fc19839009bd4e58964e2cc66.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/index-8d9d8c6fc19839009bd4e58964e2cc66.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{indexeddb-attachment-store-81a312f940a176e8d390657c8ec2c511.js → indexeddb-attachment-store-e0f8c14c129f5fdd50da470a1f8a6360.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-e0f8c14c129f5fdd50da470a1f8a6360.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{indexeddb-attachment-store-81a312f940a176e8d390657c8ec2c511.js.gz → indexeddb-attachment-store-e0f8c14c129f5fdd50da470a1f8a6360.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{native-file-attachment-store-7e696fa918b73c29668de86c5c9608b7.js → native-file-attachment-store-f9d8e1b9c1e085be89c29a52a6350c2c.js} +3 -3
- package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-f9d8e1b9c1e085be89c29a52a6350c2c.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-f9d8e1b9c1e085be89c29a52a6350c2c.js.gz +0 -0
- package/dist/server/web-ui/index.html +1 -1
- package/dist/server/web-ui/index.html.br +0 -0
- package/dist/server/web-ui/index.html.gz +0 -0
- package/package.json +6 -5
- package/dist/server/server/agent/wait-for-agent-tracker.d.ts +0 -15
- package/dist/server/server/agent/wait-for-agent-tracker.js +0 -53
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-c2eadf48e74404945431866f748641cd.js.br +0 -3
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-c2eadf48e74404945431866f748641cd.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-2fedddc19192dc5c2aa1f476ca8bda07.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/index-94c14e94d2f9f042833a435dd50042c7.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/index-94c14e94d2f9f042833a435dd50042c7.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-81a312f940a176e8d390657c8ec2c511.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-7e696fa918b73c29668de86c5c9608b7.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-7e696fa918b73c29668de86c5c9608b7.js.gz +0 -0
|
@@ -59,7 +59,6 @@ export async function createAgentMcpServer(options) {
|
|
|
59
59
|
title: tool.title,
|
|
60
60
|
description: tool.description,
|
|
61
61
|
inputSchema: tool.inputSchema,
|
|
62
|
-
outputSchema: tool.outputSchema,
|
|
63
62
|
}, async (args, context) => toMcpToolResult(await catalog.executeTool(tool.name, args, { signal: context?.signal })));
|
|
64
63
|
}
|
|
65
64
|
return server;
|
|
@@ -106,7 +106,7 @@ export async function waitForAgentWithTimeout(agentManager, agentId, options) {
|
|
|
106
106
|
});
|
|
107
107
|
const recentActivity = curateAgentActivity(recent.items);
|
|
108
108
|
const waitedSeconds = Math.round(AGENT_WAIT_TIMEOUT_MS / 1000);
|
|
109
|
-
const message = `Awaiting the agent timed out after ${waitedSeconds}s. This does not mean the agent failed -
|
|
109
|
+
const message = `Awaiting the agent timed out after ${waitedSeconds}s. This does not mean the agent failed - it is still running. Call get_agent_status to check on it, or continue with other work if you will receive a finish notification.\n\nRecent activity:\n${recentActivity}`;
|
|
110
110
|
return {
|
|
111
111
|
status: snapshot?.lifecycle ?? "idle",
|
|
112
112
|
permission: null,
|
|
@@ -7,7 +7,6 @@ import { selectItemsByProjectedLimit } from "../timeline-projection.js";
|
|
|
7
7
|
import { ensureAgentLoaded } from "../agent-loading.js";
|
|
8
8
|
import { isStoredAgentProviderAvailable } from "../../persistence-hooks.js";
|
|
9
9
|
import { killTerminalsForWorkspace, } from "../../workspace-archive-service.js";
|
|
10
|
-
import { WaitForAgentTracker } from "../wait-for-agent-tracker.js";
|
|
11
10
|
import { createAgentCommand } from "../create-agent/create.js";
|
|
12
11
|
import { expandUserPath, isSameOrDescendantPath, resolvePathFromBase } from "../../path-utils.js";
|
|
13
12
|
import { ScheduleRunSchema, ScheduleSummarySchema, StoredScheduleSchema, } from "@getpaseo/protocol/schedule/types";
|
|
@@ -231,7 +230,6 @@ function resolveTerminalKeyToken(key, literal) {
|
|
|
231
230
|
export function createPaseoToolCatalog(options) {
|
|
232
231
|
const { agentManager, agentStorage, terminalManager, scheduleService, providerSnapshotManager, callerAgentId, resolveSpeakHandler, resolveCallerContext, logger, } = options;
|
|
233
232
|
const childLogger = logger.child({ module: "agent", component: "paseo-tool-catalog" });
|
|
234
|
-
const waitTracker = new WaitForAgentTracker(logger);
|
|
235
233
|
const callerContext = callerAgentId ? (resolveCallerContext?.(callerAgentId) ?? null) : null;
|
|
236
234
|
const parseToolInput = async (tool, input) => {
|
|
237
235
|
const inputSchema = tool.inputSchema;
|
|
@@ -848,7 +846,7 @@ export function createPaseoToolCatalog(options) {
|
|
|
848
846
|
// Return immediately for async creation.
|
|
849
847
|
const currentSnapshot = agentManager.getAgent(snapshot.id) ?? snapshot;
|
|
850
848
|
const guidance = callerAgentId && notifyOnFinish && initialPromptStarted
|
|
851
|
-
? "You will get notified when the created agent finishes, errors, or needs permission. Do not
|
|
849
|
+
? "You will get notified when the created agent finishes, errors, or needs permission. Do not poll for status; continue with other work until the notification arrives."
|
|
852
850
|
: undefined;
|
|
853
851
|
const response = {
|
|
854
852
|
content: [],
|
|
@@ -1047,73 +1045,6 @@ export function createPaseoToolCatalog(options) {
|
|
|
1047
1045
|
throw new Error("unreachable");
|
|
1048
1046
|
}
|
|
1049
1047
|
}
|
|
1050
|
-
registerTool("wait_for_agent", {
|
|
1051
|
-
title: "Wait for agent",
|
|
1052
|
-
description: "Block until the agent requests permission or the current run completes. Returns the pending permission (if any) and recent activity summary.",
|
|
1053
|
-
inputSchema: {
|
|
1054
|
-
agentId: z.string().describe("Agent identifier returned by the create_agent tool"),
|
|
1055
|
-
},
|
|
1056
|
-
outputSchema: {
|
|
1057
|
-
agentId: z.string(),
|
|
1058
|
-
status: AgentStatusEnum,
|
|
1059
|
-
permission: AgentPermissionRequestPayloadSchema.nullable(),
|
|
1060
|
-
lastMessage: z.string().nullable(),
|
|
1061
|
-
},
|
|
1062
|
-
}, async ({ agentId }, { signal }) => {
|
|
1063
|
-
const abortController = new AbortController();
|
|
1064
|
-
const cleanupFns = [];
|
|
1065
|
-
const cleanup = () => {
|
|
1066
|
-
while (cleanupFns.length) {
|
|
1067
|
-
const fn = cleanupFns.pop();
|
|
1068
|
-
try {
|
|
1069
|
-
fn?.();
|
|
1070
|
-
}
|
|
1071
|
-
catch {
|
|
1072
|
-
// ignore cleanup errors
|
|
1073
|
-
}
|
|
1074
|
-
}
|
|
1075
|
-
};
|
|
1076
|
-
const forwardExternalAbort = () => {
|
|
1077
|
-
if (!abortController.signal.aborted) {
|
|
1078
|
-
const reason = signal?.reason ?? new Error("wait_for_agent aborted");
|
|
1079
|
-
abortController.abort(reason);
|
|
1080
|
-
}
|
|
1081
|
-
};
|
|
1082
|
-
if (signal) {
|
|
1083
|
-
if (signal.aborted) {
|
|
1084
|
-
forwardExternalAbort();
|
|
1085
|
-
}
|
|
1086
|
-
else {
|
|
1087
|
-
signal.addEventListener("abort", forwardExternalAbort, { once: true });
|
|
1088
|
-
cleanupFns.push(() => signal.removeEventListener("abort", forwardExternalAbort));
|
|
1089
|
-
}
|
|
1090
|
-
}
|
|
1091
|
-
const unregister = waitTracker.register(agentId, (reason) => {
|
|
1092
|
-
if (!abortController.signal.aborted) {
|
|
1093
|
-
abortController.abort(new Error(reason ?? "wait_for_agent cancelled"));
|
|
1094
|
-
}
|
|
1095
|
-
});
|
|
1096
|
-
cleanupFns.push(unregister);
|
|
1097
|
-
try {
|
|
1098
|
-
const result = await waitForAgentWithTimeout(agentManager, agentId, {
|
|
1099
|
-
signal: abortController.signal,
|
|
1100
|
-
});
|
|
1101
|
-
const validJson = ensureValidJson({
|
|
1102
|
-
agentId,
|
|
1103
|
-
status: result.status,
|
|
1104
|
-
permission: sanitizePermissionRequest(result.permission),
|
|
1105
|
-
lastMessage: result.lastMessage,
|
|
1106
|
-
});
|
|
1107
|
-
const response = {
|
|
1108
|
-
content: [],
|
|
1109
|
-
structuredContent: validJson,
|
|
1110
|
-
};
|
|
1111
|
-
return response;
|
|
1112
|
-
}
|
|
1113
|
-
finally {
|
|
1114
|
-
cleanup();
|
|
1115
|
-
}
|
|
1116
|
-
});
|
|
1117
1048
|
registerTool("send_agent_prompt", {
|
|
1118
1049
|
title: "Send agent prompt",
|
|
1119
1050
|
description: "Send a task to a running agent. Agent-scoped callers run in background by default; top-level callers wait by default.",
|
|
@@ -1126,9 +1057,6 @@ export function createPaseoToolCatalog(options) {
|
|
|
1126
1057
|
guidance: z.string().optional(),
|
|
1127
1058
|
},
|
|
1128
1059
|
}, async ({ agentId, prompt, sessionMode, background = Boolean(callerAgentId), notifyOnFinish = Boolean(callerAgentId), }) => {
|
|
1129
|
-
if (agentManager.hasInFlightRun(agentId)) {
|
|
1130
|
-
waitTracker.cancel(agentId, "Agent run interrupted by new prompt");
|
|
1131
|
-
}
|
|
1132
1060
|
const shouldNotifyOnFinish = Boolean(callerAgentId && notifyOnFinish && background);
|
|
1133
1061
|
await sendPromptToAgent({
|
|
1134
1062
|
agentManager,
|
|
@@ -1175,7 +1103,7 @@ export function createPaseoToolCatalog(options) {
|
|
|
1175
1103
|
permission: null,
|
|
1176
1104
|
...(shouldNotifyOnFinish
|
|
1177
1105
|
? {
|
|
1178
|
-
guidance: "You will get notified when the prompted agent finishes, errors, or needs permission. Do not
|
|
1106
|
+
guidance: "You will get notified when the prompted agent finishes, errors, or needs permission. Do not poll for status; continue with other work until the notification arrives.",
|
|
1179
1107
|
}
|
|
1180
1108
|
: {}),
|
|
1181
1109
|
};
|
|
@@ -1278,9 +1206,6 @@ export function createPaseoToolCatalog(options) {
|
|
|
1278
1206
|
},
|
|
1279
1207
|
}, async ({ agentId }) => {
|
|
1280
1208
|
const { cancelled } = await cancelAgentRunCommand({ agentManager, logger: childLogger }, agentId);
|
|
1281
|
-
if (cancelled) {
|
|
1282
|
-
waitTracker.cancel(agentId, "Agent run cancelled");
|
|
1283
|
-
}
|
|
1284
1209
|
return {
|
|
1285
1210
|
content: [],
|
|
1286
1211
|
structuredContent: ensureValidJson({ success: cancelled }),
|
|
@@ -1301,7 +1226,6 @@ export function createPaseoToolCatalog(options) {
|
|
|
1301
1226
|
agentStorage,
|
|
1302
1227
|
logger: childLogger,
|
|
1303
1228
|
}, agentId);
|
|
1304
|
-
waitTracker.cancel(agentId, "Agent archived");
|
|
1305
1229
|
return {
|
|
1306
1230
|
content: [],
|
|
1307
1231
|
structuredContent: ensureValidJson({ success: true }),
|
|
@@ -1318,7 +1242,6 @@ export function createPaseoToolCatalog(options) {
|
|
|
1318
1242
|
},
|
|
1319
1243
|
}, async ({ agentId }) => {
|
|
1320
1244
|
await closeAgentCommand({ agentManager }, agentId);
|
|
1321
|
-
waitTracker.cancel(agentId, "Agent terminated");
|
|
1322
1245
|
return {
|
|
1323
1246
|
content: [],
|
|
1324
1247
|
structuredContent: ensureValidJson({ success: true }),
|
|
@@ -4,35 +4,6 @@ const HTTP_URL_ONLY_MESSAGE = "URL must use http/https only";
|
|
|
4
4
|
const WORKSPACE_CONTEXT_MESSAGE = "This browser tool needs a workspace. Start the agent from a Paseo workspace before calling browser_new_tab or browser_list_tabs.";
|
|
5
5
|
const URL_WHITESPACE_PATTERN = /\s/;
|
|
6
6
|
const NON_HTTP_EXPLICIT_SCHEME_PATTERN = /^(?!https?:\/\/)[a-z][a-z0-9+.-]*:\/\//i;
|
|
7
|
-
const BrowserToolOutputSchema = {
|
|
8
|
-
ok: z.boolean(),
|
|
9
|
-
result: z.unknown().optional(),
|
|
10
|
-
error: z
|
|
11
|
-
.object({
|
|
12
|
-
code: z.string(),
|
|
13
|
-
message: z.string(),
|
|
14
|
-
retryable: z.boolean(),
|
|
15
|
-
})
|
|
16
|
-
.optional(),
|
|
17
|
-
dialogs: z
|
|
18
|
-
.array(z.object({
|
|
19
|
-
type: z.enum(["alert", "confirm", "prompt", "beforeunload"]),
|
|
20
|
-
message: z.string(),
|
|
21
|
-
defaultValue: z.string().optional(),
|
|
22
|
-
action: z.enum(["accepted", "dismissed"]),
|
|
23
|
-
promptText: z.string().optional(),
|
|
24
|
-
timestamp: z.number(),
|
|
25
|
-
}))
|
|
26
|
-
.optional(),
|
|
27
|
-
context: z
|
|
28
|
-
.object({
|
|
29
|
-
agentId: z.string().optional(),
|
|
30
|
-
cwd: z.string().optional(),
|
|
31
|
-
workspaceId: z.string().optional(),
|
|
32
|
-
browserId: z.string().optional(),
|
|
33
|
-
})
|
|
34
|
-
.optional(),
|
|
35
|
-
};
|
|
36
7
|
const BrowserHttpUrlInputSchema = z
|
|
37
8
|
.string()
|
|
38
9
|
.trim()
|
|
@@ -65,7 +36,6 @@ export function registerBrowserTools(options) {
|
|
|
65
36
|
title: "List browser tabs",
|
|
66
37
|
description: "List open Paseo browser tabs for this agent's workspace across connected browser automation hosts. Use returned browserId values with tab-scoped tools.",
|
|
67
38
|
inputSchema: {},
|
|
68
|
-
outputSchema: BrowserToolOutputSchema,
|
|
69
39
|
}, async () => {
|
|
70
40
|
const context = resolveBrowserToolContext(options);
|
|
71
41
|
const missingWorkspace = requireWorkspaceContext(context);
|
|
@@ -89,7 +59,6 @@ export function registerBrowserTools(options) {
|
|
|
89
59
|
inputSchema: {
|
|
90
60
|
url: BrowserHttpUrlInputSchema.optional(),
|
|
91
61
|
},
|
|
92
|
-
outputSchema: BrowserToolOutputSchema,
|
|
93
62
|
}, async ({ url }) => {
|
|
94
63
|
const context = resolveBrowserToolContext(options);
|
|
95
64
|
const missingWorkspace = requireWorkspaceContext(context);
|
|
@@ -113,7 +82,6 @@ export function registerBrowserTools(options) {
|
|
|
113
82
|
inputSchema: {
|
|
114
83
|
browserId: BrowserAutomationBrowserIdSchema,
|
|
115
84
|
},
|
|
116
|
-
outputSchema: BrowserToolOutputSchema,
|
|
117
85
|
}, async ({ browserId }) => {
|
|
118
86
|
const context = resolveBrowserToolContext(options);
|
|
119
87
|
const payload = await options.broker.execute({
|
|
@@ -139,7 +107,6 @@ export function registerBrowserTools(options) {
|
|
|
139
107
|
doubleClick: z.boolean().optional(),
|
|
140
108
|
modifiers: z.array(BrowserClickModifierInputSchema).optional(),
|
|
141
109
|
},
|
|
142
|
-
outputSchema: BrowserToolOutputSchema,
|
|
143
110
|
}, async ({ ref, browserId, button, doubleClick, modifiers }) => {
|
|
144
111
|
const context = resolveBrowserToolContext(options);
|
|
145
112
|
const payload = await options.broker.execute({
|
|
@@ -167,7 +134,6 @@ export function registerBrowserTools(options) {
|
|
|
167
134
|
value: z.string(),
|
|
168
135
|
browserId: BrowserAutomationBrowserIdSchema,
|
|
169
136
|
},
|
|
170
|
-
outputSchema: BrowserToolOutputSchema,
|
|
171
137
|
}, async ({ ref, value, browserId }) => {
|
|
172
138
|
const context = resolveBrowserToolContext(options);
|
|
173
139
|
const payload = await options.broker.execute({
|
|
@@ -189,7 +155,6 @@ export function registerBrowserTools(options) {
|
|
|
189
155
|
title: "Wait for browser condition",
|
|
190
156
|
description: "Wait until a Paseo browser tab contains text or reaches a URL fragment. Use browserId from browser_new_tab or browser_list_tabs; waits up to 5s by default on the browser host.",
|
|
191
157
|
inputSchema: BrowserWaitInputSchema,
|
|
192
|
-
outputSchema: BrowserToolOutputSchema,
|
|
193
158
|
}, async ({ text, url, timeoutMs, browserId }) => {
|
|
194
159
|
const context = resolveBrowserToolContext(options);
|
|
195
160
|
const payload = await options.broker.execute({
|
|
@@ -217,7 +182,6 @@ export function registerBrowserTools(options) {
|
|
|
217
182
|
ref: BrowserRefInputSchema.optional(),
|
|
218
183
|
browserId: BrowserAutomationBrowserIdSchema,
|
|
219
184
|
},
|
|
220
|
-
outputSchema: BrowserToolOutputSchema,
|
|
221
185
|
}, async ({ text, ref, browserId }) => {
|
|
222
186
|
const context = resolveBrowserToolContext(options);
|
|
223
187
|
const payload = await options.broker.execute({
|
|
@@ -243,7 +207,6 @@ export function registerBrowserTools(options) {
|
|
|
243
207
|
ref: BrowserRefInputSchema.optional(),
|
|
244
208
|
browserId: BrowserAutomationBrowserIdSchema,
|
|
245
209
|
},
|
|
246
|
-
outputSchema: BrowserToolOutputSchema,
|
|
247
210
|
}, async ({ key, ref, browserId }) => {
|
|
248
211
|
const context = resolveBrowserToolContext(options);
|
|
249
212
|
const payload = await options.broker.execute({
|
|
@@ -265,7 +228,6 @@ export function registerBrowserTools(options) {
|
|
|
265
228
|
title: "Navigate browser",
|
|
266
229
|
description: "Navigate a Paseo browser tab to a URL. Use browserId from browser_new_tab or browser_list_tabs; pass an http(s) URL or a scheme-less host URL, which is treated as http.",
|
|
267
230
|
inputSchema: { url: BrowserHttpUrlInputSchema, browserId: BrowserAutomationBrowserIdSchema },
|
|
268
|
-
outputSchema: BrowserToolOutputSchema,
|
|
269
231
|
}, async ({ url, browserId }) => {
|
|
270
232
|
const context = resolveBrowserToolContext(options);
|
|
271
233
|
const payload = await options.broker.execute({
|
|
@@ -306,7 +268,6 @@ export function registerBrowserTools(options) {
|
|
|
306
268
|
title: toolConfig.title,
|
|
307
269
|
description: toolConfig.description,
|
|
308
270
|
inputSchema: { browserId: BrowserAutomationBrowserIdSchema },
|
|
309
|
-
outputSchema: BrowserToolOutputSchema,
|
|
310
271
|
}, async ({ browserId }) => {
|
|
311
272
|
const context = resolveBrowserToolContext(options);
|
|
312
273
|
const payload = await options.broker.execute({
|
|
@@ -330,7 +291,6 @@ export function registerBrowserTools(options) {
|
|
|
330
291
|
browserId: BrowserAutomationBrowserIdSchema,
|
|
331
292
|
fullPage: z.boolean().default(false),
|
|
332
293
|
},
|
|
333
|
-
outputSchema: BrowserToolOutputSchema,
|
|
334
294
|
}, async ({ browserId, fullPage }) => {
|
|
335
295
|
const context = resolveBrowserToolContext(options);
|
|
336
296
|
const payload = await options.broker.execute({
|
|
@@ -355,7 +315,6 @@ export function registerBrowserTools(options) {
|
|
|
355
315
|
filePaths: z.array(z.string().min(1)).min(1),
|
|
356
316
|
browserId: BrowserAutomationBrowserIdSchema,
|
|
357
317
|
},
|
|
358
|
-
outputSchema: BrowserToolOutputSchema,
|
|
359
318
|
}, async ({ ref, filePaths, browserId }) => {
|
|
360
319
|
const context = resolveBrowserToolContext(options);
|
|
361
320
|
const payload = await options.broker.execute({
|
|
@@ -385,7 +344,6 @@ export function registerBrowserTools(options) {
|
|
|
385
344
|
title: toolConfig.title,
|
|
386
345
|
description: toolConfig.description,
|
|
387
346
|
inputSchema: { ref: BrowserRefInputSchema, browserId: BrowserAutomationBrowserIdSchema },
|
|
388
|
-
outputSchema: BrowserToolOutputSchema,
|
|
389
347
|
}, async ({ ref, browserId }) => {
|
|
390
348
|
const context = resolveBrowserToolContext(options);
|
|
391
349
|
const payload = await options.broker.execute({
|
|
@@ -411,7 +369,6 @@ export function registerBrowserTools(options) {
|
|
|
411
369
|
value: z.string(),
|
|
412
370
|
browserId: BrowserAutomationBrowserIdSchema,
|
|
413
371
|
},
|
|
414
|
-
outputSchema: BrowserToolOutputSchema,
|
|
415
372
|
}, async ({ ref, value, browserId }) => {
|
|
416
373
|
const context = resolveBrowserToolContext(options);
|
|
417
374
|
const payload = await options.broker.execute({
|
|
@@ -437,7 +394,6 @@ export function registerBrowserTools(options) {
|
|
|
437
394
|
targetRef: BrowserRefInputSchema,
|
|
438
395
|
browserId: BrowserAutomationBrowserIdSchema,
|
|
439
396
|
},
|
|
440
|
-
outputSchema: BrowserToolOutputSchema,
|
|
441
397
|
}, async ({ sourceRef, targetRef, browserId }) => {
|
|
442
398
|
const context = resolveBrowserToolContext(options);
|
|
443
399
|
const payload = await options.broker.execute({
|
|
@@ -462,7 +418,6 @@ export function registerBrowserTools(options) {
|
|
|
462
418
|
maxEntries: z.number().int().positive().max(200).optional(),
|
|
463
419
|
browserId: BrowserAutomationBrowserIdSchema,
|
|
464
420
|
},
|
|
465
|
-
outputSchema: BrowserToolOutputSchema,
|
|
466
421
|
}, async ({ maxEntries, browserId }) => {
|
|
467
422
|
const context = resolveBrowserToolContext(options);
|
|
468
423
|
const payload = await options.broker.execute({
|
|
@@ -487,7 +442,6 @@ export function registerBrowserTools(options) {
|
|
|
487
442
|
ref: BrowserRefInputSchema.optional(),
|
|
488
443
|
browserId: BrowserAutomationBrowserIdSchema,
|
|
489
444
|
},
|
|
490
|
-
outputSchema: BrowserToolOutputSchema,
|
|
491
445
|
}, async ({ function: functionSource, ref, browserId }) => {
|
|
492
446
|
const context = resolveBrowserToolContext(options);
|
|
493
447
|
const payload = await options.broker.execute({
|
|
@@ -514,7 +468,6 @@ export function registerBrowserTools(options) {
|
|
|
514
468
|
deltaX: z.number(),
|
|
515
469
|
deltaY: z.number(),
|
|
516
470
|
},
|
|
517
|
-
outputSchema: BrowserToolOutputSchema,
|
|
518
471
|
}, async ({ browserId, ref, deltaX, deltaY }) => {
|
|
519
472
|
const context = resolveBrowserToolContext(options);
|
|
520
473
|
const payload = await options.broker.execute({
|
|
@@ -541,7 +494,6 @@ export function registerBrowserTools(options) {
|
|
|
541
494
|
width: z.number().int().positive(),
|
|
542
495
|
height: z.number().int().positive(),
|
|
543
496
|
},
|
|
544
|
-
outputSchema: BrowserToolOutputSchema,
|
|
545
497
|
}, async ({ browserId, width, height }) => {
|
|
546
498
|
const context = resolveBrowserToolContext(options);
|
|
547
499
|
const payload = await options.broker.execute({
|
|
@@ -565,7 +517,6 @@ export function registerBrowserTools(options) {
|
|
|
565
517
|
inputSchema: {
|
|
566
518
|
browserId: BrowserAutomationBrowserIdSchema,
|
|
567
519
|
},
|
|
568
|
-
outputSchema: BrowserToolOutputSchema,
|
|
569
520
|
}, async ({ browserId }) => {
|
|
570
521
|
const context = resolveBrowserToolContext(options);
|
|
571
522
|
const payload = await options.broker.execute({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.createDesktopAttachmentBridge=function(){const l=(0,s.createDesktopPreviewUrlResolver)({reader:(0,s.createDesktopFileReader)(),objectUrls:(0,s.createBrowserObjectUrlMinter)()});return{copyFile:t.copyDesktopAttachmentFile,writeBase64:t.writeDesktopAttachmentBase64,writeBytes:t.writeDesktopAttachmentBytes,deleteFile:t.deleteDesktopAttachmentFile,garbageCollect:t.garbageCollectDesktopAttachmentFiles,readFileBase64:s.readDesktopFileBase64,resolvePreviewUrl:t=>l.resolve(t),releasePreviewUrl:t=>l.release(t)}};var t=r(d[0]),s=r(d[1])},
|
|
1
|
+
__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.createDesktopAttachmentBridge=function(){const l=(0,s.createDesktopPreviewUrlResolver)({reader:(0,s.createDesktopFileReader)(),objectUrls:(0,s.createBrowserObjectUrlMinter)()});return{copyFile:t.copyDesktopAttachmentFile,writeBase64:t.writeDesktopAttachmentBase64,writeBytes:t.writeDesktopAttachmentBytes,deleteFile:t.deleteDesktopAttachmentFile,garbageCollect:t.garbageCollectDesktopAttachmentFiles,readFileBase64:s.readDesktopFileBase64,resolvePreviewUrl:t=>l.resolve(t),releasePreviewUrl:t=>l.release(t)}};var t=r(d[0]),s=r(d[1])},4437,[3935,3936]);
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.createDesktopAttachmentStore=function(n){return{storageType:"desktop-file",async save(s){const o=s.id??(0,t.generateAttachmentId)(),l=s.fileName??null;if("file_uri"===s.source.kind)return await c(n,{id:o,uri:s.source.uri,mimeType:s.mimeType,fileName:l});if("data_url"===s.source.kind){const c=(0,t.parseDataUrl)(s.source.dataUrl),p=(0,t.normalizeMimeType)(s.mimeType??c.mimeType);return await y(n,{id:o,base64:c.base64,mimeType:p,fileName:l})}if("bytes"===s.source.kind){const c=(0,t.normalizeMimeType)(s.mimeType);return await p(n,{id:o,bytes:s.source.bytes,mimeType:c,fileName:l})}const f=(0,t.normalizeMimeType)(s.mimeType??s.source.blob.type),u=await(0,t.blobToBase64)(s.source.blob);return await y(n,{id:o,base64:u,mimeType:f,fileName:l})},encodeBase64:async({attachment:t})=>(f(t),await n.readFileBase64(t.storageKey)),resolvePreviewUrl:async({attachment:t})=>(f(t),await n.resolvePreviewUrl(t)),async releasePreviewUrl({attachment:t,url:s}){f(t),await n.releasePreviewUrl({url:s})},async delete({attachment:t}){f(t),await n.deleteFile({path:t.storageKey})},async garbageCollect({referencedIds:t}){await n.garbageCollect({referencedIds:Array.from(t)})}}};var t=r(d[0]);const n={"image/png":".png","image/jpeg":".jpg","image/jpg":".jpg","image/gif":".gif","image/webp":".webp","image/avif":".avif","image/heic":".heic","image/heif":".heif","image/tiff":".tiff","image/bmp":".bmp","image/svg+xml":".svg"};function s(t){const n=t.replace(/\\/g,"/").split("/"),s=n[n.length-1];return s&&s.length>0?s:null}function o(s){const o=(0,t.getFileExtensionFromName)(s.fileName);if(o)return o;const l=(0,t.getFileExtensionFromName)(s.sourcePath);return l||(n[s.mimeType]??".img")}function l(t){return{id:t.id,mimeType:t.mimeType,storageType:"desktop-file",storageKey:t.storagePath,fileName:t.fileName??null,byteSize:t.byteSize,createdAt:Date.now()}}async function c(n,c){const y=(0,t.fileUriToPath)(c.uri),p=c.fileName??s(y),f=(0,t.normalizeMimeType)(c.mimeType),u=o({fileName:p,sourcePath:y,mimeType:f}),T=await n.copyFile({attachmentId:c.id,sourcePath:y,extension:u});return l({id:c.id,mimeType:f,storagePath:T.path,byteSize:T.byteSize,fileName:p})}async function y(t,n){const s=o({fileName:n.fileName,mimeType:n.mimeType}),c=await t.writeBase64({attachmentId:n.id,base64:n.base64,extension:s});return l({id:n.id,mimeType:n.mimeType,storagePath:c.path,byteSize:c.byteSize,fileName:n.fileName})}async function p(t,n){const s=o({fileName:n.fileName,mimeType:n.mimeType}),c=await t.writeBytes({attachmentId:n.id,bytes:n.bytes,extension:s});return l({id:n.id,mimeType:n.mimeType,storagePath:c.path,byteSize:c.byteSize,fileName:n.fileName})}function f(t){if("desktop-file"!==t.storageType)throw new Error(`Unsupported desktop attachment storage type '${t.storageType}'.`)}},
|
|
1
|
+
__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.createDesktopAttachmentStore=function(n){return{storageType:"desktop-file",async save(s){const o=s.id??(0,t.generateAttachmentId)(),l=s.fileName??null;if("file_uri"===s.source.kind)return await c(n,{id:o,uri:s.source.uri,mimeType:s.mimeType,fileName:l});if("data_url"===s.source.kind){const c=(0,t.parseDataUrl)(s.source.dataUrl),p=(0,t.normalizeMimeType)(s.mimeType??c.mimeType);return await y(n,{id:o,base64:c.base64,mimeType:p,fileName:l})}if("bytes"===s.source.kind){const c=(0,t.normalizeMimeType)(s.mimeType);return await p(n,{id:o,bytes:s.source.bytes,mimeType:c,fileName:l})}const f=(0,t.normalizeMimeType)(s.mimeType??s.source.blob.type),u=await(0,t.blobToBase64)(s.source.blob);return await y(n,{id:o,base64:u,mimeType:f,fileName:l})},encodeBase64:async({attachment:t})=>(f(t),await n.readFileBase64(t.storageKey)),resolvePreviewUrl:async({attachment:t})=>(f(t),await n.resolvePreviewUrl(t)),async releasePreviewUrl({attachment:t,url:s}){f(t),await n.releasePreviewUrl({url:s})},async delete({attachment:t}){f(t),await n.deleteFile({path:t.storageKey})},async garbageCollect({referencedIds:t}){await n.garbageCollect({referencedIds:Array.from(t)})}}};var t=r(d[0]);const n={"image/png":".png","image/jpeg":".jpg","image/jpg":".jpg","image/gif":".gif","image/webp":".webp","image/avif":".avif","image/heic":".heic","image/heif":".heif","image/tiff":".tiff","image/bmp":".bmp","image/svg+xml":".svg"};function s(t){const n=t.replace(/\\/g,"/").split("/"),s=n[n.length-1];return s&&s.length>0?s:null}function o(s){const o=(0,t.getFileExtensionFromName)(s.fileName);if(o)return o;const l=(0,t.getFileExtensionFromName)(s.sourcePath);return l||(n[s.mimeType]??".img")}function l(t){return{id:t.id,mimeType:t.mimeType,storageType:"desktop-file",storageKey:t.storagePath,fileName:t.fileName??null,byteSize:t.byteSize,createdAt:Date.now()}}async function c(n,c){const y=(0,t.fileUriToPath)(c.uri),p=c.fileName??s(y),f=(0,t.normalizeMimeType)(c.mimeType),u=o({fileName:p,sourcePath:y,mimeType:f}),T=await n.copyFile({attachmentId:c.id,sourcePath:y,extension:u});return l({id:c.id,mimeType:f,storagePath:T.path,byteSize:T.byteSize,fileName:p})}async function y(t,n){const s=o({fileName:n.fileName,mimeType:n.mimeType}),c=await t.writeBase64({attachmentId:n.id,base64:n.base64,extension:s});return l({id:n.id,mimeType:n.mimeType,storagePath:c.path,byteSize:c.byteSize,fileName:n.fileName})}async function p(t,n){const s=o({fileName:n.fileName,mimeType:n.mimeType}),c=await t.writeBytes({attachmentId:n.id,bytes:n.bytes,extension:s});return l({id:n.id,mimeType:n.mimeType,storagePath:c.path,byteSize:c.byteSize,fileName:n.fileName})}function f(t){if("desktop-file"!==t.storageType)throw new Error(`Unsupported desktop attachment storage type '${t.storageType}'.`)}},4436,[3937]);
|
|
Binary file
|