@neta-art/cohub 12.5.0 → 13.0.0

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 (76) hide show
  1. package/README.md +35 -13
  2. package/dist/board/editor/editor.d.ts +7 -5
  3. package/dist/board/editor/index.js +1 -1
  4. package/dist/board/editor/interaction.js +1 -1
  5. package/dist/board/export/index.d.ts +1 -6
  6. package/dist/board/export/index.js +16 -10
  7. package/dist/board/export/node/index.d.ts +2 -7
  8. package/dist/board/export/node/index.js +2 -5
  9. package/dist/board/export/scene.d.ts +3 -7
  10. package/dist/board/export/scene.js +22 -26
  11. package/dist/board/model/asset-key.d.ts +5 -2
  12. package/dist/board/model/asset-key.js +13 -5
  13. package/dist/board/model/index.d.ts +5 -4
  14. package/dist/board/model/index.js +4 -3
  15. package/dist/board/model/media-playback.d.ts +4 -6
  16. package/dist/board/model/media-playback.js +4 -4
  17. package/dist/board/model/read.d.ts +7 -0
  18. package/dist/board/model/read.js +18 -0
  19. package/dist/board/model/themes.d.ts +50 -0
  20. package/dist/board/model/themes.js +44 -6
  21. package/dist/board/render/backdrop-layer.d.ts +21 -0
  22. package/dist/board/render/backdrop-layer.js +227 -0
  23. package/dist/board/render/backdrop.d.ts +45 -0
  24. package/dist/board/render/backdrop.js +62 -0
  25. package/dist/board/render/index.d.ts +3 -2
  26. package/dist/board/render/index.js +7 -6
  27. package/dist/board/render/renderers/arrow-card-renderer.js +1 -1
  28. package/dist/board/render/renderers/audio-card-renderer.js +2 -2
  29. package/dist/board/render/renderers/file-card-renderer.js +1 -1
  30. package/dist/board/render/renderers/frame-card-renderer.js +1 -1
  31. package/dist/board/render/renderers/model-card-renderer.js +1 -1
  32. package/dist/board/render/renderers/shape-card-renderer.js +1 -1
  33. package/dist/board/render/renderers/task-card-renderer.js +2 -2
  34. package/dist/board/render/renderers/text-card-renderer.js +2 -2
  35. package/dist/board/render/renderers/video-card-renderer.js +1 -1
  36. package/dist/board/render/theme.d.ts +2 -0
  37. package/dist/board/render/theme.js +4 -2
  38. package/dist/board/replica/index.d.ts +3 -2
  39. package/dist/board/replica/index.js +34 -24
  40. package/dist/board/replica/indexeddb.js +14 -85
  41. package/dist/board/stage/assets.d.ts +4 -3
  42. package/dist/board/stage/assets.js +186 -83
  43. package/dist/board/stage/backdrop.d.ts +25 -0
  44. package/dist/board/stage/backdrop.js +104 -0
  45. package/dist/board/stage/index.d.ts +2 -1
  46. package/dist/board/stage/scene.js +12 -5
  47. package/dist/board/stage/stage.d.ts +7 -2
  48. package/dist/board/stage/stage.js +44 -24
  49. package/dist/board/stage/texture-pool.d.ts +1 -1
  50. package/dist/board/stage/texture-pool.js +4 -5
  51. package/dist/chunks/app-realtime.js +1 -1
  52. package/dist/chunks/environment.d.ts +34 -21
  53. package/dist/chunks/environment.js +4 -3
  54. package/dist/chunks/http-error.js +28 -5
  55. package/dist/chunks/http.d.ts +87 -18
  56. package/dist/chunks/http.js +1855 -59
  57. package/dist/chunks/websocket.d.ts +9 -1
  58. package/dist/http.d.ts +2 -2
  59. package/dist/http.js +1 -1
  60. package/dist/index.d.ts +9 -3
  61. package/dist/index.js +6 -1080
  62. package/dist/indexeddb.js +79 -0
  63. package/dist/media.d.ts +18 -32
  64. package/dist/media.js +81 -67
  65. package/dist/protocol/dist/board-model.d.ts +33 -26
  66. package/dist/protocol/dist/board-model.js +21 -18
  67. package/dist/protocol/dist/board.d.ts +21 -1
  68. package/dist/protocol/dist/board.js +5 -1
  69. package/dist/protocol/dist/core/media.d.ts +32 -9
  70. package/dist/protocol/dist/core/media.js +203 -48
  71. package/dist/protocol/dist/index.d.ts +3 -3
  72. package/dist/voice-input.js +1 -1
  73. package/dist/websocket.js +37 -5
  74. package/package.json +1 -1
  75. package/dist/board/render/board-background.d.ts +0 -18
  76. package/dist/board/render/board-background.js +0 -104
@@ -13,8 +13,10 @@ import "../editor/index.js";
13
13
  import { BoardRenderStyle } from "../render/style.js";
14
14
  import { BoardLod } from "../render/lod.js";
15
15
  import { BoardCardRendererResolver, BoardRenderLabels, BoardRenderPalette } from "../render/renderers/board-renderer-registry.js";
16
+ import { BoardThemeBackdrop } from "../render/backdrop.js";
16
17
  import "../render/index.js";
17
18
  import { BoardAssetManager } from "./assets.js";
19
+ import { BoardBackdropStatus } from "./backdrop.js";
18
20
  import { BoardStagePress } from "./presses.js";
19
21
  import { BoardLiveStroke } from "./scene.js";
20
22
  import { BoardItemView } from "./views.js";
@@ -26,7 +28,7 @@ type BoardStageTheme = {
26
28
  colors: BoardShapeColors;
27
29
  colorScheme: "dark" | "light";
28
30
  style?: BoardRenderStyle;
29
- imageBackground?: boolean;
31
+ backdrop?: BoardThemeBackdrop;
30
32
  };
31
33
  type BoardStagePointerPhase = "down" | "move" | "up" | "leave";
