sparkecoder 0.1.122 → 0.1.124
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 +3 -3
- package/dist/agent/index.js +67 -14
- package/dist/agent/index.js.map +1 -1
- package/dist/cli.js +201 -66
- package/dist/cli.js.map +1 -1
- package/dist/db/index.d.ts +2 -2
- package/dist/{index-DczYH89U.d.ts → index-Bcz0aCAR.d.ts} +104 -104
- package/dist/index.d.ts +5 -5
- package/dist/index.js +124 -24
- package/dist/index.js.map +1 -1
- package/dist/{schema-DxrKyetI.d.ts → schema-BWbWmfDQ.d.ts} +3 -3
- package/dist/{search-CVVfuBPZ.d.ts → search-DOzC4ojH.d.ts} +4 -4
- package/dist/server/index.js +124 -24
- package/dist/server/index.js.map +1 -1
- package/dist/skills/default/recording.md +2 -2
- package/dist/tools/index.d.ts +3 -3
- package/package.json +1 -1
- package/src/skills/default/recording.md +2 -2
- 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)/agents/page_client-reference-manifest.js +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/(main)/settings/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.html +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- 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 +1 -1
- 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 +1 -1
- package/web/.next/standalone/web/.next/server/app/agents.html +1 -1
- package/web/.next/standalone/web/.next/server/app/agents.rsc +3 -3
- package/web/.next/standalone/web/.next/server/app/agents.segments/!KG1haW4p/agents/__PAGE__.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/agents.segments/!KG1haW4p/agents.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/agents.segments/!KG1haW4p.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/agents.segments/_full.segment.rsc +3 -3
- package/web/.next/standalone/web/.next/server/app/agents.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/agents.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/agents.segments/_tree.segment.rsc +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 +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_full.segment.rsc +1 -1
- 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 +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_tree.segment.rsc +1 -1
- 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/skills.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/skills.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_full.segment.rsc +1 -1
- 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 +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_tree.segment.rsc +1 -1
- 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.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/tools.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_full.segment.rsc +1 -1
- 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 +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_tree.segment.rsc +1 -1
- 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 +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/_full.segment.rsc +1 -1
- 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 +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/_tree.segment.rsc +1 -1
- 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/index.html +1 -1
- package/web/.next/standalone/web/.next/server/app/index.rsc +3 -3
- 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 +3 -3
- 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 +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.html +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.rsc +3 -3
- package/web/.next/standalone/web/.next/server/app/settings.segments/!KG1haW4p/settings/__PAGE__.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/settings.segments/!KG1haW4p/settings.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.segments/!KG1haW4p.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/settings.segments/_full.segment.rsc +3 -3
- package/web/.next/standalone/web/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_c87abaf4._.js → 2374f_12d55e68._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_1f3f2d00._.js → 2374f_1c0639c2._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_a0d5caeb._.js → 2374f_28cd6777._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_570c34dc._.js → 2374f_5f47a9b7._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_d8122230._.js → 2374f_aa218457._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_9c560f3a._.js → 2374f_f678a96f._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_38945fd9._.js → 2374f_fac4000d._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{[root-of-the-server]__4de426bd._.js → [root-of-the-server]__e5911ea8._.js} +4 -4
- package/web/.next/standalone/web/.next/server/chunks/ssr/{web_62ca4286._.js → web_2966b3a3._.js} +2 -2
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_4fe3c244._.js +1 -1
- 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/standalone/web/.next/static/chunks/{91988e253d5fa420.js → 4d95c15f712c9e06.js} +5 -5
- package/web/.next/standalone/web/.next/static/chunks/780c93257fac7d43.js +1 -0
- package/web/.next/standalone/web/.next/static/static/chunks/{91988e253d5fa420.js → 4d95c15f712c9e06.js} +5 -5
- package/web/.next/standalone/web/.next/static/static/chunks/780c93257fac7d43.js +1 -0
- package/web/.next/standalone/web/src/components/chat-interface.tsx +112 -1
- package/web/.next/static/chunks/{91988e253d5fa420.js → 4d95c15f712c9e06.js} +5 -5
- package/web/.next/static/chunks/780c93257fac7d43.js +1 -0
- package/web/.next/standalone/web/.next/static/chunks/f0f19357f3fb7cf8.js +0 -1
- package/web/.next/standalone/web/.next/static/static/chunks/f0f19357f3fb7cf8.js +0 -1
- package/web/.next/static/chunks/f0f19357f3fb7cf8.js +0 -1
- /package/web/.next/standalone/web/.next/static/{BEIBC9-dP0_AWGmRy97hJ → cYXZ7UzGc5TttFIXRRcSC}/_buildManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/{BEIBC9-dP0_AWGmRy97hJ → cYXZ7UzGc5TttFIXRRcSC}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/standalone/web/.next/static/{BEIBC9-dP0_AWGmRy97hJ → cYXZ7UzGc5TttFIXRRcSC}/_ssgManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/static/{BEIBC9-dP0_AWGmRy97hJ → cYXZ7UzGc5TttFIXRRcSC}/_buildManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/static/{BEIBC9-dP0_AWGmRy97hJ → cYXZ7UzGc5TttFIXRRcSC}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/standalone/web/.next/static/static/{BEIBC9-dP0_AWGmRy97hJ → cYXZ7UzGc5TttFIXRRcSC}/_ssgManifest.js +0 -0
- /package/web/.next/static/{BEIBC9-dP0_AWGmRy97hJ → cYXZ7UzGc5TttFIXRRcSC}/_buildManifest.js +0 -0
- /package/web/.next/static/{BEIBC9-dP0_AWGmRy97hJ → cYXZ7UzGc5TttFIXRRcSC}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{BEIBC9-dP0_AWGmRy97hJ → cYXZ7UzGc5TttFIXRRcSC}/_ssgManifest.js +0 -0
package/dist/agent/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import 'ai';
|
|
2
|
-
import '../schema-
|
|
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-
|
|
2
|
+
import '../schema-BWbWmfDQ.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-Bcz0aCAR.js';
|
|
4
|
+
import '../search-DOzC4ojH.js';
|
|
5
5
|
import 'drizzle-orm/sqlite-core';
|
|
6
6
|
import 'zod';
|
package/dist/agent/index.js
CHANGED
|
@@ -6865,6 +6865,7 @@ ${summaryContent}`
|
|
|
6865
6865
|
];
|
|
6866
6866
|
}
|
|
6867
6867
|
messages = repairToolPairing(messages);
|
|
6868
|
+
messages = ensureToolResultsFollowCalls(messages);
|
|
6868
6869
|
messages = ensureEndsWithUserOrTool(messages);
|
|
6869
6870
|
return messages;
|
|
6870
6871
|
}
|
|
@@ -7059,7 +7060,7 @@ ${summaryContent}`
|
|
|
7059
7060
|
}
|
|
7060
7061
|
}
|
|
7061
7062
|
async addResponseMessages(messages) {
|
|
7062
|
-
const safe = repairToolPairing(messages);
|
|
7063
|
+
const safe = ensureToolResultsFollowCalls(repairToolPairing(messages));
|
|
7063
7064
|
await messageQueries.addMany(this.sessionId, safe);
|
|
7064
7065
|
try {
|
|
7065
7066
|
const { appendTurn: appendTurn2, flattenContent: flattenContent2 } = await Promise.resolve().then(() => (init_conversation_archive(), conversation_archive_exports));
|
|
@@ -7133,6 +7134,55 @@ function wrapToolsNeverThrow(tools) {
|
|
|
7133
7134
|
}
|
|
7134
7135
|
return wrapped;
|
|
7135
7136
|
}
|
|
7137
|
+
function ensureToolResultsFollowCalls(messages) {
|
|
7138
|
+
if (!Array.isArray(messages) || messages.length < 3) return messages;
|
|
7139
|
+
let mutated = false;
|
|
7140
|
+
const result = messages.slice();
|
|
7141
|
+
let i = 0;
|
|
7142
|
+
while (i < result.length) {
|
|
7143
|
+
const msg = result[i];
|
|
7144
|
+
if (msg?.role !== "assistant" || !Array.isArray(msg.content)) {
|
|
7145
|
+
i++;
|
|
7146
|
+
continue;
|
|
7147
|
+
}
|
|
7148
|
+
const callIds = /* @__PURE__ */ new Set();
|
|
7149
|
+
for (const part of msg.content) {
|
|
7150
|
+
if (part?.type === "tool-call" && typeof part.toolCallId === "string") {
|
|
7151
|
+
callIds.add(part.toolCallId);
|
|
7152
|
+
}
|
|
7153
|
+
}
|
|
7154
|
+
if (callIds.size === 0) {
|
|
7155
|
+
i++;
|
|
7156
|
+
continue;
|
|
7157
|
+
}
|
|
7158
|
+
let toolIdx = -1;
|
|
7159
|
+
for (let j = i + 1; j < result.length; j++) {
|
|
7160
|
+
const m = result[j];
|
|
7161
|
+
if (m?.role === "assistant" && Array.isArray(m.content) && m.content.some((p) => p?.type === "tool-call")) {
|
|
7162
|
+
break;
|
|
7163
|
+
}
|
|
7164
|
+
if (m?.role === "tool" && Array.isArray(m.content)) {
|
|
7165
|
+
const answersOne = m.content.some(
|
|
7166
|
+
(p) => p?.type === "tool-result" && typeof p.toolCallId === "string" && callIds.has(p.toolCallId)
|
|
7167
|
+
);
|
|
7168
|
+
if (answersOne) {
|
|
7169
|
+
toolIdx = j;
|
|
7170
|
+
break;
|
|
7171
|
+
}
|
|
7172
|
+
}
|
|
7173
|
+
}
|
|
7174
|
+
if (toolIdx > i + 1) {
|
|
7175
|
+
const [toolMsg] = result.splice(toolIdx, 1);
|
|
7176
|
+
result.splice(i + 1, 0, toolMsg);
|
|
7177
|
+
mutated = true;
|
|
7178
|
+
console.warn(
|
|
7179
|
+
`[tool-repair] Reordered tool-result message from index ${toolIdx} to ${i + 1} to immediately follow assistant tool-call(s) (${[...callIds].join(", ")}). ${toolIdx - i - 1} message(s) were wedged between them.`
|
|
7180
|
+
);
|
|
7181
|
+
}
|
|
7182
|
+
i++;
|
|
7183
|
+
}
|
|
7184
|
+
return mutated ? result : messages;
|
|
7185
|
+
}
|
|
7136
7186
|
function repairToolPairing(messages) {
|
|
7137
7187
|
const toolCallIds = /* @__PURE__ */ new Set();
|
|
7138
7188
|
const toolResultIds = /* @__PURE__ */ new Set();
|
|
@@ -8327,7 +8377,7 @@ ${prompt}` });
|
|
|
8327
8377
|
const config = getConfig();
|
|
8328
8378
|
const userContent = this.buildUserMessageContent(options.prompt, options.attachments);
|
|
8329
8379
|
if (!options.skipSaveUserMessage) {
|
|
8330
|
-
this.context.addUserMessage(userContent);
|
|
8380
|
+
await this.context.addUserMessage(userContent);
|
|
8331
8381
|
}
|
|
8332
8382
|
await sessionQueries.updateStatus(this.session.id, "active");
|
|
8333
8383
|
let systemPrompt = await buildSystemPrompt({
|
|
@@ -8375,9 +8425,10 @@ ${personality.trim()}`;
|
|
|
8375
8425
|
// aborted mid-tool). Repairing in `prepareStep` guarantees no orphan
|
|
8376
8426
|
// ever reaches the model and we never hit AI_MissingToolResultsError.
|
|
8377
8427
|
prepareStep: async ({ messages: stepMessages }) => {
|
|
8378
|
-
const
|
|
8379
|
-
|
|
8380
|
-
|
|
8428
|
+
const paired = repairToolPairing(stepMessages);
|
|
8429
|
+
const ordered = ensureToolResultsFollowCalls(paired);
|
|
8430
|
+
if (ordered === stepMessages) return {};
|
|
8431
|
+
return { messages: ordered };
|
|
8381
8432
|
},
|
|
8382
8433
|
onStepFinish: async (step) => {
|
|
8383
8434
|
options.onStepFinish?.(step);
|
|
@@ -8390,7 +8441,7 @@ ${personality.trim()}`;
|
|
|
8390
8441
|
const result = await stream;
|
|
8391
8442
|
const response = await result.response;
|
|
8392
8443
|
const responseMessages = response.messages;
|
|
8393
|
-
this.context.addResponseMessages(responseMessages);
|
|
8444
|
+
await this.context.addResponseMessages(responseMessages);
|
|
8394
8445
|
};
|
|
8395
8446
|
return {
|
|
8396
8447
|
sessionId: this.session.id,
|
|
@@ -8404,7 +8455,7 @@ ${personality.trim()}`;
|
|
|
8404
8455
|
*/
|
|
8405
8456
|
async run(options) {
|
|
8406
8457
|
const config = getConfig();
|
|
8407
|
-
this.context.addUserMessage(options.prompt);
|
|
8458
|
+
await this.context.addUserMessage(options.prompt);
|
|
8408
8459
|
const systemPrompt = await buildSystemPrompt({
|
|
8409
8460
|
workingDirectory: this.session.workingDirectory,
|
|
8410
8461
|
skillsDirectories: config.resolvedSkillsDirectories,
|
|
@@ -8428,13 +8479,14 @@ ${personality.trim()}`;
|
|
|
8428
8479
|
} : void 0,
|
|
8429
8480
|
// Repair tool pairing before every step (see `stream()` for full rationale).
|
|
8430
8481
|
prepareStep: async ({ messages: stepMessages }) => {
|
|
8431
|
-
const
|
|
8432
|
-
|
|
8433
|
-
|
|
8482
|
+
const paired = repairToolPairing(stepMessages);
|
|
8483
|
+
const ordered = ensureToolResultsFollowCalls(paired);
|
|
8484
|
+
if (ordered === stepMessages) return {};
|
|
8485
|
+
return { messages: ordered };
|
|
8434
8486
|
}
|
|
8435
8487
|
});
|
|
8436
8488
|
const responseMessages = result.response.messages;
|
|
8437
|
-
this.context.addResponseMessages(responseMessages);
|
|
8489
|
+
await this.context.addResponseMessages(responseMessages);
|
|
8438
8490
|
return {
|
|
8439
8491
|
text: result.text,
|
|
8440
8492
|
steps: result.steps
|
|
@@ -8617,9 +8669,10 @@ ${p.text}` : p.text;
|
|
|
8617
8669
|
// See the matching note in `stream()` — repair tool pairing before
|
|
8618
8670
|
// every step so we never feed the model an orphan tool-call.
|
|
8619
8671
|
prepareStep: async ({ messages: stepMessages }) => {
|
|
8620
|
-
const
|
|
8621
|
-
|
|
8622
|
-
|
|
8672
|
+
const paired = repairToolPairing(stepMessages);
|
|
8673
|
+
const ordered = ensureToolResultsFollowCalls(paired);
|
|
8674
|
+
if (ordered === stepMessages) return {};
|
|
8675
|
+
return { messages: ordered };
|
|
8623
8676
|
},
|
|
8624
8677
|
onStepFinish: async (step) => {
|
|
8625
8678
|
options.onStepFinish?.(step);
|