@agent-native/core 0.78.3 → 0.78.5

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.
@@ -1,5 +1,18 @@
1
1
  # @agent-native/core
2
2
 
3
+ ## 0.78.5
4
+
5
+ ### Patch Changes
6
+
7
+ - 2a5a74b: diag(agent): add a `worker_stage` column that records the durable background worker's last-reached setup stage independently of the foreground inline-recovery `setup_timings` write, plus early `engine_resolved` / `systemprompt_enter` / `systemprompt_done` markers. `/runs/active` now surfaces `workerStage`, so a worker that stalls before claiming its run is diagnosable (which exact step it reached) without the unreadable Netlify background-function logs.
8
+
9
+ ## 0.78.4
10
+
11
+ ### Patch Changes
12
+
13
+ - 776041c: Keep mounted app browser bundles and manifests from escaping their app base path.
14
+ - 776041c: Keep Nitro/Vite dev servers running when native file watchers hit EMFILE or ENOSPC, and avoid watching generated template metadata directories.
15
+
3
16
  ## 0.78.3
4
17
 
5
18
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.78.3",
3
+ "version": "0.78.5",
4
4
  "description": "Framework for agent-native application development — where AI agents and UI share SQL state, actions, and context",
5
5
  "homepage": "https://github.com/BuilderIO/agent-native#readme",