32
34
  type BoardStageOptions = {
@@ -35,8 +37,10 @@ type BoardStageOptions = {
35
37
  source: BoardAssetSource;
36
38
  renderers?: BoardCardRendererResolver;
37
39
  views?: readonly BoardItemView[];
38
- /** `below` needs a theme with `imageBackground`; views there get no input. */
40
+ /** `below` needs `transparent`; views there get no input. */
39
41
  viewLayer?: "above" | "below";
42
+ /** Leave the canvas clear for the host to paint the backdrop behind it. */
43
+ transparent?: boolean;
40
44
  theme?: () => BoardStageTheme;
41
45
  labels?: () => BoardRenderLabels;
42
46
  taskRun?: (taskRunId: string) => {
@@ -65,6 +69,7 @@ type BoardStageOptions = {
65
69
  width: number;
66
70
  height: number;
67
71
  }) => void;
72
+ onBackdropChange?: (status: BoardBackdropStatus | null) => void;
68
73
  onVisibleChange?: (ids: ReadonlySet<string> | null) => void;
69
74
  onLiveChange?: (ids: ReadonlySet<string>) => void;
70
75
  safeRect?: () => Rect;
@@ -12,11 +12,11 @@ import { isCreationBoardTool } from "../editor/tool.js";
12
12
  import { resizeCursorForHandle } from "../editor/selection-transform.js";
13
13
  import { createBoardPlayer } from "../player/index.js";
14
14
  import { parseBoardCssColor } from "../render/css-color.js";
15
- import { itemAlpha } from "../render/palette.js";
15
+ import { resolveBoardBackdrop } from "../render/backdrop.js";
16
16
  import { onBoardTextFontsChange } from "../render/text-measurement.js";
17
- import { boardLodRatio, boardLodSize } from "../render/lod.js";
18
- import { createBoardBackground, updateBoardBackground } from "../render/board-background.js";
19
17
  import { getBoardResolution } from "../render/text-resolution.js";
18
+ import { itemAlpha } from "../render/palette.js";
19
+ import { boardLodRatio, boardLodSize } from "../render/lod.js";
20
20
  import { DEFAULT_BOARD_RENDER_LABELS, getBoardCardRenderer } from "../render/renderers/board-renderer-registry.js";
21
21
  import { createBoardScriptHost } from "../render/script-host.js";
22
22
  import { defaultBoardRenderStyle } from "../render/style.js";
@@ -24,6 +24,7 @@ import { boardRenderTheme } from "../render/theme.js";
24
24
  import { createBoardScriptObservers } from "../model/script-observers.js";
25
25
  import { defaultBoardDeviceBudget } from "./device.js";
26
26
  import { scheduleBoardIdle } from "./idle.js";
27
+ import { createBoardStageBackdrop } from "./backdrop.js";
27
28
  import { boardCanvasSize, measureBoardCanvasBox } from "./canvas-size.js";
28
29
  import { observeDisplayDensity } from "./display-density.js";
29
30
  import { createBoardFrameClock } from "./frame-budget.js";
@@ -80,13 +81,14 @@ function styleOf(theme) {
80
81
  return style;
81
82
  }
82
83
  function mountBoardStage(host, options) {
84
+ if (options.viewLayer === "below" && !options.transparent) throw new Error("A below view layer needs a transparent stage.");
83
85
  const { editor, assets } = options;
84
86
  const theme = options.theme ?? (() => DEFAULT_THEME);
85
87
  const resolveRenderer = options.renderers ?? getBoardCardRenderer;
86
88
  let app = null;
87
89
  let world = null;
88
90
  let overlay = null;
89
- let background = null;
91
+ let backdrop = null;
90
92
  let scene = null;
91
93
  let scripts = null;
92
94
  let scriptMode = editor.readonly ? "interact" : "edit";
@@ -340,21 +342,37 @@ function mountBoardStage(host, options) {
340
342
  hoveredHit
341
343
  };
342
344
  }
343
- function syncBackground(current) {
344
- if (!app) return;
345
- const context = {
346
- app,
347
- settings: editor.settings,
348
- viewport: editor.camera,
349
- colorScheme: current.colorScheme,
350
- palette: current.palette,
351
- hasImageBackground: current.imageBackground === true
352
- };
353
- if (background) updateBoardBackground(background, context);
354
- else {
355
- background = createBoardBackground(context);
356
- app.stage.addChildAt(background, 0);
345
+ let resolvedBackdrop = null;
346
+ function syncBackdrop(current, camera) {
347
+ if (!app || options.transparent) return;
348
+ if (resolvedBackdrop?.settings !== editor.settings || resolvedBackdrop.key !== current.key) {
349
+ const value = resolveBoardBackdrop(editor.settings, current);
350
+ resolvedBackdrop = {
351
+ settings: editor.settings,
352
+ key: current.key,
353
+ value
354
+ };
355
+ app.renderer.background.color = value.color;
356
+ }
357
+ if (!backdrop) {
358
+ backdrop = createBoardStageBackdrop({
359
+ renderer: app.renderer,
360
+ source: options.source,
361
+ requestFrame: scheduleTick,
362
+ onStatus: options.onBackdropChange
363
+ });
364
+ app.stage.addChildAt(backdrop.container, 0);
357
365
  }
366
+ const { width, height } = app.screen;
367
+ const view = {
368
+ x: camera.x,
369
+ y: camera.y,
370
+ zoom: camera.zoom,
371
+ width,
372
+ height,
373
+ density: app.renderer.resolution
374
+ };
375
+ backdrop.sync(resolvedBackdrop.value, view, options.reducedMotion?.() ?? false);
358
376
  }
359
377
  function localGestureItemIds() {
360
378
  const interaction = editor.interaction;
@@ -609,6 +627,7 @@ function mountBoardStage(host, options) {
609
627
  if ((work | frameWork) & FRAME_RENDER) {
610
628
  frameWork &= -3;
611
629
  app.render();
630
+ if (app.canvas.style.visibility) app.canvas.style.visibility = "";
612
631
  }
613
632
  } finally {
614
633
  inFrame = false;
@@ -806,7 +825,7 @@ function mountBoardStage(host, options) {
806
825
  scheduleTick();
807
826
  },
808
827
  readModule: async (src) => {
809
- const url = await options.source.resolveFileUrl(src);
828
+ const url = (await options.source.resolveFile(src))?.url;
810
829
  if (!url) throw new Error(`${src} is not available.`);
811
830
  const response = await fetch(url, { signal: AbortSignal.timeout(15e3) });
812
831
  if (!response.ok) throw new Error(`${src} could not be read.`);
@@ -840,7 +859,6 @@ function mountBoardStage(host, options) {
840
859
  composedVersion = -1;
841
860
  composedDocument = null;
842
861
  }
843
- syncBackground(current);
844
862
  player.enter(editor.consumeRecentlyAdded(), editor.document);
845
863
  const playback = options.playback?.() ?? null;
846
864
  const frame = player.frame(editor.document, playback, performance.now(), Date.now(), editor.playhead?.animationId ?? null);
@@ -876,6 +894,7 @@ function mountBoardStage(host, options) {
876
894
  composedDocument = editor.document;
877
895
  }
878
896
  }
897
+ syncBackdrop(current, camera);
879
898
  const renderScene = editor.scene;
880
899
  world.position.set(camera.x, camera.y);
881
900
  world.scale.set(camera.zoom);
@@ -1159,7 +1178,7 @@ function mountBoardStage(host, options) {
1159
1178
  try {
1160
1179
  await instance.init({
1161
1180
  antialias: density < ANTIALIAS_MAX_DENSITY,
1162
- backgroundAlpha: 0,
1181
+ backgroundAlpha: options.transparent ? 0 : 1,
1163
1182
  width: host.clientWidth,
1164
1183
  height: host.clientHeight,
1165
1184
  resolution: getBoardResolution({
@@ -1185,7 +1204,8 @@ function mountBoardStage(host, options) {
1185
1204
  display: "block",
1186
1205
  width: "100%",
1187
1206
  height: "100%",
1188
- touchAction: "none"
1207
+ touchAction: "none",
1208
+ visibility: "hidden"
1189
1209
  });
1190
1210
  host.insertBefore(instance.canvas, views.element);
1191
1211
  world = new Container({
@@ -1327,8 +1347,8 @@ function mountBoardStage(host, options) {
1327
1347
  scene = null;
1328
1348
  scripts?.destroy();
1329
1349
  scripts = null;
1330
- background?.destroy({ children: true });
1331
- background = null;
1350
+ backdrop?.destroy();
1351
+ backdrop = null;
1332
1352
  views.destroy();
1333
1353
  world = null;
1334
1354
  overlay = null;
@@ -4,7 +4,7 @@ type BoardImageTexturePool = {
4
4
  acquire: (url: string) => Promise<Texture | null>;
5
5
  release: (url: string) => Promise<void>;
6
6
  };
7
- /** A CDN variant that fails to process falls back to the media it came from. */
7
+ /** A CDN image variant that fails to process falls back to its source. */
8
8
  declare function loadBoardImageTexture(url: string): Promise<Texture>;
9
9
  declare function unloadBoardImageTexture(url: string, texture: Texture | null): Promise<void>;
10
10
  /**
@@ -1,5 +1,4 @@
1
- import { variantSource } from "../../media.js";
2
- import { loadVideoThumbnailTexture } from "../render/video-thumbnail.js";
1
+ import { variantSource } from "../../protocol/dist/core/media.js";
3
2
  import { Assets, DOMAdapter, Texture } from "pixi.js";
4
3
  //#region src/board/stage/texture-pool.ts
5
4
  /** Load an image in the page's CORS context when Pixi's worker path fails. */
@@ -48,14 +47,14 @@ async function loadImageTexture(url) {
48
47
  throw new AggregateError(errors, `Failed to load board image: ${url}`);
49
48
  }
50
49
  }
51
- /** A CDN variant that fails to process falls back to the media it came from. */
50
+ /** A CDN image variant that fails to process falls back to its source. */
52
51
  async function loadBoardImageTexture(url) {
53
52
  try {
54
53
  return await loadImageTexture(url);
55
54
  } catch (error) {
56
55
  const source = variantSource(url);
57
- if (!source) throw error;
58
- return source.type === "video" ? loadVideoThumbnailTexture(source.url) : loadImageTexture(source.url);
56
+ if (source?.type !== "image") throw error;
57
+ return loadImageTexture(source.url);
59
58
  }
60
59
  }
61
60
  async function unloadBoardImageTexture(url, texture) {
@@ -1,4 +1,4 @@
1
- import { O as readRtcTransportStats, k as waitForIceGathering } from "./http.js";
1
+ import { A as readRtcTransportStats, j as waitForIceGathering } from "./http.js";
2
2
  import { c as HttpError, p as REALTIME_ROOM_EVENT_NAME_PATTERN } from "./http-error.js";
3
3
  import { z } from "zod";
4
4
  //#region \0rolldown/runtime.js
@@ -2349,27 +2349,28 @@ type BoardAnimation = z.infer<typeof BoardAnimationSchema>;
2349
2349
  declare const BoardSettingsSchema: z.ZodObject<{
2350
2350
  title: z.ZodOptional<z.ZodString>;
2351
2351
  background: z.ZodDefault<z.ZodObject<{
2352
- kind: z.ZodDefault<z.ZodEnum<{
2353
- dots: "dots";
2354
- grid: "grid";
2355
- image: "image";
2356
- solid: "solid";
2357
- }>>;
2358
2352
  color: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
2359
2353
  light: z.ZodString;
2360
2354
  dark: z.ZodString;
2361
2355
  }, z.core.$strict>]>>;
2362
- imageUrl: z.ZodOptional<z.ZodString>;
2363
- fit: z.ZodOptional<z.ZodEnum<{
2364
- contain: "contain";
2365
- cover: "cover";
2366
- repeat: "repeat";
2356
+ pattern: z.ZodOptional<z.ZodEnum<{
2357
+ dots: "dots";
2358
+ grid: "grid";
2359
+ none: "none";
2367
2360
  }>>;
2368
- opacity: z.ZodOptional<z.ZodNumber>;
2361
+ image: z.ZodOptional<z.ZodObject<{
2362
+ src: z.ZodString;
2363
+ fit: z.ZodDefault<z.ZodEnum<{
2364
+ contain: "contain";
2365
+ cover: "cover";
2366
+ repeat: "repeat";
2367
+ }>>;
2368
+ opacity: z.ZodOptional<z.ZodNumber>;
2369
+ }, z.core.$strict>>;
2369
2370
  }, z.core.$strict>>;
2370
2371
  grid: z.ZodOptional<z.ZodObject<{
2371
- visible: z.ZodDefault<z.ZodBoolean>;
2372
2372
  size: z.ZodDefault<z.ZodNumber>;
2373
+ snap: z.ZodDefault<z.ZodBoolean>;
2373
2374
  }, z.core.$strict>>;
2374
2375
  enter: z.ZodOptional<z.ZodObject<{
2375
2376
  preset: z.ZodEnum<{
@@ -2411,7 +2412,7 @@ type BoardDelta = {
2411
2412
  //#endregion
2412
2413
  //#region ../protocol/dist/board.d.ts
2413
2414
  declare const BOARD_SNAPSHOT_KIND: "cohub.board.snapshot";
2414
- declare const BOARD_PROTOCOL_VERSION: 3;
2415
+ declare const BOARD_PROTOCOL_VERSION: 4;
2415
2416
  declare const BoardManifestSchema: z.ZodObject<{
2416
2417
  kind: z.ZodLiteral<"cohub.board.manifest">;
2417
2418
  version: z.ZodLiteral<1>;
@@ -2435,6 +2436,7 @@ declare const BoardReadInputSchema: z.ZodObject<{
2435
2436
  animations: z.ZodOptional<z.ZodArray<z.ZodString>>;
2436
2437
  limit: z.ZodOptional<z.ZodNumber>;
2437
2438
  cursor: z.ZodOptional<z.ZodString>;
2439
+ since: z.ZodOptional<z.ZodNumber>;
2438
2440
  }, z.core.$strict>;
2439
2441
  type BoardReadInput = z.infer<typeof BoardReadInputSchema>;
2440
2442
  type BoardRecord = {
@@ -2455,6 +2457,7 @@ type BoardReadResult = {
2455
2457
  animations?: Record<string, Record<string, unknown>>;
2456
2458
  playback: BoardPlaybackSnapshot | null;
2457
2459
  next?: string;
2460
+ changes?: BoardDelta[];
2458
2461
  };
2459
2462
  declare const BoardApplyInputSchema: z.ZodObject<{
2460
2463
  patch: z.ZodObject<{
@@ -2649,6 +2652,13 @@ type Usage = {
2649
2652
  } | null;
2650
2653
  };
2651
2654
  //#endregion
2655
+ //#region ../protocol/dist/core/media.d.ts
2656
+ type MediaFacts = {
2657
+ width: number;
2658
+ height: number;
2659
+ durationMs?: number;
2660
+ };
2661
+ //#endregion
2652
2662
  //#region ../protocol/dist/model/completion.d.ts
2653
2663
  type CompletionMessageRole = "user" | "assistant" | "system";
2654
2664
  /** Raw completion message. Reuses session ContentBlock content shape. */
@@ -5084,7 +5094,8 @@ type SystemAuthOkEvent = {
5084
5094
  sessionId?: string | null;
5085
5095
  payload: {
5086
5096
  connectionId: string;
5087
- user: Record<string, unknown>;
5097
+ user: Record<string, unknown> | null;
5098
+ anonymous?: true;
5088
5099
  capabilities?: string[];
5089
5100
  };
5090
5101
  };
@@ -5135,6 +5146,11 @@ type SystemSubscribeOkEvent = {
5135
5146
  rooms: RealtimeRoom[];
5136
5147
  };
5137
5148
  };
5149
+ type RealtimeRoomRejection = {
5150
+ room: string;
5151
+ code: "BAD_ROOM" | "FORBIDDEN" | "UNAVAILABLE";
5152
+ message: string;
5153
+ };
5138
5154
  type SystemSubscribeErrorEvent = {
5139
5155
  id: string;
5140
5156
  timestamp: number;
@@ -5144,11 +5160,7 @@ type SystemSubscribeErrorEvent = {
5144
5160
  spaceId?: string | null;
5145
5161
  sessionId?: string | null;
5146
5162
  payload: {
5147
- rejected: Array<{
5148
- room: string;
5149
- code: "BAD_ROOM" | "FORBIDDEN";
5150
- message: string;
5151
- }>;
5163
+ rejected: RealtimeRoomRejection[];
5152
5164
  };
5153
5165
  };
5154
5166
  type RealtimeSessionRecord = Pick<SessionRecord$1, "id" | "spaceId" | "userUuid" | "title" | "source" | "status" | "activeTurn" | "activeTurnSequence" | "lastTurnIssue" | "externalSessionId" | "latestMessageText" | "lastMessageAt" | "lastMessageId" | "createdAt" | "updatedAt"> & {
@@ -7437,6 +7449,7 @@ type SpaceFsFileResponse = {
7437
7449
  content: string;
7438
7450
  delivery?: "inline" | "url";
7439
7451
  url?: string;
7452
+ media?: MediaFacts;
7440
7453
  };
7441
7454
  type SpaceFsReadFilesInput = {
7442
7455
  paths: string[];
@@ -8620,4 +8633,4 @@ declare const resolveVoiceInputWebsocketUrl: (options?: {
8620
8633
  env?: CohubEnvironment;
8621
8634
  }) => string;
8622
8635
  //#endregion
8623
- export { CheckpointDiffDelivery as $, SpacePublicEndpoints as $a, DisplayElement as $c, RealtimePatchOperation as $i, SpaceCommerceProduct as $n, ProjectionCursor as $o, SpaceSandboxConfig as $r, CompletionMessageRole as $s, PromptTemplateCatalogResponse as $t, BillingCreditExpiryGroup as A, DESKTOP_COMMAND_PAYLOAD_MAX_BYTES as Aa, BoardDelta as Ac, GenerationModelPolicy as Ai, isRequestSourceClientId as Al, SessionTurnSignedUrlsResponse as An, RUNTIME_PROTOCOL_VERSION as Ao, SpaceFsUploadPlanEntry as Ar, HarnessKind as As, JsonPrimitive as At, BillingProductBillingInterval as B, DesktopCommandRecord as Ba, BoardTrack as Bc, normalizeGenerationPolicy as Bi, SpaceActivityContributor as Bn, RuntimeStatus as Bo, SpaceListOptions as Br, resolveHarness as Bs, LabelScopeType as Bt, BillingBalanceActivityStatus as C, AppBoardAsset as Ca, BoardTransactionRecord as Cc, scopeListHasPermission as Ci, ActorModel as Cl, SessionListFork as Cn, SessionTurnIndexItem as Co, SpaceFsReadFilesInput as Cr, SETTLED_TURN_STATUSES as Cs, GlobalSearchChatHit as Ct, BillingCheckoutConfirmation as D, DESKTOP_COMMAND_DEFAULT_TIMEOUT_MS as Da, BoardAnimationHeader as Dc, ChannelRuntimeState as Di, RequestSource as Dl, SessionRecord as Dn, StoredToolCall as Do, SpaceFsUploadDestination as Dr, nativeTurnCompleteSchema as Ds, GlobalSearchViewerRelation as Dt, BillingCheckoutActionState as E, DESKTOP_COMMAND_ACCEPT_TIMEOUT_MS as Ea, BoardAnimation as Ec, ChannelHealthReasonCode as Ei, REQUEST_SOURCE_VIA_MAX_LENGTH as El, SessionMessagesResponse as En, StoredIntermediateMessage as Eo, SpaceFsTreeResponse as Er, nativeRuntimeEventSchema as Es, GlobalSearchType as Et, BillingDiscountOfferRef as F, DesktopAppTarget as Fa, BoardMarker as Fc, decodeGenerationPolicy as Fi, parseRequestSourceFromHeaders as Fl, SkillCatalogResponse as Fn, RuntimeContextMessage as Fo, SpaceInvitation as Fr, assertHarnessAccess as Fs, LabelItemsResponse as Ft, BillingProductPromotion as G, DesktopTarget as Ga, AppAuthorizationRequest as Gc, AppVersionPublishedEvent as Gi, SpaceBootstrapStatus as Gn, runtimeCommandSchema as Go, SpacePendingDiffFileResponse as Gr, RuntimeArchiveSegment as Gs, PaletteOverviewResponse as Gt, BillingProductDisplay as H, DesktopFileTarget as Ha, parseBoardItem as Hc, GenerationContentBlock as Hi, SpaceBootstrapMeta as Hn, RuntimeTraceContext as Ho, SpaceMember as Hr, HarnessArchiveIndex as Hs, MeResponse as Ht, BillingDiscountPricing as I, DesktopCall as Ia, BoardPatch as Ic, encodeGenerationPolicy as Ii, readRequestSourceFromEnv as Il, SkillCatalogSource as In, RuntimeExecutionEvent as Io, SpaceInvitationListResponse as Ir, harnessLabel as Is, LabelItemsSessionFork as It, BillingResponsePayload as J, isTerminalDesktopCommandStatus as Ja, SearchTextRange as Jc, BoardPlaybackChangedEvent as Ji, SpaceCommerceBenefit as Jn, contextToPiMessages as Jo, SpacePresenceUser as Jr, validateArchiveBoundary as Js, PatchResourceLabelsInput as Jt, BillingPromotionCodePreview as K, defaultDesktopCommandTimeoutMs as Ka, AppAuthorizationResult as Kc, BoardAwarenessUpdatedEvent as Ki, SpaceChannelBindingInput as Kn, runtimeEventSchema as Ko, SpacePendingDiffSummary as Kr, RuntimeArchiveUpload as Ks, PaletteOverviewSpace as Kt, BillingHistoryPagination as L, DesktopCommand as La, BoardPatchSchema as Lc, filterGenerationDeclarationsByPolicy as Li, requestSourceToHeaders as Ll, SpaceAccess as Ln, RuntimeMessage as Lo, SpaceInvitationLocation as Lr, harnessSchema as Ls, LabelListItem as Lt, BillingCreditStatus as M, DESKTOP_COMMAND_SETTLEMENT_GRACE_SECONDS as Ma, BoardDocument as Mc, GenerationPolicy as Mi, isRequestSourceUuid as Ml, SessionTurnWindowResponse as Mn, RuntimeCapabilities as Mo, SpaceFsUploadProgress as Mr, LOCAL_HARNESS_SPECS as Ms, LabelAssignmentListItem as Mt, BillingCreditUnit as N, DESKTOP_COMMAND_TERMINAL_TTL_SECONDS as Na, BoardItem as Nc, GenerationPolicyError as Ni, mergeRequestSourceIntoMeta as Nl, SessionTurnsPaginatedResponse as Nn, RuntimeCommand as No, SpaceFsUploadResponse as Nr, LocalHarness as Ns, LabelAssignmentPageInfo as Nt, BillingCheckoutResult as O, DESKTOP_COMMAND_MAX_TIMEOUT_MS as Oa, BoardAnimationSchema as Oc, DiscordChannelConfig as Oi, RequestSourceVia as Ol, SessionTurnIndexResponse as On, TurnIntermediateMessagesFile as Oo, SpaceFsUploadEntry as Or, nativeTurnProgressSchema as Os, InvitationDetail as Ot, BillingDiscountOffer as P, DESKTOP_COMMAND_VERSION as Pa, BoardKeyframe as Pc, assertGenerationRequestAllowedByPolicy as Pi, normalizeRequestSource as Pl, SkillCatalogEntry as Pn, RuntimeContext as Po, SpaceFsWriteFileInput as Pr, LocalHarnessSpec as Ps, LabelAssignmentRecord as Pt, Channel as Q, NavigationLaunch as Qa, DisplayCaptureParams as Qc, RealtimeAppVersionRecord as Qi, SpaceCommerceOrder as Qn, NativeProjection as Qo, SpaceSandboxAutoDestroyPolicy as Qr, CompletionMessageInput as Qs, PromptTemplateCatalogEntry as Qt, BillingPaymentStatus as R, DesktopCommandDispatchedPayload as Ra, BoardSettings as Rc, findGenerationModelPolicy as Ri, resolveRequestSourceChannel as Rl, SpaceAccessPolicy as Rn, RuntimePendingExecution as Ro, SpaceListFilter as Rr, isLocalHarness as Rs, LabelRecord as Rt, BillingBalanceActivityList as S, AppBoardArtifactManifest as Sa, BoardSnapshot as Sc, isUserLevelPermission as Si, ActorKind as Sl, SessionBindingRecord as Sn, MessageToolCallsFile as So, SpaceFsReadFilesError as Sr, RuntimeNativeStop as Ss, GenerationUsageSummary as St, BillingCatalogProduct as T, AppVersionSource as Ta, BOARD_ITEM_TYPES as Tc, ChannelHealth as Ti, COHUB_SOURCE_HEADER_NAMES as Tl, SessionMessagesPaginatedResponse as Tn, SpaceTurnsResponse$1 as To, SpaceFsTreePage as Tr, nativeIngestTurnSchema as Ts, GlobalSearchResult as Tt, BillingProductKind as U, DesktopOpenCommand as Ua, BillingPayload as Uc, GenerationModelDeclaration as Ui, SpaceBootstrapSource as Un, RuntimeTurnInput as Uo, SpaceMeta as Ur, RUNTIME_ARCHIVE_SEGMENT_BYTES as Us, ModelCatalogEntry as Ut, BillingProductCreditBenefit as V, DesktopCommandStatus as Va, BoardTrackSchema as Vc, parseGenerationPolicyFromEnv as Vi, SpaceActivityResponse as Vn, RuntimeStopConfirmation as Vo, SpaceListPage as Vr, HarnessArchive as Vs, LabelSource as Vt, BillingProductPricing as W, DesktopSurface as Wa, AppAuthorizationGrant as Wc, GenerationResult as Wi, SpaceBootstrapStage as Wn, RuntimeTurnUserMessage as Wo, SpaceModListItem as Wr, RuntimeArchivePage as Ws, PERMISSIONS as Wt, BillingSubscriptionHistoryStatus as X, resolveOpenSurface as Xa, DISPLAY_SYSTEM_ACTIONS as Xc, LabelAssignmentsUpdatedEvent as Xi, SpaceCommerceCreditsBenefit as Xn, CanonicalProjectionMessage as Xo, SpaceRecord as Xr, CompletionImageInput as Xs, Permission as Xt, BillingSubscriptionHistoryList as Y, parseDesktopCommand as Ya, DISPLAY_ELEMENT_REF_PATTERN as Yc, ChannelEnvelope as Yi, SpaceCommerceBuyerProfile as Yn, selectRuntimeContextMessages as Yo, SpacePublicProfile as Yr, CompletionAssistantMessage as Ys, PatchResourceLabelsResponse as Yt, BillingSubscriptionSummary as Z, NavigationCall as Za, DisplayCapture as Zc, RealtimeAppRecord as Zi, SpaceCommerceFeatureBenefit as Zn, CanonicalProjectionTurn as Zo, SpaceRole as Zr, CompletionMessage as Zs, PromptAccessMode as Zt, AcceptInvitationResponse as _, normalizeAppDomainHostname as _a, BoardPlaybackCommand as _c, UserRulesResponse as _i, DisplayAction as _l, ReferralReward as _n, SessionTurnSegmentRecord as _o, SpaceFsFileKind as _r, NativeKnownResult as _s, CronJobRecord as _t, CohubRuntimeKind as a, RealtimeRoomMember as aa, SpaceCompletionStreamEvent as ac, SpaceUsageHourlyStat as ai, DisplayTree as al, PublicUserWorkItem as an, SpaceFsCopySource as ao, SpaceConfigUpdateResponse as ar, isProjectionCompaction as as, CheckpointDiffStatus as at, BillingBalanceActivity as b, AppArtifactManifest as ba, BoardReadResult as bc, UserSessionSpaceSummary as bi, SandboxSetupInfo as bl, SandboxSpecId as bn, SessionStats as bo, SpaceFsMoveInput as br, NativeTurnMessage as bs, GenerationUsageBlock as bt, normalizeVoiceInputWebsocketUrl as c, SessionCreatedEvent as ca, TaskRunBoard as cc, TaskRunDetailResponse as ci, DisplayVirtualStart as cl, ReferenceAggregateResponse as cn, BoardAwarenessGesture as co, SpaceEnvInput as cr, projectNativeSession as cs, ClaimReferralResponse as ct, resolveCohubEnvironment as d, AppDomainDnsRecord as da, BoardApplyResult as dc, UsageTotals as di, AppRtcMediaKind as dl, ReferenceQueryResponse as dn, BoardAwarenessUpdate as do, SpaceFsCreateDirectoryInput as dr, trimProjectionTurnsToCompaction as ds, CreateSpaceInput as dt, RealtimeRoom as ea, CompletionThinkingLevel as ec, SpaceSandboxProvider as ei, DisplayInfo as el, PublicReferral as en, SpaceFsCopyError as eo, SpaceCommerceProductBenefitBinding as er, ProjectionInput as es, CheckpointDiffFile as et, resolveExecutionAppId as f, AppDomainErrorCode as fa, BoardChangeSummary as fc, UserActivityQuery as fi, AppRtcPublication as fl, ReferenceQueryableType as fn, MessageRecord as fo, SpaceFsCreateUploadInput as fr, NATIVE_INGEST_MAX_TURNS as fs, CreateSpaceModInput as ft, resolveWebsocketUrl as g, AppDomainStatus as ga, BoardManifest as gc, UserProfile as gi, DISPLAY_ACTION_TYPES as gl, ReferralListItem as gn, SessionForkRecord as go, SpaceFsEntry as gr, NativeIngestTurn as gs, CronJobPayload as gt, resolveWebBaseUrl as h, AppDomainRemovedReason as ha, BoardHistoryPage as hc, UserActivityResponse as hi, RtcIceServers as hl, ReferralDashboard as hn, SessionFilesResponse as ho, SpaceFsEncoding as hr, NativeIngestResult as hs, CreateSpaceSessionInput as ht, CohubExecutionContext as i, RealtimeRoomHistoryEvent as ia, SpaceCompletionResult as ic, SpaceTurnsResponse as ii, DisplaySystemAction as il, PublicUserSpaceItem as in, SpaceFsCopyResult as io, SpaceConfigResponse as ir, fingerprintProjectionTurns as is, CheckpointDiffStats as it, BillingCreditGrantStatus as j, DESKTOP_COMMAND_PENDING_TTL_SECONDS as ja, BoardDiagnostic as jc, GenerationParameterConstraint as ji, isRequestSourceEmpty as jl, SessionTurnStreamSnapshotResponse as jn, RUNTIME_RECOVERY_BATCH_SIZE as jo, SpaceFsUploadPlanEntryInput as jr, LOCAL_HARNESSES as js, JsonValue as jt, BillingConversionIntent as k, DESKTOP_COMMAND_OPEN_TIMEOUT_MS as ka, BoardColor as kc, FeishuChannelConfig as ki, hasRequestSourceIdentity as kl, SessionTurnResponse as kn, RUNTIME_MAX_FRAME_BYTES as ko, SpaceFsUploadError as kr, runtimeNativeStopSchema as ks, JsonObject as kt, normalizeWebsocketUrl as l, SessionTurnPatchEvent as la, parseBoardDocument as lc, TaskRunRecord as li, normalizeDisplayPoint as ll, ReferenceDirection as ln, BoardAwarenessItemPreview as lo, SpaceFsCompleteUploadInput as lr, serializeProjection as ls, CreateInvitationInput as lt, resolveVoiceInputWebsocketUrl as m, AppDomainRecord as ma, BoardHistoryInput as mc, UserActivityRankings as mi, RtcIceServer as ml, ReferenceResourceType as mn, SessionFileRecord as mo, SpaceFsDeleteNodeInput as mr, NativeIngest as ms, CreateSpacePromptResponse as mt, CohubContext as n, RealtimeRoomEvent as na, CreateSpaceCompletionInput as nc, SpaceTurnAuthorFilter as ni, DisplayList as nl, PublicUserPageResponse as nn, SpaceFsCopyOptions as no, SpaceConfig as nr, ProjectionTarget as ns, CheckpointDiffPatchKind as nt, getCohubContext as o, RealtimeServerEvent as oa, Usage as oc, SpaceUsageResponse as oi, DisplayTreeParams as ol, ReferenceAggregateGroup as on, SpaceFsCopyStats as oo, SpaceCreateResponse as or, isProjectionPendingGeneration as os, CheckpointDiffSummary as ot, resolveExecutionToken as p, AppDomainListResponse as pa, BoardCreateInput as pc, UserActivityRange as pi, AppRtcQuality as pl, ReferenceRecord as pn, SessionFileChangeKind as po, SpaceFsCreateUploadResponse as pr, NATIVE_SYNC_SOURCE as ps, CreateSpacePromptInput as pt, BillingRedemptionResult as q, isDesktopCallMethod as qa, AppAuthorizationTarget as qc, BoardChangedEvent as qi, SpaceCheckpointDetailResponse as qn, runtimeReadySchema as qo, SpacePresenceSnapshot as qr, harnessArchiveIndexSchema as qs, PaletteOverviewSpaceRelation as qt, CohubEnvironment as r, RealtimeRoomHistory as ra, ModelThinkingLevel as rc, SpaceTurnListItem as ri, DisplaySession as rl, PublicUserProfile as rn, SpaceFsCopyResponse as ro, SpaceConfigInput as rr, ProjectionWarning as rs, CheckpointDiffPatchLine as rt, normalizeBaseUrl as s, RealtimeSessionFork as sa, ContentBlock as sc, SpaceUsageSummary as si, DisplayViewer as sl, ReferenceAggregateGroupBy as sn, SpaceFsCopyStatus as so, SpaceDefaultResponse as sr, projectNativeMessageMeta as ss, CheckpointRecord as st, COHUB_ENVIRONMENTS as t, RealtimeRoomDescriptor as ta, CompletionUsage as tc, SpaceSessionsResponse as ti, DisplayInputEvent as tl, PublicUserAppItem as tn, SpaceFsCopyInput as to, SpaceCommerceProductCreditBenefit as tr, ProjectionRecord as ts, CheckpointDiffFileResponse as tt, resolveApiBaseUrl as u, APP_DOMAIN_PRICE_USD as ua, BoardApplyInput as uc, USER_LEVEL_PERMISSIONS as ui, AppRtcDelivery as ul, ReferenceKind as un, BoardAwarenessStateUpdate as uo, SpaceFsCompleteUploadResponse as ur, serializeProjectionRecords as us, CreateInvitationResponse as ut, ApiError as v, AppArtifactDescriptor as va, BoardPlaybackSnapshot as vc, UserSessionListItem as vi, DisplayActionError as vl, ReferralStatus as vn, ExecutionStats as vo, SpaceFsFileResponse as vr, NativeRuntimeEvent as vs, CronJobUpdatePatch as vt, BillingCatalog as w, AppContentKind as wa, BOARD_COLOR_TOKENS as wc, ChannelConfig as wi, COHUB_SOURCE_HEADER as wl, SessionMessageResponse as wn, SessionTurnRecord as wo, SpaceFsReadFilesResponse as wr, isNativeClientTurn as ws, GlobalSearchResponse as wt, BillingBalanceActivityKind as x, AppArtifactManifestFile as xa, BoardRecord as xc, UserSessionsResponse as xi, Actor as xl, SendMessageCronJobPayload as xn, TurnMetrics as xo, SpaceFsPreparingFile as xr, NativeTurnProgress as xs, GenerationUsageHourlyStat as xt, BatchUserProfilesResponse as y, AppArtifactDownloadDescriptor as ya, BoardReadInput as yc, UserSessionSourceKey as yi, compileDisplayActions as yl, ResourceLabelsResponse as yn, RequestMetric as yo, SpaceFsListOptions as yr, NativeTurnComplete as ys, CursorPageInfo as yt, BillingPluginStatus as z, DesktopCommandError as za, BoardStyle as zc, getAllowedGenerationModelIds as zi, SpaceActivityAppRanking as zn, RuntimeSessionRecoveryStatus as zo, SpaceListItem as zr, localHarnessSchema as zs, LabelResourceType as zt };
8636
+ export { CheckpointDiffDelivery as $, SpacePublicEndpoints as $a, DisplayCapture as $c, RealtimePatchOperation as $i, SpaceCommerceProduct as $n, NativeProjection as $o, SpaceSandboxConfig as $r, CompletionMessageInput as $s, PromptTemplateCatalogResponse as $t, BillingCreditExpiryGroup as A, DESKTOP_COMMAND_PAYLOAD_MAX_BYTES as Aa, BoardAnimationSchema as Ac, GenerationModelPolicy as Ai, RequestSourceVia as Al, SessionTurnSignedUrlsResponse as An, RUNTIME_MAX_FRAME_BYTES as Ao, SpaceFsUploadPlanEntry as Ar, runtimeNativeStopSchema as As, JsonPrimitive as At, BillingProductBillingInterval as B, DesktopCommandRecord as Ba, BoardSettings as Bc, normalizeGenerationPolicy as Bi, resolveRequestSourceChannel as Bl, SpaceActivityContributor as Bn, RuntimeSessionRecoveryStatus as Bo, SpaceListOptions as Br, localHarnessSchema as Bs, LabelScopeType as Bt, BillingBalanceActivityStatus as C, AppBoardAsset as Ca, BoardRecord as Cc, scopeListHasPermission as Ci, Actor as Cl, SessionListFork as Cn, MessageToolCallsFile as Co, SpaceFsReadFilesInput as Cr, RuntimeNativeStop as Cs, GlobalSearchChatHit as Ct, BillingCheckoutConfirmation as D, DESKTOP_COMMAND_DEFAULT_TIMEOUT_MS as Da, BOARD_ITEM_TYPES as Dc, ChannelRuntimeState as Di, COHUB_SOURCE_HEADER_NAMES as Dl, SessionRecord as Dn, StoredIntermediateMessage as Do, SpaceFsUploadDestination as Dr, nativeRuntimeEventSchema as Ds, GlobalSearchViewerRelation as Dt, BillingCheckoutActionState as E, DESKTOP_COMMAND_ACCEPT_TIMEOUT_MS as Ea, BOARD_COLOR_TOKENS as Ec, ChannelHealthReasonCode as Ei, COHUB_SOURCE_HEADER as El, SessionMessagesResponse as En, SpaceTurnsResponse$1 as Eo, SpaceFsTreeResponse as Er, nativeIngestTurnSchema as Es, GlobalSearchType as Et, BillingDiscountOfferRef as F, DesktopAppTarget as Fa, BoardItem as Fc, decodeGenerationPolicy as Fi, mergeRequestSourceIntoMeta as Fl, SkillCatalogResponse as Fn, RuntimeContext as Fo, SpaceInvitation as Fr, LocalHarnessSpec as Fs, LabelItemsResponse as Ft, BillingProductPromotion as G, DesktopTarget as Ga, BillingPayload as Gc, AppVersionPublishedEvent as Gi, SpaceBootstrapStatus as Gn, RuntimeTurnUserMessage as Go, SpacePendingDiffFileResponse as Gr, RuntimeArchivePage as Gs, PaletteOverviewResponse as Gt, BillingProductDisplay as H, DesktopFileTarget as Ha, BoardTrack as Hc, GenerationContentBlock as Hi, SpaceBootstrapMeta as Hn, RuntimeStopConfirmation as Ho, SpaceMember as Hr, HarnessArchive as Hs, MeResponse as Ht, BillingDiscountPricing as I, DesktopCall as Ia, BoardKeyframe as Ic, encodeGenerationPolicy as Ii, normalizeRequestSource as Il, SkillCatalogSource as In, RuntimeContextMessage as Io, SpaceInvitationListResponse as Ir, assertHarnessAccess as Is, LabelItemsSessionFork as It, BillingResponsePayload as J, isTerminalDesktopCommandStatus as Ja, AppAuthorizationResult as Jc, BoardPlaybackChangedEvent as Ji, SpaceCommerceBenefit as Jn, runtimeReadySchema as Jo, SpacePresenceUser as Jr, harnessArchiveIndexSchema as Js, PatchResourceLabelsInput as Jt, BillingPromotionCodePreview as K, defaultDesktopCommandTimeoutMs as Ka, AppAuthorizationGrant as Kc, BoardAwarenessUpdatedEvent as Ki, SpaceChannelBindingInput as Kn, runtimeCommandSchema as Ko, SpacePendingDiffSummary as Kr, RuntimeArchiveSegment as Ks, PaletteOverviewSpace as Kt, BillingHistoryPagination as L, DesktopCommand as La, BoardMarker as Lc, filterGenerationDeclarationsByPolicy as Li, parseRequestSourceFromHeaders as Ll, SpaceAccess as Ln, RuntimeExecutionEvent as Lo, SpaceInvitationLocation as Lr, harnessLabel as Ls, LabelListItem as Lt, BillingCreditStatus as M, DESKTOP_COMMAND_SETTLEMENT_GRACE_SECONDS as Ma, BoardDelta as Mc, GenerationPolicy as Mi, isRequestSourceClientId as Ml, SessionTurnWindowResponse as Mn, RUNTIME_RECOVERY_BATCH_SIZE as Mo, SpaceFsUploadProgress as Mr, LOCAL_HARNESSES as Ms, LabelAssignmentListItem as Mt, BillingCreditUnit as N, DESKTOP_COMMAND_TERMINAL_TTL_SECONDS as Na, BoardDiagnostic as Nc, GenerationPolicyError as Ni, isRequestSourceEmpty as Nl, SessionTurnsPaginatedResponse as Nn, RuntimeCapabilities as No, SpaceFsUploadResponse as Nr, LOCAL_HARNESS_SPECS as Ns, LabelAssignmentPageInfo as Nt, BillingCheckoutResult as O, DESKTOP_COMMAND_MAX_TIMEOUT_MS as Oa, BoardAnimation as Oc, DiscordChannelConfig as Oi, REQUEST_SOURCE_VIA_MAX_LENGTH as Ol, SessionTurnIndexResponse as On, StoredToolCall as Oo, SpaceFsUploadEntry as Or, nativeTurnCompleteSchema as Os, InvitationDetail as Ot, BillingDiscountOffer as P, DESKTOP_COMMAND_VERSION as Pa, BoardDocument as Pc, assertGenerationRequestAllowedByPolicy as Pi, isRequestSourceUuid as Pl, SkillCatalogEntry as Pn, RuntimeCommand as Po, SpaceFsWriteFileInput as Pr, LocalHarness as Ps, LabelAssignmentRecord as Pt, Channel as Q, NavigationLaunch as Qa, DISPLAY_SYSTEM_ACTIONS as Qc, RealtimeAppVersionRecord as Qi, SpaceCommerceOrder as Qn, CanonicalProjectionTurn as Qo, SpaceSandboxAutoDestroyPolicy as Qr, CompletionMessage as Qs, PromptTemplateCatalogEntry as Qt, BillingPaymentStatus as R, DesktopCommandDispatchedPayload as Ra, BoardPatch as Rc, findGenerationModelPolicy as Ri, readRequestSourceFromEnv as Rl, SpaceAccessPolicy as Rn, RuntimeMessage as Ro, SpaceListFilter as Rr, harnessSchema as Rs, LabelRecord as Rt, BillingBalanceActivityList as S, AppBoardArtifactManifest as Sa, BoardReadResult as Sc, isUserLevelPermission as Si, SandboxSetupInfo as Sl, SessionBindingRecord as Sn, TurnMetrics as So, SpaceFsReadFilesError as Sr, NativeTurnProgress as Ss, GenerationUsageSummary as St, BillingCatalogProduct as T, AppVersionSource as Ta, BoardTransactionRecord as Tc, ChannelHealth as Ti, ActorModel as Tl, SessionMessagesPaginatedResponse as Tn, SessionTurnRecord as To, SpaceFsTreePage as Tr, isNativeClientTurn as Ts, GlobalSearchResult as Tt, BillingProductKind as U, DesktopOpenCommand as Ua, BoardTrackSchema as Uc, GenerationModelDeclaration as Ui, SpaceBootstrapSource as Un, RuntimeTraceContext as Uo, SpaceMeta as Ur, HarnessArchiveIndex as Us, ModelCatalogEntry as Ut, BillingProductCreditBenefit as V, DesktopCommandStatus as Va, BoardStyle as Vc, parseGenerationPolicyFromEnv as Vi, SpaceActivityResponse as Vn, RuntimeStatus as Vo, SpaceListPage as Vr, resolveHarness as Vs, LabelSource as Vt, BillingProductPricing as W, DesktopSurface as Wa, parseBoardItem as Wc, GenerationResult as Wi, SpaceBootstrapStage as Wn, RuntimeTurnInput as Wo, SpaceModListItem as Wr, RUNTIME_ARCHIVE_SEGMENT_BYTES as Ws, PERMISSIONS as Wt, BillingSubscriptionHistoryStatus as X, resolveOpenSurface as Xa, SearchTextRange as Xc, LabelAssignmentsUpdatedEvent as Xi, SpaceCommerceCreditsBenefit as Xn, selectRuntimeContextMessages as Xo, SpaceRecord as Xr, CompletionAssistantMessage as Xs, Permission as Xt, BillingSubscriptionHistoryList as Y, parseDesktopCommand as Ya, AppAuthorizationTarget as Yc, ChannelEnvelope as Yi, SpaceCommerceBuyerProfile as Yn, contextToPiMessages as Yo, SpacePublicProfile as Yr, validateArchiveBoundary as Ys, PatchResourceLabelsResponse as Yt, BillingSubscriptionSummary as Z, NavigationCall as Za, DISPLAY_ELEMENT_REF_PATTERN as Zc, RealtimeAppRecord as Zi, SpaceCommerceFeatureBenefit as Zn, CanonicalProjectionMessage as Zo, SpaceRole as Zr, CompletionImageInput as Zs, PromptAccessMode as Zt, AcceptInvitationResponse as _, normalizeAppDomainHostname as _a, BoardHistoryPage as _c, UserRulesResponse as _i, RtcIceServers as _l, ReferralReward as _n, SessionForkRecord as _o, SpaceFsFileKind as _r, NativeIngestTurn as _s, CronJobRecord as _t, CohubRuntimeKind as a, RealtimeRoomMember as aa, SpaceCompletionResult as ac, SpaceUsageHourlyStat as ai, DisplaySession as al, PublicUserWorkItem as an, SpaceFsCopyResult as ao, SpaceConfigUpdateResponse as ar, fingerprintProjectionTurns as as, CheckpointDiffStatus as at, BillingBalanceActivity as b, AppArtifactManifest as ba, BoardPlaybackSnapshot as bc, UserSessionSpaceSummary as bi, DisplayActionError as bl, SandboxSpecId as bn, RequestMetric as bo, SpaceFsMoveInput as br, NativeTurnComplete as bs, GenerationUsageBlock as bt, normalizeVoiceInputWebsocketUrl as c, SessionCreatedEvent as ca, Usage as cc, TaskRunDetailResponse as ci, DisplayTreeParams as cl, ReferenceAggregateResponse as cn, SpaceFsCopyStatus as co, SpaceEnvInput as cr, projectNativeMessageMeta as cs, ClaimReferralResponse as ct, resolveCohubEnvironment as d, AppDomainDnsRecord as da, parseBoardDocument as dc, UsageTotals as di, normalizeDisplayPoint as dl, ReferenceQueryResponse as dn, BoardAwarenessStateUpdate as do, SpaceFsCreateDirectoryInput as dr, serializeProjectionRecords as ds, CreateSpaceInput as dt, RealtimeRoom as ea, CompletionMessageRole as ec, SpaceSandboxProvider as ei, DisplayCaptureParams as el, PublicReferral as en, SpaceFsChangedPayload as eo, SpaceCommerceProductBenefitBinding as er, ProjectionCursor as es, CheckpointDiffFile as et, resolveExecutionAppId as f, AppDomainErrorCode as fa, BoardApplyInput as fc, UserActivityQuery as fi, AppRtcDelivery as fl, ReferenceQueryableType as fn, BoardAwarenessUpdate as fo, SpaceFsCreateUploadInput as fr, trimProjectionTurnsToCompaction as fs, CreateSpaceModInput as ft, resolveWebsocketUrl as g, AppDomainStatus as ga, BoardHistoryInput as gc, UserProfile as gi, RtcIceServer as gl, ReferralListItem as gn, SessionFilesResponse as go, SpaceFsEntry as gr, NativeIngestResult as gs, CronJobPayload as gt, resolveWebBaseUrl as h, AppDomainRemovedReason as ha, BoardCreateInput as hc, UserActivityResponse as hi, AppRtcQuality as hl, ReferralDashboard as hn, SessionFileRecord as ho, SpaceFsEncoding as hr, NativeIngest as hs, CreateSpaceSessionInput as ht, CohubExecutionContext as i, RealtimeRoomHistoryEvent as ia, ModelThinkingLevel as ic, SpaceTurnsResponse as ii, DisplayList as il, PublicUserSpaceItem as in, SpaceFsCopyResponse as io, SpaceConfigResponse as ir, ProjectionWarning as is, CheckpointDiffStats as it, BillingCreditGrantStatus as j, DESKTOP_COMMAND_PENDING_TTL_SECONDS as ja, BoardColor as jc, GenerationParameterConstraint as ji, hasRequestSourceIdentity as jl, SessionTurnStreamSnapshotResponse as jn, RUNTIME_PROTOCOL_VERSION as jo, SpaceFsUploadPlanEntryInput as jr, HarnessKind as js, JsonValue as jt, BillingConversionIntent as k, DESKTOP_COMMAND_OPEN_TIMEOUT_MS as ka, BoardAnimationHeader as kc, FeishuChannelConfig as ki, RequestSource as kl, SessionTurnResponse as kn, TurnIntermediateMessagesFile as ko, SpaceFsUploadError as kr, nativeTurnProgressSchema as ks, JsonObject as kt, normalizeWebsocketUrl as l, SessionTurnPatchEvent as la, ContentBlock as lc, TaskRunRecord as li, DisplayViewer as ll, ReferenceDirection as ln, BoardAwarenessGesture as lo, SpaceFsCompleteUploadInput as lr, projectNativeSession as ls, CreateInvitationInput as lt, resolveVoiceInputWebsocketUrl as m, AppDomainRecord as ma, BoardChangeSummary as mc, UserActivityRankings as mi, AppRtcPublication as ml, ReferenceResourceType as mn, SessionFileChangeKind as mo, SpaceFsDeleteNodeInput as mr, NATIVE_SYNC_SOURCE as ms, CreateSpacePromptResponse as mt, CohubContext as n, RealtimeRoomEvent as na, CompletionUsage as nc, SpaceTurnAuthorFilter as ni, DisplayInfo as nl, PublicUserPageResponse as nn, SpaceFsCopyInput as no, SpaceConfig as nr, ProjectionRecord as ns, CheckpointDiffPatchKind as nt, getCohubContext as o, RealtimeServerEvent as oa, SpaceCompletionStreamEvent as oc, SpaceUsageResponse as oi, DisplaySystemAction as ol, ReferenceAggregateGroup as on, SpaceFsCopySource as oo, SpaceCreateResponse as or, isProjectionCompaction as os, CheckpointDiffSummary as ot, resolveExecutionToken as p, AppDomainListResponse as pa, BoardApplyResult as pc, UserActivityRange as pi, AppRtcMediaKind as pl, ReferenceRecord as pn, MessageRecord as po, SpaceFsCreateUploadResponse as pr, NATIVE_INGEST_MAX_TURNS as ps, CreateSpacePromptInput as pt, BillingRedemptionResult as q, isDesktopCallMethod as qa, AppAuthorizationRequest as qc, BoardChangedEvent as qi, SpaceCheckpointDetailResponse as qn, runtimeEventSchema as qo, SpacePresenceSnapshot as qr, RuntimeArchiveUpload as qs, PaletteOverviewSpaceRelation as qt, CohubEnvironment as r, RealtimeRoomHistory as ra, CreateSpaceCompletionInput as rc, SpaceTurnListItem as ri, DisplayInputEvent as rl, PublicUserProfile as rn, SpaceFsCopyOptions as ro, SpaceConfigInput as rr, ProjectionTarget as rs, CheckpointDiffPatchLine as rt, normalizeBaseUrl as s, RealtimeSessionFork as sa, MediaFacts as sc, SpaceUsageSummary as si, DisplayTree as sl, ReferenceAggregateGroupBy as sn, SpaceFsCopyStats as so, SpaceDefaultResponse as sr, isProjectionPendingGeneration as ss, CheckpointRecord as st, COHUB_ENVIRONMENTS as t, RealtimeRoomDescriptor as ta, CompletionThinkingLevel as tc, SpaceSessionsResponse as ti, DisplayElement as tl, PublicUserAppItem as tn, SpaceFsCopyError as to, SpaceCommerceProductCreditBenefit as tr, ProjectionInput as ts, CheckpointDiffFileResponse as tt, resolveApiBaseUrl as u, APP_DOMAIN_PRICE_USD as ua, TaskRunBoard as uc, USER_LEVEL_PERMISSIONS as ui, DisplayVirtualStart as ul, ReferenceKind as un, BoardAwarenessItemPreview as uo, SpaceFsCompleteUploadResponse as ur, serializeProjection as us, CreateInvitationResponse as ut, ApiError as v, AppArtifactDescriptor as va, BoardManifest as vc, UserSessionListItem as vi, DISPLAY_ACTION_TYPES as vl, ReferralStatus as vn, SessionTurnSegmentRecord as vo, SpaceFsFileResponse as vr, NativeKnownResult as vs, CronJobUpdatePatch as vt, BillingCatalog as w, AppContentKind as wa, BoardSnapshot as wc, ChannelConfig as wi, ActorKind as wl, SessionMessageResponse as wn, SessionTurnIndexItem as wo, SpaceFsReadFilesResponse as wr, SETTLED_TURN_STATUSES as ws, GlobalSearchResponse as wt, BillingBalanceActivityKind as x, AppArtifactManifestFile as xa, BoardReadInput as xc, UserSessionsResponse as xi, compileDisplayActions as xl, SendMessageCronJobPayload as xn, SessionStats as xo, SpaceFsPreparingFile as xr, NativeTurnMessage as xs, GenerationUsageHourlyStat as xt, BatchUserProfilesResponse as y, AppArtifactDownloadDescriptor as ya, BoardPlaybackCommand as yc, UserSessionSourceKey as yi, DisplayAction as yl, ResourceLabelsResponse as yn, ExecutionStats as yo, SpaceFsListOptions as yr, NativeRuntimeEvent as ys, CursorPageInfo as yt, BillingPluginStatus as z, DesktopCommandError as za, BoardPatchSchema as zc, getAllowedGenerationModelIds as zi, requestSourceToHeaders as zl, SpaceActivityAppRanking as zn, RuntimePendingExecution as zo, SpaceListItem as zr, isLocalHarness as zs, LabelResourceType as zt };
@@ -88,8 +88,8 @@ const readProcessEnv = () => {
88
88
  const readRuntimeEnv = () => readProcessEnv()?.ENV;
89
89
  /** Existing scoped identity injected into Sandbox command processes. */
90
90
  const resolveExecutionToken = () => readProcessEnv()?.COHUB_EXECUTION_TOKEN?.trim() || null;
91
- function decodeExecutionPayload() {
92
- const encoded = resolveExecutionToken()?.split(".")[1];
91
+ function decodeJwtPayload(token) {
92
+ const encoded = token?.split(".")[1];
93
93
  if (!encoded) return null;
94
94
  try {
95
95
  const base64 = encoded.replaceAll("-", "+").replaceAll("_", "/").padEnd(Math.ceil(encoded.length / 4) * 4, "=");
@@ -99,6 +99,7 @@ function decodeExecutionPayload() {
99
99
  return null;
100
100
  }
101
101
  }
102
+ const decodeExecutionPayload = () => decodeJwtPayload(resolveExecutionToken());
102
103
  const readString = (env, key) => env?.[key]?.trim() || null;
103
104
  const readPayloadString = (payload, key) => typeof payload?.[key] === "string" && payload[key] ? payload[key] : null;
104
105
  const KNOWN_PERMISSIONS = new Set(PERMISSIONS);
@@ -173,4 +174,4 @@ const resolveVoiceInputWebsocketUrl = (options = {}) => {
173
174
  return COHUB_ENVIRONMENTS[resolveCohubEnvironment(options.env)].voiceInputWebsocketUrl;
174
175
  };
175
176
  //#endregion
176
- export { normalizeWebsocketUrl as a, resolveExecutionAppId as c, resolveWebBaseUrl as d, resolveWebsocketUrl as f, scopeListHasPermission as g, isUserLevelPermission as h, normalizeVoiceInputWebsocketUrl as i, resolveExecutionToken as l, USER_LEVEL_PERMISSIONS as m, getCohubContext as n, resolveApiBaseUrl as o, PERMISSIONS as p, normalizeBaseUrl as r, resolveCohubEnvironment as s, COHUB_ENVIRONMENTS as t, resolveVoiceInputWebsocketUrl as u };
177
+ export { scopeListHasPermission as _, normalizeVoiceInputWebsocketUrl as a, resolveCohubEnvironment as c, resolveVoiceInputWebsocketUrl as d, resolveWebBaseUrl as f, isUserLevelPermission as g, USER_LEVEL_PERMISSIONS as h, normalizeBaseUrl as i, resolveExecutionAppId as l, PERMISSIONS as m, decodeJwtPayload as n, normalizeWebsocketUrl as o, resolveWebsocketUrl as p, getCohubContext as r, resolveApiBaseUrl as s, COHUB_ENVIRONMENTS as t, resolveExecutionToken as u };
@@ -1,4 +1,4 @@
1
- import { o as resolveApiBaseUrl } from "./environment.js";
1
+ import { n as decodeJwtPayload, s as resolveApiBaseUrl } from "./environment.js";
2
2
  //#region ../protocol/dist/identifiers.js
3
3
  const UUID_SHAPE_PATTERN = "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}";
4
4
  const UUID_PATTERN = "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}";
@@ -330,6 +330,7 @@ var HttpTransport = class {
330
330
  getAuthSessionVersion;
331
331
  onUnauthorized;
332
332
  requestSource;
333
+ scopedToken = null;
333
334
  refreshInFlight = null;
334
335
  constructor(options = {}) {
335
336
  this.baseUrl = resolveApiBaseUrl(options);
@@ -339,6 +340,26 @@ var HttpTransport = class {
339
340
  this.onUnauthorized = options.onUnauthorized;
340
341
  this.requestSource = options.requestSource;
341
342
  }
343
+ async credential() {
344
+ return sanitizeAccessToken(this.getAccessToken ? await this.getAccessToken() : null);
345
+ }
346
+ async cacheScope() {
347
+ let token;
348
+ try {
349
+ token = await this.credential();
350
+ } catch {
351
+ return null;
352
+ }
353
+ if (!token) return "anonymous";
354
+ if (this.scopedToken?.token !== token) {
355
+ const uuid = decodeJwtPayload(token)?.talesofai_uuid;
356
+ this.scopedToken = {
357
+ token,
358
+ scope: typeof uuid === "string" && uuid ? `user:${uuid}` : null
359
+ };
360
+ }
361
+ return this.scopedToken.scope;
362
+ }
342
363
  resolveRequestSource() {
343
364
  if (!this.requestSource) return null;
344
365
  if (typeof this.requestSource === "function") return this.requestSource() ?? null;
@@ -356,10 +377,11 @@ var HttpTransport = class {
356
377
  }
357
378
  }
358
379
  async withAuthorization(init, tokenOverride) {
359
- const { fetch: _fetch, skipUnauthorizedHandler: _skip, ...requestInit } = init ?? {};
380
+ const { fetch: _fetch, skipUnauthorizedHandler: _skip, accessToken, ...requestInit } = init ?? {};
360
381
  const headers = new Headers(requestInit.headers);
361
382
  let authSessionVersion = this.readAuthSessionVersion();
362
- const token = sanitizeAccessToken(tokenOverride !== void 0 ? tokenOverride : this.getAccessToken ? await this.getAccessToken() : null);
383
+ const pinned = tokenOverride !== void 0 ? tokenOverride : accessToken;
384
+ const token = sanitizeAccessToken(pinned !== void 0 ? pinned : this.getAccessToken ? await this.getAccessToken() : null);
363
385
  if (token) {
364
386
  const resolvedVersion = this.readAuthSessionVersion();
365
387
  if (resolvedVersion !== void 0) authSessionVersion = resolvedVersion;
@@ -413,7 +435,8 @@ var HttpTransport = class {
413
435
  async send(path, init) {
414
436
  const fetcher = init?.fetch ?? this.fetcher;
415
437
  const url = joinApiUrl(this.baseUrl, path);
416
- const skipUnauthorizedHandler = Boolean(init?.skipUnauthorizedHandler);
438
+ const pinned = init?.accessToken !== void 0;
439
+ const skipUnauthorizedHandler = Boolean(init?.skipUnauthorizedHandler) || pinned;
417
440
  let response;
418
441
  let rejectedToken = null;
419
442
  let rejectedAuthSessionVersion;
@@ -426,7 +449,7 @@ var HttpTransport = class {
426
449
  if (isBrowserRequestConstructionError(error)) throw new Error("Could not send request. Your session may be invalid — try refreshing or signing in again.", { cause: error });
427
450
  throw error;
428
451
  }
429
- if (response.status === 401 && this.getAccessToken) {
452
+ if (response.status === 401 && this.getAccessToken && !pinned) {
430
453
  const refreshedToken = await this.refreshAccessToken(rejectedToken);
431
454
  if (refreshedToken) {
432
455
  let retryResponse;