@q9labsai/chalk-client 5.0.1 → 5.2.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 (236) hide show
  1. package/CHANGELOG.md +159 -0
  2. package/README.md +39 -0
  3. package/dist/access/base64-url.d.ts +0 -1
  4. package/dist/access/grant.d.ts +0 -1
  5. package/dist/access/manager.d.ts +0 -1
  6. package/dist/chat-files/http-transport.d.ts +0 -1
  7. package/dist/chat-files/index.d.ts +0 -1
  8. package/dist/chat-files/types.d.ts +3 -1
  9. package/dist/{chunk-IPAN4LUZ.js → chunk-BCO3AZUB.js} +1463 -583
  10. package/dist/{chunk-AVXJ4HQU.js → chunk-D2GXPX2P.js} +298 -47
  11. package/dist/{chunk-CMVO7USN.js → chunk-DHGAKJXP.js} +1 -1
  12. package/dist/{chunk-O2NOZKJP.js → chunk-DWKTGBHR.js} +20 -8
  13. package/dist/{chunk-2HJIJVE2.js → chunk-HO4745TX.js} +591 -5
  14. package/dist/client.d.ts +277 -1
  15. package/dist/collaboration/index.d.ts +0 -1
  16. package/dist/collaboration/types.d.ts +0 -1
  17. package/dist/collaboration/wire.d.ts +0 -1
  18. package/dist/connection/dependencies.d.ts +8 -3
  19. package/dist/connection/diagnostics.d.ts +3 -3
  20. package/dist/connection/index.d.ts +1 -1
  21. package/dist/connection/lifecycle.d.ts +3 -3
  22. package/dist/connection/media-devices.d.ts +0 -1
  23. package/dist/connection/production.d.ts +0 -1
  24. package/dist/connection/types.d.ts +4 -2
  25. package/dist/effect.d.ts +0 -1
  26. package/dist/effect.js +146 -4
  27. package/dist/foreground-deadline.d.ts +0 -1
  28. package/dist/generated/http-api.d.ts +273 -1
  29. package/dist/generated/schemas.d.ts +732 -7
  30. package/dist/generated/sync.d.ts +74 -4
  31. package/dist/generated/whiteboard-v1.d.ts +114 -9
  32. package/dist/index.d.ts +1 -1
  33. package/dist/index.js +21 -15
  34. package/dist/media/camera-uplink.d.ts +0 -1
  35. package/dist/media/capture-error.d.ts +0 -1
  36. package/dist/media/client.d.ts +3 -2
  37. package/dist/media/cloudflare-sfu.d.ts +0 -1
  38. package/dist/media/index.d.ts +0 -1
  39. package/dist/media/index.js +1 -1
  40. package/dist/media/observers.d.ts +0 -1
  41. package/dist/media/plane.d.ts +0 -1
  42. package/dist/media/remote-track-response.d.ts +0 -1
  43. package/dist/media/target.d.ts +0 -1
  44. package/dist/media/tracks.d.ts +0 -1
  45. package/dist/media/transport.d.ts +0 -1
  46. package/dist/media/types.d.ts +0 -1
  47. package/dist/public-invites/client.d.ts +0 -1
  48. package/dist/public-invites/index.d.ts +0 -1
  49. package/dist/public-invites/index.js +2 -2
  50. package/dist/public-invites/types.d.ts +0 -1
  51. package/dist/server/access-refresh.d.ts +0 -1
  52. package/dist/server/{chunk-C4XITY5U.js → chunk-XQOQTCUL.js} +22 -0
  53. package/dist/server/client.d.ts +0 -1
  54. package/dist/server/errors.d.cts +8 -1
  55. package/dist/server/errors.d.ts +8 -2
  56. package/dist/server/index.cjs +31 -7
  57. package/dist/server/index.d.cts +1 -1
  58. package/dist/server/index.d.ts +1 -2
  59. package/dist/server/index.js +10 -7
  60. package/dist/server/server-only.d.ts +0 -1
  61. package/dist/server/server-only.js +1 -1
  62. package/dist/server/transport.d.ts +0 -1
  63. package/dist/server/types.d.ts +0 -1
  64. package/dist/space-client/chat-controller-helpers.d.ts +0 -1
  65. package/dist/space-client/chat-controller.d.ts +0 -1
  66. package/dist/space-client/controller-effects.d.ts +0 -1
  67. package/dist/space-client/core.d.ts +0 -1
  68. package/dist/space-client/effect.d.ts +0 -1
  69. package/dist/space-client/errors.d.ts +4 -2
  70. package/dist/space-client/index.d.ts +1 -2
  71. package/dist/space-client/media-controller.d.ts +3 -2
  72. package/dist/space-client/media-device-selection.d.ts +0 -1
  73. package/dist/space-client/offline-actions-storage.d.ts +0 -1
  74. package/dist/space-client/offline-actions.d.ts +0 -1
  75. package/dist/space-client/participants-controller.d.ts +0 -1
  76. package/dist/space-client/promise-facade.d.ts +0 -1
  77. package/dist/space-client/reactions-controller.d.ts +0 -1
  78. package/dist/space-client/recording-controller.d.ts +0 -1
  79. package/dist/space-client/reload-rejoin.d.ts +1 -2
  80. package/dist/space-client/space-client.d.ts +0 -1
  81. package/dist/space-client/store.d.ts +0 -1
  82. package/dist/space-client/types.d.ts +15 -3
  83. package/dist/space-client/whiteboard-controller.d.ts +0 -1
  84. package/dist/sync/browser.d.ts +0 -1
  85. package/dist/sync/canonical.d.ts +0 -1
  86. package/dist/sync/connect-diagnostics.d.ts +10 -0
  87. package/dist/sync/dial-deadline.d.ts +3 -0
  88. package/dist/sync/errors.d.ts +0 -1
  89. package/dist/sync/index.d.ts +0 -1
  90. package/dist/sync/index.js +1 -1
  91. package/dist/sync/react-native.d.ts +0 -1
  92. package/dist/sync/types.d.ts +1 -1
  93. package/dist/sync/v1-client.d.ts +4 -2
  94. package/dist/sync/v1-codec.d.ts +0 -1
  95. package/dist/sync/v1-collaboration-state.d.ts +1 -1
  96. package/dist/sync/v1-command-scheduler.d.ts +0 -1
  97. package/dist/sync/v1-create.d.ts +0 -1
  98. package/dist/sync/v1-deferred.d.ts +0 -1
  99. package/dist/sync/v1-error.d.ts +0 -1
  100. package/dist/sync/v1-frame-signature.d.ts +0 -1
  101. package/dist/sync/v1-health.d.ts +15 -0
  102. package/dist/sync/v1-live-target-coordinator.d.ts +0 -1
  103. package/dist/sync/v1-persistence.d.ts +0 -1
  104. package/dist/sync/v1-platform-persistence.d.ts +0 -1
  105. package/dist/sync/v1-reducer.d.ts +3 -1
  106. package/dist/sync/v1-types.d.ts +14 -1
  107. package/dist/webhooks/errors.d.ts +0 -1
  108. package/dist/webhooks/generated/event-v1.d.ts +0 -1
  109. package/dist/webhooks/generated/fixtures-v1.d.ts +0 -1
  110. package/dist/webhooks/index.d.ts +0 -1
  111. package/dist/webhooks/processor.d.ts +0 -1
  112. package/dist/webhooks/server-only.d.ts +0 -1
  113. package/dist/webhooks/test.d.ts +0 -1
  114. package/dist/webhooks/types.d.ts +0 -1
  115. package/dist/webhooks/validate.d.ts +0 -1
  116. package/dist/webhooks/verify.d.ts +0 -1
  117. package/dist/whiteboard/file-download-transport.d.ts +0 -1
  118. package/dist/whiteboard/index.d.ts +2 -1
  119. package/dist/whiteboard/types.d.ts +54 -5
  120. package/dist/whiteboard/v1-client.d.ts +5 -2
  121. package/dist/whiteboard/v1-codec.d.ts +5 -2
  122. package/dist/whiteboard/v1-create.d.ts +0 -1
  123. package/dist/whiteboard/v1-multipart.d.ts +1 -2
  124. package/dist/whiteboard/v1-persistence.d.ts +0 -1
  125. package/dist/whiteboard/view-bounds.d.ts +5 -0
  126. package/dist/whiteboard/view-versions.d.ts +9 -0
  127. package/package.json +4 -2
  128. package/dist/access/base64-url.d.ts.map +0 -1
  129. package/dist/access/grant.d.ts.map +0 -1
  130. package/dist/access/grant.test.helpers.d.ts +0 -10
  131. package/dist/access/grant.test.helpers.d.ts.map +0 -1
  132. package/dist/access/manager.d.ts.map +0 -1
  133. package/dist/chat-files/http-transport.d.ts.map +0 -1
  134. package/dist/chat-files/index.d.ts.map +0 -1
  135. package/dist/chat-files/types.d.ts.map +0 -1
  136. package/dist/client.d.ts.map +0 -1
  137. package/dist/collaboration/index.d.ts.map +0 -1
  138. package/dist/collaboration/types.d.ts.map +0 -1
  139. package/dist/collaboration/wire.d.ts.map +0 -1
  140. package/dist/connection/dependencies.d.ts.map +0 -1
  141. package/dist/connection/diagnostics.d.ts.map +0 -1
  142. package/dist/connection/index.d.ts.map +0 -1
  143. package/dist/connection/lifecycle.d.ts.map +0 -1
  144. package/dist/connection/media-devices.d.ts.map +0 -1
  145. package/dist/connection/production.d.ts.map +0 -1
  146. package/dist/connection/types.d.ts.map +0 -1
  147. package/dist/effect.d.ts.map +0 -1
  148. package/dist/foreground-deadline.d.ts.map +0 -1
  149. package/dist/generated/http-api.d.ts.map +0 -1
  150. package/dist/generated/schemas.d.ts.map +0 -1
  151. package/dist/generated/sync.d.ts.map +0 -1
  152. package/dist/generated/whiteboard-v1.d.ts.map +0 -1
  153. package/dist/index.d.ts.map +0 -1
  154. package/dist/media/camera-uplink.d.ts.map +0 -1
  155. package/dist/media/capture-error.d.ts.map +0 -1
  156. package/dist/media/client.d.ts.map +0 -1
  157. package/dist/media/cloudflare-sfu.d.ts.map +0 -1
  158. package/dist/media/index.d.ts.map +0 -1
  159. package/dist/media/observers.d.ts.map +0 -1
  160. package/dist/media/plane.d.ts.map +0 -1
  161. package/dist/media/remote-track-response.d.ts.map +0 -1
  162. package/dist/media/target.d.ts.map +0 -1
  163. package/dist/media/tracks.d.ts.map +0 -1
  164. package/dist/media/transport.d.ts.map +0 -1
  165. package/dist/media/types.d.ts.map +0 -1
  166. package/dist/public-invites/client.d.ts.map +0 -1
  167. package/dist/public-invites/index.d.ts.map +0 -1
  168. package/dist/public-invites/types.d.ts.map +0 -1
  169. package/dist/server/access-refresh.d.ts.map +0 -1
  170. package/dist/server/client.d.ts.map +0 -1
  171. package/dist/server/errors.d.ts.map +0 -1
  172. package/dist/server/index.d.ts.map +0 -1
  173. package/dist/server/server-only.d.ts.map +0 -1
  174. package/dist/server/transport.d.ts.map +0 -1
  175. package/dist/server/types.d.ts.map +0 -1
  176. package/dist/space-client/chat-controller-helpers.d.ts.map +0 -1
  177. package/dist/space-client/chat-controller.d.ts.map +0 -1
  178. package/dist/space-client/controller-effects.d.ts.map +0 -1
  179. package/dist/space-client/core.d.ts.map +0 -1
  180. package/dist/space-client/core.test.helpers.d.ts +0 -15
  181. package/dist/space-client/core.test.helpers.d.ts.map +0 -1
  182. package/dist/space-client/effect.d.ts.map +0 -1
  183. package/dist/space-client/errors.d.ts.map +0 -1
  184. package/dist/space-client/index.d.ts.map +0 -1
  185. package/dist/space-client/media-controller.d.ts.map +0 -1
  186. package/dist/space-client/media-device-selection.d.ts.map +0 -1
  187. package/dist/space-client/offline-actions-storage.d.ts.map +0 -1
  188. package/dist/space-client/offline-actions.d.ts.map +0 -1
  189. package/dist/space-client/participants-controller.d.ts.map +0 -1
  190. package/dist/space-client/promise-facade.d.ts.map +0 -1
  191. package/dist/space-client/reactions-controller.d.ts.map +0 -1
  192. package/dist/space-client/recording-controller.d.ts.map +0 -1
  193. package/dist/space-client/reload-rejoin.d.ts.map +0 -1
  194. package/dist/space-client/space-client.d.ts.map +0 -1
  195. package/dist/space-client/store.d.ts.map +0 -1
  196. package/dist/space-client/terminal.test.helpers.d.ts +0 -136
  197. package/dist/space-client/terminal.test.helpers.d.ts.map +0 -1
  198. package/dist/space-client/types.d.ts.map +0 -1
  199. package/dist/space-client/whiteboard-controller.d.ts.map +0 -1
  200. package/dist/sync/browser.d.ts.map +0 -1
  201. package/dist/sync/canonical.d.ts.map +0 -1
  202. package/dist/sync/errors.d.ts.map +0 -1
  203. package/dist/sync/index.d.ts.map +0 -1
  204. package/dist/sync/react-native.d.ts.map +0 -1
  205. package/dist/sync/types.d.ts.map +0 -1
  206. package/dist/sync/v1-client.d.ts.map +0 -1
  207. package/dist/sync/v1-codec.d.ts.map +0 -1
  208. package/dist/sync/v1-collaboration-state.d.ts.map +0 -1
  209. package/dist/sync/v1-command-scheduler.d.ts.map +0 -1
  210. package/dist/sync/v1-create.d.ts.map +0 -1
  211. package/dist/sync/v1-deferred.d.ts.map +0 -1
  212. package/dist/sync/v1-error.d.ts.map +0 -1
  213. package/dist/sync/v1-frame-signature.d.ts.map +0 -1
  214. package/dist/sync/v1-live-target-coordinator.d.ts.map +0 -1
  215. package/dist/sync/v1-persistence.d.ts.map +0 -1
  216. package/dist/sync/v1-platform-persistence.d.ts.map +0 -1
  217. package/dist/sync/v1-reducer.d.ts.map +0 -1
  218. package/dist/sync/v1-types.d.ts.map +0 -1
  219. package/dist/webhooks/errors.d.ts.map +0 -1
  220. package/dist/webhooks/generated/event-v1.d.ts.map +0 -1
  221. package/dist/webhooks/generated/fixtures-v1.d.ts.map +0 -1
  222. package/dist/webhooks/index.d.ts.map +0 -1
  223. package/dist/webhooks/processor.d.ts.map +0 -1
  224. package/dist/webhooks/server-only.d.ts.map +0 -1
  225. package/dist/webhooks/test.d.ts.map +0 -1
  226. package/dist/webhooks/types.d.ts.map +0 -1
  227. package/dist/webhooks/validate.d.ts.map +0 -1
  228. package/dist/webhooks/verify.d.ts.map +0 -1
  229. package/dist/whiteboard/file-download-transport.d.ts.map +0 -1
  230. package/dist/whiteboard/index.d.ts.map +0 -1
  231. package/dist/whiteboard/types.d.ts.map +0 -1
  232. package/dist/whiteboard/v1-client.d.ts.map +0 -1
  233. package/dist/whiteboard/v1-codec.d.ts.map +0 -1
  234. package/dist/whiteboard/v1-create.d.ts.map +0 -1
  235. package/dist/whiteboard/v1-multipart.d.ts.map +0 -1
  236. package/dist/whiteboard/v1-persistence.d.ts.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import type { MediaSource, ScreenShareCapture } from "../media/plane";
