@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.
Files changed (92) hide show
  1. package/dist/client/index.d.ts +5 -38
  2. package/dist/client/index.d.ts.map +1 -1
  3. package/dist/client/index.js +5 -47
  4. package/dist/client/index.js.map +1 -1
  5. package/dist/client/namespace-proxy.d.ts +3 -4
  6. package/dist/client/namespace-proxy.d.ts.map +1 -1
  7. package/dist/client/namespace-proxy.js +3 -4
  8. package/dist/client/namespace-proxy.js.map +1 -1
  9. package/dist/index.d.ts +6 -6
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +4 -4
  12. package/dist/index.js.map +1 -1
  13. package/dist/modules/hall/admin.d.ts +39 -0
  14. package/dist/modules/hall/admin.d.ts.map +1 -0
  15. package/dist/modules/hall/admin.js +115 -0
  16. package/dist/modules/hall/admin.js.map +1 -0
  17. package/dist/modules/hall/browser.d.ts +83 -27
  18. package/dist/modules/hall/browser.d.ts.map +1 -1
  19. package/dist/modules/hall/browser.js +238 -49
  20. package/dist/modules/hall/browser.js.map +1 -1
  21. package/dist/modules/hall/media.d.ts +164 -0
  22. package/dist/modules/hall/media.d.ts.map +1 -0
  23. package/dist/modules/hall/media.js +182 -0
  24. package/dist/modules/hall/media.js.map +1 -0
  25. package/dist/modules/hall/server.d.ts +119 -6
  26. package/dist/modules/hall/server.d.ts.map +1 -1
  27. package/dist/modules/hall/server.js +299 -9
  28. package/dist/modules/hall/server.js.map +1 -1
  29. package/dist/modules/hall/types.d.ts +705 -25
  30. package/dist/modules/hall/types.d.ts.map +1 -1
  31. package/dist/modules/hall/types.js +12 -7
  32. package/dist/modules/hall/types.js.map +1 -1
  33. package/dist/server/hall-handlers.d.ts +60 -14
  34. package/dist/server/hall-handlers.d.ts.map +1 -1
  35. package/dist/server/hall-handlers.js +61 -12
  36. package/dist/server/hall-handlers.js.map +1 -1
  37. package/dist/server/hono-router.d.ts +2 -9
  38. package/dist/server/hono-router.d.ts.map +1 -1
  39. package/dist/server/hono-router.js +2 -46
  40. package/dist/server/hono-router.js.map +1 -1
  41. package/dist/server/index.d.ts +4 -19
  42. package/dist/server/index.d.ts.map +1 -1
  43. package/dist/server/index.js +10 -29
  44. package/dist/server/index.js.map +1 -1
  45. package/dist/types.d.ts +2 -41
  46. package/dist/types.d.ts.map +1 -1
  47. package/docs/ADR-005-hall-integration.md +449 -0
  48. package/package.json +1 -1
  49. package/dist/client/create-client-sdk.d.ts +0 -113
  50. package/dist/client/create-client-sdk.d.ts.map +0 -1
  51. package/dist/client/create-client-sdk.js +0 -169
  52. package/dist/client/create-client-sdk.js.map +0 -1
  53. package/dist/modules/app-context/index.d.ts +0 -214
  54. package/dist/modules/app-context/index.d.ts.map +0 -1
  55. package/dist/modules/app-context/index.js +0 -569
  56. package/dist/modules/app-context/index.js.map +0 -1
  57. package/dist/modules/billing/firestore-provider.d.ts +0 -60
  58. package/dist/modules/billing/firestore-provider.d.ts.map +0 -1
  59. package/dist/modules/billing/firestore-provider.js +0 -315
  60. package/dist/modules/billing/firestore-provider.js.map +0 -1
  61. package/dist/modules/brainy/proxy.d.ts +0 -48
  62. package/dist/modules/brainy/proxy.d.ts.map +0 -1
  63. package/dist/modules/brainy/proxy.js +0 -95
  64. package/dist/modules/brainy/proxy.js.map +0 -1
  65. package/dist/server/create-sdk.d.ts +0 -74
  66. package/dist/server/create-sdk.d.ts.map +0 -1
  67. package/dist/server/create-sdk.js +0 -104
  68. package/dist/server/create-sdk.js.map +0 -1
  69. package/dist/server/from-license.d.ts +0 -252
  70. package/dist/server/from-license.d.ts.map +0 -1
  71. package/dist/server/from-license.js +0 -349
  72. package/dist/server/from-license.js.map +0 -1
  73. package/dist/server/handlers.d.ts +0 -312
  74. package/dist/server/handlers.d.ts.map +0 -1
  75. package/dist/server/handlers.js +0 -376
  76. package/dist/server/handlers.js.map +0 -1
  77. package/dist/server/postmessage-handler.d.ts +0 -152
  78. package/dist/server/postmessage-handler.d.ts.map +0 -1
  79. package/dist/server/postmessage-handler.js +0 -138
  80. package/dist/server/postmessage-handler.js.map +0 -1
  81. package/dist/transports/http.d.ts +0 -86
  82. package/dist/transports/http.d.ts.map +0 -1
  83. package/dist/transports/http.js +0 -137
  84. package/dist/transports/http.js.map +0 -1
  85. package/dist/transports/postmessage.d.ts +0 -159
  86. package/dist/transports/postmessage.d.ts.map +0 -1
  87. package/dist/transports/postmessage.js +0 -207
  88. package/dist/transports/postmessage.js.map +0 -1
  89. package/dist/transports/workshop.d.ts +0 -173
  90. package/dist/transports/workshop.d.ts.map +0 -1
  91. package/dist/transports/workshop.js +0 -307
  92. package/dist/transports/workshop.js.map +0 -1
