@jami-studio/core 0.92.31 → 0.92.33

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.
Files changed (37) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/core/CHANGELOG.md +12 -0
  3. package/corpus/core/package.json +1 -1
  4. package/corpus/core/src/deploy/build.ts +4234 -4127
  5. package/corpus/core/src/file-upload/types.ts +9 -0
  6. package/corpus/core/src/shared/global-scope.ts +32 -0
  7. package/corpus/core/src/shared/workspace-app-audience.ts +14 -3
  8. package/corpus/templates/analytics/changelog/2026-07-11-tracking-and-session-replay-ingest-endpoints-are-reachable-f.md +6 -0
  9. package/corpus/templates/analytics/package.json +9 -0
  10. package/corpus/templates/clips/actions/create-recording.ts +16 -1
  11. package/corpus/templates/clips/app/components/recorder/recorder-engine.ts +60 -14
  12. package/corpus/templates/clips/app/routes/record.tsx +35 -9
  13. package/corpus/templates/clips/changelog/2026-07-11-uploads-now-stream-straight-to-s3-compatible-storage-r2-s3-m.md +6 -0
  14. package/corpus/templates/clips/server/lib/s3-upload-provider.ts +256 -0
  15. package/corpus/templates/clips/server/lib/streaming-upload-mode.ts +9 -3
  16. package/corpus/templates/clips/server/lib/upload-chunk-limits.ts +19 -0
  17. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +15 -4
  18. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/reset-chunks.post.ts +49 -1
  19. package/dist/deploy/build.d.ts +37 -1
  20. package/dist/deploy/build.d.ts.map +1 -1
  21. package/dist/deploy/build.js +769 -676
  22. package/dist/deploy/build.js.map +1 -1
  23. package/dist/file-upload/types.d.ts +9 -0
  24. package/dist/file-upload/types.d.ts.map +1 -1
  25. package/dist/file-upload/types.js.map +1 -1
  26. package/dist/notifications/routes.d.ts +1 -1
  27. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  28. package/dist/resources/handlers.d.ts +1 -1
  29. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  30. package/dist/shared/global-scope.d.ts +4 -0
  31. package/dist/shared/global-scope.d.ts.map +1 -1
  32. package/dist/shared/global-scope.js +27 -0
  33. package/dist/shared/global-scope.js.map +1 -1
  34. package/dist/shared/workspace-app-audience.d.ts.map +1 -1
  35. package/dist/shared/workspace-app-audience.js +12 -3
  36. package/dist/shared/workspace-app-audience.js.map +1 -1
  37. package/package.json +1 -1
@@ -1,8 +1,13 @@
1
1
  import { enabledFlag } from "./env-flags.js";
2
+ import { requiresConfiguredVideoStorage } from "./video-storage.js";
2
3
 
3
4
  // Streaming resumable uploads are deployment opt-in while the provider/finalize
4
- // path hardens. Set CLIPS_ENABLE_STREAMING_UPLOAD=1 to allow recorder requests;
5
- // CLIPS_DISABLE_STREAMING_UPLOAD=1 still forces the buffered fallback.
5
+ // path hardens EXCEPT when the deployment cannot buffer chunks in SQL at all
6
+ // (production / remote database), where streaming to the provider is the only
7
+ // viable upload path and gating it behind the opt-in flag guarantees every
8
+ // upload dies with a 409. Set CLIPS_ENABLE_STREAMING_UPLOAD=1 to opt in on
9
+ // SQL-scratch-capable deployments; CLIPS_DISABLE_STREAMING_UPLOAD=1 still
10
+ // forces the buffered fallback everywhere.
6
11
  export function isStreamingUploadDisabled(): boolean {
7
12
  return enabledFlag(process.env.CLIPS_DISABLE_STREAMING_UPLOAD);
8
13
  }
