@jami-studio/core 0.92.15 → 0.92.17

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.92.17
4
+
5
+ ### Patch Changes
6
+
7
+ - 1dd0867: Cloudflare Pages unified deploy fixes found by running the artifact on workerd: (1) `_routes.json` no longer emits rules covered by another rule's splat (Cloudflare rejects overlapping rules — "/apps/new-app" under "/apps/\*" broke every workspace deploy); (2) stub `detect-libc` in the worker bundle — it calls `process.report.getReport()` at require time, which unenv throws on, killing the worker at module init.
8
+ - 950b77d: workspace-deploy: cap rolldown's rayon thread pool on Windows (RAYON_NUM_THREADS=2 unless overridden). The native thread pool has a race that kills app builds with an access violation (0xC0000005) — intermittently for most apps, deterministically for some (chat under cloudflare_pages). Capping the pool eliminates the crash; combined with the native-crash retry this makes unified workspace builds reliable on Windows.
9
+
10
+ ## 0.92.16
11
+
12
+ ### Patch Changes
13
+
14
+ - 4c3a52a: workspace-deploy: retry app builds that die with a Windows native-crash exit code (0xC0000005 / 3221225477). These are bundler native-binding timing races, not build failures — the same build passes on retry. Bounded to 3 attempts; ordinary non-zero exits are never retried.
15
+
3
16
  ## 0.92.15
4
17
 