2
2
  import type { ChalkChatAttachment, ChalkChatMessage, ChalkChatReadReceipt, ChalkIncomingMediaRequest, ChalkParticipantMediaState, ChalkReaction, ChalkReactionEvent } from "../collaboration/types";
3
- import type { ChalkWhiteboardV1Failure } from "../whiteboard/types";
3
+ import type { ChalkWhiteboardDrawPermission, ChalkWhiteboardDrawPolicy, ChalkWhiteboardV1Failure } from "../whiteboard/types";
4
4
  import type { AccessGrant } from "../access/grant";
5
5
  import type { V1Capability } from "../sync/v1-types";
6
6
  import type { ChatControllerEffects } from "./chat-controller";
@@ -47,11 +47,12 @@ export type JoinOptions = {
47
47
  };
48
48
  export type ConnectionStatus = "idle" | "joining" | "live" | "reconnecting" | "leaving" | "left" | "failed";
49
49
  export type Capability = V1Capability;
50
- export type ErrorCode = "access.invalid" | "access.unavailable" | "chat.cursor_reset_required" | "chat.payload_invalid" | "client.internal_error" | "collaboration.unavailable" | "command.rate_limited" | "command.rejected" | "connection.invalid_state" | "connection.join_cleanup_unconfirmed" | "connection.leave_unconfirmed" | "connection.media_recovery_exhausted" | "connection.media_start_failed" | "connection.sync_recovery_exhausted" | "connection.sync_start_failed" | "environment.unsupported" | "episode.ended" | "media.permission_denied" | "media.device_not_found" | "media.device_busy" | "media.device_constraint_invalid" | "media.capture_failed" | "media.request_invalid" | "media.timeout" | "offline.discarded" | "participant.invalid" | "reaction.invalid" | "whiteboard.unavailable";
50
+ export type ErrorCode = "access.invalid" | "access.unavailable" | "chat.cursor_reset_required" | "chat.payload_invalid" | "client.internal_error" | "collaboration.unavailable" | "command.rate_limited" | "command.rejected" | "connection.invalid_state" | "connection.join_cleanup_unconfirmed" | "connection.leave_unconfirmed" | "connection.media_recovery_exhausted" | "connection.media_start_failed" | "connection.state_digest_recovery_failed" | "connection.sync_recovery_exhausted" | "connection.sync_start_failed" | "connection.sync_hello_timeout" | "environment.unsupported" | "episode.ended" | "media.permission_denied" | "media.device_not_found" | "media.device_busy" | "media.device_constraint_invalid" | "media.capture_failed" | "media.request_invalid" | "media.timeout" | "offline.discarded" | "participant.invalid" | "reaction.invalid" | "whiteboard.unavailable";
51
51
  export type ClientFailure = {
52
52
  readonly code: ErrorCode;
53
53
  readonly recoverable: boolean;
54
54
  readonly message: string;
55
+ readonly sync?: import("../sync/connect-diagnostics").SyncConnectDiagnostic;
55
56
  };