@@ -12,7 +17,8 @@ export function shouldEnableStreamingUpload(args: {
12
17
  mimeType?: string | null;
13
18
  }): boolean {
14
19
  if (isStreamingUploadDisabled()) return false;
15
- if (!enabledFlag(process.env.CLIPS_ENABLE_STREAMING_UPLOAD)) return false;
20
+ const optedIn = enabledFlag(process.env.CLIPS_ENABLE_STREAMING_UPLOAD);
21
+ if (!optedIn && !requiresConfiguredVideoStorage()) return false;
16
22
 
17
23
  const mimeType = (args.mimeType ?? "").split(";")[0]?.trim().toLowerCase();
18
24
  return !mimeType || mimeType.startsWith("video/");
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Platform-aware per-request chunk upload cap.
3
+ *
4
+ * Netlify functions buffer request bodies with a 6 MB cap, and binary bodies
5
+ * are base64-encoded by the gateway (effective cap ~4.5 MB) — so Netlify
6
+ * deployments must keep chunks at 4 MiB. Every other runtime (local dev,
7
+ * Cloudflare workerd, Vercel) accepts larger bodies, and S3-compatible
8
+ * multipart uploads NEED 5 MiB parts (see s3-upload-provider), so the cap is
9
+ * lifted to 5 MiB + slack there.
10
+ */
11
+
12
+ const NETLIFY_MAX_CHUNK_BYTES = 4 * 1024 * 1024;
13
+ const DEFAULT_MAX_CHUNK_BYTES = 5 * 1024 * 1024 + 256 * 1024;
14
+
15
+ export function maxChunkUploadBytes(): number {
16
+ return process.env.NETLIFY
17
+ ? NETLIFY_MAX_CHUNK_BYTES
18
+ : DEFAULT_MAX_CHUNK_BYTES;
19
+ }
@@ -57,13 +57,14 @@ import {
57
57
  shouldRejectVideoUploadWithoutStorage,
58
58
  STORAGE_SETUP_REQUIRED_REASON,
59
59
  } from "../../../../lib/video-storage.js";
60
+ import { maxChunkUploadBytes } from "../../../../lib/upload-chunk-limits.js";
60
61
 
61
62
  const RECORDING_TOO_LARGE_REASON = `Recording exceeds the ${Math.round(MAX_RECORDING_UPLOAD_BYTES / (1024 * 1024))} MB size limit. Please record a shorter clip.`;
62
63
 
63
- // Netlify functions have a 6 MB buffered request cap, but binary requests
64
- // are base64 encoded by the gateway and effectively cap out around 4.5 MB.
65
- // Keep our own cap lower so dev/local failures match production.
66
- const MAX_CHUNK_BYTES = 4 * 1024 * 1024;
64
+ // Platform-aware: Netlify's buffered-request gateway caps chunks at 4 MiB;
65
+ // other runtimes allow the 5 MiB parts S3-compatible multipart needs. See
66
+ // server/lib/upload-chunk-limits.ts.
67
+ const MAX_CHUNK_BYTES = maxChunkUploadBytes();
67
68
 
68
69
  const ALLOWED_RECORDING_MIME_TYPES = new Set([
69
70
  "video/webm",
@@ -760,6 +761,16 @@ async function handleResumableChunk(
760
761
  };
761
762
  }
762
763
  } else {
764
+ // Enforce the recording size ceiling server-side — the provider session
765
+ // was opened with this budget but S3-style multipart uploads do not
766
+ // enforce it themselves.
767
+ if (
768
+ session.bytesUploaded + bytes.byteLength >
769
+ MAX_RECORDING_UPLOAD_BYTES
770
+ ) {
771
+ setResponseStatus(event, 413);
772
+ return { ok: false, error: RECORDING_TOO_LARGE_REASON };
773
+ }
763
774
  // Forward the data chunk to the provider and advance offsets only after
764
775
  // the provider confirms receipt (308 Resume Incomplete for non-final, 2xx for final).
765
776
  const start = session.bytesUploaded;
@@ -28,6 +28,7 @@ import {
28
28
  writeAppState,
29
29
  deleteAppStateByPrefix,
30
30
  } from "@agent-native/core/application-state";
31
+ import { getActiveFileUploadProviderForRequest } from "@agent-native/core/file-upload";
31
32
  import { runWithRequestContext } from "@agent-native/core/server";
32
33
  import { MAX_UPLOAD_BYTES as MAX_RECORDING_UPLOAD_BYTES } from "@shared/upload-limits.js";
33
34
  import { and, eq } from "drizzle-orm";
@@ -44,7 +45,12 @@ import {
44
45
  getEventOwnerContext,
45
46
  ownerEmailMatches,
46
47
  } from "../../../../lib/recordings.js";
47
- import { deleteResumableSession } from "../../../../lib/resumable-session.js";
48
+ import {
49
+ deleteResumableSession,
50
+ setResumableSession,
51
+ } from "../../../../lib/resumable-session.js";
52
+ import { shouldEnableStreamingUpload } from "../../../../lib/streaming-upload-mode.js";
53
+ import { maxChunkUploadBytes } from "../../../../lib/upload-chunk-limits.js";
48
54
 
49
55
  interface CompressionMeta {
50
56
  originalBytes?: number;
@@ -77,6 +83,7 @@ export default defineEventHandler(async (event: H3Event) => {
77
83
  const { userEmail: ownerEmail, orgId } = await getEventOwnerContext(event);
78
84
  const body = (await readBody(event).catch(() => null)) as {
79
85
  compression?: CompressionMeta | null;
86
+ mimeType?: string;
80
87
  } | null;
81
88
 
82
89
  // Sanitize compression metadata. The recorder is the only client we trust
@@ -117,6 +124,45 @@ export default defineEventHandler(async (event: H3Event) => {
117
124
  // accidentally route through handleResumableChunk with stale offsets.
118
125
  await deleteResumableSession(recordingId).catch(() => {});
119
126
 
127
+ // Re-initialize a fresh streaming session for the re-upload when the
128
+ // deployment streams to the provider (production / remote DB, where SQL
129
+ // chunk scratch is unavailable). Without this, the post-compression
130
+ // re-upload would fall into the buffered path and 409.
131
+ let uploadMode: "streaming" | "buffered" = "buffered";
132
+ let uploadChunkBytes: number | undefined;
133
+ const reuploadMimeType =
134
+ compression?.outputMimeType || body?.mimeType || "video/webm";
135
+ const uploadProvider = await getActiveFileUploadProviderForRequest();
136
+ const providerChunkBytes = uploadProvider?.resumable?.preferredChunkBytes;
137
+ if (
138
+ uploadProvider?.resumable &&
139
+ shouldEnableStreamingUpload({ mimeType: reuploadMimeType }) &&
140
+ (!providerChunkBytes || providerChunkBytes <= maxChunkUploadBytes())
141
+ ) {
142
+ try {
143
+ const ext = /mp4|quicktime/i.test(reuploadMimeType) ? "mp4" : "webm";
144
+ const session = await uploadProvider.resumable.startSession(
145
+ `${recordingId}.${ext}`,
146
+ reuploadMimeType.split(";")[0]?.trim() || "video/webm",
147
+ MAX_RECORDING_UPLOAD_BYTES,
148
+ );
149
+ await setResumableSession(recordingId, {
150
+ providerId: uploadProvider.id,
151
+ sessionId: session.sessionId,
152
+ meta: { ...session.meta, stableUrl: true, recordAsset: false },
153
+ bytesUploaded: 0,
154
+ lastCommittedIndex: -1,
155
+ });
156
+ uploadMode = "streaming";
157
+ uploadChunkBytes = providerChunkBytes;
158
+ } catch (err) {
159
+ console.warn(
160
+ `[reset-chunks] resumable session re-init failed, falling back to buffered:`,
161
+ err instanceof Error ? err.message : String(err),
162
+ );
163
+ }
164
+ }
165
+
120
166
  // Reset the per-recording upload progress so the UI poller sees the
121
167
  // re-upload restart from 0 and doesn't briefly show "100% then
122
168
  // re-running" on the post-compression chunked upload pass.
@@ -158,6 +204,8 @@ export default defineEventHandler(async (event: H3Event) => {
158
204
  recordingId,
159
205
  chunksCleared: cleared,
160
206
  compressionRecorded: !!compression,
207
+ uploadMode,
208
+ ...(uploadChunkBytes ? { uploadChunkBytes } : {}),
161
209
  };
162
210
  });
163
211
  });
@@ -47,8 +47,44 @@ export interface GenerateWorkerEntryOptions {
47
47
  * unified workspace deployments. Must stay dependency-free beyond core's
48
48
  * lean `global-scope` subpath so nothing registry-touching evaluates before
49
49
  * the scope id is set (ESM evaluates imports depth-first in order).
50
+ *
51
+ * Two kinds of baked env, split deliberately (issue-49 regression lesson):
52
+ *
53
+ * - `envDefaults` — workspace-IDENTICAL keys (the workspace-apps manifest,
54
+ * the workspace flag). These are safe as `process.env` DEFAULTS even
55
+ * though the unified worker shares one `process.env` across all apps,
56
+ * because every app bakes the same value. Runtime bindings still win
57
+ * (defaults only fill absent keys; the per-request bindings copy assigns
58
+ * binding keys on top).
59
+ *
60
+ * - `moduleGraphEnvDefaults` — PER-APP keys (app id, base path, audience,
61
+ * public/protected route lists). These must NEVER touch the shared
62
+ * `process.env`: the first app's scope-init would win and poison every
63
+ * sibling (observed live: all apps stripped paths against dispatch's
64
+ * base path and 401'd framework routes). They are stored per module
65
+ * graph via `setModuleGraphEnvDefaults`, and env readers fall back to
66
+ * `getModuleGraphEnvDefault`.
67
+ *
68
+ * workerd has no filesystem and no ambient build env, so without this the
69
+ * runtime falls back as if the app were standalone — agent discovery
70
+ * targets builtin hosted prod URLs (ask_app "internal error") and per-app
71
+ * route access/audience declarations never apply. The Netlify preset bakes
72
+ * the same keys in its generated function entry (`setBasePathEnv`), where
73
+ * per-function isolation makes plain env safe.
74
+ */
75
+ export declare function generateScopeInitSource(appScopeId: string, envDefaults?: Record<string, string>, moduleGraphEnvDefaults?: Record<string, string>): string;
76
+ /**
77
+ * Snapshot the workspace-IDENTICAL env keys that must survive into the edge
78
+ * runtime as shared `process.env` defaults. Per-app keys deliberately live
79
+ * in `workspaceAppModuleGraphEnvDefaultsFromBuildEnv` instead — see
80
+ * `generateScopeInitSource`.
81
+ */
82
+ export declare function workspaceEnvDefaultsFromBuildEnv(env?: NodeJS.ProcessEnv): Record<string, string>;
83
+ /**
84
+ * Snapshot the PER-APP workspace env keys for this app's module graph.
85
+ * Delivered via `setModuleGraphEnvDefaults` (never shared `process.env`).
50
86
  */
51
- export declare function generateScopeInitSource(appScopeId: string): string;
87
+ export declare function workspaceAppModuleGraphEnvDefaultsFromBuildEnv(env?: NodeJS.ProcessEnv): Record<string, string>;
52
88
  /**
53
89
  * Derive the workspace app id from a mounted app base path ("/assets" →
54
90
  * "assets"). Returns null for unmounted (root) builds.
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/deploy/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/deploy/build.ts"],"names":[],"mappings":"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"}