@neta-art/cohub 2.15.0 → 3.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.
@@ -1,40 +1,55 @@
1
+ import { a as BoardCreateInput, b as BoardTransaction, g as BoardPlaybackSnapshot, h as BoardPlaybackCommand, l as BoardInspectInput, n as BoardBootstrap, r as BoardCapabilities, x as BoardValidationResult } from "./board.js";
2
+ import { $ as CreateSpacePromptInput, $r as BoardTransactionAppliedEvent$1, Ar as UserSessionsResponse, At as ModelCatalogEntry, Bn as SpaceFsCreateUploadResponse, Cn as SpaceCommerceBuyerProfile, Dn as SpaceCommerceProduct, Dr as UserRulesResponse, En as SpaceCommerceOrder, Er as UserProfile, Et as LabelResourceType, Fn as SpaceDefaultResponse, Gn as SpaceFsMoveInput, Gt as ReferenceDirection, In as SpaceEnvInput, It as PromptTemplateCatalogResponse, J as ClaimReferralResponse, Jt as ReferenceQueryableType, K as CheckpointDiffSummary, Kn as SpaceFsPreparingFile, Kt as ReferenceKind, Ln as SpaceFsCompleteUploadInput, Lt as PublicReferral, Mn as SpaceConfigResponse, Mr as ChannelHealth, Mt as PatchResourceLabelsResponse, Nn as SpaceConfigUpdateResponse, Nt as Permission, On as SpaceCommerceProductBenefitBinding, Pn as SpaceCreateResponse, Qr as BoardPlaybackChangedEvent$1, R as Channel, Rn as SpaceFsCompleteUploadResponse, Rt as PublicUserPageResponse, Si as BillingPayload, Sn as SpaceCommerceBenefit, Sr as SpaceUsageResponse, St as LabelItemsResponse, Tr as TaskRunRecord, Ut as ReferenceAggregateGroupBy, V as CheckpointDiffFileResponse, Wn as SpaceFsFileResponse, Wt as ReferenceAggregateResponse, X as CreateInvitationResponse, Xn as SpaceFsTreeResponse, Xr as GenerationModelDeclaration, Y as CreateInvitationInput, Yn as SpaceFsReadFilesResponse, Yr as GenerationContentBlock, Z as CreateSpaceInput, Zt as ReferralDashboard, a as WebsocketClientOptions, ai as SpacePublicEndpoints, an as SessionMessageResponse, ar as SpaceInvitation, at as CursorPageInfo, bi as Usage, br as SpaceSessionsResponse, cn as SessionRecord, d as BatchUserProfilesResponse, dn as SessionTurnSignedUrlsResponse, dr as SpacePendingDiffSummary, et as CreateSpacePromptResponse, fn as SessionTurnStreamSnapshotResponse, fr as SpacePresenceSnapshot, ft as GlobalSearchResponse, gi as CreateSpaceCompletionInput, gn as SkillCatalogResponse, gr as SpaceRole, hr as SpaceRecord, ht as InvitationDetail, ii as SessionTurnPatchEvent, ir as SpaceFsWriteFileInput, it as CronJobUpdatePatch, jn as SpaceConfigInput, jr as ChannelConfig, jt as PatchResourceLabelsInput, kt as MeResponse, l as AcceptInvitationResponse, ln as SessionTurnIndexResponse, lr as SpaceModListItem, mn as SessionTurnsPaginatedResponse, mr as SpacePublicProfile, mt as GlobalSearchType, ni as RealtimePatchOperation, oi as MessageRecord, on as SessionMessagesPaginatedResponse, pn as SessionTurnWindowResponse, q as CheckpointRecord, qt as ReferenceQueryResponse, r as WebsocketClient, rr as SpaceFsUploadResponse, rt as CronJobRecord, s as WebsocketEventPayload, si as SessionForkRecord, sn as SessionMessagesResponse, sr as SpaceMember, tt as CreateSpaceSessionInput, ui as SessionTurnRecord, un as SessionTurnResponse, ur as SpacePendingDiffFileResponse, vi as SpaceCompletionResult, vn as SpaceAccessPolicy, wr as TaskRunDetailResponse, wt as LabelListItem, xi as ContentBlock, xn as SpaceCheckpointDetailResponse, xt as LabelAssignmentRecord, yi as SpaceCompletionStreamEvent, zn as SpaceFsCreateUploadInput } from "./websocket.js";
1
3
  import { n as CohubEnvironment } from "./environment.js";