5
18
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.92.15",
3
+ "version": "0.92.17",
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/studio-jami/jami-studio#readme",
6
6
  "bugs": {
@@ -101,6 +101,22 @@ export const CLOUDFLARE_WORKER_ESBUILD_EXTERNALS = [
101
101
  "fsevents",
102
102
  ];
103
103
  export const CLOUDFLARE_WORKER_STUB_MODULES: Record<string, string> = {
104
+ // detect-libc calls process.report.getReport() at require time to sniff
105
+ // musl vs glibc; unenv's process.report stub throws "not implemented",
106
+ // killing the worker at module init. Stub it with static glibc answers —
107
+ // nothing that consults libc can run on workerd anyway.
108
+ "detect-libc": [
109
+ "export const GLIBC = 'glibc';",
110
+ "export const MUSL = 'musl';",
111
+ "export const family = async () => null;",
112
+ "export const familySync = () => null;",
113
+ "export const version = async () => null;",
114
+ "export const versionSync = () => null;",
115
+ "export const isNonGlibcLinux = async () => false;",
116
+ "export const isNonGlibcLinuxSync = () => false;",
117
+ "export default { GLIBC, MUSL, family, familySync, version, versionSync, isNonGlibcLinux, isNonGlibcLinuxSync };",
118
+ "",
119
+ ].join("\n"),
104
120
  "better-sqlite3":
105
121
  "export default {}; export const Database = class {}; export const watch = () => ({ close() {} });\n",
106
122
  "node-pty":
@@ -224,6 +224,15 @@ function buildOneApp(
224
224
  const env: NodeJS.ProcessEnv = {
225
225
  ...process.env,
226
226
  NITRO_PRESET: preset,
227
+ // Windows: rolldown's rayon thread pool has a native race that
228
+ // intermittently (and for some apps deterministically) kills the build
229
+ // with an access violation (0xC0000005). Capping the pool avoids the
230
+ // race entirely; verified: chat's cloudflare_pages build crashed 100%
231
+ // in-sequence at default threads and passes at 2. Respect an explicit
232
+ // operator override.
233
+ ...(process.platform === "win32"
234
+ ? { RAYON_NUM_THREADS: process.env.RAYON_NUM_THREADS ?? "2" }
235
+ : {}),
227
236
  AGENT_NATIVE_WORKSPACE: "1",
228
237
  AGENT_NATIVE_WORKSPACE_APP_ID: app,
229
238
  VITE_AGENT_NATIVE_WORKSPACE: "1",
@@ -271,11 +280,34 @@ function buildOneApp(
271
280
 
272
281
  cleanAppBuildOutputs(appDir);
273
282
 
274
- execFile("pnpm", ["--filter", app, "build"], {
275
- cwd: workspaceRoot,
276
- env,
277
- stdio: "inherit",
278
- });
283
+ // Windows: app builds occasionally die with a native access violation
284
+ // (0xC0000005 / exit 3221225477) inside the bundler's native bindings.
285
+ // It is a timing race, not a code failure — the same build passes on
286
+ // retry (and reliably passes with DEBUG logging enabled, which shifts
287
+ // the timing). Retry native-crash exits a bounded number of times;
288
+ // real build failures exit with ordinary codes and are NOT retried.
289
+ const NATIVE_CRASH_EXIT_CODES = new Set([3221225477, -1073741819]);
290
+ const maxAttempts = 3;
291
+ for (let attempt = 1; ; attempt++) {
292
+ try {
293
+ execFile("pnpm", ["--filter", app, "build"], {
294
+ cwd: workspaceRoot,
295
+ env,
296
+ stdio: "inherit",
297
+ });
298
+ return;
299
+ } catch (error) {
300
+ const status = (error as { status?: number | null })?.status ?? null;
301
+ const isNativeCrash =
302
+ typeof status === "number" && NATIVE_CRASH_EXIT_CODES.has(status);
303
+ if (!isNativeCrash || attempt >= maxAttempts) throw error;
304
+ console.warn(
305
+ `[workspace-deploy] ${app} build died with a native crash ` +
306
+ `(exit ${status}); retrying (${attempt}/${maxAttempts - 1})...`,
307
+ );
308
+ cleanAppBuildOutputs(appDir);
309
+ }
310
+ }
279
311
  }
280
312
 
281
313
  function moveAppBuildIntoWorkspaceOutput(
@@ -392,9 +424,23 @@ function writeCloudflareRoutingManifest(distDir: string, apps: string[]): void {
392
424
  include.push("/apps/*");
393
425
  if (dispatchFaviconAsset) include.push("/favicon.ico");
394
426
  }
427
+ // Cloudflare rejects a _routes.json where a splat rule overlaps any other
428
+ // rule (e.g. "/apps/*" + "/apps/new-app"). Drop every rule already covered
429
+ // by another rule's splat, and exact duplicates.
430
+ const splatPrefixes = include
431
+ .filter((r) => r.endsWith("/*"))
432
+ .map((r) => r.slice(0, -1));
433
+ const dedupedInclude = [
434
+ ...new Set(
435
+ include.filter(
436
+ (r) =>
437
+ !splatPrefixes.some((p) => r !== `${p}*` && r.startsWith(p)),
438
+ ),
439
+ ),
440
+ ];
395
441
  const routes = {
396
442
  version: 1,
397
- include,
443
+ include: dedupedInclude,
398
444
  exclude: [],
399
445
  };
400
446
  fs.writeFileSync(
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/deploy/build.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG;AAmCH,OAAO,EAML,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAI7B,eAAO,MAAM,6BAA6B,UAiBzC,CAAC;AAEF,eAAO,MAAM,mCAAmC,UAiB/C,CAAC;AACF,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAwGjE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,UAUnC,CAAC;AAEF,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,MAAM,GACb,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAaxB;AA6BD,eAAO,MAAM,2CAA2C,EAAE,MAAM,CAC9D,MAAM,EACN,MAAM,CAmSP,CAAC;AAEF,MAAM,WAAW,0BAA0B;IACzC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,UAAU,wBAAwB;IAChC,KAAK,EAAE,6BAA6B,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC;IACtD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,6BAA6B;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,UAAU,6BAA6B;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAwBD,wBAAgB,wCAAwC,CACtD,WAAW,EAAE,MAAM,EAAE,GACpB,MAAM,CAaR;AAgBD,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CAAC;AAgBvE,wBAAgB,yCAAyC,CACvD,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,WAAW,SAAK,GACf,IAAI,CAQN;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,eAAe,EAAE,EACzB,WAAW,EAAE,MAAM,EAAE,EACrB,kBAAkB,GAAE,MAAM,EAAO,EACjC,OAAO,GAAE,gBAAgB,EAAO,EAChC,aAAa,GAAE,oBAAoB,GAAG,IAAW,EACjD,mBAAmB,GAAE,MAAM,EAAO,EAClC,gBAAgB,SAAmC,EACnD,OAAO,GAAE,0BAA+B,GACvC,MAAM,CAkoBR;AA4FD,wBAAgB,8CAA8C,CAC5D,QAAQ,EAAE,wBAAwB,EAClC,QAAQ,SAAmC,GAC1C,MAAM,CAiCR;AAmeD,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C;AAoED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,GACb;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAKlC;AA6DD,wBAAgB,OAAO,CACrB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,iBAAiB,cAAoB,QAoCtC;AAiCD,KAAK,0BAA0B,GAAG,OAAO,GAAG,KAAK,CAAC;AAQlD,wBAAgB,qCAAqC,CACnD,YAAY,GAAE,MAAM,CAAC,QAA2B,EAChD,QAAQ,GAAE,MAAM,CAAC,YAA2B,EAC5C,UAAU,GAAE,0BAA0B,GAAG,IAAgD,GACxF,OAAO,CAOT;AAqED,wBAAgB,gCAAgC,CAC9C,gBAAgB,EAAE,MAAM,EAAE,GACzB,MAAM,GAAG,IAAI,CA8Bf;AAED,wBAAgB,0BAA0B,CACxC,gBAAgB,EAAE,MAAM,EAAE,GACzB,KAAK,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAqCpD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gCAAgC,IAAI,OAAO,CAK1D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,wBAAgB,2CAA2C,CACzD,UAAU,EAAE,MAAM,GACjB,IAAI,CA0GN;AA0DD;;;;;GAKG;AACH,wBAAgB,wCAAwC,CACtD,SAAS,EAAE,MAAM,GAChB,MAAM,EAAE,CA+CV;AAED,wBAAgB,sCAAsC,CACpD,UAAU,EAAE,MAAM,GACjB,IAAI,CAwJN;AAED;;;;;GAKG;AACH,wBAAgB,mCAAmC,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAY5E;AA6GD;;;;;;GAMG;AACH,wBAAgB,yCAAyC,CACvD,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,IAAI,CAqDN;AA6ID;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,gBAAgB,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,GAAG,CAAC;IACX,KAAK,EAAE,eAAe,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAkBD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iCAAiC,YAAI,KAAK,CAAU,CAAC;AAElE;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,GACnB,IAAI,GAAG,SAAS,MAAM,EAAE,CAK1B"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/deploy/build.ts"],"names":[],"mappings":"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"}
@@ -65,6 +65,22 @@ export const CLOUDFLARE_WORKER_ESBUILD_EXTERNALS = [
65
65
  "fsevents",
66
66
  ];
67
67
  export const CLOUDFLARE_WORKER_STUB_MODULES = {
68
+ // detect-libc calls process.report.getReport() at require time to sniff
69
+ // musl vs glibc; unenv's process.report stub throws "not implemented",
70
+ // killing the worker at module init. Stub it with static glibc answers —
71
+ // nothing that consults libc can run on workerd anyway.
72
+ "detect-libc": [
73
+ "export const GLIBC = 'glibc';",
74
+ "export const MUSL = 'musl';",
75
+ "export const family = async () => null;",
76
+ "export const familySync = () => null;",
77
+ "export const version = async () => null;",
78
+ "export const versionSync = () => null;",
79
+ "export const isNonGlibcLinux = async () => false;",
80
+ "export const isNonGlibcLinuxSync = () => false;",
81
+ "export default { GLIBC, MUSL, family, familySync, version, versionSync, isNonGlibcLinux, isNonGlibcLinuxSync };",
82
+ "",
83
+ ].join("\n"),
68
84
  "better-sqlite3": "export default {}; export const Database = class {}; export const watch = () => ({ close() {} });\n",
69
85
  "node-pty": "export default {}; export const watch = () => ({ close() {} });\n",
70
86
  chokidar: "export default {}; export const watch = () => ({ close() {} });\n",