@q9labsai/chalk-client 5.1.0 → 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 (34) hide show
  1. package/CHANGELOG.md +125 -0
  2. package/dist/chat-files/types.d.ts +3 -0
  3. package/dist/{chunk-RJRSLXVT.js → chunk-BCO3AZUB.js} +647 -221
  4. package/dist/{chunk-K7PNW3KI.js → chunk-D2GXPX2P.js} +143 -13
  5. package/dist/{chunk-KHHULLBZ.js → chunk-DHGAKJXP.js} +1 -1
  6. package/dist/{chunk-3ZN7IXOZ.js → chunk-HO4745TX.js} +250 -2
  7. package/dist/client.d.ts +201 -0
  8. package/dist/connection/dependencies.d.ts +3 -0
  9. package/dist/connection/diagnostics.d.ts +3 -2
  10. package/dist/connection/lifecycle.d.ts +1 -0
  11. package/dist/connection/types.d.ts +2 -0
  12. package/dist/effect.js +62 -4
  13. package/dist/generated/http-api.d.ts +197 -0
  14. package/dist/generated/schemas.d.ts +366 -0
  15. package/dist/generated/sync.d.ts +74 -3
  16. package/dist/generated/whiteboard-v1.d.ts +71 -9
  17. package/dist/index.d.ts +1 -0
  18. package/dist/index.js +18 -14
  19. package/dist/public-invites/index.js +2 -2
  20. package/dist/space-client/reload-rejoin.d.ts +1 -1
  21. package/dist/space-client/types.d.ts +8 -1
  22. package/dist/sync/connect-diagnostics.d.ts +10 -0
  23. package/dist/sync/index.js +1 -1
  24. package/dist/sync/types.d.ts +1 -0
  25. package/dist/sync/v1-client.d.ts +2 -0
  26. package/dist/sync/v1-types.d.ts +4 -0
  27. package/dist/whiteboard/index.d.ts +2 -5
  28. package/dist/whiteboard/types.d.ts +26 -3
  29. package/dist/whiteboard/v1-client.d.ts +3 -1
  30. package/dist/whiteboard/v1-codec.d.ts +5 -1
  31. package/dist/whiteboard/v1-multipart.d.ts +1 -1
  32. package/dist/whiteboard/view-bounds.d.ts +5 -0
  33. package/dist/whiteboard/view-versions.d.ts +9 -0
  34. package/package.json +1 -1
@@ -7,6 +7,13 @@ export declare const SyncProtocolMetadata: {
7
7
  readonly value: 1;
8
8
  readonly transport: "websocket-json-text";
9
9
  readonly route: "/v1/sync";
10
+ readonly entryGeneration: {
11
+ readonly queryParameter: "entry_generation";
12
+ readonly newEntry: "new";
13
+ readonly resume: "previous welcome entry_generation";
14
+ readonly confirmation: "monotonic compare-and-set";
15
+ readonly scope: "participant";
16
+ };
10
17
  };
