@neta-art/cohub 5.9.0 → 5.10.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 (39) hide show
  1. package/dist/board/animation.js +34 -5
  2. package/dist/board/codec.js +1 -1
  3. package/dist/board/export/index.d.ts +6 -0
  4. package/dist/board/export/index.js +6 -3
  5. package/dist/board/export/scene.d.ts +6 -0
  6. package/dist/board/export/scene.js +26 -2
  7. package/dist/board/geometry.d.ts +27 -1
  8. package/dist/board/geometry.js +92 -1
  9. package/dist/board/headless/index.d.ts +7 -1
  10. package/dist/board/headless/index.js +6 -2
  11. package/dist/board/index.d.ts +6 -4
  12. package/dist/board/index.js +7 -5
  13. package/dist/board/mutation.d.ts +21 -0
  14. package/dist/board/mutation.js +104 -0
  15. package/dist/board/render/css-color.d.ts +4 -0
  16. package/dist/board/render/css-color.js +36 -0
  17. package/dist/board/render/index.d.ts +2 -1
  18. package/dist/board/render/index.js +2 -1
  19. package/dist/board/render/renderers/base-card-renderer.js +3 -20
  20. package/dist/board/render/themes/clean-theme.js +6 -3
  21. package/dist/chunks/http.d.ts +16 -4
  22. package/dist/chunks/http.js +152 -14
  23. package/dist/chunks/websocket.d.ts +69 -3
  24. package/dist/http.d.ts +3 -3
  25. package/dist/index.d.ts +3 -3
  26. package/dist/index.js +33 -6
  27. package/dist/protocol/dist/board-constants.d.ts +2 -1
  28. package/dist/protocol/dist/board-constants.js +61 -6
  29. package/dist/protocol/dist/board-document.d.ts +28 -2
  30. package/dist/protocol/dist/board-document.js +16 -3
  31. package/dist/protocol/dist/board-node.d.ts +2 -1
  32. package/dist/protocol/dist/board-url.d.ts +2 -1
  33. package/dist/protocol/dist/board-url.js +8 -3
  34. package/dist/protocol/dist/board.d.ts +136 -4
  35. package/dist/protocol/dist/board.js +42 -1
  36. package/dist/protocol/dist/index.d.ts +3 -3
  37. package/dist/protocol/dist/index.js +2 -2
  38. package/dist/types.d.ts +2 -2
  39. package/package.json +1 -1
@@ -0,0 +1,4 @@
1
+ //#region src/board/render/css-color.d.ts
2
+ declare function parseBoardCssColor(value: string): number | null;
3
+ //#endregion
4
+ export { parseBoardCssColor };
@@ -0,0 +1,36 @@
1
+ import { DOMAdapter } from "pixi.js";
2
+ //#region src/board/render/css-color.ts
3
+ const CACHE_LIMIT = 256;
4
+ const cache = /* @__PURE__ */ new Map();
5
+ let canvas = null;
6
+ function parseBoardCssColor(value) {
7
+ const key = value.trim();
8
+ if (!key) return null;
9
+ const cached = cache.get(key);
10
+ if (cached !== void 0 || cache.has(key)) return cached ?? null;
11
+ let result = null;
12
+ try {
13
+ const direct = /^#([0-9a-f]{6})$/i.exec(key);
14
+ if (direct?.[1]) result = Number.parseInt(direct[1], 16);
15
+ else {
16
+ canvas ??= DOMAdapter.get().createCanvas(1, 1);
17
+ const context = canvas.getContext("2d");
18
+ if (context) {
19
+ context.fillStyle = "#010203";
20
+ context.fillStyle = key;
21
+ const first = String(context.fillStyle);
22
+ context.fillStyle = "#040506";
23
+ context.fillStyle = key;
24
+ const match = first === String(context.fillStyle) ? /^#([0-9a-f]{6})$/i.exec(first) : null;
25
+ if (match?.[1]) result = Number.parseInt(match[1], 16);
26
+ }
27
+ }
28
+ } catch {
29
+ result = null;
30
+ }
31
+ if (cache.size >= CACHE_LIMIT) cache.clear();
32
+ cache.set(key, result);
33
+ return result;
34
+ }
35
+ //#endregion
36
+ export { parseBoardCssColor };
@@ -1,4 +1,5 @@
1
1
  import { ConnectionLayer, ConnectionRenderInput, createConnectionLayer, framesFromItems } from "./connection-layer.js";
2
+ import { parseBoardCssColor } from "./css-color.js";
2
3
  import { BoardMediaAction, boardMediaActionAt, mediaPlayBadgeHit, mediaPlayBadgeVisible } from "./media-interaction.js";
3
4
  import { BoardCardRenderer, BoardRenderContext, BoardRenderPalette, boardCardRenderersForTest, getBoardCardRenderer, registerBoardCardRenderer } from "./renderers/board-renderer-registry.js";
4
5
  import { defaultBoardPalette } from "./palette.js";
@@ -7,4 +8,4 @@ import { ensureBoardTextMeasurement, installBoardTextMeasurement } from "./text-
7
8
  import { getBoardResolution, syncTextResolution, syncTextWrapWidth, textResolutionForZoom, textZoomBucket } from "./text-resolution.js";
8
9
  import { BoardThemeContext, BoardThemeRenderer, getBoardThemeRenderer, registerBoardThemeRenderer } from "./themes/board-theme-registry.js";
9
10
  import { VIDEO_THUMBNAIL_MAX_EDGE, VideoNaturalSize, loadVideoThumbnailTexture, videoTextureNaturalSize, videoThumbnailSize } from "./video-thumbnail.js";
10
- export { BoardCardRenderer, BoardMediaAction, BoardRenderContext, BoardRenderPalette, BoardThemeContext, BoardThemeRenderer, ConnectionLayer, ConnectionRenderInput, TASK_CARD_FULL_DETAIL_ZOOM, VIDEO_THUMBNAIL_MAX_EDGE, VideoNaturalSize, boardCardRenderersForTest, boardMediaActionAt, createConnectionLayer, defaultBoardPalette, ensureBoardTextMeasurement, framesFromItems, getBoardCardRenderer, getBoardResolution, getBoardThemeRenderer, installBoardTextMeasurement, loadVideoThumbnailTexture, mediaPlayBadgeHit, mediaPlayBadgeVisible, registerBoardCardRenderer, registerBoardThemeRenderer, syncTextResolution, syncTextWrapWidth, textResolutionForZoom, textZoomBucket, videoTextureNaturalSize, videoThumbnailSize };
11
+ export { BoardCardRenderer, BoardMediaAction, BoardRenderContext, BoardRenderPalette, BoardThemeContext, BoardThemeRenderer, ConnectionLayer, ConnectionRenderInput, TASK_CARD_FULL_DETAIL_ZOOM, VIDEO_THUMBNAIL_MAX_EDGE, VideoNaturalSize, boardCardRenderersForTest, boardMediaActionAt, createConnectionLayer, defaultBoardPalette, ensureBoardTextMeasurement, framesFromItems, getBoardCardRenderer, getBoardResolution, getBoardThemeRenderer, installBoardTextMeasurement, loadVideoThumbnailTexture, mediaPlayBadgeHit, mediaPlayBadgeVisible, parseBoardCssColor, registerBoardCardRenderer, registerBoardThemeRenderer, syncTextResolution, syncTextWrapWidth, textResolutionForZoom, textZoomBucket, videoTextureNaturalSize, videoThumbnailSize };
@@ -1,3 +1,4 @@
1
+ import { parseBoardCssColor } from "./css-color.js";
1
2
  import { getBoardResolution, syncTextResolution, syncTextWrapWidth, textResolutionForZoom, textZoomBucket } from "./text-resolution.js";
2
3
  import { createConnectionLayer, framesFromItems } from "./connection-layer.js";
3
4
  import { TASK_CARD_FULL_DETAIL_ZOOM } from "./renderers/task-card-renderer.js";
@@ -7,4 +8,4 @@ import { ensureBoardTextMeasurement, installBoardTextMeasurement } from "./text-
7
8
  import { boardCardRenderersForTest, getBoardCardRenderer, registerBoardCardRenderer } from "./renderers/board-renderer-registry.js";
8
9
  import { getBoardThemeRenderer, registerBoardThemeRenderer } from "./themes/board-theme-registry.js";
9
10
  import { VIDEO_THUMBNAIL_MAX_EDGE, loadVideoThumbnailTexture, videoTextureNaturalSize, videoThumbnailSize } from "./video-thumbnail.js";
10
- export { TASK_CARD_FULL_DETAIL_ZOOM, VIDEO_THUMBNAIL_MAX_EDGE, boardCardRenderersForTest, boardMediaActionAt, createConnectionLayer, defaultBoardPalette, ensureBoardTextMeasurement, framesFromItems, getBoardCardRenderer, getBoardResolution, getBoardThemeRenderer, installBoardTextMeasurement, loadVideoThumbnailTexture, mediaPlayBadgeHit, mediaPlayBadgeVisible, registerBoardCardRenderer, registerBoardThemeRenderer, syncTextResolution, syncTextWrapWidth, textResolutionForZoom, textZoomBucket, videoTextureNaturalSize, videoThumbnailSize };
11
+ export { TASK_CARD_FULL_DETAIL_ZOOM, VIDEO_THUMBNAIL_MAX_EDGE, boardCardRenderersForTest, boardMediaActionAt, createConnectionLayer, defaultBoardPalette, ensureBoardTextMeasurement, framesFromItems, getBoardCardRenderer, getBoardResolution, getBoardThemeRenderer, installBoardTextMeasurement, loadVideoThumbnailTexture, mediaPlayBadgeHit, mediaPlayBadgeVisible, parseBoardCssColor, registerBoardCardRenderer, registerBoardThemeRenderer, syncTextResolution, syncTextWrapWidth, textResolutionForZoom, textZoomBucket, videoTextureNaturalSize, videoThumbnailSize };
@@ -1,6 +1,7 @@
1
1
  import { BOARD_FONT_STACK } from "../../../protocol/dist/board-constants.js";
2
+ import { parseBoardCssColor } from "../css-color.js";
2
3
  import { getBoardResolution } from "../text-resolution.js";
3
- import { Container, DOMAdapter, Graphics, Text } from "pixi.js";
4
+ import { Container, Graphics, Text } from "pixi.js";
4
5
  //#region src/board/render/renderers/base-card-renderer.ts
5
6
  const CARD_RADIUS = 10;
6
7
  const CARD_PADDING = 12;
@@ -11,7 +12,7 @@ const TEXT_OPTIONS = {
11
12
  };