56
57
  export type EpisodeSummary = {
57
58
  readonly id: string;
@@ -60,6 +61,8 @@ export type EpisodeSummary = {
60
61
  };
61
62
  export type ConnectionSlice = {
62
63
  readonly status: ConnectionStatus;
64
+ /** Pong health; degradation keeps the public status live and controls usable. */
65
+ readonly syncHealth?: import("../sync/v1-health").SyncHealth;
63
66
  readonly episode: EpisodeSummary | null;
64
67
  readonly lastError: ClientFailure | null;
65
68
  /** The Episode ended while this person was in it. */
@@ -201,6 +204,12 @@ export type WhiteboardSlice = {
201
204
  readonly presenting: boolean;
202
205
  readonly error: ChalkWhiteboardV1Failure | null;
203
206
  };
207
+ /** Who can draw, as Sync last told this person. `canDraw` is false until the board subscription is live. */
208
+ readonly access: {
209
+ readonly canDraw: boolean;
210
+ readonly policy: ChalkWhiteboardDrawPolicy | null;
211
+ readonly permissions: readonly ChalkWhiteboardDrawPermission[];
212
+ };
204
213
  };
205
214
  export type SpaceSnapshot = {
206
215
  readonly connection: ConnectionSlice;
@@ -228,6 +237,10 @@ export type ChatUploadFile = {
228
237
  readonly mimeType: string;
229
238
  readonly bytes: ArrayBuffer;
230
239
  };
240
+ export type CameraPreview = {
241
+ readonly track: MediaStreamTrack;
242
+ readonly release: () => void;
243
+ };
231
244
  export type MediaController = PromiseController<Omit<MediaControllerEffects, "configure" | "dispose">>;
232
245
  export type ChatFilesController = PromiseController<Pick<ChatControllerEffects, "upload" | "url" | "resolveUrl">>;
233
246
  export type ChatController = PromiseController<Omit<ChatControllerEffects, "upload" | "url" | "resolveUrl" | "dispose">> & {
@@ -277,4 +290,3 @@ export type SpaceClient = {
277
290
  readonly extendEpisode: (minutes: number) => Promise<void>;
278
291
  readonly on: <TEvent extends ClientEventName>(event: TEvent, handler: ClientEventHandler<TEvent>) => () => void;
279
292
  };
280
- //# sourceMappingURL=types.d.ts.map
@@ -14,4 +14,3 @@ export declare class WhiteboardControllerService extends WhiteboardControllerSer
14
14
  export declare const makeWhiteboardController: (connection: ConnectionLifecycleCapability, store: SpaceStore, create?: (input: ConnectionWhiteboardFactoryInput) => ChalkWhiteboardV1Transport | null) => Effect.Effect<WhiteboardControllerEffects, never, import("effect").Scope.Scope>;
15
15
  export declare const makeWhiteboardControllerLayer: (connection: ConnectionLifecycleCapability, store: SpaceStore, create?: (input: ConnectionWhiteboardFactoryInput) => ChalkWhiteboardV1Transport | null) => Layer.Layer<WhiteboardControllerService, never, never>;
16
16
  export {};
17
- //# sourceMappingURL=whiteboard-controller.d.ts.map
@@ -6,4 +6,3 @@ export type BrowserLifecycleEnvironment = {
6
6
  };
7
7
  export declare function createBrowserWebSocketFactory(WebSocketConstructor?: BrowserWebSocketConstructor): SyncWebSocketFactory;
8
8
  export declare function createBrowserSyncLifecycle(environment?: BrowserLifecycleEnvironment): SyncLifecycle;
9
- //# sourceMappingURL=browser.d.ts.map
@@ -4,4 +4,3 @@ export type CanonicalJson = null | boolean | number | string | readonly Canonica
4
4
  export declare function canonicalJson(value: CanonicalJson): string;
5
5
  export declare function canonicalJsonBytes(value: CanonicalJson): Uint8Array;
6
6
  export declare function canonicalJsonBytesFromUnknown(value: unknown): Uint8Array;
7
- //# sourceMappingURL=canonical.d.ts.map
@@ -0,0 +1,10 @@
1
+ /** Browsers expose only upgrade/open and hello, never DNS/TCP/TLS progress. */
2
+ export type SyncConnectDiagnostic = {
3
+ readonly stage: "upgrade" | "hello";
4
+ readonly opened: boolean;
5
+ readonly closeCode: number | null;
6
+ readonly closeReason: string | null;
7
+ readonly durationMs: number;
8
+ };
9
+ export declare function safeSyncCloseReason(reason: string | undefined): string | null;
10
+ export declare function formatSyncConnectDiagnostic(diagnostic: SyncConnectDiagnostic): string;
@@ -0,0 +1,3 @@
1
+ import type { SyncClock } from "./types";
2
+ export declare const SYNC_DIAL_TIMEOUT_MS = 10000;
3
+ export declare function scheduleSyncDialDeadline(clock: Pick<SyncClock, "setTimeout" | "clearTimeout">, onTimeout: () => void, timeoutMs?: number): () => void;
@@ -6,4 +6,3 @@ export declare class SyncReactNativeCapabilityError extends Error {
6
6
  readonly _tag = "SyncReactNativeCapabilityError";
7
7
  constructor(capability: "WebSocket");
8
8
  }
9
- //# sourceMappingURL=errors.d.ts.map
@@ -10,4 +10,3 @@ export { InMemoryV1PendingTargetStore } from "./v1-persistence";
10
10
  export { AsyncStorageV1PendingTargetStore, IndexedDbV1PendingTargetStore, type AsyncStorageV1PendingTargetStoreOptions, type IndexedDbV1PendingTargetStoreOptions } from "./v1-platform-persistence";
11
11
  export { applyV1Event, assertV1ControlSemantics, computeV1StateDigest, optimisticV1Control, restoreV1Snapshot, V1ReplicaError } from "./v1-reducer";
12
12
  export type { V1AdmissionPolicy, V1AdmissionTarget, V1AdmissionRequest, V1AssignableRole, V1Capability, V1ClientMediaPlane, V1CommandResult, V1ConnectionPhase, V1ControlState, V1DirectedRequest, V1DirectedRequestResult, V1LiveTargetResult, V1MediaPlaneOutcome, V1MediaPlaneResult, V1MediaPlaneTarget, V1MediaPublication, V1MediaSource, V1Participant, V1PendingTarget, V1PendingTargetStore, V1Presence, V1Projection, V1Recording, V1Role, V1SelfMediaTargetResult, V1EpisodeSnapshot, V1SyncClientOptions, V1TargetCommand, } from "./v1-types";
13
- //# sourceMappingURL=index.d.ts.map
@@ -22,7 +22,7 @@ import {
22
22
  encodeV1ClientFrame,
23
23
  optimisticV1Control,
24
24
  restoreV1Snapshot
25
- } from "../chunk-AVXJ4HQU.js";
25
+ } from "../chunk-D2GXPX2P.js";
26
26
  export {
27
27
  AsyncStorageV1PendingTargetStore,
28
28
  InMemoryV1PendingTargetStore,
@@ -39,4 +39,3 @@ export type ReactNativeLifecycleEnvironment = {
39
39
  readonly networkInfo?: ReactNativeNetworkInfo;
40
40
  };
41
41
  export declare function createReactNativeSyncLifecycle(environment: ReactNativeLifecycleEnvironment): SyncLifecycle;
42
- //# sourceMappingURL=react-native.d.ts.map
@@ -9,6 +9,7 @@ export type SyncSocket = {
9
9
  }) => void) | null;
10
10
  onclose: ((event: {
11
11
  readonly code: number;
12
+ readonly reason?: string;
12
13
  }) => void) | null;
13
14
  onerror: (() => void) | null;
14
15
  send(data: string): void;
@@ -25,4 +26,3 @@ export type SyncClock = {
25
26
  export type SyncIdGenerator = {
26
27
  readonly next: () => string;
27
28
  };
28
- //# sourceMappingURL=types.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import type { ChalkChatReactionInput, ChalkChatReactions, ChalkChatMessage, ChalkChatPageResult, ChalkChatReadReceipt, ChalkReaction, ChalkReactionEvent, ChalkSendChatMessageInput, ChalkSyncV1CollaborationCapability } from "../collaboration/types";
2
- import type { V1AdmissionTarget, V1AssignableRole, V1CommandResult, V1DirectedRequest, V1DirectedRequestResult, V1CollaborationEvent, V1CollaborationClient, V1CollaborationExtensionState, V1EpisodeSnapshot, V1SelfMediaTargetResult, V1SyncClientOptions } from "./v1-types";
2
+ import type { V1AdmissionTarget, V1AssignableRole, V1CommandResult, V1DirectedRequest, V1DirectedRequestResult, V1MediaPause, V1CollaborationEvent, V1CollaborationClient, V1CollaborationExtensionState, V1EpisodeSnapshot, V1SelfMediaTargetResult, V1SyncClientOptions } from "./v1-types";
3
3
  type CommandOptions = {
4
4
  readonly commandId?: string;
5
5
  };
@@ -13,8 +13,11 @@ export declare class V1SyncClient implements V1CollaborationClient {
13
13
  restartTransport(): void;
14
14
  start(): Promise<void>;
15
15
  stop(): void;
16
+ /** Announces completed startup; transport recovery resends until acknowledged. */
17
+ confirmEntered(): Promise<void>;
16
18
  getSnapshot(): V1EpisodeSnapshot;
17
19
  subscribe(listener: (snapshot: V1EpisodeSnapshot) => void): () => void;
20
+ onMediaPause(listener: (pause: V1MediaPause) => void): () => void;
18
21
  onDirectedRequest(listener: (request: V1DirectedRequest) => void): () => void;
19
22
  getCollaborationExtensionState(): V1CollaborationExtensionState;
20
23
  getParticipantCollaborationCapabilities(): Readonly<Record<string, readonly ChalkSyncV1CollaborationCapability[]>>;
@@ -54,4 +57,3 @@ export declare class V1SyncClient implements V1CollaborationClient {
54
57
  requestUnmute(participantId: string, options?: RequestOptions): Promise<V1DirectedRequestResult>;
55
58
  requestStartCamera(participantId: string, options?: RequestOptions): Promise<V1DirectedRequestResult>;
56
59
  }
57
- //# sourceMappingURL=v1-client.d.ts.map
@@ -2,4 +2,3 @@ import { type SyncV1ClientFrame, type SyncV1ServerFrame } from "../generated/syn
2
2
  export declare function encodeV1ClientFrame(frame: unknown): string;
3
3
  export declare function decodeV1ServerFrame(wire: string): SyncV1ServerFrame;
4
4
  export declare function decodeV1ClientFrame(value: unknown): SyncV1ClientFrame;
5
- //# sourceMappingURL=v1-codec.d.ts.map
@@ -9,6 +9,7 @@ export type V1CollaborationHelloExtension = {
9
9
  };
10
10
  };
11
11
  type V1CollaborationStateOptions = {
12
+ readonly clock: () => NonNullable<V1SyncClientOptions["clock"]>;
12
13
  readonly request: V1SyncClientOptions["collaboration"];
13
14
  readonly requestIds: V1SyncClientOptions["requestIds"];
14
15
  readonly maxPendingRequests: number | undefined;
@@ -69,4 +70,3 @@ export declare class V1CollaborationState {
69
70
  }>): void;
70
71
  }
71
72
  export {};
72
- //# sourceMappingURL=v1-collaboration-state.d.ts.map
@@ -51,4 +51,3 @@ export declare class V1CommandScheduler {
51
51
  enterLive(): void;
52
52
  }
53
53
  export {};
54
- //# sourceMappingURL=v1-command-scheduler.d.ts.map
@@ -9,4 +9,3 @@ export type CreateV1SyncClientOptions = Omit<V1SyncClientOptions, "lifecycle" |
9
9
  readonly indexedDb?: Omit<IndexedDbV1PendingTargetStoreOptions, "scope">;
10
10
  };