2
- import { $ as CheckpointDiffSummary, $n as SpaceFsPreparingFile, $t as ReferenceKind, An as SpaceCommerceBuyerProfile, B as CanvasDocumentRecord, Bn as SpaceConfigUpdateResponse, Bt as Permission, Ci as SpaceCompletionResult, Cn as SkillCatalogResponse, Cr as SpaceRole, Di as ContentBlock, Dr as SpaceSessionsResponse, Ei as BillingPayload, Fn as SpaceCommerceProductBenefitBinding, G as Channel, Gn as SpaceFsCompleteUploadResponse, Gt as PublicUserPageResponse, Hn as SpaceDefaultResponse, It as MeResponse, J as CheckpointDiffFileResponse, Kn as SpaceFsCreateUploadInput, Lr as UserSessionsResponse, Lt as ModelCatalogEntry, Mr as TaskRunRecord, Nn as SpaceCommerceOrder, Nr as UserProfile, Nt as LabelResourceType, On as SpaceCheckpointDetailResponse, Ot as LabelAssignmentRecord, Pn as SpaceCommerceProduct, Pr as UserRulesResponse, Qn as SpaceFsMoveInput, Qt as ReferenceDirection, R as CanvasBootstrapResponse, Rn as SpaceConfigInput, Rr as ChannelConfig, Rt as PatchResourceLabelsInput, Sr as SpaceRecord, St as InvitationDetail, Ti as Usage, Tn as SpaceAccessPolicy, Un as SpaceEnvInput, Ut as PromptTemplateCatalogResponse, Vn as SpaceCreateResponse, W as CanvasTransactionInput, Wn as SpaceFsCompleteUploadInput, Wt as PublicReferral, Xt as ReferenceAggregateGroupBy, Zn as SpaceFsFileResponse, Zt as ReferenceAggregateResponse, _n as SessionTurnResponse, _r as SpacePendingDiffFileResponse, a as WebsocketClientOptions, bn as SessionTurnWindowResponse, ct as CreateSpaceSessionInput, d as BatchUserProfilesResponse, di as MessageRecord, dr as SpaceFsWriteFileInput, dt as CronJobUpdatePatch, en as ReferenceQueryResponse, et as CheckpointRecord, fi as SessionForkRecord, fn as SessionMessageResponse, fr as SpaceInvitation, ft as CursorPageInfo, gn as SessionTurnIndexResponse, gr as SpaceModListItem, hi as SessionTurnRecord, hn as SessionRecord, in as ReferralDashboard, it as CreateSpaceInput, jr as TaskRunDetailResponse, jt as LabelListItem, kn as SpaceCommerceBenefit, kr as SpaceUsageResponse, kt as LabelItemsResponse, l as AcceptInvitationResponse, li as SessionTurnPatchEvent, mn as SessionMessagesResponse, mr as SpaceMember, ni as GenerationContentBlock, nr as SpaceFsReadFilesResponse, nt as CreateInvitationInput, ot as CreateSpacePromptInput, pn as SessionMessagesPaginatedResponse, qn as SpaceFsCreateUploadResponse, r as WebsocketClient, ri as GenerationModelDeclaration, rr as SpaceFsTreeResponse, rt as CreateInvitationResponse, s as WebsocketEventPayload, si as RealtimePatchOperation, st as CreateSpacePromptResponse, tn as ReferenceQueryableType, tt as ClaimReferralResponse, ui as SpacePublicEndpoints, ur as SpaceFsUploadResponse, ut as CronJobRecord, vn as SessionTurnSignedUrlsResponse, vr as SpacePendingDiffSummary, wi as SpaceCompletionStreamEvent, xi as CreateSpaceCompletionInput, xn as SessionTurnsPaginatedResponse, xr as SpacePublicProfile, xt as GlobalSearchType, yn as SessionTurnStreamSnapshotResponse, yr as SpacePresenceSnapshot, yt as GlobalSearchResponse, z as CanvasCreateInput, zn as SpaceConfigResponse, zr as ChannelHealth, zt as PatchResourceLabelsResponse } from "./websocket.js";
3
4
  import { a as VoiceInputCreateOptions } from "./voice-input.js";