12
13
  function emphasisColor(item, palette) {
13
14
  if (item.style?.accentColor) {
14
- const normalized = parseCssColor(item.style.accentColor);
15
+ const normalized = parseBoardCssColor(item.style.accentColor);
15
16
  if (normalized != null) return normalized;
16
17
  }
17
18
  switch (item.style?.emphasis) {
@@ -21,24 +22,6 @@ function emphasisColor(item, palette) {
21
22
  default: return palette.brand;
22
23
  }
23
24
  }
24
- /**
25
- * Normalise any CSS color to a number by letting a 2D context parse it.
26
- *
27
- * Goes through `DOMAdapter` rather than `document` so a headless export resolves
28
- * accent colors exactly as the browser does; without it, custom accents would
29
- * silently fall back to the emphasis palette only when exporting.
30
- */
31
- function parseCssColor(value) {
32
- try {
33
- const context = DOMAdapter.get().createCanvas(1, 1).getContext("2d");
34
- if (!context) return null;
35
- context.fillStyle = value;
36
- const match = /^#([0-9a-f]{6})$/i.exec(String(context.fillStyle));
37
- return match?.[1] ? Number.parseInt(match[1], 16) : null;
38
- } catch {
39
- return null;
40
- }
41
- }
42
25
  function createLabel(text, style) {
43
26
  return new Text({
44
27
  ...TEXT_OPTIONS,
@@ -1,3 +1,4 @@
1
+ import { parseBoardCssColor } from "../css-color.js";
1
2
  import { Container, Graphics, RenderTexture, TilingSprite } from "pixi.js";
2
3
  //#region src/board/render/themes/clean-theme.ts
3
4
  const partsByContainer = /* @__PURE__ */ new WeakMap();
@@ -31,16 +32,18 @@ function sync(parts, context) {
31
32
  const { app, document, viewport, palette } = context;
32
33
  const width = app.screen.width;
33
34
  const height = app.screen.height;
35
+ const declaredBackground = document.appearance.background;
36
+ const bgColor = declaredBackground.color ? parseBoardCssColor(declaredBackground.color) ?? palette.bg : palette.bg;
34
37
  const bgAlpha = context.hasImageBackground ? 0 : 1;
35
- if (parts.lastWidth !== width || parts.lastHeight !== height || parts.lastBg !== palette.bg || parts.lastBgAlpha !== bgAlpha) {
38
+ if (parts.lastWidth !== width || parts.lastHeight !== height || parts.lastBg !== bgColor || parts.lastBgAlpha !== bgAlpha) {
36
39
  parts.fill.clear();
37
40
  parts.fill.rect(0, 0, width, height).fill({
38
- color: palette.bg,
41
+ color: bgColor,
39
42
  alpha: bgAlpha
40
43
  });
41
44
  parts.lastWidth = width;
42
45
  parts.lastHeight = height;
43
- parts.lastBg = palette.bg;
46
+ parts.lastBg = bgColor;
44
47
  parts.lastBgAlpha = bgAlpha;
45
48
  }
46
49
  const appearance = document.appearance;
@@ -1,4 +1,4 @@
1
- import { $ as CreateInvitationInput, $n as SpaceFsPreparingFile, Ar as SpaceTurnAuthorFilter, At as MeResponse, Ba as BoardConnectionDirection, Bn as SpaceDefaultResponse, Cr as SpacePublicProfile, Ct as LabelItemsResponse, Da as BoardValidationResult, Dn as SpaceCommerceBenefit, Dt as LabelResourceType, Ea as BoardTransaction, Ei as SessionTurnPatchEvent, En as SpaceCheckpointDetailResponse, G as CheckpointDiffFileResponse, Ga as MessageRecord, Gn as SpaceFsCreateUploadInput, Gt as ReferenceAggregateResponse, H as Channel, Hn as SpaceFsCompleteUploadInput, Hr as UserProfile, In as SpaceConfigInput, Ir as TaskRunDetailResponse, Ji as UiCommandError, Jr as ChannelHealth, Jt as ReferenceQueryResponse, Ka as SessionForkRecord, Ki as UiCommand, Kn as SpaceFsCreateUploadResponse, Kr as UserSessionsResponse, Kt as ReferenceDirection, Ln as SpaceConfigResponse, Lr as TaskRunRecord, Lt as PromptTemplateCatalogResponse, Mi as WorkArtifactDescriptor, Mn as SpaceCommerceProduct, Mt as PatchResourceLabelsInput, Nn as SpaceCommerceProductBenefitBinding, Nt as PatchResourceLabelsResponse, On as SpaceCommerceBuyerProfile, Pr as SpaceUsageResponse, Pt as Permission, Q as ClaimReferralResponse, Qn as SpaceFsMoveInput, Qt as ReferralDashboard, Ri as WorkContentKind, Rn as SpaceConfigUpdateResponse, Rr as UserActivityQuery, Rt as PublicReferral, Sa as BoardPlaybackSnapshot, St as LabelAssignmentRecord, Tr as SpaceRole, Tt as LabelListItem, Un as SpaceFsCompleteUploadResponse, Ur as UserRulesResponse, Va as BoardConnectionRecord, Vn as SpaceEnvInput, Vr as UserActivityResponse, Wa as SpacePublicEndpoints, Wt as ReferenceAggregateGroupBy, X as CheckpointDiffSummary, Xa as SpaceTurnsResponse, Xi as UiCommandStatus, Ya as SessionTurnRecord, Yi as UiCommandRecord, Yt as ReferenceQueryableType, Z as CheckpointRecord, Zn as SpaceFsFileResponse, _n as SkillCatalogResponse, a as WebsocketClientOptions, ao as SpaceCompletionStreamEvent, at as CreateSpaceSessionInput, bn as SpaceAccessPolicy, br as SpacePendingDiffSummary, cn as SessionMessagesResponse, co as ContentBlock, ct as CronJobUpdatePatch, d as BatchUserProfilesResponse, di as GenerationContentBlock, dn as SessionTurnResponse, dr as SpaceFsWriteFileInput, et as CreateInvitationResponse, fi as GenerationModelDeclaration, fn as SessionTurnSignedUrlsResponse, fo as RequestSource, gi as BoardTransactionAppliedEvent$1, gr as SpaceMember, gt as InvitationDetail, hi as BoardPlaybackChangedEvent$1, hn as SessionTurnsPaginatedResponse, ht as GlobalSearchType, io as SpaceCompletionResult, it as CreateSpacePromptResponse, ji as BoardAwarenessUpdate, jn as SpaceCommerceOrder, jt as ModelCatalogEntry, kr as SpaceSessionsResponse, l as AcceptInvitationResponse, la as BoardCreateInput, ln as SessionRecord, lt as CursorPageInfo, mi as BoardAwarenessUpdatedEvent$1, mn as SessionTurnWindowResponse, no as CreateSpaceCompletionInput, nr as SpaceFsReadFilesResponse, oa as BoardBootstrap, on as SessionMessageResponse, oo as Usage, pa as BoardInspectInput, pn as SessionTurnStreamSnapshotResponse, pr as SpaceInvitationListResponse, pt as GlobalSearchResponse, qr as ChannelConfig, qt as ReferenceKind, r as WebsocketClient, rr as SpaceFsTreeResponse, rt as CreateSpacePromptInput, s as WebsocketEventPayload, sa as BoardCapabilities, sn as SessionMessagesPaginatedResponse, so as BillingPayload, st as CronJobRecord, tt as CreateSpaceInput, un as SessionTurnIndexResponse, ur as SpaceFsUploadResponse, vr as SpaceModListItem, wr as SpaceRecord, xr as SpacePresenceSnapshot, ya as BoardPlaybackCommand, yi as RealtimePatchOperation, yr as SpacePendingDiffFileResponse, za as BoardConnection, zn as SpaceCreateResponse, zt as PublicUserPageResponse } from "./websocket.js";
1
+ import { $ as CreateInvitationInput, $n as SpaceFsPreparingFile, Aa as BoardTransaction, Ar as SpaceTurnAuthorFilter, At as MeResponse, Bn as SpaceDefaultResponse, Cr as SpacePublicProfile, Ct as LabelItemsResponse, Dn as SpaceCommerceBenefit, Dt as LabelResourceType, Ei as SessionTurnPatchEvent, En as SpaceCheckpointDetailResponse, G as CheckpointDiffFileResponse, Ga as BoardConnectionRecord, Gn as SpaceFsCreateUploadInput, Gt as ReferenceAggregateResponse, H as Channel, Hn as SpaceFsCompleteUploadInput, Hr as UserProfile, In as SpaceConfigInput, Ir as TaskRunDetailResponse, Ji as UiCommandError, Jr as ChannelHealth, Jt as ReferenceQueryResponse, Ki as UiCommand, Kn as SpaceFsCreateUploadResponse, Kr as UserSessionsResponse, Kt as ReferenceDirection, Ln as SpaceConfigResponse, Lr as TaskRunRecord, Lt as PromptTemplateCatalogResponse, Mi as WorkArtifactDescriptor, Mn as SpaceCommerceProduct, Mt as PatchResourceLabelsInput, Nn as SpaceCommerceProductBenefitBinding, Nt as PatchResourceLabelsResponse, Oa as BoardSummary, On as SpaceCommerceBuyerProfile, Pr as SpaceUsageResponse, Pt as Permission, Q as ClaimReferralResponse, Qn as SpaceFsMoveInput, Qt as ReferralDashboard, Ri as WorkContentKind, Rn as SpaceConfigUpdateResponse, Rr as UserActivityQuery, Rt as PublicReferral, Sa as BoardPlaybackCommand, St as LabelAssignmentRecord, Ta as BoardPlaybackSnapshot, Tr as SpaceRole, Tt as LabelListItem, Ua as BoardConnection, Un as SpaceFsCompleteUploadResponse, Ur as UserRulesResponse, Vn as SpaceEnvInput, Vr as UserActivityResponse, Wa as BoardConnectionDirection, Wt as ReferenceAggregateGroupBy, X as CheckpointDiffSummary, Xa as MessageRecord, Xi as UiCommandStatus, Ya as SpacePublicEndpoints, Yi as UiCommandRecord, Yt as ReferenceQueryableType, Z as CheckpointRecord, Za as SessionForkRecord, Zn as SpaceFsFileResponse, _n as SkillCatalogResponse, _o as RequestSource, a as WebsocketClientOptions, at as CreateSpaceSessionInput, bn as SpaceAccessPolicy, br as SpacePendingDiffSummary, cn as SessionMessagesResponse, ct as CronJobUpdatePatch, d as BatchUserProfilesResponse, di as GenerationContentBlock, dn as SessionTurnResponse, do as Usage, dr as SpaceFsWriteFileInput, eo as SessionTurnRecord, et as CreateInvitationResponse, fa as BoardCreateInput, fi as GenerationModelDeclaration, fn as SessionTurnSignedUrlsResponse, fo as BillingPayload, ga as BoardInspectInput, gi as BoardTransactionAppliedEvent$1, gr as SpaceMember, gt as InvitationDetail, hi as BoardPlaybackChangedEvent$1, hn as SessionTurnsPaginatedResponse, ht as GlobalSearchType, it as CreateSpacePromptResponse, ja as BoardValidationResult, ji as BoardAwarenessUpdate, jn as SpaceCommerceOrder, jt as ModelCatalogEntry, kr as SpaceSessionsResponse, l as AcceptInvitationResponse, ln as SessionRecord, lo as SpaceCompletionResult, lt as CursorPageInfo, mi as BoardAwarenessUpdatedEvent$1, mn as SessionTurnWindowResponse, nr as SpaceFsReadFilesResponse, oa as BoardBootstrap, on as SessionMessageResponse, pn as SessionTurnStreamSnapshotResponse, po as ContentBlock, pr as SpaceInvitationListResponse, pt as GlobalSearchResponse, qr as ChannelConfig, qt as ReferenceKind, r as WebsocketClient, rr as SpaceFsTreeResponse, rt as CreateSpacePromptInput, s as WebsocketEventPayload, sn as SessionMessagesPaginatedResponse, so as CreateSpaceCompletionInput, st as CronJobRecord, to as SpaceTurnsResponse, tt as CreateSpaceInput, ua as BoardCapabilities, un as SessionTurnIndexResponse, uo as SpaceCompletionStreamEvent, ur as SpaceFsUploadResponse, vr as SpaceModListItem, wr as SpaceRecord, xa as BoardOperation, xr as SpacePresenceSnapshot, yi as RealtimePatchOperation, yr as SpacePendingDiffFileResponse, zn as SpaceCreateResponse, zt as PublicUserPageResponse } from "./websocket.js";
2
2
  import { n as CohubEnvironment } from "./environment.js";
3
3
  import { a as VoiceInputCreateOptions } from "./voice-input.js";
4
4
  //#region ../protocol/dist/model/status.d.ts
@@ -969,6 +969,11 @@ declare class BoardTransactionError extends Error {
969
969
  get isVersionConflict(): boolean;
970
970
  }
971
971
  type BoardTransactionInput = Omit<BoardTransaction, "boardId">;
972
+ type BoardMutationInput = {
973
+ include?: BoardInspectInput["include"];
974
+ retries?: number;
975
+ build: (current: BoardBootstrap) => BoardOperation[] | Promise<BoardOperation[]>;
976
+ };
972
977
  type BoardTransactionAppliedEvent = BoardTransactionAppliedEvent$1;
973
978
  type BoardAwarenessUpdatedEvent = BoardAwarenessUpdatedEvent$1;
974
979
  type BoardPlaybackChangedEvent = BoardPlaybackChangedEvent$1;
@@ -1511,8 +1516,12 @@ declare class BoardClient {
1511
1516
  constructor(spaceId: string, id: string, transport: HttpTransport, websocketClient: WebsocketClient | null);
1512
1517
  inspect(input?: BoardInspectInput, customFetch?: Fetch): Promise<BoardBootstrap>;
1513
1518
  capabilities(customFetch?: Fetch): Promise<BoardCapabilities>;
1519
+ summary(customFetch?: Fetch): Promise<BoardSummary>;
1520
+ mutate(input: BoardMutationInput): Promise<BoardBootstrap>;
1514
1521
  validate(transaction: BoardTransactionInput): Promise<BoardValidationResult>;
1515
- apply(transaction: BoardTransactionInput): Promise<BoardBootstrap>;
1522
+ apply(transaction: BoardTransactionInput, options?: {
1523
+ compact?: boolean;
1524
+ }): Promise<BoardBootstrap>;
1516
1525
  updateAwareness(seq: number, update: BoardAwarenessUpdate): Promise<void>;
1517
1526
  playback(command: BoardPlaybackCommand): Promise<BoardPlaybackSnapshot>;
1518
1527
  /**
@@ -1596,9 +1605,12 @@ declare class SpaceBoardsApi {
1596
1605
  byId(boardId: string): BoardClient;
1597
1606
  create(input: BoardCreateInput): Promise<BoardBootstrap>;
1598
1607
  inspect(boardId: string, input?: BoardInspectInput, customFetch?: Fetch): Promise<BoardBootstrap>;
1608
+ summary(boardId: string, customFetch?: Fetch): Promise<BoardSummary>;
1599
1609
  capabilities(boardId: string, customFetch?: Fetch): Promise<BoardCapabilities>;
1600
1610
  validate(transaction: BoardTransaction): Promise<BoardValidationResult>;
1601
- apply(transaction: BoardTransaction): Promise<BoardBootstrap>;
1611
+ apply(transaction: BoardTransaction, options?: {
1612
+ compact?: boolean;
1613
+ }): Promise<BoardBootstrap>;
1602
1614
  playback(boardId: string, command: BoardPlaybackCommand): Promise<BoardPlaybackSnapshot>;
1603
1615
  play(boardId: string, command: Omit<Extract<BoardPlaybackCommand, {
1604
1616
  type: "play";
@@ -2246,4 +2258,4 @@ declare class CohubHttpClient {
2246
2258
  }
2247
2259
  declare const createHttpClient: (options?: CohubClientOptions) => CohubHttpClient;
2248
2260
  //#endregion
2249
- export { BoardTransactionError as $, GenerationsApi as $t, WorkResolveResponse as A, PublicFileUploadPlanEntry as An, SessionPatchApplyInput as At, ReferralsApi as B, ModelStatusResponse as Bn, CreatePublicAssetUploadInput as Bt, WorkPromotionProvider as C, createWorkRuntime as Cn, GenerationStreamStateEvent as Ct, WorkPublicOwnerRecord as D, PublicFileListEntry as Dn, SessionGenerationStreamClient as Dt, WorkPromotionStatsResponse as E, PublicFileCreateUploadResponse as En, GenerationStreamTurnUpdatedEvent as Et, WorkVersionRecord as F, GenerationTaskResult as Fn, createSessionPatchReducer as Ft, WaitForUiCommandOptions as G, PublicAssetUploadProtocol as Gt, UserApi as H, PublicAssetMimeType as Ht, WorkViewSource as I, GenerationUsageBilling as In, SessionAccessApi as It, BoardClient as J, UploadChatImageAttachmentInput as Jt, TasksApi as K, PublicAssetsApi as Kt, WorkViewStatsResponse as L, ListGenerationModelsResponse as Ln, ReferenceResourceSelector as Lt, WorkStatus as M, SpaceStartupResponse as Mn, SessionPatchReducer as Mt, WorkTargetType as N, CreateGenerationTaskRequest as Nn, SessionPatchState as Nt, WorkPublicSpaceRecord as O, PublicFileListResponse as On, createSessionGenerationStreamClient as Ot, WorkUpdateInput as P, CreateGenerationTaskResponse as Pn, SessionPatchStatus as Pt, BoardTransactionAppliedEvent as Q, ModelsApi as Qt, WorkVisibility as R, PublicGenerationDeclaration as Rn, ReferencesApi as Rt, WorkPromotionEventResponse as S, createSlugWorkIdResolver as Sn, GenerationStreamOutOfSyncEvent as St, WorkPromotionRecord as T, PublicFileCreateUploadInput as Tn, GenerationStreamSubscriptionHandlers as Tt, CreateUiCommandInput as U, PublicAssetPurpose as Ut, UsersApi as V, CreatePublicAssetUploadResponse as Vt, UiCommandsApi as W, PublicAssetUploadProgress as Wt, BoardPlaybackChangedEvent as X, SkillsApi as Xt, BoardEventName as Y, UploadPublicAssetInput as Yt, BoardSubscriptionHandlers as Z, PromptsApi as Zt, WorkExtractedPageMeta as _, WorkRuntimeCheckoutStatus as _n, GenerationStreamErrorEvent as _t, WorkCommerceCreditConsumeResponse as a, HttpTraceContext as an, SpaceEventName as at, WorkPresentationMeta as b, WorkRuntimeRequestOptions as bn, GenerationStreamIntermediateMessage as bt, WorkCommerceEntitlementsResponse as c, UnauthorizedContext as cn, SpacesApi as ct, WorkCommercePurchaseResponse as d, sanitizeAccessToken as dn, BuildSpacePathInput as dt, CronJobsApi as en, BoardTransactionInput as et, WorkAuthorizeResponse as f, ParentBridgeTransport as fn, PublicInviteApi as ft, WorkDetailResponse as g, WorkRuntimeCheckoutState as gn, GenerationStreamCommitEvent as gt, WorkCreateInput as h, WorkRuntimeApi as hn, AssistantMessageCommit as ht, WorkCommerceCheckoutStatus as i, HttpError as in, SpaceClient as it, WorkSessionResponse as j, PublicFileUrlResponse as jn, SessionPatchApplyResult as jt, WorkRecord as k, PublicFileUploadEntryInput as kn, parseAssistantMessageCommit as kt, WorkCommerceOrder as l, joinApiUrl as ln, WebSocketConnectionState as lt, WorkContentDownload as m, WorkIdResolver as mn, buildSpacePath as mt, createHttpClient as n, CohubClientOptions as nn, SessionSubscriptionHandlers as nt, WorkCommerceCreditConsumeStatus as o, HttpTransport as on, SpacePublicFilesApi as ot, WorkContent as p, PopupBrokerTransport as pn, buildSpaceInvitePath as pt, BoardAwarenessUpdatedEvent as q, UploadChatAttachmentInput as qt, WorkCommerceApi as r, Fetch as rn, SpaceChannelBindingRecord as rt, WorkCommerceEntitlement as s, RawHttpResponse as sn, SpaceTurnListOptions as st, CohubHttpClient as t, ChannelsApi as tn, SessionEventName as tt, WorkCommerceProductResolveResponse as u, matchesUnauthorizedErrorToken as un, BuildSpaceInvitePathInput as ut, WorkGetResponse as v, WorkRuntimeContext as vn, GenerationStreamEvent as vt, WorkPromotionProviderStatus as w, resolveWorkTransport as wn, GenerationStreamSubscribeOptions as wt, WorkPromotionCreateInput as x, WorkRuntimeTransport as xn, GenerationStreamLifecycleEvent as xt, WorkMeta as y, WorkRuntimeModeConfig as yn, GenerationStreamFinalizedEvent as yt, WorksApi as z, ModelStatusEntry as zn, SearchApi as zt };
2261
+ export { BoardTransactionAppliedEvent as $, ModelsApi as $t, WorkResolveResponse as A, PublicFileUploadEntryInput as An, parseAssistantMessageCommit as At, ReferralsApi as B, ModelStatusEntry as Bn, SearchApi as Bt, WorkPromotionProvider as C, createSlugWorkIdResolver as Cn, GenerationStreamOutOfSyncEvent as Ct, WorkPublicOwnerRecord as D, PublicFileCreateUploadResponse as Dn, GenerationStreamTurnUpdatedEvent as Dt, WorkPromotionStatsResponse as E, PublicFileCreateUploadInput as En, GenerationStreamSubscriptionHandlers as Et, WorkVersionRecord as F, CreateGenerationTaskResponse as Fn, SessionPatchStatus as Ft, WaitForUiCommandOptions as G, PublicAssetUploadProgress as Gt, UserApi as H, CreatePublicAssetUploadResponse as Ht, WorkViewSource as I, GenerationTaskResult as In, createSessionPatchReducer as It, BoardClient as J, UploadChatAttachmentInput as Jt, TasksApi as K, PublicAssetUploadProtocol as Kt, WorkViewStatsResponse as L, GenerationUsageBilling as Ln, SessionAccessApi as Lt, WorkStatus as M, PublicFileUrlResponse as Mn, SessionPatchApplyResult as Mt, WorkTargetType as N, SpaceStartupResponse as Nn, SessionPatchReducer as Nt, WorkPublicSpaceRecord as O, PublicFileListEntry as On, SessionGenerationStreamClient as Ot, WorkUpdateInput as P, CreateGenerationTaskRequest as Pn, SessionPatchState as Pt, BoardSubscriptionHandlers as Q, PromptsApi as Qt, WorkVisibility as R, ListGenerationModelsResponse as Rn, ReferenceResourceSelector as Rt, WorkPromotionEventResponse as S, WorkRuntimeTransport as Sn, GenerationStreamLifecycleEvent as St, WorkPromotionRecord as T, resolveWorkTransport as Tn, GenerationStreamSubscribeOptions as Tt, CreateUiCommandInput as U, PublicAssetMimeType as Ut, UsersApi as V, ModelStatusResponse as Vn, CreatePublicAssetUploadInput as Vt, UiCommandsApi as W, PublicAssetPurpose as Wt, BoardMutationInput as X, UploadPublicAssetInput as Xt, BoardEventName as Y, UploadChatImageAttachmentInput as Yt, BoardPlaybackChangedEvent as Z, SkillsApi as Zt, WorkExtractedPageMeta as _, WorkRuntimeCheckoutState as _n, GenerationStreamCommitEvent as _t, WorkCommerceCreditConsumeResponse as a, HttpError as an, SpaceClient as at, WorkPresentationMeta as b, WorkRuntimeModeConfig as bn, GenerationStreamFinalizedEvent as bt, WorkCommerceEntitlementsResponse as c, RawHttpResponse as cn, SpaceTurnListOptions as ct, WorkCommercePurchaseResponse as d, matchesUnauthorizedErrorToken as dn, BuildSpaceInvitePathInput as dt, GenerationsApi as en, BoardTransactionError as et, WorkAuthorizeResponse as f, sanitizeAccessToken as fn, BuildSpacePathInput as ft, WorkDetailResponse as g, WorkRuntimeApi as gn, AssistantMessageCommit as gt, WorkCreateInput as h, WorkIdResolver as hn, buildSpacePath as ht, WorkCommerceCheckoutStatus as i, Fetch as in, SpaceChannelBindingRecord as it, WorkSessionResponse as j, PublicFileUploadPlanEntry as jn, SessionPatchApplyInput as jt, WorkRecord as k, PublicFileListResponse as kn, createSessionGenerationStreamClient as kt, WorkCommerceOrder as l, UnauthorizedContext as ln, SpacesApi as lt, WorkContentDownload as m, PopupBrokerTransport as mn, buildSpaceInvitePath as mt, createHttpClient as n, ChannelsApi as nn, SessionEventName as nt, WorkCommerceCreditConsumeStatus as o, HttpTraceContext as on, SpaceEventName as ot, WorkContent as p, ParentBridgeTransport as pn, PublicInviteApi as pt, BoardAwarenessUpdatedEvent as q, PublicAssetsApi as qt, WorkCommerceApi as r, CohubClientOptions as rn, SessionSubscriptionHandlers as rt, WorkCommerceEntitlement as s, HttpTransport as sn, SpacePublicFilesApi as st, CohubHttpClient as t, CronJobsApi as tn, BoardTransactionInput as tt, WorkCommerceProductResolveResponse as u, joinApiUrl as un, WebSocketConnectionState as ut, WorkGetResponse as v, WorkRuntimeCheckoutStatus as vn, GenerationStreamErrorEvent as vt, WorkPromotionProviderStatus as w, createWorkRuntime as wn, GenerationStreamStateEvent as wt, WorkPromotionCreateInput as x, WorkRuntimeRequestOptions as xn, GenerationStreamIntermediateMessage as xt, WorkMeta as y, WorkRuntimeContext as yn, GenerationStreamEvent as yt, WorksApi as z, PublicGenerationDeclaration as zn, ReferencesApi as zt };
@@ -466,6 +466,7 @@ const BOARD_BUILTIN_CLIP_KINDS = [
466
466
  "effects.color",
467
467
  "camera.pan",
468
468
  "camera.zoom",
469
+ "camera.focus",
469
470
  "camera.shake"
470
471
  ];
471
472
  const BOARD_BUILTIN_EFFECT_KINDS = ["effects.pulse", "effects.float"];
@@ -475,12 +476,66 @@ function clampBoardStrokeSize(size) {
475
476
  if (!Number.isFinite(size)) return BOARD_CONNECTION_STROKE_SIZE;
476
477
  return Math.min(64, Math.max(1, size));
477
478
  }
478
- const BOARD_BUILTIN_CAPABILITIES = [...BOARD_BUILTIN_CLIP_KINDS.map((id) => ({
479
- kind: "clip",
480
- id,
481
- version: 1,
482
- renderers: ["webgpu", "webgl"]
483
- })), ...BOARD_BUILTIN_EFFECT_KINDS.map((id) => ({
479
+ function clipSchema(id) {
480
+ switch (id) {
481
+ case "motion.keyframes": return { params: {
482
+ x: {
483
+ coordinateSpace: "world-offset",
484
+ unit: "board"
485
+ },
486
+ y: {
487
+ coordinateSpace: "world-offset",
488
+ unit: "board"
489
+ }
490
+ } };
491
+ case "motion.path": return { params: { points: {
492
+ coordinateSpace: "world-offset",
493
+ unit: "board"
494
+ } } };
495
+ case "effects.particles": return { params: { bounds: {
496
+ coordinateSpace: "world",
497
+ unit: "board"
498
+ } } };
499
+ case "camera.pan": return { params: {
500
+ x: {
501
+ coordinateSpace: "screen-offset",
502
+ unit: "css-px"
503
+ },
504
+ y: {
505
+ coordinateSpace: "screen-offset",
506
+ unit: "css-px"
507
+ }
508
+ } };
509
+ case "camera.zoom": return { params: { scale: { unit: "ratio" } } };
510
+ case "camera.focus": return { params: {
511
+ focus: {
512
+ coordinateSpace: "world",
513
+ unit: "board"
514
+ },
515
+ padding: {
516
+ coordinateSpace: "screen",
517
+ unit: "css-px"
518
+ },
519
+ minZoom: { unit: "ratio" },
520
+ maxZoom: { unit: "ratio" }
521
+ } };
522
+ case "camera.shake": return { params: { amount: {
523
+ coordinateSpace: "screen-offset",
524
+ unit: "css-px"
525
+ } } };
526
+ default: return;
527
+ }
528
+ }
529
+ const BOARD_BUILTIN_CAPABILITIES = [...BOARD_BUILTIN_CLIP_KINDS.map((id) => {
530
+ const schema = clipSchema(id);
531
+ return {
532
+ kind: "clip",
533
+ id,
534
+ version: 1,
535
+ renderers: ["webgpu", "webgl"],
536
+ ...schema ? { schema } : {}
537
+ };
538
+ }), ...BOARD_BUILTIN_EFFECT_KINDS.map((id) => ({
484
539
  kind: "effect",
485
540
  id,
486
541
  version: 1,
@@ -671,6 +726,47 @@ const BoardTargetSchema = z.discriminatedUnion("type", [
671
726
  z.object({ type: z.literal("board") }),
672
727
  z.object({ type: z.literal("camera") })
673
728
  ]);
729
+ z.object({
730
+ centerX: finiteSchema$1,
731
+ centerY: finiteSchema$1,
732
+ zoom: finiteSchema$1.positive()
733
+ });
734
+ const BoardCameraFocusSchema = z.discriminatedUnion("type", [
735
+ z.object({
736
+ type: z.literal("rect"),
737
+ rect: z.object({
738
+ x: finiteSchema$1,
739
+ y: finiteSchema$1,
740
+ width: finiteSchema$1.positive(),
741
+ height: finiteSchema$1.positive()
742
+ })
743
+ }),
744
+ z.object({
745
+ type: z.literal("node"),
746
+ nodeId: idSchema$1
747
+ }),
748
+ z.object({
749
+ type: z.literal("nodes"),
750
+ nodeIds: z.array(idSchema$1).min(1).max(1e3)
751
+ }),
752
+ z.object({
753
+ type: z.literal("frame"),
754
+ frameId: idSchema$1
755
+ })
756
+ ]);
757
+ const BoardCameraFocusParamsSchema = z.object({
758
+ focus: BoardCameraFocusSchema,
759
+ fit: z.enum(["contain", "cover"]).default("contain"),
760
+ padding: finiteSchema$1.nonnegative().default(32),
761
+ minZoom: finiteSchema$1.positive().optional(),
762
+ maxZoom: finiteSchema$1.positive().optional()
763
+ }).superRefine((value, context) => {
764
+ if (value.minZoom !== void 0 && value.maxZoom !== void 0 && value.minZoom > value.maxZoom) context.addIssue({
765
+ code: "custom",
766
+ message: "minZoom must not exceed maxZoom",
767
+ path: ["minZoom"]
768
+ });
769
+ });
674
770
  const BoardAssetRefSchema = z.object({
675
771
  type: z.enum(["space-file", "extension"]),
676
772
  ref: z.string().min(1).max(4096),
@@ -916,11 +1012,16 @@ function isBlockedIpv6(host) {
916
1012
  if ((first & 65280) === 65280) return true;
917
1013
  return parts[0] === "2001" && parts[1] === "0db8";
918
1014
  }
1015
+ function isPublicBoardRemoteAddress(value) {
1016
+ const address = value.toLowerCase().replace(/^\[|\]$/g, "").replace(/\.$/, "");
1017
+ if (parseIpv4(address)) return !isBlockedIpv4(address);
1018
+ return address.includes(":") && !isBlockedIpv6(address);
1019
+ }
919
1020
  function isBlockedHost(hostname) {
920
1021
  const host = hostname.toLowerCase().replace(/^\[|\]$/g, "").replace(/\.$/, "");
921
1022
  if (host === "localhost" || host.endsWith(".localhost") || host.endsWith(".local") || host.endsWith(".internal")) return true;
922
- if (parseIpv4(host)) return isBlockedIpv4(host);
923
- return host.includes(":") && isBlockedIpv6(host);
1023
+ if (parseIpv4(host) || host.includes(":")) return !isPublicBoardRemoteAddress(host);
1024
+ return false;
924
1025
  }
925
1026
  /**
926
1027
  * Normalize a browser-loadable public HTTP(S) URL. This blocks explicit local
@@ -974,7 +1075,20 @@ const BoardAppearanceSchema = z.object({
974
1075
  "custom"
975
1076
  ]).default("dots"),
976
1077
  color: z.string().optional(),
977
- imageUrl: z.string().url().optional()
1078
+ imageUrl: BoardRemoteUrlSchema.optional(),
1079
+ fit: z.enum([
1080
+ "cover",
1081
+ "contain",
1082
+ "repeat"
1083
+ ]).optional(),
1084
+ position: z.enum([
1085
+ "center",
1086
+ "top",
1087
+ "bottom",
1088
+ "left",
1089
+ "right"
1090
+ ]).optional(),
1091
+ opacity: z.number().finite().min(0).max(1).optional()
978
1092
  }).default({ kind: "solid" }),
979
1093
  grid: z.object({
980
1094
  visible: z.boolean().default(false),
@@ -4265,17 +4379,38 @@ var BoardClient = class {
4265
4379
  capabilities(customFetch) {
4266
4380
  return this.boards.capabilities(this.id, customFetch);
4267
4381
  }
4382
+ summary(customFetch) {
4383
+ return this.boards.summary(this.id, customFetch);
4384
+ }
4385
+ async mutate(input) {
4386
+ const retries = input.retries ?? 1;
4387
+ if (!Number.isSafeInteger(retries) || retries < 0 || retries > 3) throw new RangeError("Board mutation retries must be an integer from 0 to 3");
4388
+ for (let attempt = 0;; attempt += 1) {
4389
+ const current = await this.inspect({ include: input.include ?? [] });
4390
+ const operations = await input.build(current);
4391
+ if (operations.length === 0) return current;
4392
+ try {
4393
+ return await this.apply({
4394
+ txId: randomBoardId(),
4395
+ baseVersion: current.board.version,
4396
+ operations
4397
+ }, { compact: true });
4398
+ } catch (cause) {
4399
+ if (!(cause instanceof BoardTransactionError) || !cause.isVersionConflict || attempt >= retries) throw cause;
4400
+ }
4401
+ }
4402
+ }
4268
4403
  validate(transaction) {
4269
4404
  return this.boards.validate({
4270
4405
  ...transaction,
4271
4406
  boardId: this.id
4272
4407
  });
4273
4408
  }
4274
- apply(transaction) {
4409
+ apply(transaction, options) {
4275
4410
  return this.boards.apply({
4276
4411
  ...transaction,
4277
4412
  boardId: this.id
4278
- });
4413
+ }, options);
4279
4414
  }
4280
4415
  updateAwareness(seq, update) {
4281
4416
  if (!this.websocketClient) return Promise.resolve();
@@ -4419,6 +4554,9 @@ var SpaceBoardsApi = class {
4419
4554
  const query = params.toString();
4420
4555
  return this.transport.request(`/api/spaces/${this.spaceId}/boards/${boardId}${query ? `?${query}` : ""}`, { fetch: customFetch });
4421
4556
  }
4557
+ summary(boardId, customFetch) {
4558
+ return this.transport.request(`/api/spaces/${this.spaceId}/boards/${boardId}/summary`, { fetch: customFetch });
4559
+ }
4422
4560
  capabilities(boardId, customFetch) {
4423
4561
  return this.transport.request(`/api/spaces/${this.spaceId}/boards/${boardId}/capabilities`, { fetch: customFetch });
4424
4562
  }
@@ -4429,10 +4567,10 @@ var SpaceBoardsApi = class {
4429
4567
  body: JSON.stringify(transaction)
4430
4568
  });
4431
4569
  }
4432
- async apply(transaction) {
4570
+ async apply(transaction, options) {
4433
4571
  assertBoardTransactionNodeCreates(transaction.operations);
4434
4572
  try {
4435
- return await this.transport.request(`/api/spaces/${this.spaceId}/boards/${transaction.boardId}/transactions`, {
4573
+ return await this.transport.request(`/api/spaces/${this.spaceId}/boards/${transaction.boardId}/transactions${options?.compact ? "?compact=1" : ""}`, {
4436
4574
  method: "POST",
4437
4575
  headers: { "Content-Type": "application/json" },
4438
4576
  body: JSON.stringify(transaction)
@@ -5221,4 +5359,4 @@ var CohubHttpClient = class {
5221
5359
  };
5222
5360
  const createHttpClient = (options) => new CohubHttpClient(options);
5223
5361
  //#endregion
5224
- export { parseUsername as $, WORK_SURFACE_READY_TIMEOUT_MS as A, parseWorkSurfaceRequest as B, BoardInputError as C, WORK_COMPOSER_CHIP_CONTENT_MAX_BYTES as D, validateBoardNodes as E, buildWorkSurfaceRequest as F, UI_COMMAND_PENDING_TTL_SECONDS as G, UI_COMMAND_DEFAULT_TIMEOUT_MS as H, buildWorkSurfaceResponse as I, UI_COMMAND_VERSION as J, UI_COMMAND_SETTLEMENT_GRACE_SECONDS as K, parseWorkComposerChipClear as L, buildWorkComposerChipClear as M, buildWorkComposerChipSet as N, WORK_COMPOSER_CHIP_KEY_MAX_LENGTH as O, buildWorkSurfaceReady as P, parseSpaceSlug as Q, parseWorkComposerChipSet as R, createSessionPatchReducer as S, createBoardNode as T, UI_COMMAND_MAX_TIMEOUT_MS as U, parseWorkSurfaceResponse as V, UI_COMMAND_PAYLOAD_MAX_BYTES as W, isUiSurfaceMethod as X, isTerminalUiCommandStatus as Y, parseUiCommand as Z, buildSpacePath as _, ModelsApi as _t, ReferralsApi as a, validateBoardNodeInput as at, parseAssistantMessageCommit as b, ChannelsApi as bt, UiCommandsApi as c, ensureRealtimeConnected as ct, BoardTransactionError as d, SessionAccessApi as dt, BoardAwarenessClientPayloadSchema as et, SpaceClient as f, ReferencesApi as ft, buildSpaceInvitePath as g, PromptsApi as gt, PublicInviteApi as h, SkillsApi as ht, WorksApi as i, BOARD_NODE_CONTRACT as it, WORK_SURFACE_REQUEST_TIMEOUT_MS as j, WORK_COMPOSER_CHIP_LABEL_MAX_LENGTH as k, TasksApi as l, BOARD_BUILTIN_CAPABILITIES as lt, SpacesApi as m, PublicAssetsApi as mt, createHttpClient as n, BOARD_GEO_KINDS as nt, UsersApi as o, BoardPlaybackPolicySchema as ot, SpacePublicFilesApi as p, SearchApi as pt, UI_COMMAND_TERMINAL_TTL_SECONDS as q, WorkCommerceApi as r, BOARD_NATIVE_NODE_TYPES as rt, UserApi as s, parseBoardPlaybackPolicy as st, CohubHttpClient as t, BOARD_COLOR_IDS as tt, BoardClient as u, DEFAULT_BOARD_RENDER_LIMITS as ut, SessionGenerationStreamClient as v, GenerationsApi as vt, assertBoardNodes as w, SessionPatchReducer as x, createSessionGenerationStreamClient as y, CronJobsApi as yt, parseWorkSurfaceReady as z };
5362
+ export { parseUsername as $, WORK_SURFACE_READY_TIMEOUT_MS as A, parseWorkSurfaceRequest as B, BoardInputError as C, WORK_COMPOSER_CHIP_CONTENT_MAX_BYTES as D, validateBoardNodes as E, buildWorkSurfaceRequest as F, UI_COMMAND_PENDING_TTL_SECONDS as G, UI_COMMAND_DEFAULT_TIMEOUT_MS as H, buildWorkSurfaceResponse as I, UI_COMMAND_VERSION as J, UI_COMMAND_SETTLEMENT_GRACE_SECONDS as K, parseWorkComposerChipClear as L, buildWorkComposerChipClear as M, buildWorkComposerChipSet as N, WORK_COMPOSER_CHIP_KEY_MAX_LENGTH as O, buildWorkSurfaceReady as P, parseSpaceSlug as Q, parseWorkComposerChipSet as R, createSessionPatchReducer as S, createBoardNode as T, UI_COMMAND_MAX_TIMEOUT_MS as U, parseWorkSurfaceResponse as V, UI_COMMAND_PAYLOAD_MAX_BYTES as W, isUiSurfaceMethod as X, isTerminalUiCommandStatus as Y, parseUiCommand as Z, buildSpacePath as _, PromptsApi as _t, ReferralsApi as a, validateBoardNodeInput as at, parseAssistantMessageCommit as b, CronJobsApi as bt, UiCommandsApi as c, parseBoardPlaybackPolicy as ct, BoardTransactionError as d, DEFAULT_BOARD_RENDER_LIMITS as dt, BoardAwarenessClientPayloadSchema as et, SpaceClient as f, SessionAccessApi as ft, buildSpaceInvitePath as g, SkillsApi as gt, PublicInviteApi as h, PublicAssetsApi as ht, WorksApi as i, BOARD_NODE_CONTRACT as it, WORK_SURFACE_REQUEST_TIMEOUT_MS as j, WORK_COMPOSER_CHIP_LABEL_MAX_LENGTH as k, TasksApi as l, ensureRealtimeConnected as lt, SpacesApi as m, SearchApi as mt, createHttpClient as n, BOARD_GEO_KINDS as nt, UsersApi as o, BoardCameraFocusParamsSchema as ot, SpacePublicFilesApi as p, ReferencesApi as pt, UI_COMMAND_TERMINAL_TTL_SECONDS as q, WorkCommerceApi as r, BOARD_NATIVE_NODE_TYPES as rt, UserApi as s, BoardPlaybackPolicySchema as st, CohubHttpClient as t, BOARD_COLOR_IDS as tt, BoardClient as u, BOARD_BUILTIN_CAPABILITIES as ut, SessionGenerationStreamClient as v, ModelsApi as vt, assertBoardNodes as w, SessionPatchReducer as x, ChannelsApi as xt, createSessionGenerationStreamClient as y, GenerationsApi as yt, parseWorkSurfaceReady as z };
@@ -488,6 +488,7 @@ type SpacePublicEndpoint = {
488
488
  type SpacePublicEndpoints = Record<string, SpacePublicEndpoint>;
489
489
  //#endregion
490
490
  //#region ../protocol/dist/board-constants.d.ts
491
+ type BoardCoordinateSpace = "world" | "frame-local" | "world-offset" | "screen" | "screen-offset" | "normalized";
491
492
  type BoardRenderCost = {
492
493
  particles: number;
493
494
  vertices: number;
@@ -696,7 +697,7 @@ type BoardNodeValidationDiagnostic = {
696
697
  expected?: string;
697
698
  received?: unknown;
698
699
  allowedValues?: readonly string[];
699
- coordinateSpace?: "frame-local" | "world";
700
+ coordinateSpace?: BoardCoordinateSpace;
700
701
  };
701
702
  type BoardJsonSchema = Record<string, unknown>;
702
703
  type BoardNodeContract = {
@@ -760,6 +761,56 @@ declare const BoardTargetSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
760
761
  }, z.core.$strip>, z.ZodObject<{
761
762
  type: z.ZodLiteral<"camera">;
762
763
  }, z.core.$strip>], "type">;
764
+ declare const BoardCameraStateSchema: z.ZodObject<{
765
+ centerX: z.ZodNumber;
766
+ centerY: z.ZodNumber;
767
+ zoom: z.ZodNumber;
768
+ }, z.core.$strip>;
769
+ declare const BoardCameraFocusSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
770
+ type: z.ZodLiteral<"rect">;
771
+ rect: z.ZodObject<{
772
+ x: z.ZodNumber;
773
+ y: z.ZodNumber;
774
+ width: z.ZodNumber;
775
+ height: z.ZodNumber;
776
+ }, z.core.$strip>;
777
+ }, z.core.$strip>, z.ZodObject<{
778
+ type: z.ZodLiteral<"node">;
779
+ nodeId: z.ZodString;
780
+ }, z.core.$strip>, z.ZodObject<{
781
+ type: z.ZodLiteral<"nodes">;
782
+ nodeIds: z.ZodArray<z.ZodString>;
783
+ }, z.core.$strip>, z.ZodObject<{
784
+ type: z.ZodLiteral<"frame">;
785
+ frameId: z.ZodString;
786
+ }, z.core.$strip>], "type">;
787
+ declare const BoardCameraFocusParamsSchema: z.ZodObject<{
788
+ focus: z.ZodDiscriminatedUnion<[z.ZodObject<{
789
+ type: z.ZodLiteral<"rect">;
790
+ rect: z.ZodObject<{
791
+ x: z.ZodNumber;
792
+ y: z.ZodNumber;
793
+ width: z.ZodNumber;
794
+ height: z.ZodNumber;
795
+ }, z.core.$strip>;
796
+ }, z.core.$strip>, z.ZodObject<{
797
+ type: z.ZodLiteral<"node">;
798
+ nodeId: z.ZodString;
799
+ }, z.core.$strip>, z.ZodObject<{
800
+ type: z.ZodLiteral<"nodes">;
801
+ nodeIds: z.ZodArray<z.ZodString>;
802
+ }, z.core.$strip>, z.ZodObject<{
803
+ type: z.ZodLiteral<"frame">;
804
+ frameId: z.ZodString;
805
+ }, z.core.$strip>], "type">;
806
+ fit: z.ZodDefault<z.ZodEnum<{
807
+ contain: "contain";
808
+ cover: "cover";
809
+ }>>;
810
+ padding: z.ZodDefault<z.ZodNumber>;
811
+ minZoom: z.ZodOptional<z.ZodNumber>;
812
+ maxZoom: z.ZodOptional<z.ZodNumber>;
813
+ }, z.core.$strip>;
763
814
  declare const BoardAssetRefSchema: z.ZodObject<{
764
815
  type: z.ZodEnum<{
765
816
  extension: "extension";
@@ -872,6 +923,9 @@ declare const BoardSequenceSchema: z.ZodObject<{
872
923
  revision: z.ZodNumber;
873
924
  }, z.core.$strip>;
874
925
  type BoardTarget = z.infer<typeof BoardTargetSchema>;
926
+ type BoardCameraState = z.infer<typeof BoardCameraStateSchema>;
927
+ type BoardCameraFocus = z.infer<typeof BoardCameraFocusSchema>;
928
+ type BoardCameraFocusParams = z.infer<typeof BoardCameraFocusParamsSchema>;
875
929
  type BoardAssetRef = z.infer<typeof BoardAssetRefSchema>;
876
930
  type BoardKeyframe = z.infer<typeof BoardKeyframeSchema>;
877
931
  type BoardClip = z.infer<typeof BoardClipSchema>;
@@ -921,6 +975,7 @@ type BoardOperation = (BoardOperationBase & {
921
975
  patch: {
922
976
  title?: string;
923
977
  metadata?: Record<string, unknown>;
978
+ metadataPatch?: Record<string, unknown>;
924
979
  };
925
980
  };
926
981
  }) | (BoardOperationBase & {
@@ -987,6 +1042,17 @@ type BoardTransaction = {
987
1042
  undoGroupId?: string | null;
988
1043
  operations: BoardOperation[];
989
1044
  };
1045
+ type BoardSummary = {
1046
+ board: BoardRecord;
1047
+ counts: {
1048
+ nodes: number;
1049
+ connections: number;
1050
+ effects: number;
1051
+ sequences: number;
1052
+ clips: number;
1053
+ };
1054
+ playback: BoardPlaybackSnapshot | null;
1055
+ };
990
1056
  type BoardBootstrap = {
991
1057
  board: BoardRecord;
992
1058
  nodes: BoardNodeRecord[];
@@ -1219,7 +1285,7 @@ type BoardDiagnostic = {
1219
1285
  expected?: string;
1220
1286
  received?: unknown;
1221
1287
  allowedValues?: readonly string[];
1222
- coordinateSpace?: "frame-local" | "world";
1288
+ coordinateSpace?: BoardCoordinateSpace;
1223
1289
  };
1224
1290
  type BoardValidationResult = {
1225
1291
  valid: boolean;
@@ -4259,4 +4325,4 @@ declare class WebsocketClient {
4259
4325
  }
4260
4326
  declare const createWebsocketClient: (options?: WebsocketClientOptions) => WebsocketClient;
4261
4327
  //#endregion
4262
- export { CreateInvitationInput as $, CompletionMessageRole as $a, UiPreviewTarget as $i, SpaceFsPreparingFile as $n, GenerationModelPolicy as $r, ReferralListItem as $t, BillingPluginStatus as A, BOARD_GEO_KINDS as Aa, BoardAwarenessStateUpdate as Ai, SpaceCommerceFeatureBenefit as An, SpaceTurnAuthorFilter as Ar, MeResponse as At, BillingSubscriptionHistoryStatus as B, BoardConnectionDirection as Ba, UI_COMMAND_MAX_TIMEOUT_MS as Bi, SpaceDefaultResponse as Bn, UserActivityRankings as Br, PublicUserProfile as Bt, BillingCreditStatus as C, BoardRecord as Ca, RealtimeServerEvent as Ci, SpaceBootstrapStage as Cn, resolveRequestSourceChannel as Co, SpacePublicProfile as Cr, LabelItemsResponse as Ct, BillingDiscountPricing as D, BoardValidationResult as Da, WorkVersionPublishedEvent as Di, SpaceCommerceBenefit as Dn, SpaceSandboxConfig as Dr, LabelResourceType as Dt, BillingDiscountOfferRef as E, BoardTransaction as Ea, SessionTurnPatchEvent as Ei, SpaceCheckpointDetailResponse as En, SpaceSandboxAutoDestroyPolicy as Er, LabelRecord as Et, BillingProductPricing as F, BoardNativeNodeType as Fa, WorkArtifactManifestFile as Fi, SpaceConfig as Fn, SpaceUsageSummary as Fr, PromptAccessMode as Ft, CheckpointDiffFileResponse as G, MessageRecord as Ga, UI_COMMAND_VERSION as Gi, SpaceFsCreateUploadInput as Gn, UserSessionSpaceSummary as Gr, ReferenceAggregateResponse as Gt, Channel as H, BoardCapability as Ha, UI_COMMAND_PENDING_TTL_SECONDS as Hi, SpaceFsCompleteUploadInput as Hn, UserProfile as Hr, PublicUserWorkItem as Ht, BillingPromotionCodePreview as I, BoardNodeContract as Ia, WorkBoardArtifactManifest as Ii, SpaceConfigInput as In, TaskRunDetailResponse as Ir, PromptTemplateCatalogEntry as It, CheckpointDiffStats as J, SessionTurnIndexItem as Ja, UiCommandError as Ji, SpaceFsEncoding as Jn, ChannelHealth as Jr, ReferenceQueryResponse as Jt, CheckpointDiffPatchKind as K, SessionForkRecord as Ka, UiCommand as Ki, SpaceFsCreateUploadResponse as Kn, UserSessionsResponse as Kr, ReferenceDirection as Kt, BillingRedemptionResult as L, BoardNodeValidationDiagnostic as La, WorkBoardAsset as Li, SpaceConfigResponse as Ln, TaskRunRecord as Lr, PromptTemplateCatalogResponse as Lt, BillingProductCreditBenefit as M, BOARD_NODE_CONTRACT as Ma, WorkArtifactDescriptor as Mi, SpaceCommerceProduct as Mn, SpaceTurnsResponse as Mr, PatchResourceLabelsInput as Mt, BillingProductDisplay as N, BoardColorId as Na, WorkArtifactDownloadDescriptor as Ni, SpaceCommerceProductBenefitBinding as Nn, SpaceUsageHourlyStat as Nr, PatchResourceLabelsResponse as Nt, BillingHistoryPagination as O, parseBoardPlaybackPolicy as Oa, BoardAwarenessGesture as Oi, SpaceCommerceBuyerProfile as On, SpaceSandboxProvider as Or, LabelScopeType as Ot, BillingProductKind as P, BoardGeoKind as Pa, WorkArtifactManifest as Pi, SpaceCommerceProductCreditBenefit as Pn, SpaceUsageResponse as Pr, Permission as Pt, ClaimReferralResponse as Q, CompletionMessage as Qa, UiPreviewShowCommand as Qi, SpaceFsMoveInput as Qn, FeishuChannelConfig as Qr, ReferralDashboard as Qt, BillingResponsePayload as R, validateBoardNodeInput as Ra, WorkContentKind as Ri, SpaceConfigUpdateResponse as Rn, UserActivityQuery as Rr, PublicReferral as Rt, BillingCreditGrantStatus as S, BoardPlaybackSnapshot as Sa, RealtimeRoomMember as Si, SpaceBootstrapSource as Sn, requestSourceToHeaders as So, SpacePresenceUser as Sr, LabelAssignmentRecord as St, BillingDiscountOffer as T, BoardTarget as Ta, RealtimeWorkVersionRecord as Ti, SpaceChannelBindingInput as Tn, SpaceRole as Tr, LabelListItem as Tt, CheckpointDiffDelivery as U, BoardRenderCost as Ua, UI_COMMAND_SETTLEMENT_GRACE_SECONDS as Ui, SpaceFsCompleteUploadResponse as Un, UserRulesResponse as Ur, ReferenceAggregateGroup as Ut, BillingSubscriptionSummary as V, BoardConnectionRecord as Va, UI_COMMAND_PAYLOAD_MAX_BYTES as Vi, SpaceEnvInput as Vn, UserActivityResponse as Vr, PublicUserSpaceItem as Vt, CheckpointDiffFile as W, SpacePublicEndpoints as Wa, UI_COMMAND_TERMINAL_TTL_SECONDS as Wi, SpaceFsCreateDirectoryInput as Wn, UserSessionListItem as Wr, ReferenceAggregateGroupBy as Wt, CheckpointDiffSummary as X, SpaceTurnsResponse$1 as Xa, UiCommandStatus as Xi, SpaceFsFileKind as Xn, ChannelRuntimeState as Xr, ReferenceRecord as Xt, CheckpointDiffStatus as Y, SessionTurnRecord as Ya, UiCommandRecord as Yi, SpaceFsEntry as Yn, ChannelHealthReasonCode as Yr, ReferenceQueryableType as Yt, CheckpointRecord as Z, CompletionAssistantMessage as Za, UiFilePreviewTarget as Zi, SpaceFsFileResponse as Zn, DiscordChannelConfig as Zr, ReferenceResourceType as Zt, BillingCatalogProduct as _, BoardNodeRecord as _a, ChannelEnvelope as _i, SkillCatalogResponse as _n, isRequestSourceUuid as _o, SpaceMeta as _r, JsonObject as _t, WebsocketClientOptions as a, BoardAssetRef as aa, encodeGenerationPolicy as ai, SessionBindingRecord as an, SpaceCompletionStreamEvent as ao, SpaceFsUploadEntry as ar, CreateSpaceSessionInput as at, BillingConversionIntent as b, BoardPlaybackPolicy as ba, RealtimeRoomDescriptor as bi, SpaceAccessPolicy as bn, parseRequestSourceFromHeaders as bo, SpacePendingDiffSummary as br, LabelAssignmentListItem as bt, createWebsocketClient as c, BoardClip as ca, getAllowedGenerationModelIds as ci, SessionMessagesResponse as cn, ContentBlock as co, SpaceFsUploadPlanEntryInput as cr, CronJobUpdatePatch as ct, BatchUserProfilesResponse as d, BoardDiagnostic as da, GenerationContentBlock as di, SessionTurnResponse as dn, REQUEST_SOURCE_VIA_MAX_LENGTH as do, SpaceFsWriteFileInput as dr, GenerationUsageHourlyStat as dt, UiSurfaceRequest as ea, GenerationParameterConstraint as ei, ReferralReward as en, CompletionThinkingLevel as eo, SpaceFsReadFilesError as er, CreateInvitationResponse as et, BillingBalanceActivity as f, BoardEffect as fa, GenerationModelDeclaration as fi, SessionTurnSignedUrlsResponse as fn, RequestSource as fo, SpaceInvitation as fr, GenerationUsageSummary as ft, BillingCatalog as g, BoardNodeInput as ga, BoardTransactionAppliedEvent as gi, SkillCatalogEntry as gn, isRequestSourceEmpty as go, SpaceMember as gr, InvitationDetail as gt, BillingBalanceActivityStatus as h, BoardManifest as ha, BoardPlaybackChangedEvent as hi, SessionTurnsPaginatedResponse as hn, isRequestSourceClientId as ho, SpaceListItem as hr, GlobalSearchType as ht, WebsocketClientEvents as i, parseUiCommand as ia, decodeGenerationPolicy as ii, SendMessageCronJobPayload as in, SpaceCompletionResult as io, SpaceFsUploadDestination as ir, CreateSpacePromptResponse as it, BillingProductBillingInterval as j, BOARD_NATIVE_NODE_TYPES as ja, BoardAwarenessUpdate as ji, SpaceCommerceOrder as jn, SpaceTurnListItem as jr, ModelCatalogEntry as jt, BillingPaymentStatus as k, BOARD_COLOR_IDS as ka, BoardAwarenessNodePreview as ki, SpaceCommerceCreditsBenefit as kn, SpaceSessionsResponse as kr, LabelSource as kt, AcceptInvitationResponse as l, BoardCreateInput as la, normalizeGenerationPolicy as li, SessionRecord as ln, COHUB_SOURCE_HEADER as lo, SpaceFsUploadProgress as lr, CursorPageInfo as lt, BillingBalanceActivityList as m, BoardKeyframe as ma, BoardAwarenessUpdatedEvent as mi, SessionTurnWindowResponse as mn, hasRequestSourceIdentity as mo, SpaceInvitationLocation as mr, GlobalSearchResult as mt, WebSocketLike as n, isTerminalUiCommandStatus as na, GenerationPolicyError as ni, ResourceLabelsResponse as nn, CreateSpaceCompletionInput as no, SpaceFsReadFilesResponse as nr, CreateSpaceModInput as nt, WebsocketClientState as o, BoardBootstrap as oa, filterGenerationDeclarationsByPolicy as oi, SessionMessageResponse as on, Usage as oo, SpaceFsUploadError as or, CronJobPayload as ot, BillingBalanceActivityKind as p, BoardInspectInput as pa, GenerationResult as pi, SessionTurnStreamSnapshotResponse as pn, RequestSourceVia as po, SpaceInvitationListResponse as pr, GlobalSearchResponse as pt, CheckpointDiffPatchLine as q, SessionTurnSegmentRecord as qa, UiCommandDispatchedPayload as qi, SpaceFsDeleteNodeInput as qn, ChannelConfig as qr, ReferenceKind as qt, WebsocketClient as r, isUiSurfaceMethod as ra, assertGenerationRequestAllowedByPolicy as ri, SandboxSpecId as rn, ModelThinkingLevel as ro, SpaceFsTreeResponse as rr, CreateSpacePromptInput as rt, WebsocketEventPayload as s, BoardCapabilities as sa, findGenerationModelPolicy as si, SessionMessagesPaginatedResponse as sn, BillingPayload as so, SpaceFsUploadPlanEntry as sr, CronJobRecord as st, WebSocketConstructor as t, UiWorkPreviewTarget as ta, GenerationPolicy as ti, ReferralStatus as tn, CompletionUsage as to, SpaceFsReadFilesInput as tr, CreateSpaceInput as tt, ApiError as u, BoardDeleteReason as ua, parseGenerationPolicyFromEnv as ui, SessionTurnIndexResponse as un, COHUB_SOURCE_HEADER_NAMES as uo, SpaceFsUploadResponse as ur, GenerationUsageBlock as ut, BillingCheckoutActionState as v, BoardOperation as va, LabelAssignmentsUpdatedEvent as vi, SkillCatalogSource as vn, mergeRequestSourceIntoMeta as vo, SpaceModListItem as vr, JsonPrimitive as vt, BillingCreditUnit as w, BoardSequence as wa, RealtimeWorkRecord as wi, SpaceBootstrapStatus as wn, SpaceRecord as wr, LabelItemsSessionFork as wt, BillingCreditExpiryGroup as x, BoardPlaybackPolicySchema as xa, RealtimeRoomEvent as xi, SpaceBootstrapMeta as xn, readRequestSourceFromEnv as xo, SpacePresenceSnapshot as xr, LabelAssignmentPageInfo as xt, BillingCheckoutResult as y, BoardPlaybackCommand as ya, RealtimePatchOperation as yi, SpaceAccess as yn, normalizeRequestSource as yo, SpacePendingDiffFileResponse as yr, JsonValue as yt, BillingSubscriptionHistoryList as z, BoardConnection as za, UI_COMMAND_DEFAULT_TIMEOUT_MS as zi, SpaceCreateResponse as zn, UserActivityRange as zr, PublicUserPageResponse as zt };
4328
+ export { CreateInvitationInput as $, SessionTurnIndexItem as $a, UiPreviewTarget as $i, SpaceFsPreparingFile as $n, GenerationModelPolicy as $r, ReferralListItem as $t, BillingPluginStatus as A, BoardTransaction as Aa, BoardAwarenessStateUpdate as Ai, SpaceCommerceFeatureBenefit as An, SpaceTurnAuthorFilter as Ar, MeResponse as At, BillingSubscriptionHistoryStatus as B, BoardNodeContract as Ba, UI_COMMAND_MAX_TIMEOUT_MS as Bi, SpaceDefaultResponse as Bn, UserActivityRankings as Br, PublicUserProfile as Bt, BillingCreditStatus as C, BoardPlaybackPolicy as Ca, RealtimeServerEvent as Ci, SpaceBootstrapStage as Cn, mergeRequestSourceIntoMeta as Co, SpacePublicProfile as Cr, LabelItemsResponse as Ct, BillingDiscountPricing as D, BoardSequence as Da, WorkVersionPublishedEvent as Di, SpaceCommerceBenefit as Dn, requestSourceToHeaders as Do, SpaceSandboxConfig as Dr, LabelResourceType as Dt, BillingDiscountOfferRef as E, BoardRecord as Ea, SessionTurnPatchEvent as Ei, SpaceCheckpointDetailResponse as En, readRequestSourceFromEnv as Eo, SpaceSandboxAutoDestroyPolicy as Er, LabelRecord as Et, BillingProductPricing as F, BOARD_NATIVE_NODE_TYPES as Fa, WorkArtifactManifestFile as Fi, SpaceConfig as Fn, SpaceUsageSummary as Fr, PromptAccessMode as Ft, CheckpointDiffFileResponse as G, BoardConnectionRecord as Ga, UI_COMMAND_VERSION as Gi, SpaceFsCreateUploadInput as Gn, UserSessionSpaceSummary as Gr, ReferenceAggregateResponse as Gt, Channel as H, validateBoardNodeInput as Ha, UI_COMMAND_PENDING_TTL_SECONDS as Hi, SpaceFsCompleteUploadInput as Hn, UserProfile as Hr, PublicUserWorkItem as Ht, BillingPromotionCodePreview as I, BOARD_NODE_CONTRACT as Ia, WorkBoardArtifactManifest as Ii, SpaceConfigInput as In, TaskRunDetailResponse as Ir, PromptTemplateCatalogEntry as It, CheckpointDiffStats as J, BoardRenderCost as Ja, UiCommandError as Ji, SpaceFsEncoding as Jn, ChannelHealth as Jr, ReferenceQueryResponse as Jt, CheckpointDiffPatchKind as K, BoardCapability as Ka, UiCommand as Ki, SpaceFsCreateUploadResponse as Kn, UserSessionsResponse as Kr, ReferenceDirection as Kt, BillingRedemptionResult as L, BoardColorId as La, WorkBoardAsset as Li, SpaceConfigResponse as Ln, TaskRunRecord as Lr, PromptTemplateCatalogResponse as Lt, BillingProductCreditBenefit as M, parseBoardPlaybackPolicy as Ma, WorkArtifactDescriptor as Mi, SpaceCommerceProduct as Mn, SpaceTurnsResponse as Mr, PatchResourceLabelsInput as Mt, BillingProductDisplay as N, BOARD_COLOR_IDS as Na, WorkArtifactDownloadDescriptor as Ni, SpaceCommerceProductBenefitBinding as Nn, SpaceUsageHourlyStat as Nr, PatchResourceLabelsResponse as Nt, BillingHistoryPagination as O, BoardSummary as Oa, BoardAwarenessGesture as Oi, SpaceCommerceBuyerProfile as On, resolveRequestSourceChannel as Oo, SpaceSandboxProvider as Or, LabelScopeType as Ot, BillingProductKind as P, BOARD_GEO_KINDS as Pa, WorkArtifactManifest as Pi, SpaceCommerceProductCreditBenefit as Pn, SpaceUsageResponse as Pr, Permission as Pt, ClaimReferralResponse as Q, SessionTurnSegmentRecord as Qa, UiPreviewShowCommand as Qi, SpaceFsMoveInput as Qn, FeishuChannelConfig as Qr, ReferralDashboard as Qt, BillingResponsePayload as R, BoardGeoKind as Ra, WorkContentKind as Ri, SpaceConfigUpdateResponse as Rn, UserActivityQuery as Rr, PublicReferral as Rt, BillingCreditGrantStatus as S, BoardPlaybackCommand as Sa, RealtimeRoomMember as Si, SpaceBootstrapSource as Sn, isRequestSourceUuid as So, SpacePresenceUser as Sr, LabelAssignmentRecord as St, BillingDiscountOffer as T, BoardPlaybackSnapshot as Ta, RealtimeWorkVersionRecord as Ti, SpaceChannelBindingInput as Tn, parseRequestSourceFromHeaders as To, SpaceRole as Tr, LabelListItem as Tt, CheckpointDiffDelivery as U, BoardConnection as Ua, UI_COMMAND_SETTLEMENT_GRACE_SECONDS as Ui, SpaceFsCompleteUploadResponse as Un, UserRulesResponse as Ur, ReferenceAggregateGroup as Ut, BillingSubscriptionSummary as V, BoardNodeValidationDiagnostic as Va, UI_COMMAND_PAYLOAD_MAX_BYTES as Vi, SpaceEnvInput as Vn, UserActivityResponse as Vr, PublicUserSpaceItem as Vt, CheckpointDiffFile as W, BoardConnectionDirection as Wa, UI_COMMAND_TERMINAL_TTL_SECONDS as Wi, SpaceFsCreateDirectoryInput as Wn, UserSessionListItem as Wr, ReferenceAggregateGroupBy as Wt, CheckpointDiffSummary as X, MessageRecord as Xa, UiCommandStatus as Xi, SpaceFsFileKind as Xn, ChannelRuntimeState as Xr, ReferenceRecord as Xt, CheckpointDiffStatus as Y, SpacePublicEndpoints as Ya, UiCommandRecord as Yi, SpaceFsEntry as Yn, ChannelHealthReasonCode as Yr, ReferenceQueryableType as Yt, CheckpointRecord as Z, SessionForkRecord as Za, UiFilePreviewTarget as Zi, SpaceFsFileResponse as Zn, DiscordChannelConfig as Zr, ReferenceResourceType as Zt, BillingCatalogProduct as _, BoardKeyframe as _a, ChannelEnvelope as _i, SkillCatalogResponse as _n, RequestSource as _o, SpaceMeta as _r, JsonObject as _t, WebsocketClientOptions as a, BoardAssetRef as aa, encodeGenerationPolicy as ai, SessionBindingRecord as an, CompletionThinkingLevel as ao, SpaceFsUploadEntry as ar, CreateSpaceSessionInput as at, BillingConversionIntent as b, BoardNodeRecord as ba, RealtimeRoomDescriptor as bi, SpaceAccessPolicy as bn, isRequestSourceClientId as bo, SpacePendingDiffSummary as br, LabelAssignmentListItem as bt, createWebsocketClient as c, BoardCameraFocusParams as ca, getAllowedGenerationModelIds as ci, SessionMessagesResponse as cn, ModelThinkingLevel as co, SpaceFsUploadPlanEntryInput as cr, CronJobUpdatePatch as ct, BatchUserProfilesResponse as d, BoardClip as da, GenerationContentBlock as di, SessionTurnResponse as dn, Usage as do, SpaceFsWriteFileInput as dr, GenerationUsageHourlyStat as dt, UiSurfaceRequest as ea, GenerationParameterConstraint as ei, ReferralReward as en, SessionTurnRecord as eo, SpaceFsReadFilesError as er, CreateInvitationResponse as et, BillingBalanceActivity as f, BoardCreateInput as fa, GenerationModelDeclaration as fi, SessionTurnSignedUrlsResponse as fn, BillingPayload as fo, SpaceInvitation as fr, GenerationUsageSummary as ft, BillingCatalog as g, BoardInspectInput as ga, BoardTransactionAppliedEvent as gi, SkillCatalogEntry as gn, REQUEST_SOURCE_VIA_MAX_LENGTH as go, SpaceMember as gr, InvitationDetail as gt, BillingBalanceActivityStatus as h, BoardEffect as ha, BoardPlaybackChangedEvent as hi, SessionTurnsPaginatedResponse as hn, COHUB_SOURCE_HEADER_NAMES as ho, SpaceListItem as hr, GlobalSearchType as ht, WebsocketClientEvents as i, parseUiCommand as ia, decodeGenerationPolicy as ii, SendMessageCronJobPayload as in, CompletionMessageRole as io, SpaceFsUploadDestination as ir, CreateSpacePromptResponse as it, BillingProductBillingInterval as j, BoardValidationResult as ja, BoardAwarenessUpdate as ji, SpaceCommerceOrder as jn, SpaceTurnListItem as jr, ModelCatalogEntry as jt, BillingPaymentStatus as k, BoardTarget as ka, BoardAwarenessNodePreview as ki, SpaceCommerceCreditsBenefit as kn, SpaceSessionsResponse as kr, LabelSource as kt, AcceptInvitationResponse as l, BoardCameraState as la, normalizeGenerationPolicy as li, SessionRecord as ln, SpaceCompletionResult as lo, SpaceFsUploadProgress as lr, CursorPageInfo as lt, BillingBalanceActivityList as m, BoardDiagnostic as ma, BoardAwarenessUpdatedEvent as mi, SessionTurnWindowResponse as mn, COHUB_SOURCE_HEADER as mo, SpaceInvitationLocation as mr, GlobalSearchResult as mt, WebSocketLike as n, isTerminalUiCommandStatus as na, GenerationPolicyError as ni, ResourceLabelsResponse as nn, CompletionAssistantMessage as no, SpaceFsReadFilesResponse as nr, CreateSpaceModInput as nt, WebsocketClientState as o, BoardBootstrap as oa, filterGenerationDeclarationsByPolicy as oi, SessionMessageResponse as on, CompletionUsage as oo, SpaceFsUploadError as or, CronJobPayload as ot, BillingBalanceActivityKind as p, BoardDeleteReason as pa, GenerationResult as pi, SessionTurnStreamSnapshotResponse as pn, ContentBlock as po, SpaceInvitationListResponse as pr, GlobalSearchResponse as pt, CheckpointDiffPatchLine as q, BoardCoordinateSpace as qa, UiCommandDispatchedPayload as qi, SpaceFsDeleteNodeInput as qn, ChannelConfig as qr, ReferenceKind as qt, WebsocketClient as r, isUiSurfaceMethod as ra, assertGenerationRequestAllowedByPolicy as ri, SandboxSpecId as rn, CompletionMessage as ro, SpaceFsTreeResponse as rr, CreateSpacePromptInput as rt, WebsocketEventPayload as s, BoardCameraFocus as sa, findGenerationModelPolicy as si, SessionMessagesPaginatedResponse as sn, CreateSpaceCompletionInput as so, SpaceFsUploadPlanEntry as sr, CronJobRecord as st, WebSocketConstructor as t, UiWorkPreviewTarget as ta, GenerationPolicy as ti, ReferralStatus as tn, SpaceTurnsResponse$1 as to, SpaceFsReadFilesInput as tr, CreateSpaceInput as tt, ApiError as u, BoardCapabilities as ua, parseGenerationPolicyFromEnv as ui, SessionTurnIndexResponse as un, SpaceCompletionStreamEvent as uo, SpaceFsUploadResponse as ur, GenerationUsageBlock as ut, BillingCheckoutActionState as v, BoardManifest as va, LabelAssignmentsUpdatedEvent as vi, SkillCatalogSource as vn, RequestSourceVia as vo, SpaceModListItem as vr, JsonPrimitive as vt, BillingCreditUnit as w, BoardPlaybackPolicySchema as wa, RealtimeWorkRecord as wi, SpaceBootstrapStatus as wn, normalizeRequestSource as wo, SpaceRecord as wr, LabelItemsSessionFork as wt, BillingCreditExpiryGroup as x, BoardOperation as xa, RealtimeRoomEvent as xi, SpaceBootstrapMeta as xn, isRequestSourceEmpty as xo, SpacePresenceSnapshot as xr, LabelAssignmentPageInfo as xt, BillingCheckoutResult as y, BoardNodeInput as ya, RealtimePatchOperation as yi, SpaceAccess as yn, hasRequestSourceIdentity as yo, SpacePendingDiffFileResponse as yr, JsonValue as yt, BillingSubscriptionHistoryList as z, BoardNativeNodeType as za, UI_COMMAND_DEFAULT_TIMEOUT_MS as zi, SpaceCreateResponse as zn, UserActivityRange as zr, PublicUserPageResponse as zt };