11
11
  export declare function createV1SyncClient(options: CreateV1SyncClientOptions): V1SyncClient;
12
- //# sourceMappingURL=v1-create.d.ts.map
@@ -5,4 +5,3 @@ export type V1Deferred<T> = {
5
5
  };
6
6
  export declare function resolveV1Deferred<T>(deferred: V1Deferred<T>, value: T): void;
7
7
  export declare function rejectV1Deferred<T>(deferred: V1Deferred<T>, error: Error): void;
8
- //# sourceMappingURL=v1-deferred.d.ts.map
@@ -2,4 +2,3 @@ export declare class V1SyncError extends Error {
2
2
  readonly code: string;
3
3
  constructor(message: string, code: string);
4
4
  }
5
- //# sourceMappingURL=v1-error.d.ts.map
@@ -1,2 +1 @@
1
1
  export declare function frameSignature(frame: unknown): string;
2
- //# sourceMappingURL=v1-frame-signature.d.ts.map
@@ -0,0 +1,15 @@
1
+ /** Presentation health, independent of transport reconnection and its 60-second watchdog. */
2
+ export type SyncHealth = "healthy" | "degraded" | "recovering";
3
+ export declare const SYNC_HEALTH_BUDGET: {
4
+ readonly probeIntervalMs: 500;
5
+ readonly degradedAfterMs: 750;
6
+ readonly recoveringAfterMs: 4000;
7
+ readonly stablePongsForMs: 2000;
8
+ };
9
+ export declare class V1SyncHealth {
10
+ #private;
11
+ health: SyncHealth;
12
+ constructor(now: number);
13
+ observePong(now: number): void;
14
+ check(now: number): void;
15
+ }
@@ -29,4 +29,3 @@ export declare class V1LiveTargetCoordinator {
29
29
  disconnect(code: string): void;
30
30
  }
