veryfront 0.1.600 → 0.1.601

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.600",
3
+ "version": "0.1.601",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "workspace": [
@@ -1 +1 @@
1
- {"version":3,"file":"durable-child-fork-execution.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/hosted/durable-child-fork-execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"durable-child-fork-execution.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/hosted/durable-child-fork-execution.ts"],"names":[],"mappings":"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"}
@@ -8,9 +8,12 @@ import { HostedChildTerminalStateError, } from "./child-status.js";
8
8
  import { isChildRunAbortError, throwIfChildRunAborted } from "../child-run/execution-support.js";
9
9
  /** Result returned from build hosted durable child invoke failure. */
10
10
  export function buildHostedDurableChildInvokeFailureResult(input) {
11
+ const failureText = `invoke_agent failed: ${input.terminalErrorMessage}`;
11
12
  return {
12
13
  ok: false,
13
14
  status: "failed",
15
+ text: failureText,
16
+ summary: buildChildRunResultSummary(failureText),
14
17
  ...(input.childConversationId ? { childConversationId: input.childConversationId } : {}),
15
18
  ...(input.childRunId ? { childRunId: input.childRunId } : {}),
16
19
  ...(input.childMessageId ? { childMessageId: input.childMessageId } : {}),
@@ -57,6 +57,17 @@ export interface AgentConfig {
57
57
  model?: ModelString;
58
58
  system: string | (() => string) | (() => Promise<string>);
59
59
  tools?: true | Record<string, Tool | boolean>;
60
+ /**
61
+ * Optional sandbox selection for runtime-owned sandbox tools such as `bash`.
62
+ * `id` attaches to an existing sandbox session and detaches on run cleanup.
63
+ * When omitted, sandbox tools lazily create a request/project-scoped session.
64
+ */
65
+ sandbox?: {
66
+ id?: string;
67
+ sandboxId?: string;
68
+ sessionId?: string;
69
+ projectId?: string;
70
+ };
60
71
  remoteTools?: RemoteToolSource[];
61
72
  /**
62
73
  * Optional remote tool name allowlist. When set, only matching tools from
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/agent/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/agent/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"import-rewriter.d.ts","sourceRoot":"","sources":["../../../src/src/discovery/import-rewriter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG5D,eAAO,MAAM,kCAAkC,kLASrC,CAAC;AAEX,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;CAClD;AAiED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CA6BR;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,EACvC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAyKjB"}
1
+ {"version":3,"file":"import-rewriter.d.ts","sourceRoot":"","sources":["../../../src/src/discovery/import-rewriter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG5D,eAAO,MAAM,kCAAkC,kLASrC,CAAC;AAEX,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;CAClD;AAkHD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CA2BR;AA+ED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,EACvC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CA2PjB"}
@@ -60,6 +60,51 @@ function rewriteDenoCompiledVeryfrontImports(code) {
60
60
  }
61
61
  return transformed;
62
62
  }
63
+ /**
64
+ * True for bare npm imports that need an `npm:` prefix for Deno to resolve
65
+ * them when the discovery module is loaded from a temp directory. Excludes
66
+ * relative paths, absolute URLs, Node built-ins, and the veryfront package
67
+ * (handled by the dedicated rewrites above).
68
+ */
69
+ function isUnprefixedNpmSpecifier(specifier) {
70
+ if (!specifier)
71
+ return false;
72
+ if (specifier.startsWith(".") || specifier.startsWith("/"))
73
+ return false;
74
+ if (specifier.startsWith("npm:") || specifier.startsWith("jsr:"))
75
+ return false;
76
+ if (specifier.startsWith("node:"))
77
+ return false;
78
+ if (specifier.startsWith("file:") ||
79
+ specifier.startsWith("http:") ||
80
+ specifier.startsWith("https:"))
81
+ return false;
82
+ if (specifier === "veryfront" || specifier.startsWith("veryfront/"))
83
+ return false;
84
+ return true;
85
+ }
86
+ // `import type` / `export type` lines reference types only; they get erased
87
+ // by TypeScript and must not trigger filesystem resolution.
88
+ const TYPE_ONLY_STATIC_RE = /(?:^|[\s;{}])(?:import|export)\s+type\b/;
89
+ function rewriteBareNpmImportsForDeno(code) {
90
+ return code
91
+ // `import x from "spec"`, `export { x } from "spec"`, `export * from "spec"`.
92
+ // The leading-context capture lets us skip `import type` / `export type`.
93
+ .replace(/(^|[\s;{}])((?:import|export)\b[^"']*?\bfrom\s+)["']([^"']+)["']/g, (match, lead, head, specifier) => {
94
+ if (TYPE_ONLY_STATIC_RE.test(lead + head))
95
+ return match;
96
+ return isUnprefixedNpmSpecifier(specifier) ? `${lead}${head}"npm:${specifier}"` : match;
97
+ })
98
+ .replace(/import\s*\(\s*["']([^"']+)["']\s*\)/g, (match, specifier) => {
99
+ return isUnprefixedNpmSpecifier(specifier) ? `import("npm:${specifier}")` : match;
100
+ })
101
+ // Side-effect-only imports: `import "reflect-metadata";`, `import "dotenv/config";`.
102
+ .replace(/(^|[\n;{}])(\s*)import\s+["']([^"']+)["'](\s*;?)/g, (match, lead, indent, specifier, tail) => {
103
+ return isUnprefixedNpmSpecifier(specifier)
104
+ ? `${lead}${indent}import "npm:${specifier}"${tail}`
105
+ : match;
106
+ });
107
+ }
63
108
  /**
64
109
  * Rewrite imports for Deno runtime
65
110
  * - Converts npm package imports to npm: specifier format
@@ -67,14 +112,7 @@ function rewriteDenoCompiledVeryfrontImports(code) {
67
112
  * - For compiled binaries, rewrites veryfront imports to use globals
68
113
  */
69
114
  export function rewriteForDeno(code, fileDir, options = {}) {
70
- const npmReplacements = [
71
- [/from\s+["']zod["']/g, 'from "npm:zod"'],
72
- [/import\s*\(\s*["']zod["']\s*\)/g, 'import("npm:zod")'],
73
- ];
74
115
  let transformed = code;
75
- for (const [pattern, replacement] of npmReplacements) {
76
- transformed = transformed.replace(pattern, replacement);
77
- }
78
116
  // Handle relative imports
79
117
  transformed = transformed.replace(/from\s+["'](\.\.\/[^"']+)["']/g, (_match, relativePath) => `from "file://${pathHelper.resolve(fileDir, relativePath)}"`);
80
118
  // For compiled binaries, rewrite veryfront imports to use globals
@@ -85,8 +123,89 @@ export function rewriteForDeno(code, fileDir, options = {}) {
85
123
  else {
86
124
  transformed = rewriteDenoPublicVeryfrontImports(transformed, options.resolveSpecifier ?? ((specifier) => globalThis[Symbol.for("import-meta-ponyfill-esmodule")](import.meta).resolve(specifier)));
87
125
  }
126
+ // Prefix any remaining bare npm specifiers with `npm:` so Deno can resolve
127
+ // them from the temp directory the discovery module is loaded from. Covers
128
+ // `zod` plus arbitrary npm packages a tool/agent depends on, after the
129
+ // discovery bundler externalizes them via `packages: "external"`.
130
+ transformed = rewriteBareNpmImportsForDeno(transformed);
88
131
  return transformed;
89
132
  }
133
+ // Memoizes resolved bare-specifier → file:// URL lookups across all
134
+ // `rewriteDiscoveryImports` calls. Keyed by `${projectDir}::${specifier}`.
135
+ // Most projects re-resolve the same handful of packages (react, zod,
136
+ // pdf-parse, …) across every discovered tool/agent file — without this
137
+ // cache, each discovery pass re-reads the same package.json files.
138
+ const resolvedSpecifierCache = new Map();
139
+ // Split `react/jsx-runtime` → { name: "react", subpath: "./jsx-runtime" } and
140
+ // `@scope/pkg/sub/path` → { name: "@scope/pkg", subpath: "./sub/path" }.
141
+ function splitPackageSubpath(specifier) {
142
+ const parts = specifier.split("/");
143
+ const segments = specifier.startsWith("@") ? parts.slice(0, 2) : parts.slice(0, 1);
144
+ const name = segments.join("/");
145
+ const rest = parts.slice(segments.length).join("/");
146
+ return { name, subpath: rest ? `./${rest}` : "." };
147
+ }
148
+ // Pick the relative file path from a `package.json#exports` entry, which can
149
+ // be a string, a conditional object (`{ import, default, ... }`), or an
150
+ // array of those.
151
+ function pickExportEntry(entry) {
152
+ if (typeof entry === "string")
153
+ return entry;
154
+ if (Array.isArray(entry)) {
155
+ for (const e of entry) {
156
+ const v = pickExportEntry(e);
157
+ if (v)
158
+ return v;
159
+ }
160
+ return null;
161
+ }
162
+ if (entry && typeof entry === "object") {
163
+ const obj = entry;
164
+ const candidate = obj.import ?? obj.node ?? obj.default;
165
+ return candidate ? pickExportEntry(candidate) : null;
166
+ }
167
+ return null;
168
+ }
169
+ // Resolve a subpath (`.` or `./foo/bar`) against a `package.json#exports`
170
+ // map. Honors literal keys first, then matches `./*`-style glob patterns
171
+ // where the trailing `*` is substituted with the captured remainder.
172
+ // Returns the resolved relative path (e.g. `./debounce.js`) or null when
173
+ // no entry matches.
174
+ function resolveExportPath(exports, subpath) {
175
+ if (!exports || typeof exports !== "object")
176
+ return null;
177
+ const map = exports;
178
+ // Literal key (covers "." and exact subpaths like "./jsx-runtime").
179
+ if (subpath in map)
180
+ return pickExportEntry(map[subpath]);
181
+ // Glob keys like "./*", "./feature/*", "./lib/*.js". Pick the longest
182
+ // matching prefix so more specific patterns win over `./*`.
183
+ let bestKey = null;
184
+ let bestPrefixLen = -1;
185
+ for (const key of Object.keys(map)) {
186
+ const star = key.indexOf("*");
187
+ if (star === -1)
188
+ continue;
189
+ const prefix = key.slice(0, star);
190
+ const suffix = key.slice(star + 1);
191
+ if (!subpath.startsWith(prefix) || !subpath.endsWith(suffix))
192
+ continue;
193
+ if (subpath.length < prefix.length + suffix.length)
194
+ continue;
195
+ if (prefix.length > bestPrefixLen) {
196
+ bestKey = key;
197
+ bestPrefixLen = prefix.length;
198
+ }
199
+ }
200
+ if (!bestKey)
201
+ return null;
202
+ const star = bestKey.indexOf("*");
203
+ const captured = subpath.slice(bestKey.slice(0, star).length, subpath.length - bestKey.slice(star + 1).length);
204
+ const template = pickExportEntry(map[bestKey]);
205
+ if (!template)
206
+ return null;
207
+ return template.replaceAll("*", captured);
208
+ }
90
209
  /**
91
210
  * Rewrite imports for Node.js runtime
92
211
  * - Resolves relative imports to file:// URLs
@@ -99,20 +218,47 @@ export async function rewriteDiscoveryImports(code, projectDir, fs, fileDir) {
99
218
  const { pathToFileURL } = await import("node:url");
100
219
  // Handle relative imports
101
220
  transformed = transformed.replace(/from\s+["'](\.\.\/[^"']+)["']/g, (_match, relativePath) => `from "${pathToFileURL(pathHelper.resolve(fileDir, relativePath)).href}"`);
102
- // Resolve npm package to file URL
103
- const resolvePackageToFileUrl = async (packageName) => {
221
+ // Resolve a bare specifier (optionally with subpath) to a file:// URL,
222
+ // honoring the package's `exports` map for subpath imports such as
223
+ // `react/jsx-runtime` or `lodash-es/debounce`. Successful resolutions
224
+ // are memoized per (projectDir, specifier); failures are NOT cached
225
+ // so a subsequent `npm install` of the missing dep is picked up
226
+ // without a process restart.
227
+ const resolvePackageToFileUrl = async (specifier) => {
228
+ const cacheKey = `${projectDir}::${specifier}`;
229
+ const cached = resolvedSpecifierCache.get(cacheKey);
230
+ if (cached !== undefined)
231
+ return cached;
232
+ const { name: packageName, subpath } = splitPackageSubpath(specifier);
104
233
  let searchDir = projectDir;
105
234
  for (let i = 0; i < 10; i++) {
106
235
  const packagePath = pathHelper.join(searchDir, "node_modules", packageName);
107
236
  const packageJsonPath = pathHelper.join(packagePath, "package.json");
108
237
  try {
109
238
  const pkgJson = JSON.parse(await fs.readTextFile(packageJsonPath));
110
- const dotExport = pkgJson.exports?.["."];
111
- const entryPoint = (typeof dotExport === "string" ? dotExport : dotExport?.import ?? dotExport?.default) ??
112
- pkgJson.module ??
113
- pkgJson.main ??
114
- "index.js";
115
- return pathToFileURL(pathHelper.join(packagePath, entryPoint)).href;
239
+ const exportPath = resolveExportPath(pkgJson.exports, subpath);
240
+ const entryPoint = exportPath ??
241
+ (subpath === "."
242
+ ? (pkgJson.module ?? pkgJson.main ?? "index.js")
243
+ // No exports entry matched: fall back to joining the subpath
244
+ // onto the package dir (e.g. `dotenv/config.js`).
245
+ : subpath.replace(/^\.\//, ""));
246
+ // Defense in depth: refuse resolved paths that escape the package
247
+ // directory. A malicious package shipping `exports: { ".": "../foo" }`
248
+ // would otherwise yield a `file://` URL outside `node_modules/<pkg>`
249
+ // that the discovery loader would still `import()`. `path.resolve`
250
+ // (unlike `path.join`) normalizes `..` segments, so the prefix
251
+ // check correctly catches escape attempts.
252
+ const normalized = pathHelper.resolve(packagePath, entryPoint);
253
+ const packagePathPrefix = packagePath.endsWith(pathHelper.SEPARATOR)
254
+ ? packagePath
255
+ : packagePath + pathHelper.SEPARATOR;
256
+ if (normalized !== packagePath && !normalized.startsWith(packagePathPrefix)) {
257
+ return null;
258
+ }
259
+ const resolved = pathToFileURL(normalized).href;
260
+ resolvedSpecifierCache.set(cacheKey, resolved);
261
+ return resolved;
116
262
  }
117
263
  catch (_) {
118
264
  /* expected: package.json not found at this level, walk up */
@@ -122,26 +268,66 @@ export async function rewriteDiscoveryImports(code, projectDir, fs, fileDir) {
122
268
  searchDir = parent;
123
269
  }
124
270
  }
271
+ // Intentionally do NOT cache nulls — a missing-then-installed package
272
+ // should be resolvable on the next pass without a process restart.
125
273
  return null;
126
274
  };
127
- // Rewrite package imports
128
- const rewritePackageImports = async (input, pkg) => {
129
- const escapedPkg = pkg.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
130
- const staticImportRegex = new RegExp(`from\\s*["']${escapedPkg}["']`, "g");
275
+ const rewritePackageImports = (input, pkg, resolvedUrl) => {
276
+ const escapedPkg = escapeRegExp(pkg);
277
+ const staticImportRegex = new RegExp(`(^|[\\s;{}])((?:import|export)\\b[^"']*?\\bfrom\\s+)["']${escapedPkg}["']`, "g");
131
278
  const dynamicImportRegex = new RegExp(`import\\s*\\(\\s*["']${escapedPkg}["']\\s*\\)`, "g");
132
- if (!staticImportRegex.test(input) && !dynamicImportRegex.test(input))
133
- return input;
134
- const resolvedUrl = await resolvePackageToFileUrl(pkg);
135
- if (!resolvedUrl)
136
- return input;
279
+ const sideEffectRegex = new RegExp(`(^|[\\n;{}])(\\s*)import\\s+["']${escapedPkg}["'](\\s*;?)`, "g");
137
280
  return input
138
- .replace(staticImportRegex, `from "${resolvedUrl}"`)
139
- .replace(dynamicImportRegex, `import("${resolvedUrl}")`);
281
+ .replace(staticImportRegex, (match, lead, head) => {
282
+ if (TYPE_ONLY_STATIC_RE.test(lead + head))
283
+ return match;
284
+ return `${lead}${head}"${resolvedUrl}"`;
285
+ })
286
+ .replace(dynamicImportRegex, `import("${resolvedUrl}")`)
287
+ .replace(sideEffectRegex, (_m, lead, indent, tail) => `${lead}${indent}import "${resolvedUrl}"${tail}`);
288
+ };
289
+ // Collect every bare specifier the transformed source still imports,
290
+ // then resolve each to a file:// URL in the project's node_modules.
291
+ // With `packages: "external"` in the discovery bundler, npm packages a
292
+ // tool/agent depends on (e.g. `pdf-parse`, `mammoth`, `react/jsx-runtime`)
293
+ // survive as bare imports here and need explicit resolution before the
294
+ // temp module is loaded from outside the project's resolution root.
295
+ const collectBareSpecifiers = (input) => {
296
+ const specifiers = new Set();
297
+ // Matches `import x from "spec"`, `export { x } from "spec"`,
298
+ // `export * from "spec"`. The leading-context capture lets us skip
299
+ // `import type` / `export type` lines, which TypeScript erases at
300
+ // emit time and must not trigger filesystem resolution.
301
+ for (const match of input.matchAll(/(?:^|[\s;{}])((?:import|export)\b[^"']*?\bfrom\s+)["']([^"']+)["']/g)) {
302
+ const head = match[1] ?? "";
303
+ const s = match[2];
304
+ if (TYPE_ONLY_STATIC_RE.test(head))
305
+ continue;
306
+ if (s && isUnprefixedNpmSpecifier(s))
307
+ specifiers.add(s);
308
+ }
309
+ for (const match of input.matchAll(/import\s*\(\s*["']([^"']+)["']\s*\)/g)) {
310
+ const s = match[1];
311
+ if (s && isUnprefixedNpmSpecifier(s))
312
+ specifiers.add(s);
313
+ }
314
+ // Side-effect imports: `import "reflect-metadata";`, `import "dotenv/config";`.
315
+ for (const match of input.matchAll(/(?:^|[\n;{}])\s*import\s+["']([^"']+)["']\s*;?/g)) {
316
+ const s = match[1];
317
+ if (s && isUnprefixedNpmSpecifier(s))
318
+ specifiers.add(s);
319
+ }
320
+ return [...specifiers];
140
321
  };
141
- // Rewrite external package imports
142
- const externalPackages = ["zod"];
143
- for (const pkg of externalPackages) {
144
- transformed = await rewritePackageImports(transformed, pkg);
322
+ // Resolve every bare specifier in parallel — each lookup is independent
323
+ // node_modules I/O. Apply the resulting rewrites sequentially against
324
+ // the same source string.
325
+ const specifiers = collectBareSpecifiers(transformed);
326
+ const resolvedPairs = await Promise.all(specifiers.map(async (pkg) => [pkg, await resolvePackageToFileUrl(pkg)]));
327
+ for (const [pkg, resolvedUrl] of resolvedPairs) {
328
+ if (!resolvedUrl)
329
+ continue;
330
+ transformed = rewritePackageImports(transformed, pkg, resolvedUrl);
145
331
  }
146
332
  const resolveRuntimeSpecifierToFileUrl = (specifier) => {
147
333
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"transpiler.d.ts","sourceRoot":"","sources":["../../../src/src/discovery/transpiler.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAmIvD;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,OAAO,CAAC,CAwFlB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
1
+ {"version":3,"file":"transpiler.d.ts","sourceRoot":"","sources":["../../../src/src/discovery/transpiler.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAmIvD;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,OAAO,CAAC,CAgGlB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
@@ -160,6 +160,14 @@ export async function importModule(file, context) {
160
160
  jsxImportSource: "react",
161
161
  resolveExtensions: [".ts", ".tsx", ".js", ".jsx", ".mjs"],
162
162
  plugins,
163
+ // Externalize all bare-specifier imports so npm packages a tool/agent file
164
+ // depends on (e.g. `pdf-parse`, `mammoth`) are not pulled into the
165
+ // discovery bundle. Discovery only needs the module's exports; the
166
+ // implementation runs server-side at request time and can resolve npm
167
+ // packages natively via the project's node_modules / import map.
168
+ // Without this, esbuild under platform: "neutral" tries to bundle CJS
169
+ // npm packages and fails on their Node built-in references (fs, http, ...).
170
+ packages: "external",
163
171
  external: [
164
172
  "zod",
165
173
  "node:*",
@@ -1,8 +1,16 @@
1
1
  import { type Agent, type AgentMessage as Message, type AgentResponse } from "../agent/index.js";
2
+ import type { AgentServiceSandboxToolsOptions, AgentServiceSandboxToolsResult } from "../sandbox/index.js";
2
3
  import { type AgentRunSessionManager } from "./session-manager.js";
3
4
  import type { RuntimeRunAgentInput } from "./schema.js";
4
5
  export interface RuntimeAgentStreamExecutionDeps {
5
6
  sessionManager: AgentRunSessionManager;
7
+ projectAgentSandbox?: {
8
+ apiUrl?: string;
9
+ authToken?: string;
10
+ projectId?: string | null;
11
+ };
12
+ createBashTool?: AgentServiceSandboxToolsOptions["createBashTool"];
13
+ createAgentServiceSandboxTools?: (input: AgentServiceSandboxToolsOptions) => Promise<AgentServiceSandboxToolsResult>;
6
14
  createRuntime?: (agent: Agent, mergedTools: Agent["config"]["tools"]) => {
7
15
  stream: (messages: Message[], context?: Record<string, unknown>, callbacks?: {
8
16
  onFinish?: (response: AgentResponse) => void;
@@ -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;AAa3B,OAAO,EAA0B,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAkBxD,MAAM,WAAW,+BAA+B;IAC9C,cAAc,EAAE,sBAAsB,CAAC;IACvC,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;AAkJD,wBAAsB,gCAAgC,CACpD,KAAK,EAAE,oBAAoB,EAC3B,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,+BAA+B,GACpC,OAAO,CAAC,QAAQ,CAAC,CAwPnB"}
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,5 +1,8 @@
1
1
  import { AgentRuntime, } from "../agent/index.js";
2
2
  import { normalizeAgUiRuntimeMessages } from "../agent/ag-ui/runtime-support.js";
3
+ import { createAgentServiceSandboxTools } from "../sandbox/index.js";
4
+ import { tryResolve } from "../extensions/contracts.js";
5
+ import { SandboxShellToolsProviderName, } from "../extensions/sandbox/index.js";
3
6
  import { SKILL_TOOL_IDS } from "../skill/types.js";
4
7
  import { toolRegistry } from "../tool/index.js";
5
8
  import { defineSchema, lazySchema } from "../schemas/index.js";
@@ -9,6 +12,7 @@ import { serverLogger } from "../utils/index.js";
9
12
  const getAnyObjectSchema = defineSchema((v) => v.record(v.string(), v.unknown()));
10
13
  const anyObjectSchema = lazySchema(getAnyObjectSchema);
11
14
  const logger = serverLogger.component("internal-agent-run-stream");
15
+ const PROJECT_AGENT_SANDBOX_BASH_TOOL_NAME = "bash";
12
16
  function getAgentAllowedRemoteToolNames(agent) {
13
17
  const raw = agent.config.allowedRemoteTools;
14
18
  return Array.isArray(raw) && raw.every((toolName) => typeof toolName === "string") ? raw : [];
@@ -37,7 +41,7 @@ function createInjectedStudioTool(runId, toolName, description, parameters, sess
37
41
  },
38
42
  };
39
43
  }
40
- function buildMergedTools(agent, input, sessionManager, availableForwardedToolNames) {
44
+ function buildMergedTools(agent, input, sessionManager, availableForwardedToolNames, availableLocalTools) {
41
45
  const injectedTools = Object.fromEntries(input.tools.map((tool) => [
42
46
  tool.name,
43
47
  createInjectedStudioTool(input.runId, tool.name, tool.description, tool.inputSchema ?? tool.parameters, sessionManager),
@@ -63,9 +67,10 @@ function buildMergedTools(agent, input, sessionManager, availableForwardedToolNa
63
67
  for (const [toolName, entry] of Object.entries(agent.config.tools)) {
64
68
  if (entry === true) {
65
69
  if (toolRegistry.get(toolName) ||
70
+ availableLocalTools?.[toolName] ||
66
71
  availableForwardedToolNames?.includes(toolName) ||
67
72
  sourceAllowedRemoteToolNames.includes(toolName)) {
68
- merged[toolName] = true;
73
+ merged[toolName] = availableLocalTools?.[toolName] ?? true;
69
74
  }
70
75
  continue;
71
76
  }
@@ -76,6 +81,69 @@ function buildMergedTools(agent, input, sessionManager, availableForwardedToolNa
76
81
  const filtered = { ...merged, ...injectedTools };
77
82
  return Object.keys(filtered).length > 0 ? filtered : undefined;
78
83
  }
84
+ async function loadDefaultCreateBashTool() {
85
+ const provider = tryResolve(SandboxShellToolsProviderName);
86
+ if (provider)
87
+ return provider;
88
+ const { createBashSandboxShellToolsProvider } = await import("../../extensions/ext-sandbox-shell-tools/src/index.js");
89
+ return createBashSandboxShellToolsProvider;
90
+ }
91
+ function getStringProperty(value, keys) {
92
+ for (const key of keys) {
93
+ const candidate = value[key];
94
+ if (typeof candidate === "string" && candidate.trim()) {
95
+ return candidate.trim();
96
+ }
97
+ }
98
+ return undefined;
99
+ }
100
+ function getAgentSandboxConfig(agent) {
101
+ const config = agent.config;
102
+ if (!isRecord(config.sandbox)) {
103
+ return {};
104
+ }
105
+ return {
106
+ sandboxId: getStringProperty(config.sandbox, ["id", "sandboxId", "sessionId"]),
107
+ projectId: getStringProperty(config.sandbox, ["projectId"]),
108
+ };
109
+ }
110
+ function shouldExposeSandboxBash(agent) {
111
+ const tools = agent.config.tools;
112
+ return isRecord(tools) && tools[PROJECT_AGENT_SANDBOX_BASH_TOOL_NAME] === true;
113
+ }
114
+ async function buildProjectAgentSandboxTools(input) {
115
+ if (!shouldExposeSandboxBash(input.agent)) {
116
+ return {};
117
+ }
118
+ const sandboxConfig = getAgentSandboxConfig(input.agent);
119
+ const createBashTool = input.deps.createBashTool ?? await loadDefaultCreateBashTool();
120
+ const createSandboxTools = input.deps.createAgentServiceSandboxTools ??
121
+ createAgentServiceSandboxTools;
122
+ const sandboxResult = await createSandboxTools({
123
+ createBashTool,
124
+ ...(input.deps.projectAgentSandbox?.apiUrl
125
+ ? { apiUrl: input.deps.projectAgentSandbox.apiUrl }
126
+ : {}),
127
+ ...(input.deps.projectAgentSandbox?.authToken
128
+ ? { authToken: input.deps.projectAgentSandbox.authToken }
129
+ : {}),
130
+ ...(sandboxConfig.sandboxId
131
+ ? { sandboxId: sandboxConfig.sandboxId, deleteOnClose: false }
132
+ : {}),
133
+ getProjectId: () => sandboxConfig.projectId ?? input.deps.projectAgentSandbox?.projectId,
134
+ });
135
+ const bash = sandboxResult.tools[PROJECT_AGENT_SANDBOX_BASH_TOOL_NAME];
136
+ if (!bash) {
137
+ await sandboxResult.closeSandbox();
138
+ return {};
139
+ }
140
+ return {
141
+ tools: {
142
+ [PROJECT_AGENT_SANDBOX_BASH_TOOL_NAME]: bash,
143
+ },
144
+ closeSandbox: sandboxResult.closeSandbox,
145
+ };
146
+ }
79
147
  function isRecord(value) {
80
148
  return typeof value === "object" && value !== null && !Array.isArray(value);
81
149
  }
@@ -126,7 +194,8 @@ export async function createRuntimeAgentStreamResponse(input, agent, deps) {
126
194
  const allowedRemoteToolNames = getAllowedRemoteToolNames(input.forwardedProps);
127
195
  const forwardedIntegrationToolDefs = getForwardedIntegrationToolDefinitions(input.forwardedProps);
128
196
  const availableForwardedToolNames = forwardedIntegrationToolDefs?.map((tool) => tool.name);
129
- const mergedTools = buildMergedTools(agent, input, deps.sessionManager, availableForwardedToolNames);
197
+ const sandboxTools = await buildProjectAgentSandboxTools({ agent, deps });
198
+ const mergedTools = buildMergedTools(agent, input, deps.sessionManager, availableForwardedToolNames, sandboxTools.tools);
130
199
  const runtimeAgent = {
131
200
  ...agent,
132
201
  config: {
@@ -167,6 +236,13 @@ export async function createRuntimeAgentStreamResponse(input, agent, deps) {
167
236
  }
168
237
  catch (error) {
169
238
  deps.sessionManager.failRun(input.runId);
239
+ await sandboxTools.closeSandbox?.().catch((cleanupError) => {
240
+ logger.warn("Internal agent runtime sandbox cleanup failed after setup error", {
241
+ runId: input.runId,
242
+ agentId: agent.id,
243
+ error: cleanupError instanceof Error ? cleanupError.message : String(cleanupError),
244
+ });
245
+ });
170
246
  logger.error("Internal agent runtime stream setup failed", {
171
247
  runId: input.runId,
172
248
  threadId: input.threadId,
@@ -303,6 +379,13 @@ export async function createRuntimeAgentStreamResponse(input, agent, deps) {
303
379
  if (clientAttached) {
304
380
  controller.close();
305
381
  }
382
+ await sandboxTools.closeSandbox?.().catch((cleanupError) => {
383
+ logger.warn("Internal agent runtime sandbox cleanup failed", {
384
+ runId: input.runId,
385
+ agentId: agent.id,
386
+ error: cleanupError instanceof Error ? cleanupError.message : String(cleanupError),
387
+ });
388
+ });
306
389
  logger.debug("Internal agent runtime stream response closed", {
307
390
  runId: input.runId,
308
391
  threadId: input.threadId,
@@ -1,6 +1,15 @@
1
1
  import { type BackgroundCommand, type BackgroundCommandOutput, type ExecOptions, type ExecResult, type ExecStreamEvent, type SandboxOptions } from "./types.js";
2
2
  /** Options accepted by lazy sandbox. */
3
3
  export interface LazySandboxOptions extends SandboxOptions {
4
+ /**
5
+ * Optional existing sandbox session to attach to instead of creating a new one.
6
+ * Attached sessions are detached, not deleted, on close unless deleteOnClose is true.
7
+ */
8
+ sandboxId?: string;
9
+ /** Optional known endpoint for sandboxId; avoids the initial control-plane lookup. */
10
+ sandboxEndpoint?: string;
11
+ /** Delete the sandbox when closing. Defaults to true for created sessions and false for sandboxId. */
12
+ deleteOnClose?: boolean;
4
13
  getProjectId?: () => string | null | undefined;
5
14
  startupTimeoutMs?: number;
6
15
  pollIntervalMs?: number;
@@ -23,6 +32,9 @@ export declare function resolveDefaultSandboxRuntimeEndpoint(input: {
23
32
  export declare class LazySandbox {
24
33
  private readonly apiUrl;
25
34
  private readonly authToken;
35
+ private readonly sandboxId;
36
+ private readonly sandboxEndpoint;
37
+ private readonly deleteOnClose;
26
38
  private readonly getProjectId;
27
39
  private readonly startupTimeoutMs;
28
40
  private readonly pollIntervalMs;
@@ -63,6 +75,8 @@ export declare class LazySandbox {
63
75
  get isActive(): boolean;
64
76
  private bootstrapSession;
65
77
  private resolveReadyEndpoint;
78
+ private attachExistingSession;
79
+ private getSession;
66
80
  private waitForReadySession;
67
81
  private touchSession;
68
82
  private startHeartbeatLoop;
@@ -1 +1 @@
1
- {"version":3,"file":"lazy-sandbox.d.ts","sourceRoot":"","sources":["../../../src/src/sandbox/lazy-sandbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lazy-sandbox.d.ts","sourceRoot":"","sources":["../../../src/src/sandbox/lazy-sandbox.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,9 @@ export function resolveDefaultSandboxRuntimeEndpoint(input) {
40
40
  export class LazySandbox {
41
41
  apiUrl;
42
42
  authToken;
43
+ sandboxId;
44
+ sandboxEndpoint;
45
+ deleteOnClose;
43
46
  getProjectId;
44
47
  startupTimeoutMs;
45
48
  pollIntervalMs;
@@ -62,6 +65,9 @@ export class LazySandbox {
62
65
  constructor(options = {}) {
63
66
  this.apiUrl = resolveSandboxApiUrl(options);
64
67
  this.authToken = resolveSandboxAuthToken(options);
68
+ this.sandboxId = options.sandboxId?.trim() || undefined;
69
+ this.sandboxEndpoint = options.sandboxEndpoint?.trim() || undefined;
70
+ this.deleteOnClose = options.deleteOnClose ?? !this.sandboxId;
65
71
  this.getProjectId = options.getProjectId ?? (() => options.projectId);
66
72
  this.startupTimeoutMs = options.startupTimeoutMs ?? DEFAULT_STARTUP_TIMEOUT_MS;
67
73
  this.pollIntervalMs = options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS;
@@ -313,7 +319,9 @@ export class LazySandbox {
313
319
  this.resetSessionState();
314
320
  return;
315
321
  }
316
- await this.deleteSession(currentSessionId);
322
+ if (this.deleteOnClose) {
323
+ await this.deleteSession(currentSessionId);
324
+ }
317
325
  this.resetSessionState(currentSessionId);
318
326
  })(),
319
327
  };
@@ -337,6 +345,10 @@ export class LazySandbox {
337
345
  return this.endpoint !== null;
338
346
  }
339
347
  async bootstrapSession() {
348
+ if (this.sandboxId) {
349
+ await this.attachExistingSession(this.sandboxId);
350
+ return;
351
+ }
340
352
  const projectId = this.resolveProjectId();
341
353
  const res = await this.fetchControl(`${this.apiUrl}/sandbox-sessions`, {
342
354
  method: "POST",
@@ -359,7 +371,7 @@ export class LazySandbox {
359
371
  }
360
372
  catch (error) {
361
373
  const currentSessionId = this.sessionId;
362
- if (currentSessionId) {
374
+ if (currentSessionId && this.deleteOnClose) {
363
375
  await this.deleteSession(currentSessionId);
364
376
  }
365
377
  this.resetSessionState(currentSessionId ?? undefined);
@@ -372,6 +384,34 @@ export class LazySandbox {
372
384
  }
373
385
  return (await this.waitForReadySession(session.id)).endpoint;
374
386
  }
387
+ async attachExistingSession(sessionId) {
388
+ const projectId = this.resolveProjectId();
389
+ this.sessionId = sessionId;
390
+ this.sessionProjectId = projectId;
391
+ try {
392
+ const session = this.sandboxEndpoint
393
+ ? { id: sessionId, endpoint: this.sandboxEndpoint, status: "running" }
394
+ : await this.getSession(sessionId);
395
+ this.endpoint = await this.resolveReadyEndpoint(session);
396
+ await this.heartbeat(true);
397
+ this.startHeartbeatLoop();
398
+ }
399
+ catch (error) {
400
+ this.resetSessionState(sessionId);
401
+ throw error;
402
+ }
403
+ }
404
+ async getSession(sessionId) {
405
+ const res = await this.fetchControl(`${this.apiUrl}/sandbox-sessions/${sessionId}`, {
406
+ headers: this.authHeaders(),
407
+ });
408
+ if (!res.ok) {
409
+ throw REQUEST_ERROR.create({
410
+ detail: `Failed to get sandbox: ${res.status} ${await res.text()}`,
411
+ });
412
+ }
413
+ return await res.json();
414
+ }
375
415
  async waitForReadySession(sessionId) {
376
416
  const start = Date.now();
377
417
  while (Date.now() - start < this.startupTimeoutMs) {
@@ -396,7 +436,7 @@ export class LazySandbox {
396
436
  }
397
437
  async touchSession() {
398
438
  const projectId = this.resolveProjectId();
399
- if (this.endpoint && this.sessionProjectId !== projectId) {
439
+ if (!this.sandboxId && this.endpoint && this.sessionProjectId !== projectId) {
400
440
  const currentSessionId = this.sessionId;
401
441
  if (currentSessionId) {
402
442
  await this.deleteSession(currentSessionId);
@@ -514,7 +554,9 @@ export class LazySandbox {
514
554
  const sessionId = this.sessionId;
515
555
  if (!sessionId)
516
556
  return;
517
- await this.deleteSession(sessionId);
557
+ if (this.deleteOnClose) {
558
+ await this.deleteSession(sessionId);
559
+ }
518
560
  this.resetSessionState(sessionId);
519
561
  }
520
562
  resolveRuntimeEndpoint() {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-stream.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/agent-stream.handler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,4BAA4B,EAE7B,MAAM,2CAA2C,CAAC;AAwBnD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AAUnG,MAAM,WAAW,sBACf,SAAQ,yBAAyB,EAAE,+BAA+B;IAClE,4BAA4B,CAAC,EAAE,OAAO,4BAA4B,CAAC;CACpE;AAyND,qBAAa,kBAAmB,SAAQ,WAAW;IASrC,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC,QAAQ,EAAE,eAAe,CAMvB;gBAE2B,IAAI,GAAE,sBAAoC;IAIvE,OAAO,CAAC,sBAAsB;IAwBxB,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAwJxE"}
1
+ {"version":3,"file":"agent-stream.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/agent-stream.handler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,4BAA4B,EAE7B,MAAM,2CAA2C,CAAC;AAwBnD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AAUnG,MAAM,WAAW,sBACf,SAAQ,yBAAyB,EAAE,+BAA+B;IAClE,4BAA4B,CAAC,EAAE,OAAO,4BAA4B,CAAC;CACpE;AAyND,qBAAa,kBAAmB,SAAQ,WAAW;IASrC,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC,QAAQ,EAAE,eAAe,CAMvB;gBAE2B,IAAI,GAAE,sBAAoC;IAIvE,OAAO,CAAC,sBAAsB;IAwBxB,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CA+JxE"}
@@ -23,7 +23,7 @@ const VERYFRONT_PLATFORM_REMOTE_TOOL_SOURCE_ID = "veryfront-platform-mcp";
23
23
  const VERYFRONT_PLATFORM_REMOTE_TOOL_NAMES = new Set(["search_knowledge", "get_file"]);
24
24
  // Per-environment env var cache shared across all agent stream requests (60s TTL)
25
25
  const _agentEnvVarCache = new EnvironmentVariableCache((environmentId, token, projectSlug) => {
26
- const apiBaseUrl = getHostEnv("VERYFRONT_API_URL") ?? "https://api.veryfront.org";
26
+ const apiBaseUrl = getHostEnv("VERYFRONT_API_URL") ?? "https://api.veryfront.com";
27
27
  return fetchProjectEnvVars(apiBaseUrl, projectSlug, environmentId, token);
28
28
  });
29
29
  // Cache: projectSlug → production environmentId (stable across restarts)
@@ -32,7 +32,7 @@ async function _resolveProductionEnvironmentId(projectSlug, token) {
32
32
  const cached = _productionEnvIdCache.get(projectSlug);
33
33
  if (cached)
34
34
  return cached;
35
- const apiBaseUrl = getHostEnv("VERYFRONT_API_URL") ?? "https://api.veryfront.org";
35
+ const apiBaseUrl = getHostEnv("VERYFRONT_API_URL") ?? "https://api.veryfront.com";
36
36
  try {
37
37
  const res = await fetch(`${apiBaseUrl}/projects/${encodeURIComponent(projectSlug)}/environments`, { headers: { Authorization: `Bearer ${token}`, Accept: "application/json" } });
38
38
  if (!res.ok) {
@@ -78,7 +78,7 @@ function withVeryfrontPlatformRemoteTools(input) {
78
78
  if (requestedToolNames.length === 0 || !input.token) {
79
79
  return input.agent;
80
80
  }
81
- const apiUrl = getHostEnv("VERYFRONT_API_URL") ?? "https://api.veryfront.org";
81
+ const apiUrl = getHostEnv("VERYFRONT_API_URL") ?? "https://api.veryfront.com";
82
82
  const remoteTools = input.agent.config.remoteTools ?? [];
83
83
  const platformRemoteToolSource = hasVeryfrontPlatformRemoteToolSource(remoteTools) ? [] : [
84
84
  createRemoteMCPToolSource({
@@ -97,7 +97,7 @@ function withVeryfrontPlatformRemoteTools(input) {
97
97
  };
98
98
  }
99
99
  function buildAgentStreamEnv(input) {
100
- const apiUrl = getHostEnv("VERYFRONT_API_URL") ?? "https://api.veryfront.org";
100
+ const apiUrl = getHostEnv("VERYFRONT_API_URL") ?? "https://api.veryfront.com";
101
101
  return {
102
102
  ...input.envVars,
103
103
  // Framework-owned values must override project env to keep request-scoped
@@ -249,7 +249,14 @@ export class AgentStreamHandler extends BaseHandler {
249
249
  });
250
250
  }
251
251
  }
252
- const runAgentStream = () => createRuntimeAgentStreamResponse(runtimeInput, runtimeAgent, this.deps);
252
+ const runAgentStream = () => createRuntimeAgentStreamResponse(runtimeInput, runtimeAgent, {
253
+ ...this.deps,
254
+ projectAgentSandbox: {
255
+ apiUrl: getHostEnv("VERYFRONT_API_URL") ?? "https://api.veryfront.com",
256
+ authToken: ctx.proxyToken || getHostEnv("VERYFRONT_API_TOKEN") || undefined,
257
+ projectId: ctx.projectId ?? null,
258
+ },
259
+ });
253
260
  const shouldIsolateEnv = !!ctx.proxyToken;
254
261
  const response = shouldIsolateEnv
255
262
  ? await runWithProjectEnv(buildAgentStreamEnv({
@@ -1 +1 @@
1
- {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../../../../../src/src/transforms/pipeline/stages/ssr-vf-modules/transform.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAarE,OAAO,EAOL,KAAK,gBAAgB,EAGtB,MAAM,gBAAgB,CAAC;AAKxB;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,GACtC,OAAO,CAAC,MAAM,CAAC,CA2BjB;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,gBAAgB,EACrB,oBAAoB,UAAQ,EAC5B,KAAK,SAAI,GACR,OAAO,CAAC,MAAM,CAAC,CAyQjB;AAED;;;GAGG;AACH,wBAAsB,kCAAkC,CACtD,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4CxB;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,GACtC,OAAO,CAAC,MAAM,CAAC,CAEjB"}
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../../../../../src/src/transforms/pipeline/stages/ssr-vf-modules/transform.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAarE,OAAO,EAOL,KAAK,gBAAgB,EAGtB,MAAM,gBAAgB,CAAC;AAKxB;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,GACtC,OAAO,CAAC,MAAM,CAAC,CA2BjB;AAqLD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,gBAAgB,EACrB,oBAAoB,UAAQ,EAC5B,KAAK,SAAI,GACR,OAAO,CAAC,MAAM,CAAC,CAiQjB;AAED;;;GAGG;AACH,wBAAsB,kCAAkC,CACtD,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4CxB;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,GACtC,OAAO,CAAC,MAAM,CAAC,CAEjB"}
@@ -63,6 +63,157 @@ export async function cacheTransformedCode(transformed, vfModulePath, fs) {
63
63
  return cachePath;
64
64
  });
65
65
  }
66
+ // Fallback-only cache for depth-limit fallback transforms. Kept separate
67
+ // from `frameworkFileCache` so the fallback's esbuild-only output never
68
+ // poisons the main path, which expects fully-resolved code (`#veryfront/`,
69
+ // React, HTTP imports all rewritten). The fallback still reads
70
+ // `frameworkFileCache` first, so when the main path has already produced
71
+ // a high-quality entry the fallback prefers it.
72
+ const fallbackTransformCache = new Map();
73
+ /**
74
+ * Pick an esbuild loader for a file path, honoring the embedded `.src`
75
+ * suffix used in compiled binaries (`foo.ts.src` → `ts`). Recognizes
76
+ * `.mjs`/`.cjs` as plain JS and `.mts`/`.cts` as TypeScript.
77
+ */
78
+ function pickFallbackLoader(sourcePath) {
79
+ const ext = sourcePath
80
+ .match(/\.(tsx?|jsx?|m[jt]s|c[jt]s)(?:\.src)?$/i)?.[1]
81
+ ?.toLowerCase();
82
+ if (ext === "tsx")
83
+ return "tsx";
84
+ if (ext === "ts" || ext === "mts" || ext === "cts")
85
+ return "ts";
86
+ if (ext === "jsx")
87
+ return "jsx";
88
+ return "js";
89
+ }
90
+ /**
91
+ * Compile a framework source file with esbuild only (no recursive
92
+ * import resolution). Used by the depth-limit fallback and by its
93
+ * nested handling of embedded `.src` dependencies.
94
+ */
95
+ async function compileFallbackSource(content, sourcePath) {
96
+ const { transform } = await import("../../../../extensions/bundler/index.js");
97
+ const result = await transform(content, {
98
+ loader: pickFallbackLoader(sourcePath),
99
+ jsx: "automatic",
100
+ jsxImportSource: "react",
101
+ format: "esm",
102
+ target: "es2022",
103
+ });
104
+ return result.code;
105
+ }
106
+ /**
107
+ * Transform and cache a single dependency referenced from the depth-limit
108
+ * fallback. Required for compiled binaries where the resolver returns
109
+ * embedded `.src` paths (e.g. `foo.ts.src`) — those are not loadable
110
+ * module URLs, so the fallback must materialize a real `.mjs` cache file.
111
+ *
112
+ * Recursion is bounded by `visited` (cycle guard) and by `frameworkFileCache`
113
+ * (per-process dedupe), the same primitives the main transform path uses.
114
+ */
115
+ async function transformAndCacheFallbackDep(resolvedPath, ctx, visited) {
116
+ // Prefer the main path's fully-resolved cache entry when present —
117
+ // that output is strictly higher quality than what the fallback
118
+ // produces (no `#veryfront/` / React / HTTP rewriting here). But
119
+ // never propagate a cycle placeholder: the main path stores those
120
+ // mid-transform and treats them as invalid (see `isCyclePlaceholder`
121
+ // / the cache-invalidation branch upstream). If the fallback wrote
122
+ // a placeholder into a cache file, an importer would silently see
123
+ // `export {}` and any named import would be `undefined` at runtime.
124
+ const mainCached = frameworkFileCache.get(resolvedPath);
125
+ if (mainCached && !isCyclePlaceholder(mainCached)) {
126
+ return await cacheTransformedCode(mainCached, resolvedPath, ctx.fs);
127
+ }
128
+ const fallbackCached = fallbackTransformCache.get(resolvedPath);
129
+ if (fallbackCached) {
130
+ return await cacheTransformedCode(fallbackCached, resolvedPath, ctx.fs);
131
+ }
132
+ if (visited.has(resolvedPath)) {
133
+ // Cycle: bail and leave the parent's import bare. Logged so a stuck
134
+ // dev server isn't silently producing un-loadable cache files.
135
+ logger.warn(`${LOG_PREFIX} Depth-limit fallback skipping cycle`, { resolvedPath: resolvedPath.slice(-60) });
136
+ return null;
137
+ }
138
+ visited.add(resolvedPath);
139
+ let depContent;
140
+ try {
141
+ depContent = await ctx.fs.readTextFile(resolvedPath);
142
+ }
143
+ catch (error) {
144
+ logger.warn(`${LOG_PREFIX} Depth-limit fallback could not read dependency`, { resolvedPath: resolvedPath.slice(-60), error: String(error) });
145
+ return null;
146
+ }
147
+ // Catch esbuild failures (bad syntax, encoding issues) so one bad
148
+ // `.src` dep does not abort the entire top-level fallback. The bare
149
+ // import is left in the parent and the runtime's own loader will
150
+ // surface a clear "Module not found" instead of a stack trace
151
+ // pointing at an unrelated parent file.
152
+ let compiled;
153
+ try {
154
+ compiled = await compileFallbackSource(depContent, resolvedPath);
155
+ }
156
+ catch (error) {
157
+ logger.warn(`${LOG_PREFIX} Depth-limit fallback could not compile dependency`, { resolvedPath: resolvedPath.slice(-60), error: String(error) });
158
+ return null;
159
+ }
160
+ const rewritten = await rewriteFallbackRelativeImports(compiled, resolvedPath, ctx, visited);
161
+ fallbackTransformCache.set(resolvedPath, rewritten);
162
+ return await cacheTransformedCode(rewritten, resolvedPath, ctx.fs);
163
+ }
164
+ /**
165
+ * Rewrite relative imports in the depth-limit fallback output. Each
166
+ * `./foo.js` / `../bar.js` is resolved against `sourcePath` and emitted
167
+ * as an absolute `file://` URL so the cached fallback module is
168
+ * executable from the cache directory.
169
+ *
170
+ * In dev mode the resolver returns a `.ts` / `.js` path the runtime can
171
+ * load directly, so we point at the source file. In compiled binaries
172
+ * it returns a `.src` path the runtime cannot load — those deps are
173
+ * transformed and cached on the fly via {@link transformAndCacheFallbackDep}
174
+ * and the import is rewritten to the resulting cache URL. Imports that
175
+ * fail to resolve are left untouched and a warning is logged.
176
+ */
177
+ async function rewriteFallbackRelativeImports(code, sourcePath, ctx, visited = new Set()) {
178
+ visited.add(sourcePath);
179
+ const relativeImports = findRelativeImports(code);
180
+ if (relativeImports.length === 0)
181
+ return code;
182
+ const replacements = new Map();
183
+ for (const specifier of relativeImports) {
184
+ // Skip non-code imports the runtime cannot load this way.
185
+ if (/\.(json|css|svg|png|jpg|jpeg|gif|ico|woff2?|ttf|eot)$/.test(specifier)) {
186
+ continue;
187
+ }
188
+ const resolvedPath = await resolveRelativeFrameworkImport(specifier, sourcePath, ctx.fs);
189
+ if (!resolvedPath) {
190
+ logger.warn(`${LOG_PREFIX} Depth-limit fallback could not resolve relative import "${specifier}"`, { sourcePath: sourcePath.slice(-60) });
191
+ continue;
192
+ }
193
+ // Embedded sources (.tsx.src / .ts.src / .jsx.src / .js.src) used by
194
+ // compiled binaries are not loadable by the runtime. Materialize a
195
+ // cache file the runtime can import instead of linking at the .src
196
+ // source. Regular .ts/.tsx/.js/.jsx/.mjs paths are pointed at
197
+ // directly — the runtime handles them natively.
198
+ if (resolvedPath.endsWith(".src")) {
199
+ const cacheUrlPath = await transformAndCacheFallbackDep(resolvedPath, ctx, visited);
200
+ if (!cacheUrlPath)
201
+ continue;
202
+ replacements.set(specifier, `file://${cacheUrlPath}`);
203
+ }
204
+ else {
205
+ replacements.set(specifier, `file://${resolvedPath}`);
206
+ }
207
+ }
208
+ if (replacements.size === 0)
209
+ return code;
210
+ return await replaceSpecifiers(code, (specifier) => {
211
+ if (specifier.startsWith("./") || specifier.startsWith("../")) {
212
+ return replacements.get(specifier) ?? null;
213
+ }
214
+ return null;
215
+ });
216
+ }
66
217
  /**
67
218
  * Core transformation logic for framework TypeScript/TSX files.
68
219
  * Compiles to JavaScript and recursively resolves all imports:
@@ -76,24 +227,13 @@ export async function transformFrameworkCode(content, sourcePath, ctx, throwOnMi
76
227
  sourcePath: sourcePath.slice(-60),
77
228
  depth,
78
229
  });
79
- // Return minimally transformed code - it will fail at runtime but won't hang
80
- const { transform } = await import("../../../../extensions/bundler/index.js");
81
- const ext = sourcePath.match(/\.(tsx?|jsx?)$/)?.[1] ?? "tsx";
82
- let loader = "js";
83
- if (ext === "tsx")
84
- loader = "tsx";
85
- else if (ext === "ts")
86
- loader = "ts";
87
- else if (ext === "jsx")
88
- loader = "jsx";
89
- const result = await transform(content, {
90
- loader,
91
- jsx: "automatic",
92
- jsxImportSource: "react",
93
- format: "esm",
94
- target: "es2022",
95
- });
96
- return result.code;
230
+ // Compile the file, then rewrite its relative imports so the cached
231
+ // fallback module is loadable from the cache directory. Without this
232
+ // rewriting the fallback emits raw `./foo.js` imports that resolve
233
+ // against the cache dir (where those siblings do not exist), producing
234
+ // a runtime "Module not found".
235
+ const compiled = await compileFallbackSource(content, sourcePath);
236
+ return await rewriteFallbackRelativeImports(compiled, sourcePath, ctx);
97
237
  }
98
238
  // Check if already transformed (before cycle check to handle concurrent requests)
99
239
  // This prevents false cycle detection when another request has already completed
@@ -1,3 +1,3 @@
1
1
  /** Shared version value. */
2
- export declare const VERSION = "0.1.600";
2
+ export declare const VERSION = "0.1.601";
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.600";
4
+ export const VERSION = "0.1.601";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.600",
3
+ "version": "0.1.601",
4
4
  "description": "The simplest way to build AI-powered apps",
5
5
  "keywords": [
6
6
  "react",