11
18
  readonly directions: {
12
19
  readonly clientToServer: "client-to-server";
@@ -27,7 +34,7 @@ export declare const SyncProtocolMetadata: {
27
34
  };
28
35
  }, {
29
36
  readonly id: "live";
30
- readonly accepts: readonly ["command", "live_target", "directed_request", "delivery_ack", "request_ack", "reaction_send", "chat_send", "chat_page_request", "chat_read_set", "chat_reaction_set", "ping"];
37
+ readonly accepts: readonly ["entered", "command", "live_target", "directed_request", "delivery_ack", "request_ack", "reaction_send", "chat_send", "chat_page_request", "chat_read_set", "chat_reaction_set", "ping"];
31
38
  readonly heartbeat: {
32
39
  readonly intervalMs: 20000;
33
40
  readonly missedDeadlinesBeforeClose: 2;
@@ -269,7 +276,7 @@ export declare const SyncProtocolMetadata: {
269
276
  }, {
270
277
  readonly code: 1008;
271
278
  readonly connection: "closed";
272
- readonly reasons: readonly ["invalid token", "policy violation"];
279
+ readonly reasons: readonly ["invalid token", "policy violation", "entry timeout"];
273
280
  }, {
274
281
  readonly code: 1009;
275
282
  readonly connection: "closed";
@@ -322,7 +329,7 @@ export declare const SyncCloseCodes: readonly [{
322
329
  }, {
323
330
  readonly code: 1008;
324
331
  readonly connection: "closed";
325
- readonly reasons: readonly ["invalid token", "policy violation"];
332
+ readonly reasons: readonly ["invalid token", "policy violation", "entry timeout"];
326
333
  }, {
327
334
  readonly code: 1009;
328
335
  readonly connection: "closed";
@@ -1312,6 +1319,8 @@ export declare const WelcomeSnapshotFrameSchema: Schema.Struct<{
1312
1319
  readonly state_schema_version: Schema.Number;
1313
1320
  readonly state_digest: Schema.String;
1314
1321
  }>;
1322
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
1323
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
1315
1324
  readonly mode: Schema.Literal<"snapshot">;
1316
1325
  readonly snapshot: Schema.Struct<{
1317
1326
  readonly control_revision: Schema.Number;
@@ -1358,6 +1367,8 @@ export declare const WelcomeReplayFrameSchema: Schema.Struct<{
1358
1367
  readonly state_schema_version: Schema.Number;
1359
1368
  readonly state_digest: Schema.String;
1360
1369
  }>;
1370
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
1371
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
1361
1372
  readonly mode: Schema.Literal<"replay">;
1362
1373
  }>;
1363
1374
  export declare const WelcomeUpToDateFrameSchema: Schema.Struct<{
@@ -1374,6 +1385,8 @@ export declare const WelcomeUpToDateFrameSchema: Schema.Struct<{
1374
1385
  readonly state_schema_version: Schema.Number;
1375
1386
  readonly state_digest: Schema.String;
1376
1387
  }>;
1388
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
1389
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
1377
1390
  readonly mode: Schema.Literal<"up_to_date">;
1378
1391
  }>;
1379
1392
  export declare const WelcomeTerminalFrameSchema: Schema.Struct<{
@@ -1390,6 +1403,8 @@ export declare const WelcomeTerminalFrameSchema: Schema.Struct<{
1390
1403
  readonly state_schema_version: Schema.Number;
1391
1404
  readonly state_digest: Schema.String;
1392
1405
  }>;
1406
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
1407
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
1393
1408
  readonly mode: Schema.Literal<"terminal">;
1394
1409
  readonly reason: Schema.Union<readonly [Schema.Literal<"episode_ended">, Schema.Literal<"participant_inactive">, Schema.Literal<"stale_participant_generation">]>;
1395
1410
  }>;
@@ -1407,6 +1422,8 @@ export declare const ExtendedWelcomeSnapshotFrameSchema: Schema.Struct<{
1407
1422
  readonly state_schema_version: Schema.Number;
1408
1423
  readonly state_digest: Schema.String;
1409
1424
  }>;
1425
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
1426
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
1410
1427
  readonly extensions: Schema.Tuple<readonly [Schema.Struct<{
1411
1428
  readonly name: Schema.Literals<readonly ["collaboration_v1", "collaboration_v2"]>;
1412
1429
  readonly capabilities: Schema.$Array<Schema.Union<readonly [Schema.Literal<"sendReaction">, Schema.Literal<"sendChat">]>>;
@@ -1466,6 +1483,8 @@ export declare const ExtendedWelcomeReplayFrameSchema: Schema.Struct<{
1466
1483
  readonly state_schema_version: Schema.Number;
1467
1484
  readonly state_digest: Schema.String;
1468
1485
  }>;
1486
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
1487
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
1469
1488
  readonly extensions: Schema.Tuple<readonly [Schema.Struct<{
1470
1489
  readonly name: Schema.Literals<readonly ["collaboration_v1", "collaboration_v2"]>;
1471
1490
  readonly capabilities: Schema.$Array<Schema.Union<readonly [Schema.Literal<"sendReaction">, Schema.Literal<"sendChat">]>>;
@@ -1495,6 +1514,8 @@ export declare const ExtendedWelcomeUpToDateFrameSchema: Schema.Struct<{
1495
1514
  readonly state_schema_version: Schema.Number;
1496
1515
  readonly state_digest: Schema.String;
1497
1516
  }>;
1517
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
1518
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
1498
1519
  readonly extensions: Schema.Tuple<readonly [Schema.Struct<{
1499
1520
  readonly name: Schema.Literals<readonly ["collaboration_v1", "collaboration_v2"]>;
1500
1521
  readonly capabilities: Schema.$Array<Schema.Union<readonly [Schema.Literal<"sendReaction">, Schema.Literal<"sendChat">]>>;
@@ -1524,6 +1545,8 @@ export declare const ExtendedWelcomeTerminalFrameSchema: Schema.Struct<{
1524
1545
  readonly state_schema_version: Schema.Number;
1525
1546
  readonly state_digest: Schema.String;
1526
1547
  }>;
1548
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
1549
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
1527
1550
  readonly extensions: Schema.Tuple<readonly [Schema.Struct<{
1528
1551
  readonly name: Schema.Literals<readonly ["collaboration_v1", "collaboration_v2"]>;
1529
1552
  readonly capabilities: Schema.$Array<Schema.Union<readonly [Schema.Literal<"sendReaction">, Schema.Literal<"sendChat">]>>;
@@ -1554,6 +1577,8 @@ export declare const WelcomeFrameSchema: Schema.Union<readonly [Schema.Struct<{
1554
1577
  readonly state_schema_version: Schema.Number;
1555
1578
  readonly state_digest: Schema.String;
1556
1579
  }>;
1580
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
1581
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
1557
1582
  readonly extensions: Schema.Tuple<readonly [Schema.Struct<{
1558
1583
  readonly name: Schema.Literals<readonly ["collaboration_v1", "collaboration_v2"]>;
1559
1584
  readonly capabilities: Schema.$Array<Schema.Union<readonly [Schema.Literal<"sendReaction">, Schema.Literal<"sendChat">]>>;
@@ -1612,6 +1637,8 @@ export declare const WelcomeFrameSchema: Schema.Union<readonly [Schema.Struct<{
1612
1637
  readonly state_schema_version: Schema.Number;
1613
1638
  readonly state_digest: Schema.String;
1614
1639
  }>;
1640
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
1641
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
1615
1642
  readonly extensions: Schema.Tuple<readonly [Schema.Struct<{
1616
1643
  readonly name: Schema.Literals<readonly ["collaboration_v1", "collaboration_v2"]>;
1617
1644
  readonly capabilities: Schema.$Array<Schema.Union<readonly [Schema.Literal<"sendReaction">, Schema.Literal<"sendChat">]>>;
@@ -1640,6 +1667,8 @@ export declare const WelcomeFrameSchema: Schema.Union<readonly [Schema.Struct<{
1640
1667
  readonly state_schema_version: Schema.Number;
1641
1668
  readonly state_digest: Schema.String;
1642
1669
  }>;
1670
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
1671
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
1643
1672
  readonly extensions: Schema.Tuple<readonly [Schema.Struct<{
1644
1673
  readonly name: Schema.Literals<readonly ["collaboration_v1", "collaboration_v2"]>;
1645
1674
  readonly capabilities: Schema.$Array<Schema.Union<readonly [Schema.Literal<"sendReaction">, Schema.Literal<"sendChat">]>>;
@@ -1668,6 +1697,8 @@ export declare const WelcomeFrameSchema: Schema.Union<readonly [Schema.Struct<{
1668
1697
  readonly state_schema_version: Schema.Number;
1669
1698
  readonly state_digest: Schema.String;
1670
1699
  }>;
1700
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
1701
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
1671
1702
  readonly extensions: Schema.Tuple<readonly [Schema.Struct<{
1672
1703
  readonly name: Schema.Literals<readonly ["collaboration_v1", "collaboration_v2"]>;
1673
1704
  readonly capabilities: Schema.$Array<Schema.Union<readonly [Schema.Literal<"sendReaction">, Schema.Literal<"sendChat">]>>;
@@ -1697,6 +1728,8 @@ export declare const WelcomeFrameSchema: Schema.Union<readonly [Schema.Struct<{
1697
1728
  readonly state_schema_version: Schema.Number;
1698
1729
  readonly state_digest: Schema.String;
1699
1730
  }>;
1731
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
1732
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
1700
1733
  readonly mode: Schema.Literal<"snapshot">;
1701
1734
  readonly snapshot: Schema.Struct<{
1702
1735
  readonly control_revision: Schema.Number;
@@ -1742,6 +1775,8 @@ export declare const WelcomeFrameSchema: Schema.Union<readonly [Schema.Struct<{
1742
1775
  readonly state_schema_version: Schema.Number;
1743
1776
  readonly state_digest: Schema.String;
1744
1777
  }>;
1778
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
1779
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
1745
1780
  readonly mode: Schema.Literal<"replay">;
1746
1781
  }>, Schema.Struct<{
1747
1782
  readonly journey_id: Schema.optional<Schema.String>;
@@ -1757,6 +1792,8 @@ export declare const WelcomeFrameSchema: Schema.Union<readonly [Schema.Struct<{
1757
1792
  readonly state_schema_version: Schema.Number;
1758
1793
  readonly state_digest: Schema.String;
1759
1794
  }>;
1795
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
1796
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
1760
1797
  readonly mode: Schema.Literal<"up_to_date">;
1761
1798
  }>, Schema.Struct<{
1762
1799
  readonly journey_id: Schema.optional<Schema.String>;
@@ -1772,6 +1809,8 @@ export declare const WelcomeFrameSchema: Schema.Union<readonly [Schema.Struct<{
1772
1809
  readonly state_schema_version: Schema.Number;
1773
1810
  readonly state_digest: Schema.String;
1774
1811
  }>;
1812
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
1813
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
1775
1814
  readonly mode: Schema.Literal<"terminal">;
1776
1815
  readonly reason: Schema.Union<readonly [Schema.Literal<"episode_ended">, Schema.Literal<"participant_inactive">, Schema.Literal<"stale_participant_generation">]>;
1777
1816
  }>]>;
@@ -2701,6 +2740,15 @@ export declare const ErrorFrameSchema: Schema.Struct<{
2701
2740
  readonly code: Schema.Union<readonly [Schema.Literal<"protocol_error">, Schema.Literal<"invalid_frame">, Schema.Literal<"unsupported_protocol">]>;
2702
2741
  readonly detail: Schema.String;
2703
2742
  }>;
2743
+ export declare const EnteredFrameSchema: Schema.Struct<{
2744
+ readonly type: Schema.Literal<"entered">;
2745
+ }>;
2746
+ export declare const EnteredAckFrameSchema: Schema.Struct<{
2747
+ readonly journey_id: Schema.optional<Schema.String>;
2748
+ readonly traceparent: Schema.optional<Schema.String>;
2749
+ readonly tracestate: Schema.optional<Schema.String>;
2750
+ readonly type: Schema.Literal<"entered_ack">;
2751
+ }>;
2704
2752
  export declare const PingFrameSchema: Schema.Struct<{
2705
2753
  readonly type: Schema.Literal<"ping">;
2706
2754
  }>;
@@ -2922,6 +2970,8 @@ export declare const SyncV1ClientFrameSchema: Schema.decodeTo<Schema.Union<reado
2922
2970
  readonly recovery_id: Schema.String;
2923
2971
  readonly revision: Schema.Number;
2924
2972
  readonly state_digest: Schema.String;
2973
+ }>, Schema.Struct<{
2974
+ readonly type: Schema.Literal<"entered">;
2925
2975
  }>, Schema.Struct<{
2926
2976
  readonly type: Schema.Literal<"ping">;
2927
2977
  }>]>, Schema.Unknown, never, never>;
@@ -2940,6 +2990,8 @@ export declare const SyncV1ServerFrameSchema: Schema.decodeTo<Schema.Union<reado
2940
2990
  readonly state_schema_version: Schema.Number;
2941
2991
  readonly state_digest: Schema.String;
2942
2992
  }>;
2993
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
2994
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
2943
2995
  readonly extensions: Schema.Tuple<readonly [Schema.Struct<{
2944
2996
  readonly name: Schema.Literals<readonly ["collaboration_v1", "collaboration_v2"]>;
2945
2997
  readonly capabilities: Schema.$Array<Schema.Union<readonly [Schema.Literal<"sendReaction">, Schema.Literal<"sendChat">]>>;
@@ -2998,6 +3050,8 @@ export declare const SyncV1ServerFrameSchema: Schema.decodeTo<Schema.Union<reado
2998
3050
  readonly state_schema_version: Schema.Number;
2999
3051
  readonly state_digest: Schema.String;
3000
3052
  }>;
3053
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
3054
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
3001
3055
  readonly extensions: Schema.Tuple<readonly [Schema.Struct<{
3002
3056
  readonly name: Schema.Literals<readonly ["collaboration_v1", "collaboration_v2"]>;
3003
3057
  readonly capabilities: Schema.$Array<Schema.Union<readonly [Schema.Literal<"sendReaction">, Schema.Literal<"sendChat">]>>;
@@ -3026,6 +3080,8 @@ export declare const SyncV1ServerFrameSchema: Schema.decodeTo<Schema.Union<reado
3026
3080
  readonly state_schema_version: Schema.Number;
3027
3081
  readonly state_digest: Schema.String;
3028
3082
  }>;
3083
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
3084
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
3029
3085
  readonly extensions: Schema.Tuple<readonly [Schema.Struct<{
3030
3086
  readonly name: Schema.Literals<readonly ["collaboration_v1", "collaboration_v2"]>;
3031
3087
  readonly capabilities: Schema.$Array<Schema.Union<readonly [Schema.Literal<"sendReaction">, Schema.Literal<"sendChat">]>>;
@@ -3054,6 +3110,8 @@ export declare const SyncV1ServerFrameSchema: Schema.decodeTo<Schema.Union<reado
3054
3110
  readonly state_schema_version: Schema.Number;
3055
3111
  readonly state_digest: Schema.String;
3056
3112
  }>;
3113
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
3114
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
3057
3115
  readonly extensions: Schema.Tuple<readonly [Schema.Struct<{
3058
3116
  readonly name: Schema.Literals<readonly ["collaboration_v1", "collaboration_v2"]>;
3059
3117
  readonly capabilities: Schema.$Array<Schema.Union<readonly [Schema.Literal<"sendReaction">, Schema.Literal<"sendChat">]>>;
@@ -3083,6 +3141,8 @@ export declare const SyncV1ServerFrameSchema: Schema.decodeTo<Schema.Union<reado
3083
3141
  readonly state_schema_version: Schema.Number;
3084
3142
  readonly state_digest: Schema.String;
3085
3143
  }>;
3144
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
3145
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
3086
3146
  readonly mode: Schema.Literal<"snapshot">;
3087
3147
  readonly snapshot: Schema.Struct<{
3088
3148
  readonly control_revision: Schema.Number;
@@ -3128,6 +3188,8 @@ export declare const SyncV1ServerFrameSchema: Schema.decodeTo<Schema.Union<reado
3128
3188
  readonly state_schema_version: Schema.Number;
3129
3189
  readonly state_digest: Schema.String;
3130
3190
  }>;
3191
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
3192
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
3131
3193
  readonly mode: Schema.Literal<"replay">;
3132
3194
  }>, Schema.Struct<{
3133
3195
  readonly journey_id: Schema.optional<Schema.String>;
@@ -3143,6 +3205,8 @@ export declare const SyncV1ServerFrameSchema: Schema.decodeTo<Schema.Union<reado
3143
3205
  readonly state_schema_version: Schema.Number;
3144
3206
  readonly state_digest: Schema.String;
3145
3207
  }>;
3208
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
3209
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
3146
3210
  readonly mode: Schema.Literal<"up_to_date">;
3147
3211
  }>, Schema.Struct<{
3148
3212
  readonly journey_id: Schema.optional<Schema.String>;
@@ -3158,6 +3222,8 @@ export declare const SyncV1ServerFrameSchema: Schema.decodeTo<Schema.Union<reado
3158
3222
  readonly state_schema_version: Schema.Number;
3159
3223
  readonly state_digest: Schema.String;
3160
3224
  }>;
3225
+ readonly entry_confirmation: Schema.optionalKey<Schema.Literal<true>>;
3226
+ readonly entry_generation: Schema.optionalKey<Schema.Number>;
3161
3227
  readonly mode: Schema.Literal<"terminal">;
3162
3228
  readonly reason: Schema.Union<readonly [Schema.Literal<"episode_ended">, Schema.Literal<"participant_inactive">, Schema.Literal<"stale_participant_generation">]>;
3163
3229
  }>]>, Schema.Struct<{
@@ -4099,6 +4165,11 @@ export declare const SyncV1ServerFrameSchema: Schema.decodeTo<Schema.Union<reado
4099
4165
  readonly type: Schema.Literal<"error">;
4100
4166
  readonly code: Schema.Union<readonly [Schema.Literal<"protocol_error">, Schema.Literal<"invalid_frame">, Schema.Literal<"unsupported_protocol">]>;
4101
4167
  readonly detail: Schema.String;
4168
+ }>, Schema.Struct<{
4169
+ readonly journey_id: Schema.optional<Schema.String>;
4170
+ readonly traceparent: Schema.optional<Schema.String>;
4171
+ readonly tracestate: Schema.optional<Schema.String>;
4172
+ readonly type: Schema.Literal<"entered_ack">;
4102
4173
  }>, Schema.Struct<{
4103
4174
  readonly journey_id: Schema.optional<Schema.String>;
4104
4175
  readonly traceparent: Schema.optional<Schema.String>;
@@ -16,6 +16,11 @@ export declare const WhiteboardV1ProtocolMetadata: {
16
16
  readonly name: "view_v1";
17
17
  readonly exactFields: readonly ["name"];
18
18
  readonly extendedExactFields: readonly ["name", "origins"];
19
+ readonly ownerExactFields: readonly ["name", "origins", "owner"];
20
+ };
21
+ readonly drawPolicy: {
22
+ readonly name: "draw_policy_v1";
23
+ readonly exactFields: readonly ["name"];
19
24
  };
20
25
  };
21
26
  readonly identity: {
@@ -24,13 +29,14 @@ export declare const WhiteboardV1ProtocolMetadata: {
24
29
  readonly generationFenced: true;
25
30
  };
26
31
  readonly capabilities: readonly ["drawWhiteboard", "manageWhiteboard"];
32
+ readonly drawPolicies: readonly ["everyone", "hosts", "picked"];
27
33
  readonly phases: readonly [{
28
34
  readonly id: "awaiting_hello";
29
35
  readonly accepts: readonly ["hello", "ping"];
30
36
  readonly deadlineMs: 5000;
31
37
  }, {
32
38
  readonly id: "live";
33
- readonly accepts: readonly ["submit_update", "submit_update_part", "request_snapshot", "snapshot_ack", "clear", "set_draw_permission", "set_presentation", "cursor", "view", "ping"];
39
+ readonly accepts: readonly ["submit_update", "submit_update_part", "request_snapshot", "snapshot_ack", "clear", "set_draw_permission", "set_draw_policy", "set_presentation", "cursor", "view", "ping"];
34
40
  readonly heartbeatIntervalMs: 20000;
35
41
  readonly missedDeadlinesBeforeClose: 2;
36
42
  }];
@@ -59,6 +65,7 @@ export declare const WhiteboardV1ProtocolMetadata: {
59
65
  readonly socketQueueMaxAgeMs: 5000;
60
66
  readonly cursorTtlMs: 10000;
61
67
  readonly cursorRatePerSecond: 60;
68
+ readonly viewPeopleMaxItems: 500;
62
69
  readonly pendingOperationMaxItems: 128;
63
70
  readonly multipartUpdateMaxParts: 128;
64
71
  readonly multipartUpdateMaxItems: 10000;
@@ -67,6 +74,7 @@ export declare const WhiteboardV1ProtocolMetadata: {
67
74
  readonly sceneElementMaxItems: 10000;
68
75
  readonly sceneJsonMaxBytes: 67108864;
69
76
  readonly sceneObjectMaxBytes: 268435456;
77
+ readonly drawAccessMaxGrants: 1024;
70
78
  };
71
79
  readonly cursor: {
72
80
  readonly sceneId: "uuid";
@@ -102,6 +110,9 @@ export declare const WhiteboardV1ProtocolMetadata: {
102
110
  readonly setDrawPermission: {
103
111
  readonly exactFields: readonly ["type", "operation_id", "participant_id", "can_draw"];
104
112
  };
113
+ readonly setDrawPolicy: {
114
+ readonly exactFields: readonly ["type", "operation_id", "policy"];
115
+ };
105
116
  readonly setPresentation: {
106
117
  readonly exactFields: readonly ["type", "operation_id", "presenting"];
107
118
  };
@@ -113,11 +124,14 @@ export declare const WhiteboardV1ProtocolMetadata: {
113
124
  readonly maxCoordinate: 1000000;
114
125
  readonly maxExtent: 2000000;
115
126
  readonly epochField: "origin_epoch";
127
+ readonly inputFields: readonly ["input_id", "move"];
128
+ readonly ownerFields: readonly ["owner_id", "owner_sequence"];
116
129
  readonly originFields: readonly ["origin_participant_id", "origin_sequence"];
117
130
  readonly clientExactFields: readonly ["type", "x", "y", "width", "height", "bring"];
118
131
  readonly serverExactFields: readonly ["type", "participant_id", "display_name", "x", "y", "width", "height", "bring", "occurred_at"];
119
132
  };
120
133
  readonly welcome: {
134
+ readonly ownerField: "view_owner_id";
121
135
  readonly exactFields: readonly ["type", "protocol", "participant_id", "participant_generation", "capabilities", "participant_capabilities", "scene_id", "revision", "can_draw"];
122
136
  readonly extendedExactFields: readonly ["type", "protocol", "participant_id", "participant_generation", "capabilities", "participant_capabilities", "scene_id", "revision", "can_draw", "presenting"];
123
137
  };
@@ -136,6 +150,10 @@ export declare const WhiteboardV1ProtocolMetadata: {
136
150
  readonly permissionUpdated: {
137
151
  readonly exactFields: readonly ["type", "participant_id", "can_draw"];
138
152
  };
153
+ readonly drawAccess: {
154
+ readonly exactFields: readonly ["type", "policy", "can_draw", "capabilities", "grants"];
155
+ readonly grantExactFields: readonly ["participant_id", "can_draw"];
156
+ };
139
157
  readonly presentationUpdated: {
140
158
  readonly exactFields: readonly ["type", "scene_id", "revision", "presenting"];
141
159
  };
@@ -146,9 +164,9 @@ export declare const WhiteboardV1ProtocolMetadata: {
146
164
  readonly exactFields: readonly ["type", "correlation_id", "operation", "code", "recoverable", "message"];
147
165
  };
148
166
  };
149
- readonly clientFrames: readonly ["hello", "submit_update", "submit_update_part", "request_snapshot", "snapshot_ack", "clear", "set_draw_permission", "set_presentation", "cursor", "view", "ping"];
150
- readonly serverFrames: readonly ["welcome", "snapshot_page", "update", "update_part", "commit", "cursor", "view", "permission_updated", "presentation_updated", "reset_required", "operation_error", "pong"];
151
- readonly receiptOperations: readonly ["submit_update", "clear", "set_draw_permission", "set_presentation"];
167
+ readonly clientFrames: readonly ["hello", "submit_update", "submit_update_part", "request_snapshot", "snapshot_ack", "clear", "set_draw_permission", "set_draw_policy", "set_presentation", "cursor", "view", "ping"];
168
+ readonly serverFrames: readonly ["welcome", "snapshot_page", "update", "update_part", "commit", "cursor", "view", "permission_updated", "draw_access", "presentation_updated", "reset_required", "operation_error", "view_ack", "pong"];
169
+ readonly receiptOperations: readonly ["submit_update", "clear", "set_draw_permission", "set_draw_policy", "set_presentation"];
152
170
  readonly receiptOutcomes: readonly ["committed", "duplicate"];
153
171
  readonly resetReasons: readonly ["scene_changed", "cursor_expired", "gap"];
154
172
  readonly errorCodes: readonly ["unavailable", "permission_denied", "invalid_payload", "stale_scene", "cursor_reset_required", "rate_limited", "overloaded", "storage_unavailable"];
@@ -208,6 +226,7 @@ export declare const WhiteboardV1ProtocolLimits: {
208
226
  readonly socketQueueMaxAgeMs: 5000;
209
227
  readonly cursorTtlMs: 10000;
210
228
  readonly cursorRatePerSecond: 60;
229
+ readonly viewPeopleMaxItems: 500;
211
230
  readonly pendingOperationMaxItems: 128;
212
231
  readonly multipartUpdateMaxParts: 128;
213
232
  readonly multipartUpdateMaxItems: 10000;
@@ -216,6 +235,7 @@ export declare const WhiteboardV1ProtocolLimits: {
216
235
  readonly sceneElementMaxItems: 10000;
217
236
  readonly sceneJsonMaxBytes: 67108864;
218
237
  readonly sceneObjectMaxBytes: 268435456;
238
+ readonly drawAccessMaxGrants: 1024;
219
239
  };
220
240
  export type WhiteboardV1JsonValue = null | boolean | number | string | readonly WhiteboardV1JsonValue[] | {
221
241
  readonly [key: string]: WhiteboardV1JsonValue;
@@ -241,9 +261,23 @@ export type WhiteboardV1PresentationExtension = {
241
261
  };
242
262
  export type WhiteboardV1ViewExtension = {
243
263
  readonly name: "view_v1";
244
- readonly origins?: true;
264
+ } | {
265
+ readonly name: "view_v1";
266
+ readonly origins: true;
267
+ } | {
268
+ readonly name: "view_v1";
269
+ readonly origins: true;
270
+ readonly owner: true;
271
+ };
272
+ export type WhiteboardV1DrawPolicyExtension = {
273
+ readonly name: "draw_policy_v1";
274
+ };
275
+ export type WhiteboardV1Extensions = readonly [WhiteboardV1PresentationExtension] | readonly [WhiteboardV1PresentationExtension, WhiteboardV1ViewExtension] | readonly [WhiteboardV1DrawPolicyExtension] | readonly [WhiteboardV1PresentationExtension, WhiteboardV1DrawPolicyExtension] | readonly [WhiteboardV1PresentationExtension, WhiteboardV1ViewExtension, WhiteboardV1DrawPolicyExtension];
276
+ export type WhiteboardV1DrawPolicy = "everyone" | "hosts" | "picked";
277
+ export type WhiteboardV1DrawGrant = {
278
+ readonly participant_id: string;
279
+ readonly can_draw: boolean;
245
280
  };
246
- export type WhiteboardV1Extensions = readonly [WhiteboardV1PresentationExtension] | readonly [WhiteboardV1PresentationExtension, WhiteboardV1ViewExtension];
247
281
  export type WhiteboardV1ViewOrigin = {
248
282
  readonly origin_participant_id: string;
249
283
  readonly origin_sequence: number;
@@ -253,6 +287,20 @@ export type WhiteboardV1ViewOrigin = {
253
287
  readonly origin_sequence?: never;
254
288
  readonly origin_epoch?: never;
255
289
  };
290
+ export type WhiteboardV1ViewInput = {
291
+ readonly input_id: string;
292
+ readonly move: boolean;
293
+ } | {
294
+ readonly input_id?: never;
295
+ readonly move?: never;
296
+ };
297
+ export type WhiteboardV1ViewOrder = {
298
+ readonly owner_id: string;
299
+ readonly owner_sequence: number;
300
+ } | {
301
+ readonly owner_id?: never;
302
+ readonly owner_sequence?: never;
303
+ };
256
304
  export type WhiteboardV1ClientFrame = {
257
305
  readonly type: "hello";
258
306
  readonly protocol: "whiteboard-v1";
@@ -297,6 +345,10 @@ export type WhiteboardV1ClientFrame = {
297
345
  readonly operation_id: string;
298
346
  readonly participant_id: string;
299
347
  readonly can_draw: boolean;
348
+ } | {
349
+ readonly type: "set_draw_policy";
350
+ readonly operation_id: string;
351
+ readonly policy: WhiteboardV1DrawPolicy;
300
352
  } | {
301
353
  readonly type: "set_presentation";
302
354
  readonly operation_id: string;
@@ -312,7 +364,7 @@ export type WhiteboardV1ClientFrame = {
312
364
  readonly width: number;
313
365
  readonly height: number;
314
366
  readonly bring: boolean;
315
- } & WhiteboardV1ViewOrigin) | {
367
+ } & WhiteboardV1ViewOrigin & WhiteboardV1ViewInput) | {
316
368
  readonly type: "ping";
317
369
  };
318
370
  export type WhiteboardV1ServerFrame = {
@@ -336,6 +388,7 @@ export type WhiteboardV1ServerFrame = {
336
388
  readonly revision: string;
337
389
  readonly can_draw: boolean;
338
390
  readonly presenting: boolean;
391
+ readonly view_owner_id?: string;
339
392
  } | {
340
393
  readonly type: "snapshot_page";
341
394
  readonly request_id: string;
@@ -383,10 +436,16 @@ export type WhiteboardV1ServerFrame = {
383
436
  readonly height: number;
384
437
  readonly bring: boolean;
385
438
  readonly occurred_at: string;
386
- } & WhiteboardV1ViewOrigin) | {
439
+ } & WhiteboardV1ViewOrigin & WhiteboardV1ViewOrder) | {
387
440
  readonly type: "permission_updated";
388
441
  readonly participant_id: string;
389
442
  readonly can_draw: boolean;
443
+ } | {
444
+ readonly type: "draw_access";
445
+ readonly policy: WhiteboardV1DrawPolicy;
446
+ readonly can_draw: boolean;
447
+ readonly capabilities: readonly ("drawWhiteboard" | "manageWhiteboard")[];
448
+ readonly grants: readonly WhiteboardV1DrawGrant[];
390
449
  } | {
391
450
  readonly type: "presentation_updated";
392
451
  readonly scene_id: string;
@@ -399,10 +458,13 @@ export type WhiteboardV1ServerFrame = {
399
458
  } | {
400
459
  readonly type: "operation_error";
401
460
  readonly correlation_id: string;
402
- readonly operation: "submit_update" | "request_snapshot" | "clear" | "set_draw_permission" | "set_presentation";
461
+ readonly operation: "submit_update" | "request_snapshot" | "clear" | "set_draw_permission" | "set_draw_policy" | "set_presentation";
403
462
  readonly code: "unavailable" | "permission_denied" | "invalid_payload" | "stale_scene" | "cursor_reset_required" | "rate_limited" | "overloaded" | "storage_unavailable";
404
463
  readonly recoverable: boolean;
405
464
  readonly message: string;
465
+ } | {
466
+ readonly type: "view_ack";
467
+ readonly input_id: string;
406
468
  } | {
407
469
  readonly type: "pong";
408
470
  };
package/dist/index.d.ts CHANGED
@@ -5,3 +5,4 @@ export * from "./space-client";
5
5
  export * from "./sync";
6
6
  export * from "./whiteboard";
7
7
  export * from "./public-invites";
8
+ export { formatSyncConnectDiagnostic } from "./sync/connect-diagnostics";
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@ import {
6
6
  ChalkWhiteboardV1Client,
7
7
  ChalkWhiteboardV1Error,
8
8
  ChalkWhiteboardViewBounds,
9
+ ChalkWhiteboardViewVersions,
9
10
  InMemoryChalkWhiteboardV1PendingOperationStore,
10
11
  SpaceClientError,
11
12
  createChalkChatFileHttpTransport,
@@ -14,18 +15,7 @@ import {
14
15
  createSpaceClient,
15
16
  decodeWhiteboardV1ServerFrame,
16
17
  encodeWhiteboardV1ClientFrame
17
- } from "./chunk-RJRSLXVT.js";
18
- import {
19
- createChalkPublicClient,
20
- createChalkPublicInviteClient
21
- } from "./chunk-KHHULLBZ.js";
22
- import {
23
- ArrivalInvalidHandleError,
24
- ArrivalUnavailableError,
25
- SpacePublicInviteUnavailableError,
26
- parseParsedAccessGrant,
27
- requireAccessGrant
28
- } from "./chunk-3ZN7IXOZ.js";
18
+ } from "./chunk-BCO3AZUB.js";
29
19
  import {
30
20
  CloudflareSFUClient,
31
21
  CloudflareSFUError,
@@ -39,6 +29,17 @@ import {
39
29
  validatePublicationSnapshot,
40
30
  waitFor
41
31
  } from "./chunk-DWKTGBHR.js";
32
+ import {
33
+ createChalkPublicClient,
34
+ createChalkPublicInviteClient
35
+ } from "./chunk-DHGAKJXP.js";
36
+ import {
37
+ ArrivalInvalidHandleError,
38
+ ArrivalUnavailableError,
39
+ SpacePublicInviteUnavailableError,
40
+ parseParsedAccessGrant,
41
+ requireAccessGrant
42
+ } from "./chunk-HO4745TX.js";
42
43
  import {
43
44
  AsyncStorageV1PendingTargetStore,
44
45
  InMemoryV1PendingTargetStore,
@@ -63,10 +64,11 @@ import {
63
64
  decodeV1ClientFrame,
64
65
  decodeV1ServerFrame,
65
66
  encodeV1ClientFrame,
67
+ formatSyncConnectDiagnostic,
66
68
  optimisticV1Control,
67
69
  reactionFromFrame,
68
70
  restoreV1Snapshot
69
- } from "./chunk-K7PNW3KI.js";
71
+ } from "./chunk-D2GXPX2P.js";
70
72
 
71
73
  // src/space-client/reload-rejoin.ts
72
74
  import { Schema } from "effect";
@@ -110,7 +112,7 @@ async function resumeReloadRejoin(marker, refresh) {
110
112
  }
111
113
  function reloadRejoinAccess(access) {
112
114
  const parsed = parseParsedAccessGrant(access);
113
- return { episodeId: parsed.subject.episodeId, participantId: parsed.subject.participantId, participantGeneration: parsed.subject.participantGeneration, mediaProof: parsed.media.token };
115
+ return { tenantId: parsed.subject.tenantId, episodeId: parsed.subject.episodeId, participantId: parsed.subject.participantId, participantGeneration: parsed.subject.participantGeneration, mediaProof: parsed.media.token };
114
116
  }
115
117
  export {
116
118
  ArrivalInvalidHandleError,
@@ -123,6 +125,7 @@ export {
123
125
  ChalkWhiteboardV1Client,
124
126
  ChalkWhiteboardV1Error,
125
127
  ChalkWhiteboardViewBounds,
128
+ ChalkWhiteboardViewVersions,
126
129
  CloudflareSFUClient,
127
130
  CloudflareSFUError,
128
131
  InMemoryChalkWhiteboardV1PendingOperationStore,
@@ -161,6 +164,7 @@ export {
161
164
  describeMediaCaptureError,
162
165
  encodeV1ClientFrame,
163
166
  encodeWhiteboardV1ClientFrame,
167
+ formatSyncConnectDiagnostic,
164
168
  optimisticV1Control,
165
169
  parseCloudflareSFUPublicationID,
166
170
  publicationKey,
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  createChalkPublicClient,
3
3
  createChalkPublicInviteClient
4
- } from "../chunk-KHHULLBZ.js";
4
+ } from "../chunk-DHGAKJXP.js";
5
5
  import {
6
6
  ArrivalInvalidHandleError,
7
7
  ArrivalUnavailableError,
8
8
  SpacePublicInviteUnavailableError
9
- } from "../chunk-3ZN7IXOZ.js";
9
+ } from "../chunk-HO4745TX.js";
10
10
  export {
11
11
  ArrivalInvalidHandleError,
12
12
  ArrivalUnavailableError,
@@ -20,4 +20,4 @@ export declare function readReloadRejoin(storage: Pick<Storage, "getItem" | "rem
20
20
  export declare function writeReloadRejoin(storage: Pick<Storage, "setItem">, marker: Omit<ReloadRejoinMarker, "version" | "expiresAt">, now?: number): void;
21
21
  /** Refuse a fresh Episode or Participant even if an integration returns a new grant. */
22
22
  export declare function resumeReloadRejoin(marker: ReloadRejoinMarker, refresh: () => Promise<unknown>): Promise<AccessGrant>;
23
- export declare function reloadRejoinAccess(access: unknown): Pick<ReloadRejoinMarker, "episodeId" | "participantId" | "participantGeneration" | "mediaProof">;
23
+ export declare function reloadRejoinAccess(access: unknown): Pick<ReloadRejoinMarker, "episodeId" | "participantId" | "participantGeneration" | "mediaProof" | "tenantId">;
@@ -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";
@@ -52,6 +52,7 @@ 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;
@@ -203,6 +204,12 @@ export type WhiteboardSlice = {
203
204
  readonly presenting: boolean;
204
205
  readonly error: ChalkWhiteboardV1Failure | null;
205
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
+ };
206
213
  };
207
214
  export type SpaceSnapshot = {
208
215
  readonly connection: ConnectionSlice;
@@ -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;
@@ -22,7 +22,7 @@ import {
22
22
  encodeV1ClientFrame,
23
23
  optimisticV1Control,
24
24
  restoreV1Snapshot
25
- } from "../chunk-K7PNW3KI.js";
25
+ } from "../chunk-D2GXPX2P.js";
26
26
  export {
27
27
  AsyncStorageV1PendingTargetStore,
28
28
  InMemoryV1PendingTargetStore,