31
31
  export {};
32
- //# sourceMappingURL=v1-live-target-coordinator.d.ts.map
@@ -7,4 +7,3 @@ export declare class InMemoryV1PendingTargetStore implements V1PendingTargetStor
7
7
  remove(commandId: string): Promise<void>;
8
8
  }
9
9
  export declare function compareV1PendingTargets(left: V1PendingTarget, right: V1PendingTarget): number;
10
- //# sourceMappingURL=v1-persistence.d.ts.map
@@ -23,4 +23,3 @@ export declare class AsyncStorageV1PendingTargetStore implements V1PendingTarget
23
23
  put(command: V1PendingTarget): Promise<void>;
24
24
  remove(commandId: string): Promise<void>;
25
25
  }
26
- //# sourceMappingURL=v1-platform-persistence.d.ts.map
@@ -7,6 +7,9 @@ type Snapshot = typeof SnapshotSchema.Type;
7
7
  export declare class V1ReplicaError extends Error {
8
8
  constructor(message: string);
9
9
  }
10
+ export declare class V1StateDigestMismatchError extends V1ReplicaError {
11
+ constructor();
12
+ }
10
13
  export declare function restoreV1Snapshot(snapshot: Snapshot): Promise<V1ControlState>;
11
14
  export declare function applyV1Event(state: V1ControlState, event: EventFrame): Promise<V1ControlState>;
12
15
  export declare function optimisticV1Control(state: V1ControlState, actorId: string, commands: readonly V1TargetCommand[]): V1ControlState;
@@ -14,4 +17,3 @@ export declare function snapshotToState(snapshot: Snapshot): V1ControlState;
14
17
  export declare function assertV1ControlSemantics(state: V1ControlState): void;
15
18
  export declare function computeV1StateDigest(state: V1ControlState): Promise<string>;
16
19
  export {};
17
- //# sourceMappingURL=v1-reducer.d.ts.map
@@ -72,6 +72,11 @@ export type V1EpisodeSnapshot = {
72
72
  readonly phase: V1ConnectionPhase;
73
73
  readonly terminalReason?: string;
74
74
  readonly noticeUnresponsive?: boolean;
75
+ readonly health?: import("./v1-health").SyncHealth;
76
+ /** Cumulative count retained across successful retries; contains no URL or credentials. */
77
+ readonly dialTimeoutCount?: number;
78
+ readonly connectAttempt?: import("./connect-diagnostics").SyncConnectDiagnostic;
79
+ readonly connectFailure?: import("./connect-diagnostics").SyncConnectDiagnostic;
75
80
  };
76
81
  readonly participantId: string | null;
77
82
  readonly participantGeneration: number | null;
