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 CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.605",
3
+ "version": "0.1.607",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "workspace": [
@@ -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,CA6OxB"}
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":"AAAA,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;AAmBxD,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;KAC3B,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;AAmOD,wBAAsB,gCAAgC,CACpD,KAAK,EAAE,oBAAoB,EAC3B,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,+BAA+B,GACpC,OAAO,CAAC,QAAQ,CAAC,CAwQnB"}
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,
@@ -1,3 +1,3 @@
1
1
  /** Shared version value. */
2
- export declare const VERSION = "0.1.605";
2
+ export declare const VERSION = "0.1.607";
3
3
  //# sourceMappingURL=version-constant.d.ts.map
@@ -1,4 +1,4 @@
1
1
  // Keep in sync with deno.json version.
2
2
  // scripts/release.ts updates this constant during releases.
3
3
  /** Shared version value. */
4
- export const VERSION = "0.1.605";
4
+ export const VERSION = "0.1.607";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.605",
3
+ "version": "0.1.607",
4
4
  "description": "The simplest way to build AI-powered apps",
5
5
  "keywords": [
6
6
  "react",