@neta-art/cohub 12.4.0 → 12.6.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.
- package/README.md +17 -10
- package/dist/board/model/media-playback.d.ts +1 -0
- package/dist/board/replica/index.d.ts +3 -2
- package/dist/board/replica/index.js +15 -4
- package/dist/board/replica/indexeddb.js +14 -85
- package/dist/board/stage/assets.d.ts +3 -2
- package/dist/board/stage/assets.js +53 -21
- package/dist/board/stage/scene.js +11 -4
- package/dist/chunks/app-realtime.js +1 -1
- package/dist/chunks/environment.d.ts +88 -8
- package/dist/chunks/environment.js +4 -3
- package/dist/chunks/http-error.js +28 -5
- package/dist/chunks/http.d.ts +91 -15
- package/dist/chunks/http.js +696 -35
- package/dist/chunks/websocket.d.ts +9 -1
- package/dist/http.d.ts +2 -2
- package/dist/http.js +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.js +33 -4
- package/dist/indexeddb.js +79 -0
- package/dist/protocol/dist/board.d.ts +19 -1
- package/dist/protocol/dist/index.d.ts +2 -2
- package/dist/voice-input.js +1 -1
- package/dist/websocket.js +37 -5
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@ import { BoardFrame, BoardItemLookup, BoardLayout, BoardMatrix, BoardRect, Board
|
|
|
3
3
|
import { BoardApplyOptions, BoardPatchResult, BoardPropertySpec, BoardState, BoardValueKind, applyBoardDelta, applyBoardPatch, applyBoardPatchToDocument, boardPatchTouches, createDocumentState, diffBoardDocuments, diffMergePatch, isEmptyBoardPatch, listBoardProperties, mergePatch, parseBoardDocument, pruneBoardTrack, resolveBoardProperty, trackReferences } from "./board-patch.js";
|
|
4
4
|
import "./app-authorization.js";
|
|
5
5
|
import { RequestSource, RequestSourceVia } from "./provenance.js";
|
|
6
|
-
import { BOARD_CLIPBOARD_KIND, BOARD_CLIPBOARD_MIME, BoardApplyResult, BoardChangeSummary, BoardHistoryPage, BoardManifest, BoardManifestSchema, BoardPlaybackCommand, BoardPlaybackCommandSchema, BoardPlaybackSnapshot, BoardPlaybackStatus, BoardReadResult, BoardTransactionRecord, isBoardPath, parseBoardManifest, serializeBoardManifest } from "./board.js";
|
|
6
|
+
import { BOARD_CLIPBOARD_KIND, BOARD_CLIPBOARD_MIME, BoardApplyResult, BoardChangeSummary, BoardHistoryPage, BoardManifest, BoardManifestSchema, BoardPlaybackCommand, BoardPlaybackCommandSchema, BoardPlaybackSnapshot, BoardPlaybackStatus, BoardReadInput, BoardReadInputSchema, BoardReadResult, BoardTransactionRecord, isBoardPath, parseBoardManifest, serializeBoardManifest } from "./board.js";
|
|
7
7
|
import { BOARD_STROKE_MAX_SIZE, BOARD_STROKE_MIN_SIZE, clampBoardStrokeSize } from "./board-constants.js";
|
|
8
8
|
import "./board-content.js";
|
|
9
9
|
import "./board-assets.js";
|
|
@@ -24,4 +24,4 @@ import "./app.js";
|
|
|
24
24
|
import "./realtime/types.js";
|
|
25
25
|
import "./app-catalog.js";
|
|
26
26
|
import "./host-bridge.js";
|
|
27
|
-
export { BOARD_ANCHOR_SIDES, BOARD_ARROW_ROUTES, BOARD_CAMERA_TARGET, BOARD_CLIPBOARD_KIND, BOARD_CLIPBOARD_MIME, BOARD_COLOR_TOKENS, BOARD_DASHES, BOARD_DERIVED_SIZE_TYPES, BOARD_EFFECT_KINDS, BOARD_EFFECT_KIND_INFO, BOARD_ENTER_PRESETS, BOARD_EXTENSION_TYPE_PATTERN, BOARD_GRID_DEFAULT_SIZE, BOARD_GRID_MAX_SIZE, BOARD_GRID_MIN_SIZE, BOARD_ID_MAX_LENGTH, BOARD_ITEM_SCHEMAS, BOARD_ITEM_TYPES, BOARD_PLAY_MODES, BOARD_SCHEMA_TARGETS, BOARD_SHAPE_GEOMETRIES, BOARD_STROKE_MAX_SIZE, BOARD_STROKE_MIN_SIZE, BOARD_TASK_ARTIFACT_LIMIT, BOARD_TASK_SOURCE_PREFIX, BOARD_TEXT_ALIGNS, BoardAnchorSide, BoardAnimation, BoardAnimationHeader, BoardAnimationHeaderSchema, BoardAnimationSchema, BoardApplyOptions, BoardApplyResult, BoardArrowAnchor, BoardArrowAnchorSchema, BoardArrowBinding, BoardArrowBindingSchema, BoardArrowEnd, BoardArrowEndSchema, BoardArrowItem, BoardArrowItemSchema, BoardArrowRoute, BoardAudioItem, BoardAudioItemSchema, BoardBackgroundSchema, BoardBuiltinItem, BoardBuiltinItemType, BoardChangeSummary, BoardColor, BoardColorSchema, BoardColorToken, BoardCropSchema, BoardCustomItem, BoardCustomItemSchema, BoardDash, BoardDelta, BoardDiagnostic, BoardDocument, BoardDrawItem, BoardDrawItemSchema, BoardDrawPoint, BoardDrawPointSchema, BoardEaseSchema, BoardEffectItem, BoardEffectItemSchema, BoardEffectKind, BoardEnterPreset, BoardExtensionItem, BoardExtensionItemSchema, BoardFileBackedItem, BoardFileItem, BoardFileItemSchema, BoardFrame, BoardFrameItem, BoardFrameItemSchema, BoardHistoryPage, BoardIdSchema, BoardImageItem, BoardImageItemSchema, BoardItem, BoardItemLookup, BoardItemPreview, BoardItemPreviewSchema, BoardItemType, BoardJsonSchemaResult, BoardKeySchema, BoardKeyframe, BoardKeyframeSchema, BoardLayout, BoardManifest, BoardManifestSchema, BoardMarker, BoardMarkerSchema, BoardMatrix, BoardMediaOrigin, BoardMediaOriginSchema, BoardMediaSnapshot, BoardMediaSnapshotSchema, BoardMediaSource, BoardMediaSourceSchema, BoardPatch, BoardPatchResult, BoardPatchSchema, BoardPlayMode, BoardPlaybackCommand, BoardPlaybackCommandSchema, BoardPlaybackSnapshot, BoardPlaybackStatus, BoardPropertySpec, BoardReadResult, BoardRect, BoardScript, BoardScriptSchema, BoardSettings, BoardSettingsSchema, BoardShapeGeometry, BoardShapeItem, BoardShapeItemSchema, BoardSize, BoardSizeSchema, BoardState, BoardStyle, BoardStyleSchema, BoardTaskArtifact, BoardTaskArtifactSchema, BoardTaskItem, BoardTaskItemSchema, BoardTaskRunSource, BoardTaskSnapshot, BoardTaskSnapshotSchema, BoardTextFont, BoardTextItem, BoardTextItemSchema, BoardTextLayout, BoardTextLayouter, BoardTextLines, BoardTrack, BoardTrackSchema, BoardTransactionRecord, BoardValueKind, BoardVec2, BoardVec2Schema, BoardVideoItem, BoardVideoItemSchema, GenerationRunPayload, IDENTITY_MATRIX, ModelFormat, RequestSource, RequestSourceVia, TaskRunStatus, adoptBoardNaturalSize, anchorPoint, applyBoardDelta, applyBoardPatch, applyBoardPatchToDocument, applyMatrix, arrowBindings, autoAnchorSide, bendControl, boardItemPreview, boardItemSchema, boardJsonSchema, boardPatchTouches, boardSchemaOverview, boardTaskSource, clampBoardFontSize, clampBoardStrokeSize, createBoardLayout, createDocumentLayout, createDocumentState, diffBoardDocuments, diffMergePatch, drawPointsBounds, drawSampleRadius, emptyBoardDocument, estimateTextWidth, featuredTaskArtifact, fitBoardMediaSize, framePoint, hasAuthoredSize, invertMatrix, isArrowBinding, isBoardColorString, isBoardEase, isBoardPath, isBuiltinItem, isBuiltinItemType, isEmptyBoardDelta, isEmptyBoardPatch, isFileBackedItem, isMediaItem, isPublicBoardRemoteAddress, isSafeBoardSourcePath, layoutBoardText, listBoardProperties, mergePatch, multiplyMatrix, normalizeBoardRemoteUrl, parseBoardDocument, parseBoardItem, parseBoardManifest, parseBoardMediaSource, pointsRect, pruneBoardTrack, rankedTaskArtifacts, resolveBoardProperty, rotateAround, scaleVector, serializeBoardManifest, setBoardTextLayouter, sideAnchor, taskArtifactPreviewUrl, taskArtifacts, taskRunArtifacts, taskRunToBoardTaskSnapshot, trackReferences, withObservedArtifactFacts };
|
|
27
|
+
export { BOARD_ANCHOR_SIDES, BOARD_ARROW_ROUTES, BOARD_CAMERA_TARGET, BOARD_CLIPBOARD_KIND, BOARD_CLIPBOARD_MIME, BOARD_COLOR_TOKENS, BOARD_DASHES, BOARD_DERIVED_SIZE_TYPES, BOARD_EFFECT_KINDS, BOARD_EFFECT_KIND_INFO, BOARD_ENTER_PRESETS, BOARD_EXTENSION_TYPE_PATTERN, BOARD_GRID_DEFAULT_SIZE, BOARD_GRID_MAX_SIZE, BOARD_GRID_MIN_SIZE, BOARD_ID_MAX_LENGTH, BOARD_ITEM_SCHEMAS, BOARD_ITEM_TYPES, BOARD_PLAY_MODES, BOARD_SCHEMA_TARGETS, BOARD_SHAPE_GEOMETRIES, BOARD_STROKE_MAX_SIZE, BOARD_STROKE_MIN_SIZE, BOARD_TASK_ARTIFACT_LIMIT, BOARD_TASK_SOURCE_PREFIX, BOARD_TEXT_ALIGNS, BoardAnchorSide, BoardAnimation, BoardAnimationHeader, BoardAnimationHeaderSchema, BoardAnimationSchema, BoardApplyOptions, BoardApplyResult, BoardArrowAnchor, BoardArrowAnchorSchema, BoardArrowBinding, BoardArrowBindingSchema, BoardArrowEnd, BoardArrowEndSchema, BoardArrowItem, BoardArrowItemSchema, BoardArrowRoute, BoardAudioItem, BoardAudioItemSchema, BoardBackgroundSchema, BoardBuiltinItem, BoardBuiltinItemType, BoardChangeSummary, BoardColor, BoardColorSchema, BoardColorToken, BoardCropSchema, BoardCustomItem, BoardCustomItemSchema, BoardDash, BoardDelta, BoardDiagnostic, BoardDocument, BoardDrawItem, BoardDrawItemSchema, BoardDrawPoint, BoardDrawPointSchema, BoardEaseSchema, BoardEffectItem, BoardEffectItemSchema, BoardEffectKind, BoardEnterPreset, BoardExtensionItem, BoardExtensionItemSchema, BoardFileBackedItem, BoardFileItem, BoardFileItemSchema, BoardFrame, BoardFrameItem, BoardFrameItemSchema, BoardHistoryPage, BoardIdSchema, BoardImageItem, BoardImageItemSchema, BoardItem, BoardItemLookup, BoardItemPreview, BoardItemPreviewSchema, BoardItemType, BoardJsonSchemaResult, BoardKeySchema, BoardKeyframe, BoardKeyframeSchema, BoardLayout, BoardManifest, BoardManifestSchema, BoardMarker, BoardMarkerSchema, BoardMatrix, BoardMediaOrigin, BoardMediaOriginSchema, BoardMediaSnapshot, BoardMediaSnapshotSchema, BoardMediaSource, BoardMediaSourceSchema, BoardPatch, BoardPatchResult, BoardPatchSchema, BoardPlayMode, BoardPlaybackCommand, BoardPlaybackCommandSchema, BoardPlaybackSnapshot, BoardPlaybackStatus, BoardPropertySpec, BoardReadInput, BoardReadInputSchema, BoardReadResult, BoardRect, BoardScript, BoardScriptSchema, BoardSettings, BoardSettingsSchema, BoardShapeGeometry, BoardShapeItem, BoardShapeItemSchema, BoardSize, BoardSizeSchema, BoardState, BoardStyle, BoardStyleSchema, BoardTaskArtifact, BoardTaskArtifactSchema, BoardTaskItem, BoardTaskItemSchema, BoardTaskRunSource, BoardTaskSnapshot, BoardTaskSnapshotSchema, BoardTextFont, BoardTextItem, BoardTextItemSchema, BoardTextLayout, BoardTextLayouter, BoardTextLines, BoardTrack, BoardTrackSchema, BoardTransactionRecord, BoardValueKind, BoardVec2, BoardVec2Schema, BoardVideoItem, BoardVideoItemSchema, GenerationRunPayload, IDENTITY_MATRIX, ModelFormat, RequestSource, RequestSourceVia, TaskRunStatus, adoptBoardNaturalSize, anchorPoint, applyBoardDelta, applyBoardPatch, applyBoardPatchToDocument, applyMatrix, arrowBindings, autoAnchorSide, bendControl, boardItemPreview, boardItemSchema, boardJsonSchema, boardPatchTouches, boardSchemaOverview, boardTaskSource, clampBoardFontSize, clampBoardStrokeSize, createBoardLayout, createDocumentLayout, createDocumentState, diffBoardDocuments, diffMergePatch, drawPointsBounds, drawSampleRadius, emptyBoardDocument, estimateTextWidth, featuredTaskArtifact, fitBoardMediaSize, framePoint, hasAuthoredSize, invertMatrix, isArrowBinding, isBoardColorString, isBoardEase, isBoardPath, isBuiltinItem, isBuiltinItemType, isEmptyBoardDelta, isEmptyBoardPatch, isFileBackedItem, isMediaItem, isPublicBoardRemoteAddress, isSafeBoardSourcePath, layoutBoardText, listBoardProperties, mergePatch, multiplyMatrix, normalizeBoardRemoteUrl, parseBoardDocument, parseBoardItem, parseBoardManifest, parseBoardMediaSource, pointsRect, pruneBoardTrack, rankedTaskArtifacts, resolveBoardProperty, rotateAround, scaleVector, serializeBoardManifest, setBoardTextLayouter, sideAnchor, taskArtifactPreviewUrl, taskArtifacts, taskRunArtifacts, taskRunToBoardTaskSnapshot, trackReferences, withObservedArtifactFacts };
|
package/dist/voice-input.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { d as resolveVoiceInputWebsocketUrl } from "./chunks/environment.js";
|
|
2
2
|
//#region src/voice-input.ts
|
|
3
3
|
const TARGET_SAMPLE_RATE = 16e3;
|
|
4
4
|
const CHUNK_SAMPLES = TARGET_SAMPLE_RATE * 200 / 1e3;
|
package/dist/websocket.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { C as getSessionTurnPatchStreamKey, S as getRealtimeSpaceRoom, T as normalizeRealtimeRooms, _ as WS_REALTIME_ROOM_CAPABILITY, b as WS_ROOM_SUBSCRIPTION_CAPABILITY, g as WS_COMPACT_STREAM_CAPABILITY, h as WS_BOARD_AWARENESS_CAPABILITY, r as extractBillingPayload, v as WS_REALTIME_ROOM_HISTORY_CAPABILITY, w as isRealtimeDomain } from "./chunks/http-error.js";
|
|
2
|
-
import {
|
|
2
|
+
import { p as resolveWebsocketUrl } from "./chunks/environment.js";
|
|
3
3
|
//#region src/websocket.ts
|
|
4
4
|
const createEventMap = () => ({
|
|
5
5
|
connecting: /* @__PURE__ */ new Set(),
|
|
@@ -109,12 +109,15 @@ var WebsocketClient = class {
|
|
|
109
109
|
pongTimeoutMs;
|
|
110
110
|
debug;
|
|
111
111
|
getAccessToken;
|
|
112
|
+
anonymous;
|
|
112
113
|
WebSocketImpl;
|
|
113
114
|
ws = null;
|
|
114
115
|
pingTimer = null;
|
|
115
116
|
reconnectTimer = null;
|
|
116
117
|
reconnectTimerResolver = null;
|
|
117
118
|
reconnectAttempt = 0;
|
|
119
|
+
resubscribeTimer = null;
|
|
120
|
+
resubscribeAttempt = 0;
|
|
118
121
|
authReconnectAttempted = false;
|
|
119
122
|
forceRefreshOnNextAuth = false;
|
|
120
123
|
retryAuthClose = false;
|
|
@@ -146,6 +149,7 @@ var WebsocketClient = class {
|
|
|
146
149
|
this.pongTimeoutMs = normalized.pongTimeoutMs;
|
|
147
150
|
this.debug = normalized.debug;
|
|
148
151
|
this.getAccessToken = options.getAccessToken;
|
|
152
|
+
this.anonymous = options.anonymous === true;
|
|
149
153
|
this.WebSocketImpl = options.WebSocketImpl ?? WebSocket;
|
|
150
154
|
}
|
|
151
155
|
on(type, handler) {
|
|
@@ -481,6 +485,9 @@ var WebsocketClient = class {
|
|
|
481
485
|
});
|
|
482
486
|
};
|
|
483
487
|
}
|
|
488
|
+
isRoomLive(room) {
|
|
489
|
+
return this.state === "open" && this.roomSubscriptions.get(room)?.subscribed === true;
|
|
490
|
+
}
|
|
484
491
|
subscribeRooms(rooms) {
|
|
485
492
|
return this.retainRooms(rooms);
|
|
486
493
|
}
|
|
@@ -518,11 +525,11 @@ var WebsocketClient = class {
|
|
|
518
525
|
const forceRefresh = this.forceRefreshOnNextAuth;
|
|
519
526
|
this.forceRefreshOnNextAuth = false;
|
|
520
527
|
const token = this.getAccessToken ? await this.getAccessToken(forceRefresh ? { forceRefresh: true } : void 0) : null;
|
|
521
|
-
if (!token) throw new WebsocketAuthError("missing access token");
|
|
528
|
+
if (!token && !this.anonymous) throw new WebsocketAuthError("missing access token");
|
|
522
529
|
const waiter = this.createAuthWaiter();
|
|
523
530
|
this.send({
|
|
524
531
|
type: "auth",
|
|
525
|
-
payload: {
|
|
532
|
+
payload: token ? {
|
|
526
533
|
token,
|
|
527
534
|
capabilities: [
|
|
528
535
|
WS_COMPACT_STREAM_CAPABILITY,
|
|
@@ -531,6 +538,9 @@ var WebsocketClient = class {
|
|
|
531
538
|
WS_REALTIME_ROOM_CAPABILITY,
|
|
532
539
|
WS_REALTIME_ROOM_HISTORY_CAPABILITY
|
|
533
540
|
]
|
|
541
|
+
} : {
|
|
542
|
+
anonymous: true,
|
|
543
|
+
capabilities: [WS_ROOM_SUBSCRIPTION_CAPABILITY]
|
|
534
544
|
}
|
|
535
545
|
});
|
|
536
546
|
await waiter.promise;
|
|
@@ -554,6 +564,8 @@ var WebsocketClient = class {
|
|
|
554
564
|
this.flushRoomSubscriptions();
|
|
555
565
|
}
|
|
556
566
|
resetRoomSubscriptions() {
|
|
567
|
+
if (this.resubscribeTimer) clearTimeout(this.resubscribeTimer);
|
|
568
|
+
this.resubscribeTimer = null;
|
|
557
569
|
for (const state of this.roomSubscriptions.values()) {
|
|
558
570
|
state.subscribed = false;
|
|
559
571
|
state.pending = false;
|
|
@@ -633,6 +645,7 @@ var WebsocketClient = class {
|
|
|
633
645
|
this.emit("auth", {
|
|
634
646
|
connectionId,
|
|
635
647
|
user,
|
|
648
|
+
anonymous: envelope.payload.anonymous === true,
|
|
636
649
|
capabilities
|
|
637
650
|
});
|
|
638
651
|
}
|
|
@@ -703,6 +716,7 @@ var WebsocketClient = class {
|
|
|
703
716
|
state.pending = false;
|
|
704
717
|
}
|
|
705
718
|
}
|
|
719
|
+
if (rooms.length > 0) this.resubscribeAttempt = 0;
|
|
706
720
|
this.emit("subscribed", {
|
|
707
721
|
rooms,
|
|
708
722
|
requestId: envelope.requestId ?? null
|
|
@@ -717,11 +731,18 @@ var WebsocketClient = class {
|
|
|
717
731
|
code: typeof entry.code === "string" ? entry.code : "UNKNOWN",
|
|
718
732
|
message: typeof entry.message === "string" ? entry.message : "Subscription failed"
|
|
719
733
|
})).filter((entry) => entry.room) : [];
|
|
734
|
+
let retry = false;
|
|
720
735
|
for (const item of rejected) {
|
|
721
736
|
const room = normalizeRealtimeRooms([item.room])[0];
|
|
722
737
|
if (!room) continue;
|
|
723
|
-
this.roomSubscriptions.
|
|
738
|
+
const state = this.roomSubscriptions.get(room);
|
|
739
|
+
if (state && item.code === "UNAVAILABLE") {
|
|
740
|
+
state.subscribed = false;
|
|
741
|
+
state.pending = false;
|
|
742
|
+
retry = true;
|
|
743
|
+
} else this.roomSubscriptions.delete(room);
|
|
724
744
|
}
|
|
745
|
+
if (retry) this.scheduleResubscribe();
|
|
725
746
|
this.emit("subscribeError", {
|
|
726
747
|
rejected,
|
|
727
748
|
requestId: envelope.requestId ?? null
|
|
@@ -900,10 +921,21 @@ var WebsocketClient = class {
|
|
|
900
921
|
resolve();
|
|
901
922
|
}
|
|
902
923
|
}
|
|
924
|
+
backoff(attempt) {
|
|
925
|
+
return Math.min(this.reconnectBaseDelayMs * 2 ** attempt, this.reconnectMaxDelayMs);
|
|
926
|
+
}
|
|
927
|
+
scheduleResubscribe() {
|
|
928
|
+
if (this.resubscribeTimer) return;
|
|
929
|
+
this.resubscribeTimer = setTimeout(() => {
|
|
930
|
+
this.resubscribeTimer = null;
|
|
931
|
+
this.flushRoomSubscriptions();
|
|
932
|
+
}, this.backoff(this.resubscribeAttempt));
|
|
933
|
+
this.resubscribeAttempt += 1;
|
|
934
|
+
}
|
|
903
935
|
async scheduleReconnect(code, reason) {
|
|
904
936
|
this.clearReconnectTimer();
|
|
905
937
|
const attempt = this.reconnectAttempt + 1;
|
|
906
|
-
const delay =
|
|
938
|
+
const delay = this.backoff(this.reconnectAttempt);
|
|
907
939
|
this.reconnectAttempt = attempt;
|
|
908
940
|
this.state = "reconnecting";
|
|
909
941
|
this.log("schedule reconnect", {
|