@@ -189,6 +194,8 @@ export type V1SyncClientOptions = {
189
194
  readonly clock?: SyncClock;
190
195
  readonly lifecycle?: SyncLifecycle;
191
196
  readonly reconnectDelayMs?: number;
197
+ /** Per-attempt WebSocket opening allowance, clamped to 10–60 seconds; defaults to 10 seconds. */
198
+ readonly dialTimeoutMs?: number;
192
199
  readonly maxPendingCommands?: number;
193
200
  readonly maxPendingBytes?: number;
194
201
  readonly maxPendingAgeMs?: number;
@@ -196,6 +203,12 @@ export type V1SyncClientOptions = {
196
203
  readonly retryDelayMs?: number;
197
204
  readonly collaboration?: V1CollaborationExtensionRequest | false;
198
205
  readonly maxPendingCollaborationRequests?: number;
206
+ /** Asks Sync to hold the entry until `confirmEntered()`; set it only when the caller will call that method. */
207
+ readonly entryConfirmation?: boolean;
199
208
  };
200
209
  export type V1Socket = SyncSocket;
201
- //# sourceMappingURL=v1-types.d.ts.map
210
+ /** Explicit host pause; control revisions do not identify a self-media operation. */
211
+ export type V1MediaPause = {
212
+ readonly source: V1MediaSource;
213
+ readonly revision: number;
214
+ };
@@ -6,4 +6,3 @@ export declare class WebhookVerificationError extends Error {
6
6
  export declare class WebhookServerOnlyError extends Error {
7
7
  constructor();
8
8
  }
9
- //# sourceMappingURL=errors.d.ts.map
@@ -770,4 +770,3 @@ export type EndpointTestWebhookEvent = Extract<KnownWebhookEventV1, {
770
770
  readonly event: "endpoint.test";
771
771
  }>;
772
772
  export {};
773
- //# sourceMappingURL=event-v1.d.ts.map
@@ -44,4 +44,3 @@ export declare const webhookFixturesV1: readonly [{
44
44
  readonly event: "endpoint.test";
45
45
  readonly body_utf8: '{"id":"00000000-0000-4000-8000-000000000015","event":"endpoint.test","api_version":1,"occurred_at":"2026-07-12T19:13:00.000Z","tenant_id":"10000000-0000-4000-8000-000000000001","data":{"object":{"endpoint_id":"80000000-0000-4000-8000-000000000001"}}}';
46
46
  }];
47
- //# sourceMappingURL=fixtures-v1.d.ts.map
@@ -3,4 +3,3 @@ export * from "./generated/event-v1.js";
3
3
  export * from "./processor.js";
4
4
  export * from "./types.js";
5
5
  export * from "./verify.js";
6
- //# sourceMappingURL=index.d.ts.map
@@ -19,4 +19,3 @@ export type CreateWebhookProcessorOptions = {
19
19
  };
20
20
  export declare const createWebhookProcessor: (options: CreateWebhookProcessorOptions) => WebhookProcessor;
21
21
  export declare const toWebhookResponse: (processResult: WebhookProcessResult) => Response;
22
- //# sourceMappingURL=processor.d.ts.map
@@ -1,2 +1 @@
1
1
  export { WebhookServerOnlyError } from "./errors.js";
2
- //# sourceMappingURL=server-only.d.ts.map
@@ -40,4 +40,3 @@ export declare class TestOnlyInMemoryWebhookInbox implements WebhookInbox {
40
40
  token: string;
41
41
  }): Promise<void>;
42
42
  }
43
- //# sourceMappingURL=test.d.ts.map
@@ -53,4 +53,3 @@ export type WebhookDiagnosticEvent = Readonly<{
53
53
  eventName?: string;
54
54
  apiVersion?: number;
55
55
  }>;
56
- //# sourceMappingURL=types.d.ts.map
@@ -3,4 +3,3 @@ export declare const validateSchema: (value: unknown, schema: Schema) => boolean
3
3
  export declare const validateWebhookEnvelopeV1: (value: unknown) => value is Record<string, unknown>;
4
4
  export declare const validateKnownWebhookEventV1: (value: unknown) => boolean;
5
5
  export {};
6
- //# sourceMappingURL=validate.d.ts.map
@@ -8,4 +8,3 @@ export type VerifyWebhookInput = {
8
8
  now?: () => Date;
9
9
  };
10
10
  export declare const verifyWebhook: (input: VerifyWebhookInput) => Promise<ChalkWebhookEvent>;
11
- //# sourceMappingURL=verify.d.ts.map
@@ -5,4 +5,3 @@ export type ChalkWhiteboardV1FileDownloadTransportOptions = {
5
5
  readonly fetch?: typeof globalThis.fetch;
6
6
  };
7
7
  export declare function createChalkWhiteboardV1FileDownloadTransport(options: ChalkWhiteboardV1FileDownloadTransportOptions): ChalkWhiteboardV1FileTransport;
8
- //# sourceMappingURL=file-download-transport.d.ts.map
@@ -1,7 +1,8 @@
1
+ export { ChalkWhiteboardViewBounds } from "./view-bounds";
1
2
  export { createChalkWhiteboardV1FileDownloadTransport, type ChalkWhiteboardV1FileDownloadTransportOptions } from "./file-download-transport";
2
3
  export * from "./types";
3
4
  export { ChalkWhiteboardV1Client } from "./v1-client";
4
5
  export { decodeWhiteboardV1ServerFrame, encodeWhiteboardV1ClientFrame } from "./v1-codec";
5
6
  export { createChalkWhiteboardV1Client, type CreateChalkWhiteboardV1ClientOptions } from "./v1-create";
6
7
  export { InMemoryChalkWhiteboardV1PendingOperationStore } from "./v1-persistence";
7
- //# sourceMappingURL=index.d.ts.map
8
+ export { ChalkWhiteboardViewVersions } from "./view-versions";
@@ -36,17 +36,53 @@ export type ChalkWhiteboardV1Event = {
36
36
  readonly x: number;
37
37
  readonly y: number;
38
38
  readonly occurredAt: string;
39
- } | {
39
+ } | ({
40
+ readonly type: "view";
41
+ readonly participantId: string;
42
+ readonly displayName: string;
43
+ readonly occurredAt: string;
44
+ } & ChalkWhiteboardView) | {
40
45
  readonly type: "reset_required";
41
46
  readonly sceneId: string;
42
47
  readonly reason: "scene_changed" | "cursor_expired" | "gap";
43
48
  };
49
+ /** The part of the board a person sees, in board coordinates. `bring` asks everyone to move there. */
50
+ export type ChalkWhiteboardView = {
51
+ readonly x: number;
52
+ readonly y: number;
53
+ readonly width: number;
54
+ readonly height: number;
55
+ readonly bring: boolean;
56
+ /** Real move by default; false marks a passive refresh or heartbeat. */
57
+ readonly lead?: boolean;
58
+ } & ({
59
+ readonly ownerId: string;
60
+ readonly ownerSequence: number;
61
+ } | {
62
+ readonly ownerId?: never;
63
+ readonly ownerSequence?: never;
64
+ }) & ({
65
+ readonly originParticipantId: string;
66
+ readonly originSequence: number;
67
+ readonly originEpoch?: string;
68
+ } | {
69
+ readonly originParticipantId?: never;
70
+ readonly originSequence?: never;
71
+ readonly originEpoch?: never;
72
+ });
44
73
  export type ChalkWhiteboardV1Commit = {
45
74
  readonly operationId: string;
46
75
  readonly sceneId: string;
47
76
  readonly revision: string;
48
77
  };