6
6
  "bugs": {
@@ -4177,6 +4177,13 @@ export function createProductionAgentHandler(
4177
4177
  );
4178
4178
 
4179
4179
  options.onEngineResolved?.(engine, model);
4180
+ // DIAGNOSTIC-ONLY: localize where the worker stalls AFTER model_done. These
4181
+ // land in `worker_stage` (foreground-independent), so even though the
4182
+ // foreground overwrites `diag_stage` on inline recovery, the worker's last
4183
+ // reached point survives. If the last worker_stage is `model_done`, writes
4184
+ // hang right after model resolution (DB connection); if it's
4185
+ // `engine_resolved`/`systemprompt_enter`, the stall is in the named step.
4186
+ workerStep("engine_resolved");
4180
4187
 
4181
4188
  // One-line per-turn resolution log so it's obvious in dev which engine
4182
4189
  // is actually handling the request. `requestEngine` is what the client
@@ -4229,10 +4236,18 @@ export function createProductionAgentHandler(
4229
4236
  const systemPromptThunk = (): Promise<string> =>
4230
4237
  (async (): Promise<string> => {
4231
4238
  const sysPromptStart = Date.now();
4239
+ // Brackets the system-prompt build (which runs the template's
4240
+ // extraContext / data-dictionary). If worker_stage stalls at
4241
+ // `systemprompt_enter` with no `systemprompt_done`, the build itself is
4242
+ // the stall point.
4243
+ workerStep("systemprompt_enter");
4232
4244
  try {
4233
- return typeof options.systemPrompt === "function"
4234
- ? await options.systemPrompt(event)
4235
- : options.systemPrompt;
4245
+ const built =
4246
+ typeof options.systemPrompt === "function"
4247
+ ? await options.systemPrompt(event)
4248
+ : options.systemPrompt;
4249
+ workerStep("systemprompt_done");
4250
+ return built;
4236
4251
  } catch (error) {
4237
4252
  systemPromptError = error;
4238
4253
  return "";
@@ -172,6 +172,7 @@ async function ensureRunTables(): Promise<void> {
172
172
  ["error_detail", "TEXT"],
173
173
  ["dispatch_mode", "TEXT"],
174
174
  ["diag_stage", "TEXT"],
175
+ ["worker_stage", "TEXT"],
175
176
  ] as const) {
176
177
  await ensureColumnExists(
177
178
  "agent_runs",
@@ -248,6 +249,7 @@ async function ensureRunTables(): Promise<void> {
248
249
  "error_detail",
249
250
  "dispatch_mode",
250
251
  "diag_stage",
252
+ "worker_stage",
251
253
  ] as const) {
252
254
  try {
253
255
  await client.execute(`ALTER TABLE agent_runs ADD COLUMN ${col} TEXT`);
@@ -449,12 +451,13 @@ export async function readBackgroundRunClaim(runId: string): Promise<{
449
451
  dispatchMode: string | null;
450
452
  status: string | null;
451
453
  diagStage: string | null;
454
+ workerStage: string | null;
452
455
  lastLivenessAt: number | null;
453
456
  } | null> {
454
457
  await ensureRunTables();
455
458
  const client = getDbExec();
456
459
  const { rows } = await client.execute({
457
- sql: `SELECT dispatch_mode, status, diag_stage, started_at, heartbeat_at FROM agent_runs WHERE id = ? LIMIT 1`,
460
+ sql: `SELECT dispatch_mode, status, diag_stage, worker_stage, started_at, heartbeat_at FROM agent_runs WHERE id = ? LIMIT 1`,
458
461
  args: [runId],
459
462
  });
460
463
  const row = rows?.[0] as
@@ -462,6 +465,7 @@ export async function readBackgroundRunClaim(runId: string): Promise<{
462
465
  dispatch_mode?: string | null;
463
466
  status?: string | null;
464
467
  diag_stage?: string | null;
468
+ worker_stage?: string | null;
465
469
  started_at?: number | null;
466
470
  heartbeat_at?: number | null;
467
471
  }
@@ -471,6 +475,7 @@ export async function readBackgroundRunClaim(runId: string): Promise<{
471
475
  dispatchMode: row.dispatch_mode ?? null,
472
476
  status: row.status ?? null,
473
477
  diagStage: row.diag_stage ?? null,
478
+ workerStage: row.worker_stage ?? null,
474
479
  // Same liveness basis the unclaimed-reaper uses (COALESCE(heartbeat_at,
475
480
  // started_at)), so the foreground can decide to recover BEFORE the reaper.
476
481
  lastLivenessAt: row.heartbeat_at ?? row.started_at ?? null,
@@ -644,10 +649,26 @@ export async function recordRunDiagnostic(
644
649
  ...(detail ? { detail: detail.slice(0, 1500) } : {}),
645
650
  at: Date.now(),
646
651
  }).slice(0, 2000);
647
- await client.execute({
648
- sql: `UPDATE agent_runs SET diag_stage = ? WHERE id = ?`,
649
- args: [payload, runId],
650
- });
652
+ // Worker-setup stages ALSO land in `worker_stage`, a column the foreground's
653
+ // inline-recovery `setup_timings` write never touches. `/runs/active` only
654
+ // surfaces a run after it is claimed, and the foreground then overwrites
655
+ // `diag_stage` — so without this the durable worker's pre-claim progression
656
+ // (where it stalled before claiming) is unrecoverable. `worker_stage`
657
+ // preserves the last worker stage reached for post-hoc diagnosis.
658
+ const isWorkerStage =
659
+ stage === RUN_DIAG_STAGE.workerSetupStep ||
660
+ stage === RUN_DIAG_STAGE.workerStarted;
661
+ if (isWorkerStage) {
662
+ await client.execute({
663
+ sql: `UPDATE agent_runs SET diag_stage = ?, worker_stage = ? WHERE id = ?`,
664
+ args: [payload, payload, runId],
665
+ });
666
+ } else {
667
+ await client.execute({
668
+ sql: `UPDATE agent_runs SET diag_stage = ? WHERE id = ?`,
669
+ args: [payload, runId],
670
+ });
671
+ }
651
672
  } catch {
652
673
  // Diagnostics are best-effort; never let them break the run or the route.
653
674
  }
@@ -124,7 +124,7 @@ export function pgliteDataDirFromUrl(url: string): string {
124
124
  }
125
125
 
126
126
  async function importOptionalModule(specifier: string): Promise<any> {
127
- return import(specifier);
127
+ return import(/* @vite-ignore */ specifier);
128
128
  }
129
129
 
130
130
  function isMissingPackageError(err: unknown, packageName: string): boolean {
@@ -1,9 +1,5 @@
1
- import {
2
- A2AClient,
3
- callAgent,
4
- type Message,
5
- type Task,
6
- } from "@agent-native/core/a2a";
1
+ import { A2AClient, callAgent } from "../a2a/client.js";
2
+ import type { Message, Task } from "../a2a/types.js";
7
3
 
8
4
  export interface AgentEndpointOptions {
9
5
  /**
@@ -61,6 +61,7 @@ import {
61
61
  import { runAgentLoopDirectWithSoftTimeout } from "../agent/run-loop-with-resume.js";
62
62
  import { callerOwnsRun, callerOwnsThread } from "../agent/run-ownership.js";
63
63
  import type { AgentRunSummary } from "../agent/run-store.js";
64
+ import { readBackgroundRunClaim } from "../agent/run-store.js";
64
65
  import { buildRuntimeContextPrompt } from "../agent/runtime-context.js";
65
66
  import {
66
67
  buildAssistantMessage,
@@ -7178,6 +7179,14 @@ Non-code requests are still fine on this surface: read data, navigate the UI, su
7178
7179
  lastProgressAt: null,
7179
7180
  };
7180
7181
  }
7182
+ // The durable worker writes its pre-claim progression to a separate
7183
+ // `worker_stage` column that the foreground inline-recovery's
7184
+ // `setup_timings` write never overwrites — so the worker's last
7185
+ // reached stage (where it stalled before claiming) survives even
7186
+ // after the foreground takes over `diag_stage`. Best-effort.
7187
+ const workerClaim = run.runId
7188
+ ? await readBackgroundRunClaim(run.runId).catch(() => null)
7189
+ : null;
7181
7190
 
7182
7191
  return {
7183
7192
  active: true,
@@ -7195,6 +7204,7 @@ Non-code requests are still fine on this surface: read data, navigate the UI, su
7195
7204
  // `/runs/active?threadId=...` and inspect `diagStage`.
7196
7205
  dispatchMode: run.dispatchMode ?? null,
7197
7206
  diagStage: run.diagStage ?? null,
7207
+ workerStage: workerClaim?.workerStage ?? null,
7198
7208
  // Server clock so the client computes "stuck" elapsed time
7199
7209
  // server-relative, immune to client clock skew.
7200
7210
  serverNow: Date.now(),
@@ -1,10 +1,9 @@
1
1
  import fs from "fs";
2
2
  import type { IncomingMessage, ServerResponse } from "http";
3
- import { createRequire } from "module";
3
+ import { createRequire, syncBuiltinESMExports } from "module";
4
4
  import path from "path";
5
5
  import { fileURLToPath } from "url";
6
6
 
7
- import { nitro as nitroVitePlugin } from "nitro/vite";
8
7
  import type { ConfigEnv, Plugin, UserConfig } from "vite";
9
8
 
10
9
  import { getViteDevRecoveryScript } from "../client/vite-dev-recovery-script.js";
@@ -31,6 +30,59 @@ import { agentsBundlePlugin } from "./agents-bundle-plugin.js";
31
30
 
32
31
  const require = createRequire(import.meta.url);
33
32
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
33
+ let nitroFsWatchGuardInstalled = false;
34
+
35
+ function installNitroFsWatchGuard(): void {
36
+ if (nitroFsWatchGuardInstalled) return;
37
+ nitroFsWatchGuardInstalled = true;
38
+
39
+ const originalWatch = fs.watch.bind(fs) as (...args: any[]) => fs.FSWatcher;
40
+ (fs as typeof fs & { watch: (...args: any[]) => fs.FSWatcher }).watch = (
41
+ ...args: any[]
42
+ ) => {
43
+ let watcher: fs.FSWatcher;
44
+ try {
45
+ watcher = originalWatch(...args);
46
+ } catch (error) {
47
+ const err = error as NodeJS.ErrnoException;
48
+ if (err.code !== "EMFILE" && err.code !== "ENOSPC") throw error;
49
+ console.warn(
50
+ `[agent-native] Disabled Nitro fs.watch for ${String(args[0])}: ${err.message}`,
51
+ );
52
+ return {
53
+ close() {},
54
+ on() {
55
+ return this as fs.FSWatcher;
56
+ },
57
+ } as unknown as fs.FSWatcher;
58
+ }
59
+
60
+ const originalEmit = watcher.emit.bind(watcher);
61
+ watcher.emit = ((eventName: string | symbol, ...eventArgs: any[]) => {
62
+ const err = eventArgs[0] as NodeJS.ErrnoException | undefined;
63
+ if (
64
+ eventName === "error" &&
65
+ (err?.code === "EMFILE" || err?.code === "ENOSPC")
66
+ ) {
67
+ console.warn(
68
+ `[agent-native] Disabled Nitro fs.watch for ${String(args[0])}: ${err.message}`,
69
+ );
70
+ watcher.close();
71
+ return false;
72
+ }
73
+ return originalEmit(eventName, ...eventArgs);
74
+ }) as fs.FSWatcher["emit"];
75
+ return watcher;
76
+ };
77
+ syncBuiltinESMExports();
78
+ }
79
+
80
+ function nitroVitePlugin(
81
+ ...args: Parameters<typeof import("nitro/vite").nitro>
82
+ ) {
83
+ installNitroFsWatchGuard();
84
+ return require("nitro/vite").nitro(...args);
85
+ }
34
86
 
35
87
  /**
36
88
  * Sync discovery for the workspace-core in an enterprise monorepo.
@@ -109,6 +161,88 @@ function findWorkspaceCoreSync(
109
161
  return null;
110
162
  }
111
163
 
164
+ function findLocalWorkspacePackageDeps(
165
+ startDir: string,
166
+ workspaceRoot: string | null,
167
+ ): Array<{ packageName: string; packageDir: string }> {
168
+ if (!workspaceRoot) return [];
169
+ const pkgPath = path.join(startDir, "package.json");
170
+ if (!fs.existsSync(pkgPath)) return [];
171
+
172
+ try {
173
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
174
+ const deps = {
175
+ ...(pkg.dependencies ?? {}),
176
+ ...(pkg.devDependencies ?? {}),
177
+ ...(pkg.peerDependencies ?? {}),
178
+ } as Record<string, string>;
179
+ const req = createRequire(pkgPath);
180
+ const seen = new Set<string>();
181
+ const packages: Array<{ packageName: string; packageDir: string }> = [];
182
+
183
+ for (const [packageName, range] of Object.entries(deps)) {
184
+ if (!range.startsWith("workspace:")) continue;
185
+ if (seen.has(packageName)) continue;
186
+ seen.add(packageName);
187
+
188
+ try {
189
+ const packageJsonPath =
190
+ findInstalledPackageJsonPath(pkgPath, packageName) ??
191
+ findPackageJsonFromEntry(req.resolve(packageName));
192
+ if (!packageJsonPath) continue;
193
+ const packageDir = fs.realpathSync(path.dirname(packageJsonPath));
194
+ if (!packageDir.startsWith(path.join(workspaceRoot, "packages")))
195
+ continue;
196
+ packages.push({ packageName, packageDir });
197
+ } catch {
198
+ // Dependency may not have been installed yet; ignore it for dev config.
199
+ }
200
+ }
201
+
202
+ return packages;
203
+ } catch {
204
+ return [];
205
+ }
206
+ }
207
+
208
+ function findInstalledPackageJsonPath(
209
+ pkgPath: string,
210
+ packageName: string,
211
+ ): string | null {
212
+ const candidate = path.join(
213
+ path.dirname(pkgPath),
214
+ "node_modules",
215
+ ...packageName.split("/"),
216
+ "package.json",
217
+ );
218
+ return fs.existsSync(candidate) ? candidate : null;
219
+ }
220
+
221
+ function findPackageJsonFromEntry(entryPath: string): string | null {
222
+ let dir = fs.statSync(entryPath).isDirectory()
223
+ ? entryPath
224
+ : path.dirname(entryPath);
225
+ for (let i = 0; i < 20; i++) {
226
+ const candidate = path.join(dir, "package.json");
227
+ if (fs.existsSync(candidate)) return candidate;
228
+ const parent = path.dirname(dir);
229
+ if (parent === dir) break;
230
+ dir = parent;
231
+ }
232
+ return null;
233
+ }
234
+
235
+ function findPnpmWorkspaceRoot(startDir: string): string | null {
236
+ let dir = path.resolve(startDir);
237
+ for (let i = 0; i < 20; i++) {
238
+ if (fs.existsSync(path.join(dir, "pnpm-workspace.yaml"))) return dir;
239
+ const parent = path.dirname(dir);
240
+ if (parent === dir) break;
241
+ dir = parent;
242
+ }
243
+ return null;
244
+ }
245
+
112
246
  /** Escape a string so it can be embedded as a regex literal. */
113
247
  function escapeRegex(s: string): string {
114
248
  return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
@@ -1710,6 +1844,51 @@ function arrayFrom<T>(value: T | T[] | undefined): T[] {
1710
1844
  return Array.isArray(value) ? value : [value];
1711
1845
  }
1712
1846
 
1847
+ function localWorkspacePackageAliases(
1848
+ packages: Array<{ packageName: string; packageDir: string }>,
1849
+ ): any[] {
1850
+ const aliases: any[] = [];
1851
+
1852
+ for (const { packageName, packageDir } of packages) {
1853
+ const pkgPath = path.join(packageDir, "package.json");
1854
+ if (!fs.existsSync(pkgPath)) continue;
1855
+
1856
+ try {
1857
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
1858
+ const exportsMap = pkg.exports as Record<string, unknown> | undefined;
1859
+ if (!exportsMap || typeof exportsMap !== "object") continue;
1860
+
1861
+ for (const [exportPath, target] of Object.entries(exportsMap)) {
1862
+ if (typeof target !== "string") continue;
1863
+ const importPath =
1864
+ exportPath === "."
1865
+ ? packageName
1866
+ : `${packageName}${exportPath.slice(1)}`;
1867
+ const replacement = path.resolve(packageDir, target);
1868
+
1869
+ if (importPath.includes("*") || replacement.includes("*")) {
1870
+ aliases.push({
1871
+ find: new RegExp(
1872
+ `^${escapeRegex(importPath).replace("\\*", "(.+)")}$`,
1873
+ ),
1874
+ replacement: replacement.replace("*", "$1"),
1875
+ });
1876
+ continue;
1877
+ }
1878
+
1879
+ aliases.push({
1880
+ find: new RegExp(`^${escapeRegex(importPath)}$`),
1881
+ replacement,
1882
+ });
1883
+ }
1884
+ } catch {
1885
+ // Ignore malformed package metadata; normal package resolution can handle it.
1886
+ }
1887
+ }
1888
+
1889
+ return aliases;
1890
+ }
1891
+
1713
1892
  function aliasArrayFrom(alias: unknown): any[] {
1714
1893
  if (!alias) return [];
1715
1894
  if (Array.isArray(alias)) return alias;
@@ -1721,6 +1900,19 @@ function aliasArrayFrom(alias: unknown): any[] {
1721
1900
  return [];
1722
1901
  }
1723
1902
 
1903
+ const DEFAULT_VITE_WATCH_IGNORES = [
1904
+ "**/.git/**",
1905
+ "**/node_modules/**",
1906
+ "**/.react-router/**",
1907
+ "**/.generated/**",
1908
+ "**/.agents/**",
1909
+ "**/.claude/**",
1910
+ "**/changelog/**",
1911
+ "**/data/**",
1912
+ "**/dist/**",
1913
+ "**/build/**",
1914
+ ];
1915
+
1724
1916
  function forceServeOnly(pluginOrPreset: any): any {
1725
1917
  if (Array.isArray(pluginOrPreset)) return pluginOrPreset.map(forceServeOnly);
1726
1918
  return { ...pluginOrPreset, apply: "serve" };
@@ -1829,9 +2021,26 @@ function createAgentNativeConfig(
1829
2021
  const workspaceNodeModulesAllow = isWorkspaceChild
1830
2022
  ? [path.resolve(cwd, "../../node_modules")]
1831
2023
  : [];
2024
+ const packageWorkspaceRoot = workspaceRoot ?? findPnpmWorkspaceRoot(cwd);
2025
+ const localWorkspacePackageDeps = findLocalWorkspacePackageDeps(
2026
+ cwd,
2027
+ packageWorkspaceRoot,
2028
+ );
2029
+ const localWorkspacePackageAllow = localWorkspacePackageDeps.map(
2030
+ (pkg) => pkg.packageDir,
2031
+ );
2032
+ const localWorkspacePackageResolveAliases = localWorkspacePackageAliases(
2033
+ localWorkspacePackageDeps,
2034
+ );
1832
2035
  const workspaceCoreNoExternal = workspaceCore
1833
2036
  ? [new RegExp(`^${escapeRegex(workspaceCore.packageName)}(/.*)?$`)]
1834
2037
  : [];
2038
+ const localWorkspacePackageNoExternal = localWorkspacePackageDeps.map(
2039
+ (pkg) => new RegExp(`^${escapeRegex(pkg.packageName)}(/.*)?$`),
2040
+ );
2041
+ const forcePollingWatch = process.env.CHOKIDAR_USEPOLLING === "1";
2042
+ const pollingWatchInterval = Number(process.env.CHOKIDAR_INTERVAL ?? 1000);
2043
+ const userWatch = userConfig.server?.watch ?? {};
1835
2044
 
1836
2045
  return {
1837
2046
  logLevel:
@@ -1865,6 +2074,21 @@ function createAgentNativeConfig(
1865
2074
  ".ngrok.io",
1866
2075
  ".trycloudflare.com",
1867
2076
  ],
2077
+ watch: {
2078
+ ...userWatch,
2079
+ ignored: [
2080
+ ...DEFAULT_VITE_WATCH_IGNORES,
2081
+ ...arrayFrom((userWatch as { ignored?: any })?.ignored),
2082
+ ],
2083
+ ...(forcePollingWatch
2084
+ ? {
2085
+ usePolling: true,
2086
+ interval: Number.isFinite(pollingWatchInterval)
2087
+ ? pollingWatchInterval
2088
+ : 1000,
2089
+ }
2090
+ : {}),
2091
+ },
1868
2092
  fs: {
1869
2093
  ...(userConfig.server?.fs ?? {}),
1870
2094
  allow: [
@@ -1872,6 +2096,7 @@ function createAgentNativeConfig(
1872
2096
  ...monorepoCoreAllow,
1873
2097
  ...monorepoNodeModulesAllow,
1874
2098
  ...workspaceCoreFsAllow,
2099
+ ...localWorkspacePackageAllow,
1875
2100
  ...workspaceNodeModulesAllow,
1876
2101
  ...(userConfig.server?.fs?.allow ?? []),
1877
2102
  ...(options.fsAllow ?? []),
@@ -1951,6 +2176,7 @@ function createAgentNativeConfig(
1951
2176
  ? [/^@agent-native\/scheduling(\/.*)?$/]
1952
2177
  : []),
1953
2178
  ...workspaceCoreNoExternal,
2179
+ ...localWorkspacePackageNoExternal,
1954
2180
  ...arrayFrom((userConfig.ssr as { noExternal?: any })?.noExternal),
1955
2181
  ],
1956
2182
  external: [
@@ -2000,6 +2226,7 @@ function createAgentNativeConfig(
2000
2226
  // Uses regex with $ anchor for exact matching to prevent
2001
2227
  // @agent-native/core from prefix-matching @agent-native/core/client.
2002
2228
  ...getCoreSourceAliases(cwd),
2229
+ ...localWorkspacePackageResolveAliases,
2003
2230
  // Standard path aliases (prefix matching is fine here)
2004
2231
  { find: "@", replacement: path.resolve(cwd, "./app") },
2005
2232
  { find: "@shared", replacement: path.resolve(cwd, "./shared") },
@@ -3,7 +3,7 @@
3
3
  import { randomBytes } from "node:crypto";
4
4
  import { existsSync, rmSync, cpSync, writeFileSync, mkdirSync } from "node:fs";
5
5
  import path from "node:path";
6
- import { fileURLToPath } from "node:url";
6
+ import { fileURLToPath, pathToFileURL } from "node:url";
7
7
 
8
8
  const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
9
9
  const FUNCTIONS_DIR = path.join(ROOT, ".netlify", "functions-internal");
@@ -116,16 +116,30 @@ export const config = {
116
116
  writeFileSync(path.join(dest, `${WORKER_NAME}.mjs`), source);
117
117
  }
118
118
 
119
- if (!existsSync(path.join(SERVER_DIR, "main.mjs"))) {
119
+ function isDirectRun(): boolean {
120
+ const entrypoint = process.argv[1];
121
+ return Boolean(
122
+ entrypoint &&
123
+ import.meta.url === pathToFileURL(path.resolve(entrypoint)).href,
124
+ );
125
+ }
126
+
127
+ function main(): void {
128
+ if (!existsSync(path.join(SERVER_DIR, "main.mjs"))) {
129
+ console.log(
130
+ "[dashboard-report-cron] Skipped Netlify cron emit: Nitro Netlify server output not found.",
131
+ );
132
+ return;
133
+ }
134
+
135
+ const token = randomBytes(32).toString("hex");
136
+ emitScheduledTrigger(token);
137
+ emitBackgroundWorker(token);
120
138
  console.log(
121
- "[dashboard-report-cron] Skipped Netlify cron emit: Nitro Netlify server output not found.",
139
+ `[dashboard-report-cron] Emitted Netlify scheduled trigger "${SCHEDULED_NAME}" (${SCHEDULE}) and background worker "${WORKER_NAME}".`,
122
140
  );
123
- process.exit(0);
124
141
  }
125
142
 
126
- const token = randomBytes(32).toString("hex");
127
- emitScheduledTrigger(token);
128
- emitBackgroundWorker(token);
129
- console.log(
130
- `[dashboard-report-cron] Emitted Netlify scheduled trigger "${SCHEDULED_NAME}" (${SCHEDULE}) and background worker "${WORKER_NAME}".`,
131
- );
143
+ if (isDirectRun()) {
144
+ main();
145
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"production-agent.d.ts","sourceRoot":"","sources":["../../src/agent/production-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"production-agent.d.ts","sourceRoot":"","sources":["../../src/agent/production-agent.ts"],"names":[],"mappings":"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"}
@@ -3170,6 +3170,13 @@ export function createProductionAgentHandler(options) {
3170
3170
  ? requestEffort
3171
3171
  : options.reasoningEffort);
3172
3172
  options.onEngineResolved?.(engine, model);
3173
+ // DIAGNOSTIC-ONLY: localize where the worker stalls AFTER model_done. These
3174
+ // land in `worker_stage` (foreground-independent), so even though the
3175
+ // foreground overwrites `diag_stage` on inline recovery, the worker's last
3176
+ // reached point survives. If the last worker_stage is `model_done`, writes
3177
+ // hang right after model resolution (DB connection); if it's
3178
+ // `engine_resolved`/`systemprompt_enter`, the stall is in the named step.
3179
+ workerStep("engine_resolved");
3173
3180
  // One-line per-turn resolution log so it's obvious in dev which engine
3174
3181
  // is actually handling the request. `requestEngine` is what the client
3175
3182
  // sent from the model picker; `engine.name` is what resolveEngine picked.
@@ -3209,10 +3216,17 @@ export function createProductionAgentHandler(options) {
3209
3216
  let systemPromptError = null;
3210
3217
  const systemPromptThunk = () => (async () => {
3211
3218
  const sysPromptStart = Date.now();
3219
+ // Brackets the system-prompt build (which runs the template's
3220
+ // extraContext / data-dictionary). If worker_stage stalls at
3221
+ // `systemprompt_enter` with no `systemprompt_done`, the build itself is
3222
+ // the stall point.
3223
+ workerStep("systemprompt_enter");
3212
3224
  try {
3213
- return typeof options.systemPrompt === "function"
3225
+ const built = typeof options.systemPrompt === "function"
3214
3226
  ? await options.systemPrompt(event)
3215
3227
  : options.systemPrompt;
3228
+ workerStep("systemprompt_done");
3229
+ return built;
3216
3230
  }
3217
3231
  catch (error) {
3218
3232
  systemPromptError = error;