@soulcraft/sdk 2.0.1 → 2.1.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/dist/client/index.d.ts +5 -38
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +5 -47
- package/dist/client/index.js.map +1 -1
- package/dist/client/namespace-proxy.d.ts +3 -4
- package/dist/client/namespace-proxy.d.ts.map +1 -1
- package/dist/client/namespace-proxy.js +3 -4
- package/dist/client/namespace-proxy.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/modules/hall/admin.d.ts +39 -0
- package/dist/modules/hall/admin.d.ts.map +1 -0
- package/dist/modules/hall/admin.js +115 -0
- package/dist/modules/hall/admin.js.map +1 -0
- package/dist/modules/hall/browser.d.ts +83 -27
- package/dist/modules/hall/browser.d.ts.map +1 -1
- package/dist/modules/hall/browser.js +238 -49
- package/dist/modules/hall/browser.js.map +1 -1
- package/dist/modules/hall/media.d.ts +164 -0
- package/dist/modules/hall/media.d.ts.map +1 -0
- package/dist/modules/hall/media.js +182 -0
- package/dist/modules/hall/media.js.map +1 -0
- package/dist/modules/hall/server.d.ts +119 -6
- package/dist/modules/hall/server.d.ts.map +1 -1
- package/dist/modules/hall/server.js +299 -9
- package/dist/modules/hall/server.js.map +1 -1
- package/dist/modules/hall/types.d.ts +705 -25
- package/dist/modules/hall/types.d.ts.map +1 -1
- package/dist/modules/hall/types.js +12 -7
- package/dist/modules/hall/types.js.map +1 -1
- package/dist/server/hall-handlers.d.ts +60 -14
- package/dist/server/hall-handlers.d.ts.map +1 -1
- package/dist/server/hall-handlers.js +61 -12
- package/dist/server/hall-handlers.js.map +1 -1
- package/dist/server/hono-router.d.ts +2 -9
- package/dist/server/hono-router.d.ts.map +1 -1
- package/dist/server/hono-router.js +2 -46
- package/dist/server/hono-router.js.map +1 -1
- package/dist/server/index.d.ts +4 -19
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +10 -29
- package/dist/server/index.js.map +1 -1
- package/dist/types.d.ts +2 -41
- package/dist/types.d.ts.map +1 -1
- package/docs/ADR-005-hall-integration.md +449 -0
- package/package.json +1 -1
- package/dist/client/create-client-sdk.d.ts +0 -113
- package/dist/client/create-client-sdk.d.ts.map +0 -1
- package/dist/client/create-client-sdk.js +0 -169
- package/dist/client/create-client-sdk.js.map +0 -1
- package/dist/modules/app-context/index.d.ts +0 -214
- package/dist/modules/app-context/index.d.ts.map +0 -1
- package/dist/modules/app-context/index.js +0 -569
- package/dist/modules/app-context/index.js.map +0 -1
- package/dist/modules/billing/firestore-provider.d.ts +0 -60
- package/dist/modules/billing/firestore-provider.d.ts.map +0 -1
- package/dist/modules/billing/firestore-provider.js +0 -315
- package/dist/modules/billing/firestore-provider.js.map +0 -1
- package/dist/modules/brainy/proxy.d.ts +0 -48
- package/dist/modules/brainy/proxy.d.ts.map +0 -1
- package/dist/modules/brainy/proxy.js +0 -95
- package/dist/modules/brainy/proxy.js.map +0 -1
- package/dist/server/create-sdk.d.ts +0 -74
- package/dist/server/create-sdk.d.ts.map +0 -1
- package/dist/server/create-sdk.js +0 -104
- package/dist/server/create-sdk.js.map +0 -1
- package/dist/server/from-license.d.ts +0 -252
- package/dist/server/from-license.d.ts.map +0 -1
- package/dist/server/from-license.js +0 -349
- package/dist/server/from-license.js.map +0 -1
- package/dist/server/handlers.d.ts +0 -312
- package/dist/server/handlers.d.ts.map +0 -1
- package/dist/server/handlers.js +0 -376
- package/dist/server/handlers.js.map +0 -1
- package/dist/server/postmessage-handler.d.ts +0 -152
- package/dist/server/postmessage-handler.d.ts.map +0 -1
- package/dist/server/postmessage-handler.js +0 -138
- package/dist/server/postmessage-handler.js.map +0 -1
- package/dist/transports/http.d.ts +0 -86
- package/dist/transports/http.d.ts.map +0 -1
- package/dist/transports/http.js +0 -137
- package/dist/transports/http.js.map +0 -1
- package/dist/transports/postmessage.d.ts +0 -159
- package/dist/transports/postmessage.d.ts.map +0 -1
- package/dist/transports/postmessage.js +0 -207
- package/dist/transports/postmessage.js.map +0 -1
- package/dist/transports/workshop.d.ts +0 -173
- package/dist/transports/workshop.d.ts.map +0 -1
- package/dist/transports/workshop.js +0 -307
- package/dist/transports/workshop.js.map +0 -1
package/dist/client/index.d.ts
CHANGED
|
@@ -3,8 +3,6 @@
|
|
|
3
3
|
* @description Browser/client entry point for @soulcraft/sdk. Exports everything needed
|
|
4
4
|
* for kit apps running in a browser context to connect to a Soulcraft product backend.
|
|
5
5
|
*
|
|
6
|
-
* ## SDK 2.0 — Namespace-aware transports (recommended)
|
|
7
|
-
*
|
|
8
6
|
* Use `createSoulcraftProxy()` with a namespace-aware transport for full access to
|
|
9
7
|
* all 25 SDK namespaces (brainy, chat, graph, search, ai, media, realtime, etc.).
|
|
10
8
|
*
|
|
@@ -12,16 +10,7 @@
|
|
|
12
10
|
* - {@link PostMessageRpcTransport} — `soulcraft:request` PostMessage. WebContainer iframes.
|
|
13
11
|
* - {@link WsTransport} — MessagePack binary over WebSocket. Real-time, bidirectional.
|
|
14
12
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* These transports only support the `brainy` namespace. They still work for backward
|
|
18
|
-
* compatibility but should be migrated to the namespace-aware transports above.
|
|
19
|
-
*
|
|
20
|
-
* - `LegacyHttpTransport` — `/api/brainy/rpc` only.
|
|
21
|
-
* - `LegacyPostMessageTransport` — `brainy:request` only.
|
|
22
|
-
* - `WorkshopTransport` — `workshop:request` non-brainy relay (superseded by PostMessageRpcTransport).
|
|
23
|
-
*
|
|
24
|
-
* @example SDK 2.0 — full namespace access
|
|
13
|
+
* @example Full namespace access via HTTP
|
|
25
14
|
* ```typescript
|
|
26
15
|
* import { createSoulcraftProxy, HttpRpcTransport } from '@soulcraft/sdk/client'
|
|
27
16
|
*
|
|
@@ -30,7 +19,7 @@
|
|
|
30
19
|
* const graph = await sdk.graph.getData()
|
|
31
20
|
* ```
|
|
32
21
|
*
|
|
33
|
-
* @example
|
|
22
|
+
* @example PostMessage in WebContainer iframe
|
|
34
23
|
* ```typescript
|
|
35
24
|
* import { createSoulcraftProxy, PostMessageRpcTransport } from '@soulcraft/sdk/client'
|
|
36
25
|
*
|
|
@@ -45,36 +34,14 @@ export { createSoulcraftProxy } from './namespace-proxy.js';
|
|
|
45
34
|
export type { NamespaceTransport } from './namespace-proxy.js';
|
|
46
35
|
export { HttpNamespaceTransport, PostMessageNamespaceTransport, HttpRpcTransport, PostMessageRpcTransport, } from '../transports/http-namespace.js';
|
|
47
36
|
export type { HttpNamespaceTransportOptions } from '../transports/http-namespace.js';
|
|
48
|
-
export { createClientSDK } from './create-client-sdk.js';
|
|
49
|
-
/**
|
|
50
|
-
* @deprecated Use {@link HttpRpcTransport} for full namespace support.
|
|
51
|
-
* This transport only supports the `brainy` namespace at `/api/brainy/rpc`.
|
|
52
|
-
*/
|
|
53
|
-
export { HttpTransport as LegacyHttpTransport } from '../transports/http.js';
|
|
54
|
-
/**
|
|
55
|
-
* @deprecated Use {@link PostMessageRpcTransport} for full namespace support.
|
|
56
|
-
* This transport only supports `brainy:request` / `brainy:response`.
|
|
57
|
-
*/
|
|
58
|
-
export { PostMessageTransport as LegacyPostMessageTransport } from '../transports/postmessage.js';
|
|
59
37
|
export { WsTransport } from '../transports/ws.js';
|
|
60
38
|
export { SseTransport } from '../transports/sse.js';
|
|
61
|
-
export type { PostMessageRequest, PostMessageResponse } from '../transports/postmessage.js';
|
|
62
|
-
export type { SDKTransport } from '../transports/transport.js';
|
|
63
|
-
/** @deprecated Use `createSoulcraftProxy()` for full namespace access. */
|
|
64
|
-
export { createBrainyProxy } from '../modules/brainy/proxy.js';
|
|
65
|
-
/** @deprecated Use `createSoulcraftProxy()` for full namespace access. */
|
|
66
|
-
export { createAppContext } from '../modules/app-context/index.js';
|
|
67
|
-
export type { CreateAppContextOptions, AppContext } from '../modules/app-context/index.js';
|
|
68
|
-
/** @deprecated Use {@link PostMessageRpcTransport} which handles all namespaces. */
|
|
69
|
-
export { WorkshopTransport } from '../transports/workshop.js';
|
|
70
|
-
export type { WorkshopRequest, WorkshopResponse, WorkshopStreamChunk, } from '../transports/workshop.js';
|
|
71
39
|
export { createYjsProvider } from '../transports/yjs-provider.js';
|
|
72
40
|
export type { YjsProvider } from '../transports/yjs-provider.js';
|
|
73
|
-
export { joinHallRoom } from '../modules/hall/browser.js';
|
|
74
|
-
export type { JoinHallRoomOptions } from '../modules/hall/browser.js';
|
|
75
|
-
export type { HallRoomHandle, HallRoomHandleEvents, TranscriptEvent, ConceptMentionEvent, RelationProposedEvent, SpeakerChangedEvent, PeerJoinedEvent, PeerLeftEvent, RoomOptions, RecordingManifest, ConceptInput, } from '../modules/hall/types.js';
|
|
41
|
+
export { joinHallRoom, joinHallPubsub, getWhepUrl, getHlsUrl } from '../modules/hall/browser.js';
|
|
42
|
+
export type { JoinHallRoomOptions, JoinHallPubsubOptions } from '../modules/hall/browser.js';
|
|
43
|
+
export type { HallRoomHandle, HallRoomHandleEvents, HallPubsubHandle, HallPubsubHandleEvents, HallPeerRole, RoleChangedEvent, TranscriptEvent, ConceptMentionEvent, RelationProposedEvent, SpeakerChangedEvent, PeerJoinedEvent, PeerLeftEvent, RoomOptions, RecordingManifest, ConceptInput, TopicSubscribedEvent, TopicUnsubscribedEvent, TopicMessageEvent, PresenceUpdateEvent, PresenceEntry, PresenceSnapshotEvent, ReplayEntry, } from '../modules/hall/types.js';
|
|
76
44
|
export type { SoulcraftSDK } from '../types.js';
|
|
77
|
-
export type { ClientSDKOptions } from '../types.js';
|
|
78
45
|
export type { SoulcraftNamespaces } from '../namespaces.js';
|
|
79
46
|
export type { SoulcraftBrainy } from '../modules/brainy/types.js';
|
|
80
47
|
export type { BrainyChangeEvent } from '../modules/brainy/events.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAG9D,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,iCAAiC,CAAA;AACxC,YAAY,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAGpF,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,YAAY,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAGhE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAChG,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAC5F,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,qBAAqB,EACrB,WAAW,GACZ,MAAM,0BAA0B,CAAA;AAGjC,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACjE,YAAY,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,sBAAsB,GACvB,MAAM,6BAA6B,CAAA"}
|
package/dist/client/index.js
CHANGED
|
@@ -3,8 +3,6 @@
|
|
|
3
3
|
* @description Browser/client entry point for @soulcraft/sdk. Exports everything needed
|
|
4
4
|
* for kit apps running in a browser context to connect to a Soulcraft product backend.
|
|
5
5
|
*
|
|
6
|
-
* ## SDK 2.0 — Namespace-aware transports (recommended)
|
|
7
|
-
*
|
|
8
6
|
* Use `createSoulcraftProxy()` with a namespace-aware transport for full access to
|
|
9
7
|
* all 25 SDK namespaces (brainy, chat, graph, search, ai, media, realtime, etc.).
|
|
10
8
|
*
|
|
@@ -12,16 +10,7 @@
|
|
|
12
10
|
* - {@link PostMessageRpcTransport} — `soulcraft:request` PostMessage. WebContainer iframes.
|
|
13
11
|
* - {@link WsTransport} — MessagePack binary over WebSocket. Real-time, bidirectional.
|
|
14
12
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* These transports only support the `brainy` namespace. They still work for backward
|
|
18
|
-
* compatibility but should be migrated to the namespace-aware transports above.
|
|
19
|
-
*
|
|
20
|
-
* - `LegacyHttpTransport` — `/api/brainy/rpc` only.
|
|
21
|
-
* - `LegacyPostMessageTransport` — `brainy:request` only.
|
|
22
|
-
* - `WorkshopTransport` — `workshop:request` non-brainy relay (superseded by PostMessageRpcTransport).
|
|
23
|
-
*
|
|
24
|
-
* @example SDK 2.0 — full namespace access
|
|
13
|
+
* @example Full namespace access via HTTP
|
|
25
14
|
* ```typescript
|
|
26
15
|
* import { createSoulcraftProxy, HttpRpcTransport } from '@soulcraft/sdk/client'
|
|
27
16
|
*
|
|
@@ -30,7 +19,7 @@
|
|
|
30
19
|
* const graph = await sdk.graph.getData()
|
|
31
20
|
* ```
|
|
32
21
|
*
|
|
33
|
-
* @example
|
|
22
|
+
* @example PostMessage in WebContainer iframe
|
|
34
23
|
* ```typescript
|
|
35
24
|
* import { createSoulcraftProxy, PostMessageRpcTransport } from '@soulcraft/sdk/client'
|
|
36
25
|
*
|
|
@@ -41,47 +30,16 @@
|
|
|
41
30
|
* }
|
|
42
31
|
* ```
|
|
43
32
|
*/
|
|
44
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
45
|
-
// SDK 2.0 — Namespace proxy + transports (recommended)
|
|
46
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
47
33
|
// ── Namespace proxy factory ─────────────────────────────────────────────────
|
|
48
34
|
export { createSoulcraftProxy } from './namespace-proxy.js';
|
|
49
35
|
// ── Namespace-aware transports ──────────────────────────────────────────────
|
|
50
36
|
export { HttpNamespaceTransport, PostMessageNamespaceTransport, HttpRpcTransport, PostMessageRpcTransport, } from '../transports/http-namespace.js';
|
|
51
|
-
//
|
|
52
|
-
// Legacy — Brainy-only transports + factories (deprecated in SDK 2.0)
|
|
53
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
54
|
-
// ── Client SDK factory (creates brainy-only SDK) ────────────────────────────
|
|
55
|
-
export { createClientSDK } from './create-client-sdk.js';
|
|
56
|
-
// ── Brainy-only transports ──────────────────────────────────────────────────
|
|
57
|
-
/**
|
|
58
|
-
* @deprecated Use {@link HttpRpcTransport} for full namespace support.
|
|
59
|
-
* This transport only supports the `brainy` namespace at `/api/brainy/rpc`.
|
|
60
|
-
*/
|
|
61
|
-
export { HttpTransport as LegacyHttpTransport } from '../transports/http.js';
|
|
62
|
-
/**
|
|
63
|
-
* @deprecated Use {@link PostMessageRpcTransport} for full namespace support.
|
|
64
|
-
* This transport only supports `brainy:request` / `brainy:response`.
|
|
65
|
-
*/
|
|
66
|
-
export { PostMessageTransport as LegacyPostMessageTransport } from '../transports/postmessage.js';
|
|
67
|
-
// Keep WsTransport and SseTransport — they'll be extended for namespace support.
|
|
37
|
+
// ── Real-time transports ────────────────────────────────────────────────────
|
|
68
38
|
export { WsTransport } from '../transports/ws.js';
|
|
69
39
|
export { SseTransport } from '../transports/sse.js';
|
|
70
|
-
// ── Brainy proxy factory (brainy-only) ──────────────────────────────────────
|
|
71
|
-
/** @deprecated Use `createSoulcraftProxy()` for full namespace access. */
|
|
72
|
-
export { createBrainyProxy } from '../modules/brainy/proxy.js';
|
|
73
|
-
// ── App context factory ─────────────────────────────────────────────────────
|
|
74
|
-
/** @deprecated Use `createSoulcraftProxy()` for full namespace access. */
|
|
75
|
-
export { createAppContext } from '../modules/app-context/index.js';
|
|
76
|
-
// ── Workshop transport (superseded by PostMessageRpcTransport) ──────────────
|
|
77
|
-
/** @deprecated Use {@link PostMessageRpcTransport} which handles all namespaces. */
|
|
78
|
-
export { WorkshopTransport } from '../transports/workshop.js';
|
|
79
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
80
|
-
// Shared — used by both SDK 2.0 and legacy
|
|
81
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
82
40
|
// ── Y.js provider (collaborative editing) ───────────────────────────────────
|
|
83
41
|
export { createYjsProvider } from '../transports/yjs-provider.js';
|
|
84
|
-
// ── Hall room
|
|
85
|
-
export { joinHallRoom } from '../modules/hall/browser.js';
|
|
42
|
+
// ── Hall room + pub/sub clients (browser) ───────────────────────────────────
|
|
43
|
+
export { joinHallRoom, joinHallPubsub, getWhepUrl, getHlsUrl } from '../modules/hall/browser.js';
|
|
86
44
|
export { SDKError, SDKDisconnectedError, SDKTimeoutError, SDKAuthError, SDKForbiddenError, SDKRpcError, SDKMethodNotFoundError, } from '../modules/brainy/errors.js';
|
|
87
45
|
//# sourceMappingURL=index.js.map
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,+EAA+E;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAG3D,+EAA+E;AAC/E,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,iCAAiC,CAAA;AAGxC,+EAA+E;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,+EAA+E;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AAGjE,+EAA+E;AAC/E,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAgChG,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,sBAAsB,GACvB,MAAM,6BAA6B,CAAA"}
|
|
@@ -15,10 +15,9 @@
|
|
|
15
15
|
*
|
|
16
16
|
* ## Special namespace: brainy
|
|
17
17
|
*
|
|
18
|
-
* The `brainy` namespace
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* methods (onDataChange, offDataChange, isAlive, close).
|
|
18
|
+
* The `brainy` namespace uses the same recursive Proxy pattern but with
|
|
19
|
+
* special handling for Brainy sub-APIs (vfs, versions, neural, counts) and
|
|
20
|
+
* lifecycle methods (onDataChange, offDataChange, isAlive, close).
|
|
22
21
|
*
|
|
23
22
|
* ## Streaming
|
|
24
23
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespace-proxy.d.ts","sourceRoot":"","sources":["../../src/client/namespace-proxy.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"namespace-proxy.d.ts","sourceRoot":"","sources":["../../src/client/namespace-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAO/C;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAErE;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;IAEjF;;OAEG;IACH,OAAO,IAAI,OAAO,CAAA;IAElB;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,kBAAkB,GAAG,YAAY,CAEhF"}
|
|
@@ -15,10 +15,9 @@
|
|
|
15
15
|
*
|
|
16
16
|
* ## Special namespace: brainy
|
|
17
17
|
*
|
|
18
|
-
* The `brainy` namespace
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* methods (onDataChange, offDataChange, isAlive, close).
|
|
18
|
+
* The `brainy` namespace uses the same recursive Proxy pattern but with
|
|
19
|
+
* special handling for Brainy sub-APIs (vfs, versions, neural, counts) and
|
|
20
|
+
* lifecycle methods (onDataChange, offDataChange, isAlive, close).
|
|
22
21
|
*
|
|
23
22
|
* ## Streaming
|
|
24
23
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespace-proxy.js","sourceRoot":"","sources":["../../src/client/namespace-proxy.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"namespace-proxy.js","sourceRoot":"","sources":["../../src/client/namespace-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAgDH,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAA6B;IAChE,OAAO,gBAAgB,CAAC,SAAS,CAAiB,CAAA;AACpD,CAAC;AAED,gFAAgF;AAChF,2BAA2B;AAC3B,gFAAgF;AAEhF;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,SAA6B;IACrD,OAAO,IAAI,KAAK,CAAC,cAAa,CAAC,EAAE;QAC/B,GAAG,CAAC,OAAO,EAAE,IAAqB;YAChC,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAA;YAC9C,IAAI,IAAI,KAAK,MAAM;gBAAE,OAAO,SAAS,CAAA;YAErC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;YAEvB,gCAAgC;YAChC,IAAI,EAAE,KAAK,YAAY;gBAAE,OAAO,SAAS,CAAA;YACzC,IAAI,EAAE,KAAK,SAAS;gBAAE,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;YACtD,IAAI,EAAE,KAAK,OAAO;gBAAE,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;YAElD,6DAA6D;YAC7D,OAAO,qBAAqB,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QACjD,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,qBAAqB,CAC5B,SAA6B,EAC7B,EAAU,EACV,UAAkB;IAElB,OAAO,IAAI,KAAK,CAAC,cAAa,CAAC,EAAE;QAC/B,GAAG,CAAC,OAAO,EAAE,IAAqB;YAChC,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAA;YAC9C,IAAI,IAAI,KAAK,MAAM;gBAAE,OAAO,SAAS,CAAA;YAErC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;YAE5B,qEAAqE;YACrE,iDAAiD;YACjD,IAAI,EAAE,KAAK,QAAQ,IAAI,UAAU,KAAK,EAAE,IAAI,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/E,OAAO,qBAAqB,CAAC,SAAS,EAAE,UAAU,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;YAClE,CAAC;YAED,0BAA0B;YAC1B,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;YAClE,OAAO,qBAAqB,CAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;QACvD,CAAC;QAED,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAe;YACtC,+DAA+D;YAC/D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,sEAAsE;gBACtE,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,0BAA0B,EAAE,kCAAkC,EAAE,eAAe,CAAC,CAC3F,CAAA;YACH,CAAC;YACD,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;QAC/C,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,iEAAiE;AACjE,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
* environment-agnostic constants. This entry point is safe to import in any environment
|
|
5
5
|
* (server or browser).
|
|
6
6
|
*
|
|
7
|
-
* For server-specific exports (
|
|
8
|
-
*
|
|
7
|
+
* For server-specific exports (`createSoulcraftRouter`, namespace handlers, auth
|
|
8
|
+
* middleware, `computeEmailHash`, `createCapabilityToken`, `verifyCapabilityToken`,
|
|
9
9
|
* `getAuthMode`, `getOIDCClientConfig`), use `@soulcraft/sdk/server`.
|
|
10
10
|
*
|
|
11
|
-
* For browser-specific exports (HTTP/WS
|
|
12
|
-
* `@soulcraft/sdk/client`.
|
|
11
|
+
* For browser-specific exports (`createSoulcraftProxy`, HTTP/WS transports, Hall),
|
|
12
|
+
* use `@soulcraft/sdk/client`.
|
|
13
13
|
*/
|
|
14
|
-
export type { SoulcraftSDK, SDKOptions, ServerSDKOptions
|
|
14
|
+
export type { SoulcraftSDK, SDKOptions, ServerSDKOptions } from './types.js';
|
|
15
15
|
export type { SoulcraftProduct } from './modules/auth/products.js';
|
|
16
16
|
export type { SoulcraftBrainy } from './modules/brainy/types.js';
|
|
17
17
|
export type { Entity, Relation, Result, AddParams, UpdateParams, RelateParams, FindParams, BrainyConfig, AggregateDefinition, DiagnosticsResult, MigrationResult, MigrateOptions, MigrationPreview, NounType, VerbType, BrainyChangeEvent, BrainyChangeEntity, BrainyChangeRelation, } from './modules/brainy/types.js';
|
|
@@ -19,7 +19,7 @@ export type { CreateCapabilityTokenOptions, CapabilityTokenClaims, } from './mod
|
|
|
19
19
|
export { SDKError, SDKDisconnectedError, SDKTimeoutError, SDKAuthError, SDKForbiddenError, SDKRpcError, SDKMethodNotFoundError, } from './modules/brainy/errors.js';
|
|
20
20
|
export type { VfsModule } from './modules/vfs/types.js';
|
|
21
21
|
export type { VersionsModule } from './modules/versions/types.js';
|
|
22
|
-
export type { HallModule, HallRoom, HallRoomHandle, HallRoomEvents, HallRoomHandleEvents, HallConnectionOptions, RoomOptions, ConceptInput, RecordingManifest, TranscriptEvent, ConceptMentionEvent, RelationProposedEvent, SpeakerChangedEvent, PeerJoinedEvent, PeerLeftEvent, } from './modules/hall/types.js';
|
|
22
|
+
export type { HallModule, HallRoom, HallRoomHandle, HallPubsubHandle, HallRoomEvents, HallRoomHandleEvents, HallPubsubHandleEvents, HallPubsubEvents, HallConnectionOptions, HallPeerRole, ScreenShareMode, RoomOptions, ConceptInput, RecordingManifest, RoleChangedEvent, TranscriptEvent, ConceptMentionEvent, RelationProposedEvent, SpeakerChangedEvent, PeerJoinedEvent, PeerLeftEvent, PeerPromotedEvent, PeerDemotedEvent, ViewerCountEvent, ScreenShareThumbnailEvent, ChatMessage as HallChatMessage, ChatHistoryEvent, MediaInfo as HallMediaInfo, MediaReadyEvent, MediaErrorEvent, TranscodeTarget, ReplayEntry, TopicSubscribedEvent, TopicUnsubscribedEvent, TopicMessageEvent, PresenceUpdateEvent, PresenceEntry, PresenceSnapshotEvent, } from './modules/hall/types.js';
|
|
23
23
|
export type { AuthModule, PlatformRole, SoulcraftAuthProvider, SoulcraftOrganization, SoulcraftUserFields, SoulcraftSessionUser, SoulcraftSession, OIDCClientConfig, AuthMode, } from './modules/auth/types.js';
|
|
24
24
|
export { SOULCRAFT_USER_FIELDS, SOULCRAFT_SESSION_CONFIG, } from './modules/auth/config.js';
|
|
25
25
|
export type { AiModule, AiCompleteOptions, AiCompleteResult, AiStreamOptions, AiStreamEvent, AiToolCall, AiMessage, AiContentBlock, AiTool, AiModel, } from './modules/ai/types.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
* environment-agnostic constants. This entry point is safe to import in any environment
|
|
5
5
|
* (server or browser).
|
|
6
6
|
*
|
|
7
|
-
* For server-specific exports (
|
|
8
|
-
*
|
|
7
|
+
* For server-specific exports (`createSoulcraftRouter`, namespace handlers, auth
|
|
8
|
+
* middleware, `computeEmailHash`, `createCapabilityToken`, `verifyCapabilityToken`,
|
|
9
9
|
* `getAuthMode`, `getOIDCClientConfig`), use `@soulcraft/sdk/server`.
|
|
10
10
|
*
|
|
11
|
-
* For browser-specific exports (HTTP/WS
|
|
12
|
-
* `@soulcraft/sdk/client`.
|
|
11
|
+
* For browser-specific exports (`createSoulcraftProxy`, HTTP/WS transports, Hall),
|
|
12
|
+
* use `@soulcraft/sdk/client`.
|
|
13
13
|
*/
|
|
14
14
|
// createCapabilityToken and verifyCapabilityToken are server-only (node:crypto).
|
|
15
15
|
// Import from @soulcraft/sdk/server.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA+BH,iFAAiF;AACjF,qCAAqC;AACrC,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,sBAAsB,GACvB,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA+BH,iFAAiF;AACjF,qCAAqC;AACrC,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,sBAAsB,GACvB,MAAM,4BAA4B,CAAA;AA8DnC,gGAAgG;AAChG,oFAAoF;AACpF,2CAA2C;AAC3C,OAAO,EACL,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,0BAA0B,CAAA;AAejC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAoFjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module modules/hall/admin
|
|
3
|
+
* @description REST client for the Hall `/admin` API.
|
|
4
|
+
*
|
|
5
|
+
* The admin API provides operational management endpoints for Hall — listing rooms,
|
|
6
|
+
* kicking peers, revoking tokens, viewing config, and reading audit logs.
|
|
7
|
+
*
|
|
8
|
+
* Authentication is via `Authorization: Bearer {admin_secret}` header on all requests.
|
|
9
|
+
* The admin secret is configured in `[admin].secret` in `hall.toml` — it is separate
|
|
10
|
+
* from per-product shared secrets.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { createHallAdmin } from '@soulcraft/sdk/server'
|
|
15
|
+
*
|
|
16
|
+
* const admin = createHallAdmin({
|
|
17
|
+
* hallUrl: 'https://hall.soulcraft.com',
|
|
18
|
+
* secret: process.env.HALL_ADMIN_SECRET!,
|
|
19
|
+
* })
|
|
20
|
+
*
|
|
21
|
+
* // List all rooms
|
|
22
|
+
* const { rooms, count } = await admin.listRooms()
|
|
23
|
+
*
|
|
24
|
+
* // Kick a disruptive peer
|
|
25
|
+
* await admin.kickPeer('room-1', 'user-abc')
|
|
26
|
+
*
|
|
27
|
+
* // View audit trail
|
|
28
|
+
* const { entries } = await admin.getAuditLog(50)
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
import type { HallAdminOptions, HallAdminClient } from './types.js';
|
|
32
|
+
/**
|
|
33
|
+
* Create a Hall admin REST client.
|
|
34
|
+
*
|
|
35
|
+
* @param options - Hall server URL and admin secret.
|
|
36
|
+
* @returns A `HallAdminClient` ready for use.
|
|
37
|
+
*/
|
|
38
|
+
export declare function createHallAdmin(options: HallAdminOptions): HallAdminClient;
|
|
39
|
+
//# sourceMappingURL=admin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../../src/modules/hall/admin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EAIhB,MAAM,YAAY,CAAA;AAEnB;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAE1E"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module modules/hall/admin
|
|
3
|
+
* @description REST client for the Hall `/admin` API.
|
|
4
|
+
*
|
|
5
|
+
* The admin API provides operational management endpoints for Hall — listing rooms,
|
|
6
|
+
* kicking peers, revoking tokens, viewing config, and reading audit logs.
|
|
7
|
+
*
|
|
8
|
+
* Authentication is via `Authorization: Bearer {admin_secret}` header on all requests.
|
|
9
|
+
* The admin secret is configured in `[admin].secret` in `hall.toml` — it is separate
|
|
10
|
+
* from per-product shared secrets.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { createHallAdmin } from '@soulcraft/sdk/server'
|
|
15
|
+
*
|
|
16
|
+
* const admin = createHallAdmin({
|
|
17
|
+
* hallUrl: 'https://hall.soulcraft.com',
|
|
18
|
+
* secret: process.env.HALL_ADMIN_SECRET!,
|
|
19
|
+
* })
|
|
20
|
+
*
|
|
21
|
+
* // List all rooms
|
|
22
|
+
* const { rooms, count } = await admin.listRooms()
|
|
23
|
+
*
|
|
24
|
+
* // Kick a disruptive peer
|
|
25
|
+
* await admin.kickPeer('room-1', 'user-abc')
|
|
26
|
+
*
|
|
27
|
+
* // View audit trail
|
|
28
|
+
* const { entries } = await admin.getAuditLog(50)
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* Create a Hall admin REST client.
|
|
33
|
+
*
|
|
34
|
+
* @param options - Hall server URL and admin secret.
|
|
35
|
+
* @returns A `HallAdminClient` ready for use.
|
|
36
|
+
*/
|
|
37
|
+
export function createHallAdmin(options) {
|
|
38
|
+
return new HallAdminClientImpl(options);
|
|
39
|
+
}
|
|
40
|
+
class HallAdminClientImpl {
|
|
41
|
+
#baseUrl;
|
|
42
|
+
#secret;
|
|
43
|
+
constructor(options) {
|
|
44
|
+
this.#baseUrl = options.hallUrl.replace(/\/$/, '');
|
|
45
|
+
this.#secret = options.secret;
|
|
46
|
+
}
|
|
47
|
+
async listRooms() {
|
|
48
|
+
return this.#get('/admin/rooms');
|
|
49
|
+
}
|
|
50
|
+
async getRoom(roomId) {
|
|
51
|
+
return this.#get(`/admin/rooms/${encodeURIComponent(roomId)}`);
|
|
52
|
+
}
|
|
53
|
+
async closeRoom(roomId) {
|
|
54
|
+
await this.#delete(`/admin/rooms/${encodeURIComponent(roomId)}`);
|
|
55
|
+
}
|
|
56
|
+
async kickPeer(roomId, peerId) {
|
|
57
|
+
await this.#delete(`/admin/rooms/${encodeURIComponent(roomId)}/peers/${encodeURIComponent(peerId)}`);
|
|
58
|
+
}
|
|
59
|
+
async revokeToken(token) {
|
|
60
|
+
await this.#post('/admin/revoke-token', { token });
|
|
61
|
+
}
|
|
62
|
+
async listProducts() {
|
|
63
|
+
return this.#get('/admin/products');
|
|
64
|
+
}
|
|
65
|
+
async listTopics() {
|
|
66
|
+
return this.#get('/admin/pubsub/topics');
|
|
67
|
+
}
|
|
68
|
+
async getConfig() {
|
|
69
|
+
return this.#get('/admin/config');
|
|
70
|
+
}
|
|
71
|
+
async reloadConfig() {
|
|
72
|
+
return this.#post('/admin/config/reload', {});
|
|
73
|
+
}
|
|
74
|
+
async getAuditLog(limit) {
|
|
75
|
+
const qs = limit ? `?limit=${limit}` : '';
|
|
76
|
+
return this.#get(`/admin/audit${qs}`);
|
|
77
|
+
}
|
|
78
|
+
// ── Private helpers ─────────────────────────────────────────────────────────
|
|
79
|
+
async #get(path) {
|
|
80
|
+
const res = await fetch(`${this.#baseUrl}${path}`, {
|
|
81
|
+
headers: { 'Authorization': `Bearer ${this.#secret}` },
|
|
82
|
+
});
|
|
83
|
+
if (!res.ok) {
|
|
84
|
+
throw new Error(`Hall admin ${path}: ${res.status} ${await res.text()}`);
|
|
85
|
+
}
|
|
86
|
+
return res.json();
|
|
87
|
+
}
|
|
88
|
+
async #post(path, body) {
|
|
89
|
+
const res = await fetch(`${this.#baseUrl}${path}`, {
|
|
90
|
+
method: 'POST',
|
|
91
|
+
headers: {
|
|
92
|
+
'Authorization': `Bearer ${this.#secret}`,
|
|
93
|
+
'Content-Type': 'application/json',
|
|
94
|
+
},
|
|
95
|
+
body: JSON.stringify(body),
|
|
96
|
+
});
|
|
97
|
+
if (!res.ok) {
|
|
98
|
+
throw new Error(`Hall admin ${path}: ${res.status} ${await res.text()}`);
|
|
99
|
+
}
|
|
100
|
+
// Some endpoints return 204 No Content.
|
|
101
|
+
if (res.status === 204)
|
|
102
|
+
return undefined;
|
|
103
|
+
return res.json();
|
|
104
|
+
}
|
|
105
|
+
async #delete(path) {
|
|
106
|
+
const res = await fetch(`${this.#baseUrl}${path}`, {
|
|
107
|
+
method: 'DELETE',
|
|
108
|
+
headers: { 'Authorization': `Bearer ${this.#secret}` },
|
|
109
|
+
});
|
|
110
|
+
if (!res.ok) {
|
|
111
|
+
throw new Error(`Hall admin ${path}: ${res.status} ${await res.text()}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=admin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../../src/modules/hall/admin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,49 +1,51 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module modules/hall/browser
|
|
3
|
-
* @description Browser-side Hall
|
|
3
|
+
* @description Browser-side Hall clients — join WebRTC rooms and pub/sub topics via session tokens.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* This module provides two browser entry points:
|
|
6
|
+
*
|
|
7
|
+
* - `joinHallRoom` — joins a WebRTC room for real-time audio/video/data communication.
|
|
8
|
+
* Handles SDP offer/answer, ICE negotiation, track events, and AI events (transcripts,
|
|
9
|
+
* concept mentions). In broadcast rooms, handles role changes (promotion/demotion)
|
|
10
|
+
* transparently.
|
|
11
|
+
*
|
|
12
|
+
* - `joinHallPubsub` — connects to the Hall pub/sub system for topic-based messaging
|
|
13
|
+
* with presence tracking. Uses msgpack over WebSocket, same binary format as the
|
|
14
|
+
* product connection.
|
|
9
15
|
*
|
|
10
16
|
* **Auth model:** The browser never sees the product's shared secret. The product
|
|
11
|
-
* backend mints
|
|
12
|
-
* and passes
|
|
13
|
-
* is the only browser credential.
|
|
17
|
+
* backend mints short-lived tokens (via `sdk.hall.createSessionToken` or
|
|
18
|
+
* `sdk.hall.createPubsubToken`) and passes them to the browser.
|
|
14
19
|
*
|
|
15
20
|
* This module has no server-only dependencies and is safe to bundle for the browser.
|
|
16
|
-
* It does require `RTCPeerConnection` and `WebSocket` to be available (standard in
|
|
17
|
-
* all modern browsers; not available in Node.js without polyfills).
|
|
18
21
|
*
|
|
19
|
-
* @example
|
|
22
|
+
* @example WebRTC room
|
|
20
23
|
* ```typescript
|
|
21
24
|
* import { joinHallRoom } from '@soulcraft/sdk/client'
|
|
22
25
|
*
|
|
23
|
-
* // 1. Get token from product backend:
|
|
24
26
|
* const { token, hallUrl } = await fetch('/api/session/join').then(r => r.json())
|
|
25
|
-
*
|
|
26
|
-
* // 2. Get camera + mic:
|
|
27
27
|
* const stream = await navigator.mediaDevices.getUserMedia({ video: true, audio: true })
|
|
28
|
-
*
|
|
29
|
-
* // 3. Join room:
|
|
30
28
|
* const room = await joinHallRoom({ token, hallUrl })
|
|
31
29
|
* room.addStream(stream)
|
|
30
|
+
* room.on('trackAdded', ({ peerId, streams }) => renderVideo(peerId, streams[0]))
|
|
31
|
+
* room.on('transcript', ({ text, isFinal }) => { if (isFinal) showCaption(text) })
|
|
32
|
+
* room.on('roleChanged', ({ role, canPublish }) => updateUI(role, canPublish))
|
|
33
|
+
* room.close()
|
|
34
|
+
* ```
|
|
32
35
|
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* })
|
|
37
|
-
* room.on('transcript', ({ peerId, text, isFinal }) => {
|
|
38
|
-
* if (isFinal) appendCaption(peerId, text)
|
|
39
|
-
* })
|
|
40
|
-
* room.on('conceptMention', ({ nodeId, confidence }) => pulseGraphNode(nodeId, confidence))
|
|
36
|
+
* @example Pub/Sub
|
|
37
|
+
* ```typescript
|
|
38
|
+
* import { joinHallPubsub } from '@soulcraft/sdk/client'
|
|
41
39
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
40
|
+
* const { token, hallUrl } = await fetch('/api/pubsub/token').then(r => r.json())
|
|
41
|
+
* const pubsub = await joinHallPubsub({ token, hallUrl })
|
|
42
|
+
* pubsub.subscribe('room:abc:chat', { username: 'Alice' })
|
|
43
|
+
* pubsub.on('topicMessage', ({ senderId, payload }) => showMessage(senderId, payload))
|
|
44
|
+
* pubsub.broadcast('room:abc:chat', { text: 'Hello!' })
|
|
45
|
+
* pubsub.close()
|
|
44
46
|
* ```
|
|
45
47
|
*/
|
|
46
|
-
import type { HallRoomHandle } from './types.js';
|
|
48
|
+
import type { HallRoomHandle, HallPubsubHandle } from './types.js';
|
|
47
49
|
/**
|
|
48
50
|
* Options for {@link joinHallRoom}.
|
|
49
51
|
*/
|
|
@@ -65,6 +67,19 @@ export interface JoinHallRoomOptions {
|
|
|
65
67
|
*/
|
|
66
68
|
iceServers?: RTCIceServer[];
|
|
67
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Options for {@link joinHallPubsub}.
|
|
72
|
+
*/
|
|
73
|
+
export interface JoinHallPubsubOptions {
|
|
74
|
+
/**
|
|
75
|
+
* The pub/sub token issued by the product backend via `sdk.hall.createPubsubToken()`.
|
|
76
|
+
*/
|
|
77
|
+
token: string;
|
|
78
|
+
/**
|
|
79
|
+
* The Hall server WebSocket base URL (e.g. `"wss://hall.soulcraft.com"`).
|
|
80
|
+
*/
|
|
81
|
+
hallUrl: string;
|
|
82
|
+
}
|
|
68
83
|
/**
|
|
69
84
|
* Join a Hall room from the browser using a session token.
|
|
70
85
|
*
|
|
@@ -72,6 +87,9 @@ export interface JoinHallRoomOptions {
|
|
|
72
87
|
* performs the offer/answer/ICE exchange, and resolves once the peer connection reaches
|
|
73
88
|
* `connected` state. Returns a {@link HallRoomHandle} with typed events.
|
|
74
89
|
*
|
|
90
|
+
* In broadcast rooms, the handle also emits `roleChanged` when the peer is promoted
|
|
91
|
+
* or demoted. The `role` and `canPublish` properties are updated automatically.
|
|
92
|
+
*
|
|
75
93
|
* @param options - Token, Hall URL, and optional ICE server overrides.
|
|
76
94
|
* @returns A connected `HallRoomHandle`.
|
|
77
95
|
* @throws {Error} If the signaling handshake fails or the connection times out.
|
|
@@ -82,7 +100,45 @@ export interface JoinHallRoomOptions {
|
|
|
82
100
|
* room.addStream(localStream)
|
|
83
101
|
* room.on('trackAdded', ({ peerId, streams }) => renderVideo(peerId, streams[0]))
|
|
84
102
|
* room.on('transcript', ({ text, isFinal }) => { if (isFinal) showCaption(text) })
|
|
103
|
+
* room.on('roleChanged', ({ role, canPublish }) => updateUI(role, canPublish))
|
|
85
104
|
* ```
|
|
86
105
|
*/
|
|
87
106
|
export declare function joinHallRoom(options: JoinHallRoomOptions): Promise<HallRoomHandle>;
|
|
107
|
+
/**
|
|
108
|
+
* Connect to the Hall pub/sub system from the browser using a pub/sub token.
|
|
109
|
+
*
|
|
110
|
+
* Opens a WebSocket to `{hallUrl}/ws/pubsub/{token}` using msgpack wire format.
|
|
111
|
+
* Resolves once `authOk` is received from the server, confirming the token is valid.
|
|
112
|
+
*
|
|
113
|
+
* @param options - Token and Hall URL.
|
|
114
|
+
* @returns A connected `HallPubsubHandle`.
|
|
115
|
+
* @throws {Error} If authentication fails or the connection times out.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```typescript
|
|
119
|
+
* const pubsub = await joinHallPubsub({ token, hallUrl: 'wss://hall.soulcraft.com' })
|
|
120
|
+
* pubsub.subscribe('room:abc:chat', { username: 'Alice' })
|
|
121
|
+
* pubsub.on('topicMessage', ({ topic, senderId, payload }) => showMessage(senderId, payload))
|
|
122
|
+
* pubsub.broadcast('room:abc:chat', { text: 'Hello!' })
|
|
123
|
+
* pubsub.close()
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export declare function joinHallPubsub(options: JoinHallPubsubOptions): Promise<HallPubsubHandle>;
|
|
127
|
+
/**
|
|
128
|
+
* Build the WHEP endpoint URL for receive-only WebRTC viewing of a broadcast room.
|
|
129
|
+
* The browser POSTs an SDP offer to this URL with `Authorization: Bearer <sessionToken>`.
|
|
130
|
+
*
|
|
131
|
+
* @param hallUrl - Hall server base URL (e.g. `"https://hall.soulcraft.com"`).
|
|
132
|
+
* @param roomId - The room to view.
|
|
133
|
+
* @returns The WHEP endpoint URL.
|
|
134
|
+
*/
|
|
135
|
+
export declare function getWhepUrl(hallUrl: string, roomId: string): string;
|
|
136
|
+
/**
|
|
137
|
+
* Build the LL-HLS master playlist URL for scalable HLS viewing of a broadcast room.
|
|
138
|
+
*
|
|
139
|
+
* @param hallUrl - Hall server base URL (e.g. `"https://hall.soulcraft.com"`).
|
|
140
|
+
* @param roomId - The room to view.
|
|
141
|
+
* @returns The HLS playlist URL.
|
|
142
|
+
*/
|
|
143
|
+
export declare function getHlsUrl(hallUrl: string, roomId: string): string;
|
|
88
144
|
//# sourceMappingURL=browser.d.ts.map
|