49
- export type ChalkWhiteboardV1Operation = "start_scene_subscription" | "submit_update" | "request_snapshot" | "clear" | "set_draw_permission" | "set_presentation" | "get_file_download";
78
+ export type ChalkWhiteboardV1Operation = "start_scene_subscription" | "submit_update" | "request_snapshot" | "clear" | "set_draw_permission" | "set_draw_policy" | "set_presentation" | "get_file_download";
79
+ /** Who can draw in the call. Hosts, the people whose role can manage the board, can always draw under `hosts` and `picked`. */
80
+ export type ChalkWhiteboardDrawPolicy = WhiteboardV1DrawPolicy;
81
+ /** A host's choice for one person. Under `everyone` it overrides the role default; under `picked` `true` means picked; under `hosts` it is kept but ignored. */
82
+ export type ChalkWhiteboardDrawPermission = {
83
+ readonly participantId: string;
84
+ readonly canDraw: boolean;
85
+ };
50
86
  export type ChalkWhiteboardV1ErrorCode = "unavailable" | "permission_denied" | "invalid_payload" | "stale_scene" | "cursor_reset_required" | "storage_unavailable" | "file_transfer_failed";
51
87
  export type ChalkWhiteboardV1Failure = {
52
88
  readonly operation: ChalkWhiteboardV1Operation;
@@ -76,16 +112,23 @@ export type ChalkWhiteboardV1Transport = {
76
112
  readonly x: number;
77
113
  readonly y: number;
78
114
  }) => void;
115
+ /** Whether the active subscription negotiated view_v1; remains stable during recovery. */
116
+ readonly supportsViews?: boolean;
117
+ /** Accepts views while subscribed; keeps the latest bring through recovery. False means views are unavailable. */
118
+ readonly forgetParticipant?: (participantId: string) => void;
119
+ readonly sendView?: (view: ChalkWhiteboardView) => boolean;
79
120
  readonly requestSnapshot: () => Promise<void>;
80
121
  readonly clear: () => Promise<ChalkWhiteboardV1Commit>;
81
122
  readonly setDrawPermission: (participantId: string, canDraw: boolean) => Promise<void>;
123
+ /** Sets the call-wide drawing policy. Requires manageWhiteboard and a Sync server with draw_policy_v1. */
124
+ readonly setDrawPolicy?: (policy: ChalkWhiteboardDrawPolicy) => Promise<void>;
82
125
  readonly setPresentation?: (presenting: boolean) => Promise<void>;
83
126
  readonly files: ChalkWhiteboardV1FileTransport;
84
127
  };
85
128
  export type ChalkWhiteboardV1PendingOperation = {
86
129
  readonly operationId: string;
87
130
  readonly frame: Extract<WhiteboardV1ClientFrame, {
88
- readonly type: "submit_update" | "clear" | "set_draw_permission" | "set_presentation";
131
+ readonly type: "submit_update" | "clear" | "set_draw_permission" | "set_draw_policy" | "set_presentation";
89
132
  }>;
90
133
  readonly createdAt: number;
91
134
  readonly bytes: number;
@@ -112,6 +155,8 @@ export type ChalkWhiteboardV1ClientOptions = {
112
155
  readonly revision: string;
113
156
  };
114
157
  readonly reconnectDelayMs?: number;
158
+ /** Per-attempt WebSocket opening allowance, clamped to 10–60 seconds; defaults to 10 seconds. */
159
+ readonly dialTimeoutMs?: number;
115
160
  readonly retryDelayMs?: number;
116
161
  readonly onSummary?: (summary: ChalkWhiteboardSummary) => void;
117
162
  readonly watchdog?: boolean;
@@ -127,13 +172,17 @@ export type ChalkWhiteboardSummary = {
127
172
  readonly sceneId: string | null;
128
173
  readonly revision: string | null;
129
174
  readonly capabilities: readonly ChalkWhiteboardV1Capability[];
175
+ /** This person's drawing permission, computed by Sync from the policy, their role and the host's choice for them. */
130
176
  readonly canDraw: boolean;
131
177
  readonly canClear: boolean;
178
+ /** The call-wide policy, or null when the Sync server predates draw_policy_v1. */
179
+ readonly drawPolicy: ChalkWhiteboardDrawPolicy | null;
180
+ /** The host's per-person choices for people in the call. Empty unless this person is a host. */
181
+ readonly drawPermissions: readonly ChalkWhiteboardDrawPermission[];
132
182
  readonly presenting: boolean;
133
183
  readonly error: ChalkWhiteboardV1Failure | null;
134
184
  };
135
- import type { WhiteboardV1ClientFrame } from "../generated/whiteboard-v1";
185
+ import type { WhiteboardV1ClientFrame, WhiteboardV1DrawPolicy } from "../generated/whiteboard-v1";
136
186
  import type { ChalkWhiteboardV1Capability } from "../collaboration/types";
137
187
  import type { SyncClock, SyncIdGenerator, SyncLifecycle, SyncWebSocketFactory } from "../sync/types";
138
188
  export type { ChalkWhiteboardV1Capability } from "../collaboration/types";
139
- //# sourceMappingURL=types.d.ts.map
@@ -1,4 +1,4 @@
1
- import { type ChalkWhiteboardV1ClientOptions, type ChalkWhiteboardV1Commit, type ChalkWhiteboardV1Event, type ChalkWhiteboardSummary, type ChalkWhiteboardV1Transport, type ChalkWhiteboardV1UpdateInput } from "./types";
1
+ import { type ChalkWhiteboardV1ClientOptions, type ChalkWhiteboardV1Commit, type ChalkWhiteboardDrawPolicy, type ChalkWhiteboardV1Event, type ChalkWhiteboardSummary, type ChalkWhiteboardV1Transport, type ChalkWhiteboardV1UpdateInput, type ChalkWhiteboardView } from "./types";
2
2
  export declare class ChalkWhiteboardV1Client implements ChalkWhiteboardV1Transport {
3
3
  #private;
4
4
  readonly files: import("./types").ChalkWhiteboardV1FileTransport;
@@ -12,9 +12,12 @@ export declare class ChalkWhiteboardV1Client implements ChalkWhiteboardV1Transpo
12
12
  readonly x: number;
13
13
  readonly y: number;
14
14
  }): void;
15
+ get supportsViews(): boolean;
16
+ forgetParticipant(participantId: string): void;
17
+ sendView(view: ChalkWhiteboardView): boolean;
15
18
  requestSnapshot(): Promise<void>;
16
19
  clear(): Promise<ChalkWhiteboardV1Commit>;
17
20
  setDrawPermission(participantId: string, canDraw: boolean): Promise<void>;
21
+ setDrawPolicy(policy: ChalkWhiteboardDrawPolicy): Promise<void>;
18
22
  setPresentation(presenting: boolean): Promise<void>;
19
23
  }
20
- //# sourceMappingURL=v1-client.d.ts.map
@@ -1,4 +1,7 @@
1
1
  import { type WhiteboardV1ServerFrame } from "../generated/whiteboard-v1";
2
2
  export declare function encodeWhiteboardV1ClientFrame(frame: unknown): string;
3
- export declare function decodeWhiteboardV1ServerFrame(wire: string): WhiteboardV1ServerFrame;
4
- //# sourceMappingURL=v1-codec.d.ts.map
3
+ /** Negotiated control frames belong to the connection, not the public 5.1 frame union. */
4
+ export declare function decodeWhiteboardV1ServerFrame(wire: string): Exclude<WhiteboardV1ServerFrame, {
5
+ readonly type: "view_ack" | "draw_access";
6
+ }>;
7
+ export declare function decodeWhiteboardV1WireFrame(wire: string): WhiteboardV1ServerFrame;
@@ -5,4 +5,3 @@ export type CreateChalkWhiteboardV1ClientOptions = Omit<ChalkWhiteboardV1ClientO
5
5
  readonly webSocket?: ChalkWhiteboardV1ClientOptions["webSocket"];
