veryfront 0.1.605 → 0.1.607
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/esm/deno.js +1 -1
- package/esm/extensions/ext-llm-anthropic/src/anthropic-stream.d.ts.map +1 -1
- package/esm/extensions/ext-llm-anthropic/src/anthropic-stream.js +12 -0
- package/esm/src/internal-agents/run-stream.d.ts +1 -0
- package/esm/src/internal-agents/run-stream.d.ts.map +1 -1
- package/esm/src/internal-agents/run-stream.js +34 -0
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +1 -1
package/esm/deno.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-stream.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-llm-anthropic/src/anthropic-stream.ts"],"names":[],"mappings":"AAOA,KAAK,YAAY,GAAG;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAaF,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,OAAO,GACX,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgBlD;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,SAAS,CAsBhF;AAED,wBAAuB,8BAA8B,CACnD,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACjC,aAAa,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"anthropic-stream.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-llm-anthropic/src/anthropic-stream.ts"],"names":[],"mappings":"AAOA,KAAK,YAAY,GAAG;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAaF,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,OAAO,GACX,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgBlD;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,SAAS,CAsBhF;AAED,wBAAuB,8BAA8B,CACnD,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACjC,aAAa,CAAC,OAAO,CAAC,CA0PxB"}
|
|
@@ -43,6 +43,7 @@ export async function* streamAnthropicCompatibleParts(stream) {
|
|
|
43
43
|
const reasoningBlocks = new Map();
|
|
44
44
|
let finishReason = null;
|
|
45
45
|
let usage;
|
|
46
|
+
let completedClientToolUseStep = false;
|
|
46
47
|
for await (const chunk of stream) {
|
|
47
48
|
buffer += decoder.decode(chunk, { stream: true });
|
|
48
49
|
const parsed = parseSseChunk(buffer);
|
|
@@ -206,6 +207,9 @@ export async function* streamAnthropicCompatibleParts(stream) {
|
|
|
206
207
|
input: current.input.length > 0 ? current.input : "{}",
|
|
207
208
|
...(current.providerExecuted ? { providerExecuted: true } : {}),
|
|
208
209
|
};
|
|
210
|
+
if (!current.providerExecuted) {
|
|
211
|
+
completedClientToolUseStep = true;
|
|
212
|
+
}
|
|
209
213
|
toolCalls.delete(index);
|
|
210
214
|
continue;
|
|
211
215
|
}
|
|
@@ -217,6 +221,14 @@ export async function* streamAnthropicCompatibleParts(stream) {
|
|
|
217
221
|
}
|
|
218
222
|
}
|
|
219
223
|
}
|
|
224
|
+
if (completedClientToolUseStep && toolCalls.size === 0) {
|
|
225
|
+
yield {
|
|
226
|
+
type: "finish",
|
|
227
|
+
finishReason: { unified: "tool-calls", raw: "tool_use" },
|
|
228
|
+
...(usage ? { usage } : {}),
|
|
229
|
+
};
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
220
232
|
}
|
|
221
233
|
if (buffer.trim().length > 0) {
|
|
222
234
|
const parsed = parseSseChunk(`${buffer}\n\n`);
|
|
@@ -8,6 +8,7 @@ export interface RuntimeAgentStreamExecutionDeps {
|
|
|
8
8
|
apiUrl?: string;
|
|
9
9
|
authToken?: string;
|
|
10
10
|
projectId?: string | null;
|
|
11
|
+
sandboxEndpoint?: string;
|
|
11
12
|
};
|
|
12
13
|
createBashTool?: AgentServiceSandboxToolsOptions["createBashTool"];
|
|
13
14
|
createAgentServiceSandboxTools?: (input: AgentServiceSandboxToolsOptions) => Promise<AgentServiceSandboxToolsResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-stream.d.ts","sourceRoot":"","sources":["../../../src/src/internal-agents/run-stream.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run-stream.d.ts","sourceRoot":"","sources":["../../../src/src/internal-agents/run-stream.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,KAAK,EACV,KAAK,YAAY,IAAI,OAAO,EAC5B,KAAK,aAAa,EAEnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EACV,+BAA+B,EAC/B,8BAA8B,EAC/B,MAAM,qBAAqB,CAAC;AAkB7B,OAAO,EAA0B,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAuBxD,MAAM,WAAW,+BAA+B;IAC9C,cAAc,EAAE,sBAAsB,CAAC;IACvC,mBAAmB,CAAC,EAAE;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,cAAc,CAAC,EAAE,+BAA+B,CAAC,gBAAgB,CAAC,CAAC;IACnE,8BAA8B,CAAC,EAAE,CAC/B,KAAK,EAAE,+BAA+B,KACnC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC7C,aAAa,CAAC,EAAE,CACd,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAClC;QACH,MAAM,EAAE,CACN,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,SAAS,CAAC,EAAE;YACV,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;SAC9C,EACD,aAAa,CAAC,EAAE,MAAM,EACtB,uBAAuB,CAAC,EAAE,MAAM,EAChC,WAAW,CAAC,EAAE,WAAW,KACtB,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;KAC1C,CAAC;CACH;AA4OD,wBAAsB,gCAAgC,CACpD,KAAK,EAAE,oBAAoB,EAC3B,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,+BAA+B,GACpC,OAAO,CAAC,QAAQ,CAAC,CAmSnB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as dntShim from "../../_dnt.shims.js";
|
|
1
2
|
import { AgentRuntime, } from "../agent/index.js";
|
|
2
3
|
import { normalizeAgUiRuntimeMessages } from "../agent/ag-ui/runtime-support.js";
|
|
3
4
|
import { createAgentServiceSandboxTools } from "../sandbox/index.js";
|
|
@@ -13,6 +14,8 @@ const getAnyObjectSchema = defineSchema((v) => v.record(v.string(), v.unknown())
|
|
|
13
14
|
const anyObjectSchema = lazySchema(getAnyObjectSchema);
|
|
14
15
|
const logger = serverLogger.component("internal-agent-run-stream");
|
|
15
16
|
const PROJECT_AGENT_SANDBOX_BASH_TOOL_NAME = "bash";
|
|
17
|
+
const INTERNAL_AGENT_RUNTIME_HEARTBEAT_INTERVAL_MS = 25_000;
|
|
18
|
+
const INTERNAL_AGENT_RUNTIME_HEARTBEAT_FRAME = new TextEncoder().encode(": internal-agent-runtime-heartbeat\n\n");
|
|
16
19
|
function getAgentAllowedRemoteToolNames(agent) {
|
|
17
20
|
const raw = agent.config.allowedRemoteTools;
|
|
18
21
|
return Array.isArray(raw) && raw.every((toolName) => typeof toolName === "string") ? raw : [];
|
|
@@ -104,6 +107,7 @@ function getAgentSandboxConfig(agent) {
|
|
|
104
107
|
}
|
|
105
108
|
return {
|
|
106
109
|
sandboxId: getStringProperty(config.sandbox, ["id", "sandboxId", "sessionId"]),
|
|
110
|
+
sandboxEndpoint: getStringProperty(config.sandbox, ["endpoint", "sandboxEndpoint"]),
|
|
107
111
|
projectId: getStringProperty(config.sandbox, ["projectId"]),
|
|
108
112
|
};
|
|
109
113
|
}
|
|
@@ -130,6 +134,12 @@ async function buildProjectAgentSandboxTools(input) {
|
|
|
130
134
|
...(sandboxConfig.sandboxId
|
|
131
135
|
? { sandboxId: sandboxConfig.sandboxId, deleteOnClose: false }
|
|
132
136
|
: {}),
|
|
137
|
+
...(sandboxConfig.sandboxEndpoint ?? input.deps.projectAgentSandbox?.sandboxEndpoint
|
|
138
|
+
? {
|
|
139
|
+
sandboxEndpoint: sandboxConfig.sandboxEndpoint ??
|
|
140
|
+
input.deps.projectAgentSandbox?.sandboxEndpoint,
|
|
141
|
+
}
|
|
142
|
+
: {}),
|
|
133
143
|
getProjectId: () => sandboxConfig.projectId ?? input.deps.projectAgentSandbox?.projectId,
|
|
134
144
|
});
|
|
135
145
|
const bash = sandboxResult.tools[PROJECT_AGENT_SANDBOX_BASH_TOOL_NAME];
|
|
@@ -251,6 +261,7 @@ export async function createRuntimeAgentStreamResponse(input, agent, deps) {
|
|
|
251
261
|
});
|
|
252
262
|
throw error;
|
|
253
263
|
}
|
|
264
|
+
let stopHeartbeat;
|
|
254
265
|
const response = new ReadableStream({
|
|
255
266
|
start: async (controller) => {
|
|
256
267
|
const state = createStreamTransformState();
|
|
@@ -258,6 +269,13 @@ export async function createRuntimeAgentStreamResponse(input, agent, deps) {
|
|
|
258
269
|
const decoder = new TextDecoder();
|
|
259
270
|
let remainder = "";
|
|
260
271
|
let aborted = false;
|
|
272
|
+
let heartbeatTimer;
|
|
273
|
+
stopHeartbeat = () => {
|
|
274
|
+
if (heartbeatTimer) {
|
|
275
|
+
clearInterval(heartbeatTimer);
|
|
276
|
+
heartbeatTimer = undefined;
|
|
277
|
+
}
|
|
278
|
+
};
|
|
261
279
|
const enqueueIfAttached = (event, payload) => {
|
|
262
280
|
const encodedEvent = formatAgUiEvent(event, payload);
|
|
263
281
|
if (!clientAttached) {
|
|
@@ -270,6 +288,17 @@ export async function createRuntimeAgentStreamResponse(input, agent, deps) {
|
|
|
270
288
|
clientAttached = false;
|
|
271
289
|
}
|
|
272
290
|
};
|
|
291
|
+
const enqueueHeartbeatIfAttached = () => {
|
|
292
|
+
if (!clientAttached) {
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
try {
|
|
296
|
+
controller.enqueue(INTERNAL_AGENT_RUNTIME_HEARTBEAT_FRAME);
|
|
297
|
+
}
|
|
298
|
+
catch {
|
|
299
|
+
clientAttached = false;
|
|
300
|
+
}
|
|
301
|
+
};
|
|
273
302
|
const prepareToolResultIfNeeded = (event, payload) => {
|
|
274
303
|
if (event !== "ToolCallStart" && event !== "ToolCallArgs" &&
|
|
275
304
|
event !== "ToolCallEnd") {
|
|
@@ -301,6 +330,7 @@ export async function createRuntimeAgentStreamResponse(input, agent, deps) {
|
|
|
301
330
|
threadId: input.threadId,
|
|
302
331
|
agentId: agent.id,
|
|
303
332
|
});
|
|
333
|
+
heartbeatTimer = dntShim.setInterval(enqueueHeartbeatIfAttached, INTERNAL_AGENT_RUNTIME_HEARTBEAT_INTERVAL_MS);
|
|
304
334
|
try {
|
|
305
335
|
while (true) {
|
|
306
336
|
throwIfAborted();
|
|
@@ -375,6 +405,8 @@ export async function createRuntimeAgentStreamResponse(input, agent, deps) {
|
|
|
375
405
|
}
|
|
376
406
|
}
|
|
377
407
|
finally {
|
|
408
|
+
stopHeartbeat?.();
|
|
409
|
+
stopHeartbeat = undefined;
|
|
378
410
|
abortSignal.removeEventListener("abort", abortHandler);
|
|
379
411
|
if (clientAttached) {
|
|
380
412
|
controller.close();
|
|
@@ -396,6 +428,8 @@ export async function createRuntimeAgentStreamResponse(input, agent, deps) {
|
|
|
396
428
|
},
|
|
397
429
|
cancel() {
|
|
398
430
|
clientAttached = false;
|
|
431
|
+
stopHeartbeat?.();
|
|
432
|
+
stopHeartbeat = undefined;
|
|
399
433
|
logger.info("Internal agent runtime client detached", {
|
|
400
434
|
runId: input.runId,
|
|
401
435
|
threadId: input.threadId,
|