sparkecoder 0.1.65 → 0.1.67
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/agent/index.d.ts +2 -2
- package/dist/agent/index.js +37 -28
- package/dist/agent/index.js.map +1 -1
- package/dist/cli.js +102 -118
- package/dist/cli.js.map +1 -1
- package/dist/{index-BhKQYdOx.d.ts → index-DHyVVhJY.d.ts} +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +102 -118
- package/dist/index.js.map +1 -1
- package/dist/{search-DkNNtC5A.d.ts → search-CCffrVJE.d.ts} +1 -0
- package/dist/server/index.js +102 -118
- package/dist/server/index.js.map +1 -1
- package/dist/tools/index.d.ts +2 -2
- package/dist/tools/index.js +16 -11
- package/dist/tools/index.js.map +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/web/.next/build-manifest.json +2 -2
- package/web/.next/standalone/web/.next/prerender-manifest.json +3 -3
- package/web/.next/standalone/web/.next/server/app/(main)/page.js.nft.json +1 -1
- package/web/.next/standalone/web/.next/server/app/(main)/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/(main)/session/[id]/page.js.nft.json +1 -1
- package/web/.next/standalone/web/.next/server/app/(main)/session/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/standalone/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.html +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/installation/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/installation.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_full.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_index.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs/installation/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs/installation.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/skills.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_full.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_index.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs/skills/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs/skills.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/tools.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_full.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_index.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs/tools/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs/tools.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs.segments/_full.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/_index.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/docs.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/embed/[id]/page.js.nft.json +1 -1
- package/web/.next/standalone/web/.next/server/app/embed/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/index.html +1 -1
- package/web/.next/standalone/web/.next/server/app/index.rsc +4 -4
- package/web/.next/standalone/web/.next/server/app/index.segments/!KG1haW4p/__PAGE__.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/index.segments/!KG1haW4p.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/web/.next/standalone/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_708e1a2e._.js → 2374f_02a118f9._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_3db08933._.js → 2374f_0ed477f8._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_7d957e38._.js → 2374f_12bad06e._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_1225fb9d._.js → 2374f_2526ca80._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_95e53328._.js → 2374f_3b51a934._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_f1f229dd._.js → 2374f_3e519469._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_a90b70ee._.js → 2374f_5ebfcf1a._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_a19628a3._.js → 2374f_a0f483d1._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_8385a57b._.js → 2374f_acf3dfe4._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_32fd5733._.js → 2374f_ad08e83a._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_2eac907f._.js → 2374f_c1d54c16._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_51500fd2._.js → 2374f_db3e363b._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_2775224f._.js → 2374f_f0d7e130._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_6f1ea3a7._.js → 2374f_fc992d90._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{[root-of-the-server]__5bde4c40._.js → [root-of-the-server]__06818a54._.js} +2 -2
- package/web/.next/standalone/web/.next/server/chunks/ssr/{[root-of-the-server]__4085bf35._.js → [root-of-the-server]__c71f29f9._.js} +4 -4
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_2b3a5919._.js +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_38156da8._.js +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_5cca707f._.js +7 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_935e81f5._.js +7 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/{web_14735895._.js → web_cc5f7515._.js} +2 -2
- package/web/.next/standalone/web/.next/server/pages/404.html +1 -1
- package/web/.next/standalone/web/.next/server/pages/500.html +2 -2
- package/web/.next/standalone/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/server-reference-manifest.json +1 -1
- package/web/.next/{static/chunks/4b6a9454bc6460c5.js → standalone/web/.next/static/chunks/31208ade542a0fcb.js} +3 -3
- package/web/.next/{static/chunks/4a490bc538aa0940.js → standalone/web/.next/static/chunks/4e673433173ad456.js} +3 -3
- package/web/.next/standalone/web/.next/static/chunks/{c2dccd8f56d8eb5a.js → 515f0c0bd6087843.js} +5 -5
- package/web/.next/standalone/web/.next/static/chunks/fd39dd62879495e1.css +1 -0
- package/web/.next/standalone/web/.next/static/static/chunks/{4b6a9454bc6460c5.js → 31208ade542a0fcb.js} +3 -3
- package/web/.next/standalone/web/.next/static/static/chunks/{4a490bc538aa0940.js → 4e673433173ad456.js} +3 -3
- package/web/.next/standalone/web/.next/static/static/chunks/{c2dccd8f56d8eb5a.js → 515f0c0bd6087843.js} +5 -5
- package/web/.next/standalone/web/.next/static/static/chunks/fd39dd62879495e1.css +1 -0
- package/web/.next/standalone/web/src/components/chat-interface.tsx +96 -1
- package/web/.next/standalone/web/src/lib/api.ts +24 -0
- package/web/.next/{standalone/web/.next/static/chunks/4b6a9454bc6460c5.js → static/chunks/31208ade542a0fcb.js} +3 -3
- package/web/.next/{standalone/web/.next/static/chunks/4a490bc538aa0940.js → static/chunks/4e673433173ad456.js} +3 -3
- package/web/.next/static/chunks/{c2dccd8f56d8eb5a.js → 515f0c0bd6087843.js} +5 -5
- package/web/.next/static/chunks/fd39dd62879495e1.css +1 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_08bbd8c8._.js +0 -7
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_c729ad51._.js +0 -7
- package/web/.next/standalone/web/.next/static/chunks/8b53c110c5a6f9a0.css +0 -1
- package/web/.next/standalone/web/.next/static/static/chunks/8b53c110c5a6f9a0.css +0 -1
- package/web/.next/static/chunks/8b53c110c5a6f9a0.css +0 -1
- /package/web/.next/standalone/web/.next/static/{NuySHGSR0CchKU9zo42LK → static/tZkod5afiOX7T9AkN1yPO}/_buildManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/{NuySHGSR0CchKU9zo42LK → static/tZkod5afiOX7T9AkN1yPO}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/standalone/web/.next/static/{NuySHGSR0CchKU9zo42LK → static/tZkod5afiOX7T9AkN1yPO}/_ssgManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/{static/NuySHGSR0CchKU9zo42LK → tZkod5afiOX7T9AkN1yPO}/_buildManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/{static/NuySHGSR0CchKU9zo42LK → tZkod5afiOX7T9AkN1yPO}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/standalone/web/.next/static/{static/NuySHGSR0CchKU9zo42LK → tZkod5afiOX7T9AkN1yPO}/_ssgManifest.js +0 -0
- /package/web/.next/static/{NuySHGSR0CchKU9zo42LK → tZkod5afiOX7T9AkN1yPO}/_buildManifest.js +0 -0
- /package/web/.next/static/{NuySHGSR0CchKU9zo42LK → tZkod5afiOX7T9AkN1yPO}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{NuySHGSR0CchKU9zo42LK → tZkod5afiOX7T9AkN1yPO}/_ssgManifest.js +0 -0
package/dist/agent/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import 'ai';
|
|
2
2
|
import '../schema-XcP0dedO.js';
|
|
3
|
-
export { A as Agent, a as AgentOptions, b as AgentRunOptions, c as AgentStreamResult, C as ContextManager, M as MessageAttachment, d as buildSystemPrompt, e as buildTaskPromptAddendum } from '../index-
|
|
4
|
-
import '../search-
|
|
3
|
+
export { A as Agent, a as AgentOptions, b as AgentRunOptions, c as AgentStreamResult, C as ContextManager, M as MessageAttachment, d as buildSystemPrompt, e as buildTaskPromptAddendum } from '../index-DHyVVhJY.js';
|
|
4
|
+
import '../search-CCffrVJE.js';
|
|
5
5
|
import 'drizzle-orm/sqlite-core';
|
|
6
6
|
import 'zod';
|
package/dist/agent/index.js
CHANGED
|
@@ -1416,19 +1416,14 @@ __export(stream_proxy_exports, {
|
|
|
1416
1416
|
import WebSocket from "ws";
|
|
1417
1417
|
import { EventEmitter } from "events";
|
|
1418
1418
|
function getOrCreateProxy(sessionId, port) {
|
|
1419
|
-
|
|
1420
|
-
if (
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
proxy.on("close", () => {
|
|
1428
|
-
activeProxies.delete(sessionId);
|
|
1429
|
-
});
|
|
1430
|
-
proxy.connect();
|
|
1431
|
-
}
|
|
1419
|
+
const existing = activeProxies.get(sessionId);
|
|
1420
|
+
if (existing) return existing;
|
|
1421
|
+
const proxy = new BrowserStreamProxy(port);
|
|
1422
|
+
activeProxies.set(sessionId, proxy);
|
|
1423
|
+
proxy.on("close", () => {
|
|
1424
|
+
activeProxies.delete(sessionId);
|
|
1425
|
+
});
|
|
1426
|
+
proxy.connect();
|
|
1432
1427
|
return proxy;
|
|
1433
1428
|
}
|
|
1434
1429
|
function getProxy(sessionId) {
|
|
@@ -1445,8 +1440,8 @@ var RECONNECT_DELAY_MS, MAX_RECONNECT_ATTEMPTS, FRAME_THROTTLE_MS, BrowserStream
|
|
|
1445
1440
|
var init_stream_proxy = __esm({
|
|
1446
1441
|
"src/browser/stream-proxy.ts"() {
|
|
1447
1442
|
"use strict";
|
|
1448
|
-
RECONNECT_DELAY_MS =
|
|
1449
|
-
MAX_RECONNECT_ATTEMPTS =
|
|
1443
|
+
RECONNECT_DELAY_MS = 1e3;
|
|
1444
|
+
MAX_RECONNECT_ATTEMPTS = 20;
|
|
1450
1445
|
FRAME_THROTTLE_MS = 100;
|
|
1451
1446
|
BrowserStreamProxy = class extends EventEmitter {
|
|
1452
1447
|
ws = null;
|
|
@@ -1496,8 +1491,11 @@ var init_stream_proxy = __esm({
|
|
|
1496
1491
|
}
|
|
1497
1492
|
});
|
|
1498
1493
|
this.ws.on("close", () => {
|
|
1494
|
+
const wasConnected = this._connected;
|
|
1499
1495
|
this._connected = false;
|
|
1500
|
-
|
|
1496
|
+
if (wasConnected) {
|
|
1497
|
+
this.emit("status", { connected: false, screencasting: false });
|
|
1498
|
+
}
|
|
1501
1499
|
if (!this.destroyed) {
|
|
1502
1500
|
this.scheduleReconnect();
|
|
1503
1501
|
}
|
|
@@ -1539,7 +1537,7 @@ var init_stream_proxy = __esm({
|
|
|
1539
1537
|
return;
|
|
1540
1538
|
}
|
|
1541
1539
|
this.reconnectAttempts++;
|
|
1542
|
-
const delay = RECONNECT_DELAY_MS * this.reconnectAttempts;
|
|
1540
|
+
const delay = this.reconnectAttempts <= 5 ? RECONNECT_DELAY_MS : RECONNECT_DELAY_MS * (this.reconnectAttempts - 4);
|
|
1543
1541
|
this.reconnectTimer = setTimeout(() => this.doConnect(), delay);
|
|
1544
1542
|
}
|
|
1545
1543
|
/**
|
|
@@ -2179,15 +2177,15 @@ function getBrowserStreamPort(sessionId) {
|
|
|
2179
2177
|
}
|
|
2180
2178
|
return port;
|
|
2181
2179
|
}
|
|
2182
|
-
function
|
|
2183
|
-
return /\bagent-browser\
|
|
2180
|
+
function hasAgentBrowserCommand(command) {
|
|
2181
|
+
return /\bagent-browser\b/.test(command);
|
|
2184
2182
|
}
|
|
2185
2183
|
function isAgentBrowserCloseCommand(command) {
|
|
2186
|
-
return /\bagent-browser\s+close\b/.test(command);
|
|
2184
|
+
return /\bagent-browser\s+(close|close\s+--all)\b/.test(command);
|
|
2187
2185
|
}
|
|
2188
2186
|
function injectBrowserStreamPort(command, port) {
|
|
2189
2187
|
return command.replace(
|
|
2190
|
-
/\bagent-browser\b
|
|
2188
|
+
/\bagent-browser\b/g,
|
|
2191
2189
|
`AGENT_BROWSER_STREAM_PORT=${port} agent-browser`
|
|
2192
2190
|
);
|
|
2193
2191
|
}
|
|
@@ -2357,12 +2355,14 @@ Terminal output is stored in the global SparkECoder data directory. Use the \`ta
|
|
|
2357
2355
|
};
|
|
2358
2356
|
}
|
|
2359
2357
|
let actualCommand = command;
|
|
2360
|
-
const
|
|
2358
|
+
const hasAgentBrowser = hasAgentBrowserCommand(command);
|
|
2361
2359
|
const browserClose = isAgentBrowserCloseCommand(command);
|
|
2362
2360
|
let browserPort;
|
|
2363
|
-
if (
|
|
2361
|
+
if (hasAgentBrowser) {
|
|
2364
2362
|
browserPort = getBrowserStreamPort(options.sessionId);
|
|
2365
|
-
|
|
2363
|
+
if (!browserClose) {
|
|
2364
|
+
actualCommand = injectBrowserStreamPort(command, browserPort);
|
|
2365
|
+
}
|
|
2366
2366
|
}
|
|
2367
2367
|
const canUseTmux = await shouldUseTmux();
|
|
2368
2368
|
if (background) {
|
|
@@ -2378,9 +2378,6 @@ Terminal output is stored in the global SparkECoder data directory. Use the \`ta
|
|
|
2378
2378
|
sessionId: options.sessionId,
|
|
2379
2379
|
terminalId
|
|
2380
2380
|
});
|
|
2381
|
-
if (browserOpen && browserPort) {
|
|
2382
|
-
options.onProgress?.({ terminalId, status: "running", command, browserStreamPort: browserPort });
|
|
2383
|
-
}
|
|
2384
2381
|
return {
|
|
2385
2382
|
success: true,
|
|
2386
2383
|
id: result.id,
|
|
@@ -2399,7 +2396,13 @@ Terminal output is stored in the global SparkECoder data directory. Use the \`ta
|
|
|
2399
2396
|
});
|
|
2400
2397
|
const truncatedOutput = truncateOutput(result.output, MAX_OUTPUT_CHARS2);
|
|
2401
2398
|
options.onOutput?.(truncatedOutput);
|
|
2402
|
-
options.onProgress?.({
|
|
2399
|
+
options.onProgress?.({
|
|
2400
|
+
terminalId,
|
|
2401
|
+
status: "completed",
|
|
2402
|
+
command,
|
|
2403
|
+
browserStreamPort: browserPort,
|
|
2404
|
+
browserClosed: browserClose || void 0
|
|
2405
|
+
});
|
|
2403
2406
|
return {
|
|
2404
2407
|
success: result.exitCode === 0,
|
|
2405
2408
|
id: result.id,
|
|
@@ -5614,12 +5617,18 @@ Before calling \`complete_task\`, you MUST verify your work completely. Do not j
|
|
|
5614
5617
|
- If the task asked for multiple things, verify EACH one individually.
|
|
5615
5618
|
- If something doesn't look right, fix it \u2014 don't complete with known issues.
|
|
5616
5619
|
|
|
5620
|
+
**Screenshot your completed work:**
|
|
5621
|
+
- After completing a task, take a screenshot of the result when it makes sense (UI changes browser pages, etc.). You can use the browser skill to do this.
|
|
5622
|
+
- Use \`upload_file\` to upload the screenshot and include the download URL in your task result so the user can see proof of what was done.
|
|
5623
|
+
- This is especially valuable for UI/visual changes, successful test runs, and browser verification \u2014 show, don't just tell.
|
|
5624
|
+
|
|
5617
5625
|
### Use All Available Tools
|
|
5618
5626
|
- **load_skill**: Load specialized skills/knowledge relevant to the task. Check what skills are available and use them.
|
|
5619
5627
|
- **explore_agent**: Use for codebase exploration and understanding before making changes.
|
|
5620
5628
|
- **code_graph**: Use to understand type hierarchies, references, and impact before refactoring.
|
|
5621
5629
|
- **todo**: Track your progress on multi-step tasks so you don't miss steps.
|
|
5622
5630
|
- **bash**: Full shell access \u2014 run builds, tests, dev servers, open browsers, curl endpoints, anything.
|
|
5631
|
+
- **upload_file**: Upload files (screenshots, reports, exports) to cloud storage. Use this to include screenshots of completed work in your task result \u2014 visual proof is very helpful.
|
|
5623
5632
|
|
|
5624
5633
|
### Output Schema
|
|
5625
5634
|
The \`complete_task\` tool expects a \`result\` object matching this JSON Schema:
|