6
6
  };
7
7
  export declare function createChalkWhiteboardV1Client(options: CreateChalkWhiteboardV1ClientOptions): ChalkWhiteboardV1Client;
8
- //# sourceMappingURL=v1-create.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import { type WhiteboardV1ClientFrame, type WhiteboardV1ServerFrame } from "../generated/whiteboard-v1";
2
2
  export type WhiteboardV1LogicalOperationFrame = Extract<WhiteboardV1ClientFrame, {
3
- readonly type: "submit_update" | "clear" | "set_draw_permission" | "set_presentation";
3
+ readonly type: "submit_update" | "clear" | "set_draw_permission" | "set_draw_policy" | "set_presentation";
4
4
  }>;
5
5
  type UpdatePartFrame = Extract<WhiteboardV1ServerFrame, {
6
6
  readonly type: "update_part";
@@ -27,4 +27,3 @@ export declare class WhiteboardV1UpdateAssembler {
27
27
  }
28
28
  export declare function whiteboardV1UpdateAssemblyKey(frame: Pick<UpdatePartFrame, "operation_id" | "scene_id" | "revision">): string;
29
29
  export {};
30
- //# sourceMappingURL=v1-multipart.d.ts.map
@@ -6,4 +6,3 @@ export declare class InMemoryChalkWhiteboardV1PendingOperationStore implements C
6
6
  remove(operationId: string): Promise<void>;
7
7
  }
8
8
  export declare function compareChalkWhiteboardV1PendingOperations(left: ChalkWhiteboardV1PendingOperation, right: ChalkWhiteboardV1PendingOperation): number;
9
- //# sourceMappingURL=v1-persistence.d.ts.map
@@ -0,0 +1,5 @@
1
+ /** Bounds for shared camera rectangles. */
2
+ export declare const ChalkWhiteboardViewBounds: {
3
+ maxCoordinate: 1000000;
4
+ maxExtent: 2000000;
5
+ };
@@ -0,0 +1,9 @@
1
+ import type { ChalkWhiteboardView } from "./types";
2
+ /** Owner sequences are compared only within a connection's authoritative snapshot. */
3
+ export declare class ChalkWhiteboardViewVersions {
4
+ #private;
5
+ isNew(view: ChalkWhiteboardView, participantId?: string): boolean;
6
+ remember(view: ChalkWhiteboardView, participantId?: string): void;
7
+ forgetParticipant(participantId: string): void;
8
+ clear(): void;
9
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@q9labsai/chalk-client",
3
- "version": "5.0.1",
3
+ "version": "5.2.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -8,7 +8,9 @@
8
8
  "directory": "sdks/typescript/client"
9
9
  },
10
10
  "files": [
11
- "dist"
11
+ "dist",
12
+ "CHANGELOG.md",
13
+ "!dist/**/*.test.helpers.*"
12
14
  ],
13
15
  "type": "module",
14
16
  "sideEffects": [
@@ -1 +0,0 @@
1
- {"version":3,"file":"base64-url.d.ts","sourceRoot":"","sources":["../../src/access/base64-url.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOrD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"grant.d.ts","sourceRoot":"","sources":["../../src/access/grant.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,mBAAmB,EAAE,OAAO,MAAM,CAAC;AACjD,OAAO,CAAC,MAAM,oBAAoB,EAAE,OAAO,MAAM,CAAC;AAClD,QAAA,MAAM,gBAAgB,EAAE,OAAO,MAA8B,CAAC;AAC9D,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG;IAC/C,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,YAAY,CAAC;CAC9C,CAAC;AACF,MAAM,MAAM,0BAA0B,GAAG,MAAM,GAAG;IAChD,QAAQ,CAAC,CAAC,oBAAoB,CAAC,EAAE,aAAa,CAAC;CAChD,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;CACxC,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE;QACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;CACxC,CAAC;AACF,mFAAmF;AACnF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,aAAa,CAAC;CAC5C,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AACvF,qBAAa,gBAAiB,SAAQ,SAAS;IAC7C,QAAQ,CAAC,IAAI,EAAG,gBAAgB,CAAU;IAC1C,YAAY,OAAO,SAA4B,EAG9C;CACF;AAcD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAUxE;AACD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAE5D;AACD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAmB3E;AACD,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAWzF;AACD,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAW7E;AACD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAO9E"}
@@ -1,10 +0,0 @@
1
- import type { ParsedAccessGrant } from "./grant";
2
- export declare const ACCESS_SUBJECT: {
3
- readonly tenantId: "tenant-1";
4
- readonly spaceId: "space-1";
5
- readonly episodeId: "episode-1";
6
- readonly participantId: "participant-1";
7
- readonly participantGeneration: 1;
8
- };
9
- export declare function accessGrant(expiresAt: number, suffix: string, connectionId?: string): ParsedAccessGrant;
10
- //# sourceMappingURL=grant.test.helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"grant.test.helpers.d.ts","sourceRoot":"","sources":["../../src/access/grant.test.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,eAAO,MAAM,cAAc;aACzB,QAAQ,EAAE,UAAU;aACpB,OAAO,EAAE,SAAS;aAClB,SAAS,EAAE,WAAW;aACtB,aAAa,EAAE,eAAe;aAC9B,qBAAqB,EAAE,CAAC;CAChB,CAAC;AAEX,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,SAAiB,GAAG,iBAAiB,CAM/G"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/access/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,OAAO,EAAQ,MAAM,EAAE,KAAK,EAAmB,MAAM,QAAQ,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AACxG,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;;;;AAGlG,qBAAa,uBAAwB,SAAQ,6BAA4C;IACvF,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,oBAAoB,CAAC;IACvD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;CAAG;AACL,MAAM,MAAM,8BAA8B,GAAG,CAAC,OAAO,EAAE,uBAAuB,KAAK,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAC;AAC7I,MAAM,MAAM,iCAAiC,GAAG,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;AACpF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAC1D,QAAQ,CAAC,aAAa,EAAE,MAAM,iBAAiB,GAAG,IAAI,CAAC;IACvD,QAAQ,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAC;IACrH,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,sBAAsB,KAAK,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAC;IACrH,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC,EAAE,sBAAsB,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAC;IAClK,QAAQ,CAAC,qBAAqB,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAC;IAChG,QAAQ,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,sBAAsB,KAAK,MAAM,CAAC,MAAM,CAAC,yBAAyB,EAAE,uBAAuB,CAAC,CAAC;IAC9H,QAAQ,CAAC,aAAa,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,0BAA0B,EAAE,uBAAuB,CAAC,CAAC;IACjG,QAAQ,CAAC,kCAAkC,EAAE,CAAC,QAAQ,EAAE,iCAAiC,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IACxH,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjD,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAChE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACrC,CAAC;;AACF,qBAAa,uBAAwB,SAAQ,4BAA2G;CAAG;AAe3J;;;GAGG;AACH,eAAO,MAAM,yBAAyB,aAAc,8BAA8B,iFAsC/E,CAAC;AACJ,eAAO,MAAM,6BAA6B,aAvCU,8BAA8B,iFAuCZ,CAAC"}