@@ -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
- * ## Legacy transports (brainy-only)
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 SDK 2.0 — PostMessage in WebContainer iframe
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAOH,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;AAOpF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAGxD;;;GAGG;AACH,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC5E;;;GAGG;AACH,OAAO,EAAE,oBAAoB,IAAI,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AAGjG,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAC3F,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAG9D,0EAA0E;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAG9D,0EAA0E;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAClE,YAAY,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAG1F,oFAAoF;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,2BAA2B,CAAA;AAOlC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,YAAY,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAGhE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AACrE,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,YAAY,GACb,MAAM,0BAA0B,CAAA;AAGjC,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AACnD,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"}
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"}
@@ -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
- * ## Legacy transports (brainy-only)
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 SDK 2.0 — PostMessage in WebContainer iframe
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 client (browser WebRTC) ───────────────────────────────────────
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,kFAAkF;AAClF,uDAAuD;AACvD,kFAAkF;AAElF,+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,kFAAkF;AAClF,sEAAsE;AACtE,kFAAkF;AAElF,+EAA+E;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,+EAA+E;AAC/E;;;GAGG;AACH,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC5E;;;GAGG;AACH,OAAO,EAAE,oBAAoB,IAAI,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AAEjG,iFAAiF;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAInD,+EAA+E;AAC/E,0EAA0E;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAE9D,+EAA+E;AAC/E,0EAA0E;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAGlE,+EAA+E;AAC/E,oFAAoF;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAO7D,kFAAkF;AAClF,2CAA2C;AAC3C,kFAAkF;AAElF,+EAA+E;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AAGjE,+EAA+E;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAsBzD,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,sBAAsB,GACvB,MAAM,6BAA6B,CAAA"}
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 is special it delegates to the existing
19
- * `createBrainyProxy()` for full backward compatibility with all existing
20
- * Brainy methods, sub-APIs (vfs, versions, neural, counts), and lifecycle
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;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"}
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 is special it delegates to the existing
19
- * `createBrainyProxy()` for full backward compatibility with all existing
20
- * Brainy methods, sub-APIs (vfs, versions, neural, counts), and lifecycle
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;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"}
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 (Brainy lifecycle, Cortex, auth middleware, RPC handlers,
8
- * `createSDK`, `computeEmailHash`, `createCapabilityToken`, `verifyCapabilityToken`,
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/SSE transports, `createClientSDK`), use
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, ClientSDKOptions } from './types.js';
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';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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 (Brainy lifecycle, Cortex, auth middleware, RPC handlers,
8
- * `createSDK`, `computeEmailHash`, `createCapabilityToken`, `verifyCapabilityToken`,
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/SSE transports, `createClientSDK`), use
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;AAuCnC,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"}
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 room client joins a WebRTC room via a session token.
3
+ * @description Browser-side Hall clientsjoin WebRTC rooms and pub/sub topics via session tokens.
4
4
  *
5
- * `joinHallRoom` is the browser entry point for Hall real-time communication.
6
- * It opens a WebSocket to the Hall signaling endpoint, negotiates a WebRTC peer
7
- * connection via offer/answer/ICE, and returns a `HallRoomHandle` with typed events
8
- * for tracks, transcripts, concept mentions, and room lifecycle.
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 a short-lived HMAC session token (via `sdk.hall.createSessionToken`)
12
- * and passes it to the browser. The browser passes the token to `joinHallRoom` — that
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
- * // 4. Handle events:
34
- * room.on('trackAdded', ({ peerId, streams }) => {
35
- * document.getElementById(`video-${peerId}`).srcObject = streams[0]
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
- * // 5. On leave:
43
- * room.close()
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