4
- //#region ../protocol/dist/provenance.d.ts
5
- /** Request provenance via X-Cohub-Source-* headers. Never used for authorization. */
6
- declare const COHUB_SOURCE_HEADER: {
7
- readonly space: "X-Cohub-Source-Space";
8
- readonly session: "X-Cohub-Source-Session";
9
- readonly turn: "X-Cohub-Source-Turn";
10
- readonly toolCall: "X-Cohub-Source-Tool-Call";
11
- readonly via: "X-Cohub-Source-Via";
5
+ //#region ../protocol/dist/model/status.d.ts
6
+ /** Per-model availability status, derived from periodic probe results. */
7
+ type ModelAvailabilityStatus = "operational" | "degraded" | "outage";
8
+ /**
9
+ * Aggregated availability for a single model.
10
+ * All rate fields are percentages (0–100); `null` means no samples in that window.
11
+ */
12
+ type ModelStatusEntry = {
13
+ status: ModelAvailabilityStatus;
14
+ /** 5-minute success rate — drives the selector dot color. Real observed
15
+ * traffic (`online`) when available, else the probe self-test window. */
16
+ successRate5m: number | null;
17
+ successRate2h: number | null;
18
+ successRate24h: number | null;
19
+ /** 1-hour average / P90 response duration in milliseconds. */
20
+ latencyAvgMs: number | null;
21
+ latencyP90Ms: number | null;
22
+ samples1h: number | null;
23
+ checkedAt: string | null;
24
+ probeIntervalSeconds: number | null;
25
+ /** 24-hour history in 15-minute buckets (oldest → newest), or null. */
26
+ history: Array<{
27
+ t: string;
28
+ status: ModelAvailabilityStatus;
29
+ rate: number | null;
30
+ samples: number;
31
+ }> | null;
32
+ /**
33
+ * Bar-chart series (oldest → newest), always 96 buckets. Source is real
34
+ * observed traffic (`online` heartbeats resampled to 5-min buckets) when
35
+ * available, else the probe self-test `history` (15-min buckets) as a
36
+ * fallback for models not yet covered by online. Drives the hover card
37
+ * bar chart; color each bucket via the 6-tier success-rate scale.
38
+ */
39
+ heartbeats8h: Array<number | null> | null;
40
+ /**
41
+ * Total minutes spanned by `heartbeats8h` (online → 480, history fallback
42
+ * → 1440). The frontend divides by bucket count for the per-bar age and
43
+ * the axis label, so the window reads honestly regardless of source.
44
+ */
45
+ heartbeatsWindowMinutes: number | null;
12
46
  };
13
- type RequestSourceVia = "cli" | "bash" | "tool" | "api" | "web" | (string & {});
14
- /** Caller context: via (channel) and optional identity fields. */
15
- type RequestSource = {
16
- spaceId?: string;
17
- sessionId?: string;
18
- turnId?: string;
19
- toolCallId?: string;
20
- via?: RequestSourceVia;
47
+ type ModelStatusResponse = {
48
+ generatedAt: string;
49
+ overallStatus: ModelAvailabilityStatus | "unknown";
50
+ /** Keyed by model id. */
51
+ models: Record<string, ModelStatusEntry>;
21
52
  };
22
- declare const isRequestSourceUuid: (value: unknown) => value is string;
23
- declare const REQUEST_SOURCE_VIA_MAX_LENGTH = 64;
24
- declare const isRequestSourceEmpty: (source: RequestSource | null | undefined) => boolean;
25
- declare const hasRequestSourceIdentity: (source: RequestSource | null | undefined) => boolean;
26
- /** Drop invalid UUIDs; via-only is valid. */
27
- declare const normalizeRequestSource: (input: unknown) => RequestSource | null;
28
- declare const parseRequestSourceFromHeaders: (getHeader: (name: string) => string | null | undefined) => RequestSource | null;
29
- declare const requestSourceToHeaders: (source: RequestSource | null | undefined) => Record<string, string>;
30
- /** Read COHUB_* env into a RequestSource. */
31
- declare const readRequestSourceFromEnv: (env?: Record<string, string | undefined>, defaults?: {
32
- via?: RequestSourceVia;
33
- }) => RequestSource | null;
34
- declare const resolveRequestSourceChannel: (source: RequestSource | null | undefined, fallback?: string) => string;
35
- /** Put identity under meta.source; strip body source. Via-only is skipped. */
36
- declare const mergeRequestSourceIntoMeta: (meta: Record<string, unknown> | null | undefined, headerSource: RequestSource | null | undefined) => Record<string, unknown> | null;
37
- declare const COHUB_SOURCE_HEADER_NAMES: readonly string[];
38
53
  //#endregion
39
54
  //#region ../protocol/dist/generation/index.d.ts
40
55
  declare const GENERATION_TASK_TYPE: "generation";
@@ -87,6 +102,100 @@ type ListGenerationModelsResponse = {
87
102
  models: PublicGenerationDeclaration[];
88
103
  };
89
104
  //#endregion
105
+ //#region ../protocol/dist/space-config.d.ts
106
+ type WorkspacePreviewKind = "file" | "board" | "port";
107
+ type WorkspacePreviewRef = {
108
+ kind: WorkspacePreviewKind;
109
+ key: string;
110
+ };
111
+ type WorkspaceLayoutPresentation = "split" | "focus" | "fullscreen";
112
+ type WorkspaceDefaultLayout = {
113
+ leftSidebar?: "expanded" | "collapsed";
114
+ filesColumn?: "visible" | "hidden";
115
+ fileTree?: "expanded" | "collapsed";
116
+ preview?: WorkspacePreviewRef;
117
+ presentation?: WorkspaceLayoutPresentation;
118
+ };
119
+ type NewChatBackgroundBase = {
120
+ opacity: number;
121
+ fit: "cover" | "contain" | "fill";
122
+ position: string;
123
+ };
124
+ type NewChatBackgroundUrlSource = {
125
+ kind: "url";
126
+ url: string;
127
+ };
128
+ type NewChatBackgroundConfig = NewChatBackgroundBase & ({
129
+ type: "html";
130
+ source: NewChatBackgroundUrlSource | {
131
+ kind: "space";
132
+ path: string;
133
+ };
134
+ } | {
135
+ type: "image" | "video";
136
+ source: NewChatBackgroundUrlSource;
137
+ });
138
+ type SpaceConfig = {
139
+ ui?: {
140
+ newChat?: {
141
+ background?: NewChatBackgroundConfig;
142
+ };
143
+ workspace?: {
144
+ defaultLayout?: WorkspaceDefaultLayout;
145
+ };
146
+ };
147
+ };
148
+ type SpacePreviewSessionCredential = {
149
+ token: string;
150
+ expiresIn: number;
151
+ };
152
+ type SpaceStartupResponse = {
153
+ status: "ready" | "missing" | "invalid" | "preparing";
154
+ config: SpaceConfig | null;
155
+ configRaw: string | null;
156
+ revision: {
157
+ mtimeMs: number;
158
+ size: number;
159
+ } | null;
160
+ previewSession: SpacePreviewSessionCredential | null;
161
+ retryAfterMs?: number;
162
+ };
163
+ //#endregion
164
+ //#region ../protocol/dist/provenance.d.ts
165
+ /** Request provenance via X-Cohub-Source-* headers. Never used for authorization. */
166
+ declare const COHUB_SOURCE_HEADER: {
167
+ readonly space: "X-Cohub-Source-Space";
168
+ readonly session: "X-Cohub-Source-Session";
169
+ readonly turn: "X-Cohub-Source-Turn";
170
+ readonly toolCall: "X-Cohub-Source-Tool-Call";
171
+ readonly via: "X-Cohub-Source-Via";
172
+ };
173
+ type RequestSourceVia = "cli" | "bash" | "tool" | "api" | "web" | (string & {});
174
+ /** Caller context: via (channel) and optional identity fields. */
175
+ type RequestSource = {
176
+ spaceId?: string;
177
+ sessionId?: string;
178
+ turnId?: string;
179
+ toolCallId?: string;
180
+ via?: RequestSourceVia;
181
+ };
182
+ declare const isRequestSourceUuid: (value: unknown) => value is string;
183
+ declare const REQUEST_SOURCE_VIA_MAX_LENGTH = 64;
184
+ declare const isRequestSourceEmpty: (source: RequestSource | null | undefined) => boolean;
185
+ declare const hasRequestSourceIdentity: (source: RequestSource | null | undefined) => boolean;
186
+ /** Drop invalid UUIDs; via-only is valid. */
187
+ declare const normalizeRequestSource: (input: unknown) => RequestSource | null;
188
+ declare const parseRequestSourceFromHeaders: (getHeader: (name: string) => string | null | undefined) => RequestSource | null;
189
+ declare const requestSourceToHeaders: (source: RequestSource | null | undefined) => Record<string, string>;
190
+ /** Read COHUB_* env into a RequestSource. */
191
+ declare const readRequestSourceFromEnv: (env?: Record<string, string | undefined>, defaults?: {
192
+ via?: RequestSourceVia;
193
+ }) => RequestSource | null;
194
+ declare const resolveRequestSourceChannel: (source: RequestSource | null | undefined, fallback?: string) => string;
195
+ /** Put identity under meta.source; strip body source. Via-only is skipped. */
196
+ declare const mergeRequestSourceIntoMeta: (meta: Record<string, unknown> | null | undefined, headerSource: RequestSource | null | undefined) => Record<string, unknown> | null;
197
+ declare const COHUB_SOURCE_HEADER_NAMES: readonly string[];
198
+ //#endregion
90
199
  //#region src/work-runtime.d.ts
91
200
  type WorkRuntimeContext = {
92
201
  work: {
@@ -403,6 +512,7 @@ declare class ModelsApi {
403
512
  constructor(transport: HttpTransport);
404
513
  list(): Promise<ModelsCatalog>;
405
514
  listMultimodal(): Promise<ListGenerationModelsResponse>;
515
+ status(): Promise<ModelStatusResponse>;
406
516
  }
407
517
  //#endregion
408
518
  //#region src/apis/prompts.d.ts
@@ -775,16 +885,26 @@ declare class PublicInviteApi {
775
885
  //#endregion
776
886
  //#region src/apis/spaces.d.ts
777
887
  /**
778
- * A canvas transaction rejected by the server. `status`/`code` let callers
888
+ * A board transaction rejected by the server. `status`/`code` let callers
779
889
  * distinguish a recoverable version conflict (409 / "VERSION_CONFLICT") from
780
890
  * transient failures, so they can rebase and retry instead of surfacing an error.
781
891
  */
782
- declare class CanvasTransactionError extends Error {
892
+ declare class BoardTransactionError extends Error {
783
893
  readonly status?: number | undefined;
784
894
  readonly code?: string | undefined;
785
- constructor(message: string, status?: number | undefined, code?: string | undefined);
895
+ readonly body?: unknown;
896
+ constructor(message: string, status?: number | undefined, code?: string | undefined, body?: unknown, options?: ErrorOptions);
786
897
  get isVersionConflict(): boolean;
787
898
  }
899
+ type BoardTransactionInput = Omit<BoardTransaction, "boardId">;
900
+ type BoardTransactionAppliedEvent = BoardTransactionAppliedEvent$1;
901
+ type BoardPlaybackChangedEvent = BoardPlaybackChangedEvent$1;
902
+ type BoardEventName = "transaction" | "playback";
903
+ type BoardSubscriptionHandlers = {
904
+ transaction?: (event: BoardTransactionAppliedEvent) => void;
905
+ playback?: (event: BoardPlaybackChangedEvent) => void;
906
+ event?: (event: BoardTransactionAppliedEvent | BoardPlaybackChangedEvent) => void;
907
+ };
788
908
  type SessionSubscriptionHandlers = {
789
909
  patch?: (event: WebsocketEventPayload) => void;
790
910
  /** @deprecated Use `session.subscribeGeneration({ state })`. */
@@ -796,7 +916,7 @@ type SessionSubscriptionHandlers = {
796
916
  event?: (event: WebsocketEventPayload) => void;
797
917
  };
798
918
  type SessionEventName = "created" | "updated" | "turn.created" | "turn.patch" | "turn.lifecycle" | "turn.updated" | "turn.finalized" | "turn.error" | "message.persisted";
799
- type SpaceEventName = SessionEventName | "fs.changed" | "ports.changed" | "presence.updated" | "canvas.tx.applied" | "canvas.tx.ack" | "canvas.tx.error" | "task.created" | "task.updated" | "event";
919
+ type SpaceEventName = SessionEventName | "fs.changed" | "ports.changed" | "presence.updated" | "board.transaction.applied" | "board.playback.changed" | "task.created" | "task.updated" | "event";
800
920
  declare class SpacesApi {
801
921
  private readonly transport;
802
922
  constructor(transport: HttpTransport);
@@ -1255,16 +1375,70 @@ declare class SpaceCommerceApi {
1255
1375
  businessKey: string;
1256
1376
  }>;
1257
1377
  }
1258
- declare class SpaceCanvasApi {
1378
+ declare class BoardRealtimeClient {
1379
+ private readonly websocketClient;
1380
+ private readonly spaceId;
1381
+ private readonly boardId;
1382
+ constructor(websocketClient: WebsocketClient | null, spaceId: string, boardId: string);
1383
+ subscribe(handlers: BoardSubscriptionHandlers): () => void;
1384
+ on(type: "transaction", handler: (event: BoardTransactionAppliedEvent) => void): () => void;
1385
+ on(type: "playback", handler: (event: BoardPlaybackChangedEvent) => void): () => void;
1386
+ }
1387
+ declare class BoardClient {
1388
+ readonly spaceId: string;
1389
+ readonly id: string;
1390
+ readonly realtime: BoardRealtimeClient;
1391
+ private readonly boards;
1392
+ constructor(spaceId: string, id: string, transport: HttpTransport, websocketClient: WebsocketClient | null);
1393
+ inspect(input?: BoardInspectInput, customFetch?: Fetch): Promise<BoardBootstrap>;
1394
+ capabilities(customFetch?: Fetch): Promise<BoardCapabilities>;
1395
+ validate(transaction: BoardTransactionInput): Promise<BoardValidationResult>;
1396
+ apply(transaction: BoardTransactionInput): Promise<BoardBootstrap>;
1397
+ playback(command: BoardPlaybackCommand): Promise<BoardPlaybackSnapshot>;
1398
+ play(command: Omit<Extract<BoardPlaybackCommand, {
1399
+ type: "play";
1400
+ }>, "shared"> & {
1401
+ shared?: true;
1402
+ }): Promise<BoardPlaybackSnapshot>;
1403
+ pause(command: Extract<BoardPlaybackCommand, {
1404
+ type: "pause";
1405
+ }>): Promise<BoardPlaybackSnapshot>;
1406
+ seek(command: Extract<BoardPlaybackCommand, {
1407
+ type: "seek";
1408
+ }>): Promise<BoardPlaybackSnapshot>;
1409
+ stop(command: Extract<BoardPlaybackCommand, {
1410
+ type: "stop";
1411
+ }>): Promise<BoardPlaybackSnapshot>;
1412
+ subscribe(handlers: BoardSubscriptionHandlers): () => void;
1413
+ on(type: "transaction", handler: (event: BoardTransactionAppliedEvent) => void): () => void;
1414
+ on(type: "playback", handler: (event: BoardPlaybackChangedEvent) => void): () => void;
1415
+ }
1416
+ declare class SpaceBoardsApi {
1259
1417
  private readonly transport;
1260
1418
  private readonly spaceId;
1261
- constructor(transport: HttpTransport, spaceId: string);
1262
- create(input: CanvasCreateInput): Promise<CanvasBootstrapResponse>;
1263
- getByPath(path: string, customFetch?: Fetch): Promise<{
1264
- document: CanvasDocumentRecord;
1265
- }>;
1266
- bootstrap(documentId: string, customFetch?: Fetch): Promise<CanvasBootstrapResponse>;
1267
- sendTransaction(documentId: string, input: CanvasTransactionInput): Promise<CanvasBootstrapResponse>;
1419
+ private readonly websocketClient;
1420
+ constructor(transport: HttpTransport, spaceId: string, websocketClient: WebsocketClient | null);
1421
+ byId(boardId: string): BoardClient;
1422
+ create(input: BoardCreateInput): Promise<BoardBootstrap>;
1423
+ inspect(boardId: string, input?: BoardInspectInput, customFetch?: Fetch): Promise<BoardBootstrap>;
1424
+ capabilities(boardId: string, customFetch?: Fetch): Promise<BoardCapabilities>;
1425
+ validate(transaction: BoardTransaction): Promise<BoardValidationResult>;
1426
+ apply(transaction: BoardTransaction): Promise<BoardBootstrap>;
1427
+ playback(boardId: string, command: BoardPlaybackCommand): Promise<BoardPlaybackSnapshot>;
1428
+ play(boardId: string, command: Omit<Extract<BoardPlaybackCommand, {
1429
+ type: "play";
1430
+ }>, "shared"> & {
1431
+ shared?: true;
1432
+ }): Promise<BoardPlaybackSnapshot>;
1433
+ pause(boardId: string, command: Extract<BoardPlaybackCommand, {
1434
+ type: "pause";
1435
+ }>): Promise<BoardPlaybackSnapshot>;
1436
+ seek(boardId: string, command: Extract<BoardPlaybackCommand, {
1437
+ type: "seek";
1438
+ }>): Promise<BoardPlaybackSnapshot>;
1439
+ stop(boardId: string, command: Extract<BoardPlaybackCommand, {
1440
+ type: "stop";
1441
+ }>): Promise<BoardPlaybackSnapshot>;
1268
1442
  }
1269
1443
  declare class SpaceCheckpointFilesApi {
1270
1444
  private readonly transport;
@@ -1335,10 +1509,11 @@ declare class SpaceClient {
1335
1509
  readonly sandbox: SpaceSandboxApi;
1336
1510
  readonly invitations: SpaceInvitationsApi;
1337
1511
  readonly labels: SpaceLabelsApi;
1338
- readonly canvas: SpaceCanvasApi;
1512
+ readonly boards: SpaceBoardsApi;
1339
1513
  readonly commerce: SpaceCommerceApi;
1340
1514
  constructor(id: string, transport: HttpTransport, websocketClient: WebsocketClient | null);
1341
1515
  get(customFetch?: Fetch): Promise<SpaceRecord>;
1516
+ getStartup(customFetch?: Fetch): Promise<SpaceStartupResponse>;
1342
1517
  prompt(input: CreateSpacePromptInput): Promise<CreateSpacePromptResponse>;
1343
1518
  /**
1344
1519
  * Raw LLM completion. Caller fully controls messages and optional system prompt file.
@@ -1360,11 +1535,6 @@ declare class SpaceClient {
1360
1535
  rename(name: string): Promise<{
1361
1536
  space: SpaceRecord;
1362
1537
  }>;
1363
- sendCanvasTransactionRealtime(documentId: string, input: CanvasTransactionInput): Promise<{
1364
- document: {
1365
- version: number;
1366
- };
1367
- }>;
1368
1538
  profile(body: {
1369
1539
  description?: string | null;
1370
1540
  avatarUrl?: string | null;
@@ -1377,6 +1547,7 @@ declare class SpaceClient {
1377
1547
  getConfig(): Promise<SpaceConfigResponse>;
1378
1548
  updateConfig(input: SpaceConfigInput): Promise<SpaceConfigUpdateResponse>;
1379
1549
  session(sessionId: string): SessionClient;
1550
+ board(boardId: string): BoardClient;
1380
1551
  updatePresence(meta?: Record<string, unknown> | null): Promise<void>;
1381
1552
  subscribe(handler: (event: WebsocketEventPayload) => void): () => void;
1382
1553
  on(type: SpaceEventName, handler: (event: WebsocketEventPayload) => void): () => void;
@@ -1410,6 +1581,7 @@ declare class UserApi {
1410
1581
  private readonly transportBaseUrl;
1411
1582
  private readonly setStoredAuthToken?;
1412
1583
  private readonly clearStoredAuthToken?;
1584
+ readonly labels: UserLabelsApi;
1413
1585
  constructor(transport: HttpTransport, transportBaseUrl: string, setStoredAuthToken?: ((token: string) => void) | undefined, clearStoredAuthToken?: (() => void) | undefined);
1414
1586
  getMe(options?: Fetch | {
1415
1587
  fetch?: Fetch;
@@ -1435,6 +1607,20 @@ declare class UserApi {
1435
1607
  setAuthToken(token: string): Promise<any>;
1436
1608
  clearAuthToken(): Promise<null>;
1437
1609
  }
1610
+ /** User-scoped labels — same label/assignment model as space labels, but private to the viewer. */
1611
+ declare class UserLabelsApi {
1612
+ private readonly transport;
1613
+ constructor(transport: HttpTransport);
1614
+ getResourceLabels(resourceType: LabelResourceType, resourceRef: string): Promise<{
1615
+ assignments: LabelAssignmentRecord[];
1616
+ }>;
1617
+ patchResourceLabels(resourceType: LabelResourceType, resourceRef: string, input: {
1618
+ addLabelRefs?: string[];
1619
+ removeLabelRefs?: string[];
1620
+ }): Promise<{
1621
+ assignments: LabelAssignmentRecord[];
1622
+ }>;
1623
+ }
1438
1624
  //#endregion
1439
1625
  //#region src/apis/users.d.ts
1440
1626
  declare class UsersApi {
@@ -1724,4 +1910,4 @@ declare class CohubHttpClient {
1724
1910
  }
1725
1911
  declare const createHttpClient: (options?: CohubClientOptions) => CohubHttpClient;
1726
1912
  //#endregion
1727
- export { GenerationStreamSubscriptionHandlers as $, PublicGenerationDeclaration as $t, ReferralsApi as A, HttpError as At, SpacesApi as B, WorkRuntimeCheckoutStatus as Bt, WorkSessionResponse as C, PromptsApi as Ct, WorkVersionRecord as D, ChannelsApi as Dt, WorkUpdateInput as E, CronJobsApi as Et, SessionEventName as F, ParentBridgeTransport as Ft, GenerationStreamErrorEvent as G, createSlugWorkIdResolver as Gt, PublicInviteApi as H, WorkRuntimeModeConfig as Ht, SessionSubscriptionHandlers as I, PopupBrokerTransport as It, GenerationStreamIntermediateMessage as J, CreateGenerationTaskRequest as Jt, GenerationStreamEvent as K, createWorkRuntime as Kt, SpaceChannelBindingRecord as L, WorkIdResolver as Lt, UserApi as M, RawHttpResponse as Mt, TasksApi as N, joinApiUrl as Nt, WorkVisibility as O, CohubClientOptions as Ot, CanvasTransactionError as P, sanitizeAccessToken as Pt, GenerationStreamSubscribeOptions as Q, ListGenerationModelsResponse as Qt, SpaceClient as R, WorkRuntimeApi as Rt, WorkResolveResponse as S, SkillsApi as St, WorkTargetType as T, GenerationsApi as Tt, AssistantMessageCommit as U, WorkRuntimeRequestOptions as Ut, WebSocketConnectionState as V, WorkRuntimeContext as Vt, GenerationStreamCommitEvent as W, WorkRuntimeTransport as Wt, GenerationStreamOutOfSyncEvent as X, GenerationTaskResult as Xt, GenerationStreamLifecycleEvent as Y, CreateGenerationTaskResponse as Yt, GenerationStreamStateEvent as Z, GenerationUsageBilling as Zt, WorkMeta as _, PublicAssetPurpose as _t, WorkCommerceCreditConsumeResponse as a, hasRequestSourceIdentity as an, SessionPatchApplyResult as at, WorkPublicSpaceRecord as b, UploadChatImageAttachmentInput as bt, WorkCommerceEntitlementsResponse as c, mergeRequestSourceIntoMeta as cn, SessionPatchStatus as ct, WorkCommercePurchaseResponse as d, readRequestSourceFromEnv as dn, ReferenceResourceSelector as dt, COHUB_SOURCE_HEADER as en, GenerationStreamTurnUpdatedEvent as et, WorkAuthorizeResponse as f, requestSourceToHeaders as fn, ReferencesApi as ft, WorkGetResponse as g, PublicAssetMimeType as gt, WorkExtractedPageMeta as h, CreatePublicAssetUploadResponse as ht, WorkCommerceCheckoutStatus as i, RequestSourceVia as in, SessionPatchApplyInput as it, UsersApi as j, HttpTransport as jt, WorksApi as k, Fetch as kt, WorkCommerceOrder as l, normalizeRequestSource as ln, createSessionPatchReducer as lt, WorkDetailResponse as m, CreatePublicAssetUploadInput as mt, createHttpClient as n, REQUEST_SOURCE_VIA_MAX_LENGTH as nn, createSessionGenerationStreamClient as nt, WorkCommerceCreditConsumeStatus as o, isRequestSourceEmpty as on, SessionPatchReducer as ot, WorkCreateInput as p, resolveRequestSourceChannel as pn, SearchApi as pt, GenerationStreamFinalizedEvent as q, resolveWorkTransport as qt, WorkCommerceApi as r, RequestSource as rn, parseAssistantMessageCommit as rt, WorkCommerceEntitlement as s, isRequestSourceUuid as sn, SessionPatchState as st, CohubHttpClient as t, COHUB_SOURCE_HEADER_NAMES as tn, SessionGenerationStreamClient as tt, WorkCommerceProductResolveResponse as u, parseRequestSourceFromHeaders as un, SessionAccessApi as ut, WorkPresentationMeta as v, PublicAssetsApi as vt, WorkStatus as w, ModelsApi as wt, WorkRecord as x, UploadPublicAssetInput as xt, WorkPublicOwnerRecord as y, UploadChatAttachmentInput as yt, SpaceEventName as z, WorkRuntimeCheckoutState as zt };
1913
+ export { GenerationStreamFinalizedEvent as $, resolveWorkTransport as $t, ReferralsApi as A, ModelsApi as At, BoardTransactionInput as B, sanitizeAccessToken as Bt, WorkSessionResponse as C, PublicAssetPurpose as Ct, WorkVersionRecord as D, UploadPublicAssetInput as Dt, WorkUpdateInput as E, UploadChatImageAttachmentInput as Et, BoardEventName as F, Fetch as Ft, SpaceEventName as G, WorkRuntimeCheckoutState as Gt, SessionSubscriptionHandlers as H, PopupBrokerTransport as Ht, BoardPlaybackChangedEvent as I, HttpError as It, PublicInviteApi as J, WorkRuntimeModeConfig as Jt, SpacesApi as K, WorkRuntimeCheckoutStatus as Kt, BoardSubscriptionHandlers as L, HttpTransport as Lt, UserApi as M, CronJobsApi as Mt, TasksApi as N, ChannelsApi as Nt, WorkVisibility as O, SkillsApi as Ot, BoardClient as P, CohubClientOptions as Pt, GenerationStreamEvent as Q, createWorkRuntime as Qt, BoardTransactionAppliedEvent as R, RawHttpResponse as Rt, WorkResolveResponse as S, ModelStatusResponse as Sn, PublicAssetMimeType as St, WorkTargetType as T, UploadChatAttachmentInput as Tt, SpaceChannelBindingRecord as U, WorkIdResolver as Ut, SessionEventName as V, ParentBridgeTransport as Vt, SpaceClient as W, WorkRuntimeApi as Wt, GenerationStreamCommitEvent as X, WorkRuntimeTransport as Xt, AssistantMessageCommit as Y, WorkRuntimeRequestOptions as Yt, GenerationStreamErrorEvent as Z, createSlugWorkIdResolver as Zt, WorkMeta as _, GenerationTaskResult as _n, ReferenceResourceSelector as _t, WorkCommerceCreditConsumeResponse as a, hasRequestSourceIdentity as an, GenerationStreamSubscriptionHandlers as at, WorkPublicSpaceRecord as b, PublicGenerationDeclaration as bn, CreatePublicAssetUploadInput as bt, WorkCommerceEntitlementsResponse as c, mergeRequestSourceIntoMeta as cn, createSessionGenerationStreamClient as ct, WorkCommercePurchaseResponse as d, readRequestSourceFromEnv as dn, SessionPatchApplyResult as dt, COHUB_SOURCE_HEADER as en, GenerationStreamIntermediateMessage as et, WorkAuthorizeResponse as f, requestSourceToHeaders as fn, SessionPatchReducer as ft, WorkGetResponse as g, CreateGenerationTaskResponse as gn, SessionAccessApi as gt, WorkExtractedPageMeta as h, CreateGenerationTaskRequest as hn, createSessionPatchReducer as ht, WorkCommerceCheckoutStatus as i, RequestSourceVia as in, GenerationStreamSubscribeOptions as it, UsersApi as j, GenerationsApi as jt, WorksApi as k, PromptsApi as kt, WorkCommerceOrder as l, normalizeRequestSource as ln, parseAssistantMessageCommit as lt, WorkDetailResponse as m, SpaceStartupResponse as mn, SessionPatchStatus as mt, createHttpClient as n, REQUEST_SOURCE_VIA_MAX_LENGTH as nn, GenerationStreamOutOfSyncEvent as nt, WorkCommerceCreditConsumeStatus as o, isRequestSourceEmpty as on, GenerationStreamTurnUpdatedEvent as ot, WorkCreateInput as p, resolveRequestSourceChannel as pn, SessionPatchState as pt, WebSocketConnectionState as q, WorkRuntimeContext as qt, WorkCommerceApi as r, RequestSource as rn, GenerationStreamStateEvent as rt, WorkCommerceEntitlement as s, isRequestSourceUuid as sn, SessionGenerationStreamClient as st, CohubHttpClient as t, COHUB_SOURCE_HEADER_NAMES as tn, GenerationStreamLifecycleEvent as tt, WorkCommerceProductResolveResponse as u, parseRequestSourceFromHeaders as un, SessionPatchApplyInput as ut, WorkPresentationMeta as v, GenerationUsageBilling as vn, ReferencesApi as vt, WorkStatus as w, PublicAssetsApi as wt, WorkRecord as x, ModelStatusEntry as xn, CreatePublicAssetUploadResponse as xt, WorkPublicOwnerRecord as y, ListGenerationModelsResponse as yn, SearchApi as yt, BoardTransactionError as z, joinApiUrl as zt };