@soulcraft/sdk 1.7.0 → 2.0.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/create-client-sdk.d.ts +16 -2
- package/dist/client/create-client-sdk.d.ts.map +1 -1
- package/dist/client/create-client-sdk.js +2 -7
- package/dist/client/create-client-sdk.js.map +1 -1
- package/dist/client/index.d.ts +44 -37
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +59 -44
- package/dist/client/index.js.map +1 -1
- package/dist/client/namespace-proxy.d.ts +108 -0
- package/dist/client/namespace-proxy.d.ts.map +1 -0
- package/dist/client/namespace-proxy.js +151 -0
- package/dist/client/namespace-proxy.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/modules/app-context/index.d.ts +15 -15
- package/dist/modules/app-context/index.d.ts.map +1 -1
- package/dist/modules/app-context/index.js +17 -17
- package/dist/modules/app-context/index.js.map +1 -1
- package/dist/namespaces.d.ts +2942 -0
- package/dist/namespaces.d.ts.map +1 -0
- package/dist/namespaces.js +37 -0
- package/dist/namespaces.js.map +1 -0
- package/dist/rpc.d.ts +156 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/rpc.js +26 -0
- package/dist/rpc.js.map +1 -0
- package/dist/server/create-sdk.d.ts.map +1 -1
- package/dist/server/create-sdk.js +3 -13
- package/dist/server/create-sdk.js.map +1 -1
- package/dist/server/handlers/annotations.d.ts +52 -0
- package/dist/server/handlers/annotations.d.ts.map +1 -0
- package/dist/server/handlers/annotations.js +204 -0
- package/dist/server/handlers/annotations.js.map +1 -0
- package/dist/server/handlers/auth.d.ts +53 -0
- package/dist/server/handlers/auth.d.ts.map +1 -0
- package/dist/server/handlers/auth.js +66 -0
- package/dist/server/handlers/auth.js.map +1 -0
- package/dist/server/handlers/certification.d.ts +32 -0
- package/dist/server/handlers/certification.d.ts.map +1 -0
- package/dist/server/handlers/certification.js +253 -0
- package/dist/server/handlers/certification.js.map +1 -0
- package/dist/server/handlers/chat/conversations.d.ts +91 -0
- package/dist/server/handlers/chat/conversations.d.ts.map +1 -0
- package/dist/server/handlers/chat/conversations.js +314 -0
- package/dist/server/handlers/chat/conversations.js.map +1 -0
- package/dist/server/handlers/chat/delegator.d.ts +144 -0
- package/dist/server/handlers/chat/delegator.d.ts.map +1 -0
- package/dist/server/handlers/chat/delegator.js +431 -0
- package/dist/server/handlers/chat/delegator.js.map +1 -0
- package/dist/server/handlers/chat/engine.d.ts +81 -0
- package/dist/server/handlers/chat/engine.d.ts.map +1 -0
- package/dist/server/handlers/chat/engine.js +442 -0
- package/dist/server/handlers/chat/engine.js.map +1 -0
- package/dist/server/handlers/chat/executor.d.ts +65 -0
- package/dist/server/handlers/chat/executor.d.ts.map +1 -0
- package/dist/server/handlers/chat/executor.js +375 -0
- package/dist/server/handlers/chat/executor.js.map +1 -0
- package/dist/server/handlers/chat/index.d.ts +62 -0
- package/dist/server/handlers/chat/index.d.ts.map +1 -0
- package/dist/server/handlers/chat/index.js +182 -0
- package/dist/server/handlers/chat/index.js.map +1 -0
- package/dist/server/handlers/chat/memory.d.ts +91 -0
- package/dist/server/handlers/chat/memory.d.ts.map +1 -0
- package/dist/server/handlers/chat/memory.js +293 -0
- package/dist/server/handlers/chat/memory.js.map +1 -0
- package/dist/server/handlers/chat/models.d.ts +180 -0
- package/dist/server/handlers/chat/models.d.ts.map +1 -0
- package/dist/server/handlers/chat/models.js +304 -0
- package/dist/server/handlers/chat/models.js.map +1 -0
- package/dist/server/handlers/chat/planner.d.ts +116 -0
- package/dist/server/handlers/chat/planner.d.ts.map +1 -0
- package/dist/server/handlers/chat/planner.js +344 -0
- package/dist/server/handlers/chat/planner.js.map +1 -0
- package/dist/server/handlers/chat/types.d.ts +500 -0
- package/dist/server/handlers/chat/types.d.ts.map +1 -0
- package/dist/server/handlers/chat/types.js +11 -0
- package/dist/server/handlers/chat/types.js.map +1 -0
- package/dist/server/handlers/collections.d.ts +67 -0
- package/dist/server/handlers/collections.d.ts.map +1 -0
- package/dist/server/handlers/collections.js +484 -0
- package/dist/server/handlers/collections.js.map +1 -0
- package/dist/server/handlers/commerce.d.ts +106 -0
- package/dist/server/handlers/commerce.d.ts.map +1 -0
- package/dist/server/handlers/commerce.js +62 -0
- package/dist/server/handlers/commerce.js.map +1 -0
- package/dist/server/handlers/config.d.ts +112 -0
- package/dist/server/handlers/config.d.ts.map +1 -0
- package/dist/server/handlers/config.js +122 -0
- package/dist/server/handlers/config.js.map +1 -0
- package/dist/server/handlers/export.d.ts +72 -0
- package/dist/server/handlers/export.d.ts.map +1 -0
- package/dist/server/handlers/export.js +175 -0
- package/dist/server/handlers/export.js.map +1 -0
- package/dist/server/handlers/formats.d.ts +77 -0
- package/dist/server/handlers/formats.d.ts.map +1 -0
- package/dist/server/handlers/formats.js +65 -0
- package/dist/server/handlers/formats.js.map +1 -0
- package/dist/server/handlers/graph.d.ts +31 -0
- package/dist/server/handlers/graph.d.ts.map +1 -0
- package/dist/server/handlers/graph.js +490 -0
- package/dist/server/handlers/graph.js.map +1 -0
- package/dist/server/handlers/import.d.ts +96 -0
- package/dist/server/handlers/import.d.ts.map +1 -0
- package/dist/server/handlers/import.js +108 -0
- package/dist/server/handlers/import.js.map +1 -0
- package/dist/server/handlers/index.d.ts +68 -0
- package/dist/server/handlers/index.d.ts.map +1 -0
- package/dist/server/handlers/index.js +71 -0
- package/dist/server/handlers/index.js.map +1 -0
- package/dist/server/handlers/media.d.ts +76 -0
- package/dist/server/handlers/media.d.ts.map +1 -0
- package/dist/server/handlers/media.js +53 -0
- package/dist/server/handlers/media.js.map +1 -0
- package/dist/server/handlers/project.d.ts +45 -0
- package/dist/server/handlers/project.d.ts.map +1 -0
- package/dist/server/handlers/project.js +181 -0
- package/dist/server/handlers/project.js.map +1 -0
- package/dist/server/handlers/publish.d.ts +102 -0
- package/dist/server/handlers/publish.d.ts.map +1 -0
- package/dist/server/handlers/publish.js +130 -0
- package/dist/server/handlers/publish.js.map +1 -0
- package/dist/server/handlers/pulse.d.ts +39 -0
- package/dist/server/handlers/pulse.d.ts.map +1 -0
- package/dist/server/handlers/pulse.js +78 -0
- package/dist/server/handlers/pulse.js.map +1 -0
- package/dist/server/handlers/realtime.d.ts +55 -0
- package/dist/server/handlers/realtime.d.ts.map +1 -0
- package/dist/server/handlers/realtime.js +49 -0
- package/dist/server/handlers/realtime.js.map +1 -0
- package/dist/server/handlers/search.d.ts +21 -0
- package/dist/server/handlers/search.d.ts.map +1 -0
- package/dist/server/handlers/search.js +237 -0
- package/dist/server/handlers/search.js.map +1 -0
- package/dist/server/handlers/session.d.ts +47 -0
- package/dist/server/handlers/session.d.ts.map +1 -0
- package/dist/server/handlers/session.js +286 -0
- package/dist/server/handlers/session.js.map +1 -0
- package/dist/server/handlers/settings.d.ts +97 -0
- package/dist/server/handlers/settings.d.ts.map +1 -0
- package/dist/server/handlers/settings.js +131 -0
- package/dist/server/handlers/settings.js.map +1 -0
- package/dist/server/handlers/workspace.d.ts +78 -0
- package/dist/server/handlers/workspace.d.ts.map +1 -0
- package/dist/server/handlers/workspace.js +270 -0
- package/dist/server/handlers/workspace.js.map +1 -0
- package/dist/server/hono-router.d.ts +66 -0
- package/dist/server/hono-router.d.ts.map +1 -0
- package/dist/server/hono-router.js +203 -0
- package/dist/server/hono-router.js.map +1 -0
- package/dist/server/index.d.ts +27 -19
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +30 -18
- package/dist/server/index.js.map +1 -1
- package/dist/server/namespace-router.d.ts +204 -0
- package/dist/server/namespace-router.d.ts.map +1 -0
- package/dist/server/namespace-router.js +262 -0
- package/dist/server/namespace-router.js.map +1 -0
- package/dist/transports/http-namespace.d.ts +210 -0
- package/dist/transports/http-namespace.d.ts.map +1 -0
- package/dist/transports/http-namespace.js +514 -0
- package/dist/transports/http-namespace.js.map +1 -0
- package/dist/types.d.ts +59 -65
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +7 -3
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -69,8 +69,21 @@
|
|
|
69
69
|
* sdk.brainy.onDataChange((event) => console.log('change:', event))
|
|
70
70
|
* ```
|
|
71
71
|
*/
|
|
72
|
-
import type { ClientSDKOptions } from '../types.js';
|
|
73
72
|
import type { SoulcraftSDK } from '../types.js';
|
|
73
|
+
/**
|
|
74
|
+
* Legacy client SDK options. Kept for backward compatibility with `createClientSDK()`.
|
|
75
|
+
* New code should use `createSoulcraftProxy()` with a namespace-aware transport instead.
|
|
76
|
+
*/
|
|
77
|
+
interface LegacyClientSDKOptions {
|
|
78
|
+
mode: 'client';
|
|
79
|
+
product: string;
|
|
80
|
+
transport: 'http' | 'ws' | 'sse';
|
|
81
|
+
baseUrl: string;
|
|
82
|
+
auth?: 'cookie' | {
|
|
83
|
+
token: string;
|
|
84
|
+
};
|
|
85
|
+
timeoutMs?: number;
|
|
86
|
+
}
|
|
74
87
|
/**
|
|
75
88
|
* Create a client-mode `SoulcraftSDK` from the given options.
|
|
76
89
|
*
|
|
@@ -95,5 +108,6 @@ import type { SoulcraftSDK } from '../types.js';
|
|
|
95
108
|
* const results = await sdk.brainy.find({ query: 'candle inventory' })
|
|
96
109
|
* ```
|
|
97
110
|
*/
|
|
98
|
-
export declare function createClientSDK(options:
|
|
111
|
+
export declare function createClientSDK(options: LegacyClientSDKOptions): SoulcraftSDK;
|
|
112
|
+
export {};
|
|
99
113
|
//# sourceMappingURL=create-client-sdk.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-client-sdk.d.ts","sourceRoot":"","sources":["../../src/client/create-client-sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AAOH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"create-client-sdk.d.ts","sourceRoot":"","sources":["../../src/client/create-client-sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AAOH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG/C;;;GAGG;AACH,UAAU,sBAAsB;IAC9B,IAAI,EAAE,QAAQ,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAAA;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,QAAQ,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACnC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,YAAY,CAwE7E"}
|
|
@@ -120,15 +120,10 @@ export function createClientSDK(options) {
|
|
|
120
120
|
transport = new HttpTransport(baseUrl, authToken, useCookies, timeoutMs);
|
|
121
121
|
}
|
|
122
122
|
const brainyProxy = createBrainyProxy(transport);
|
|
123
|
-
//
|
|
124
|
-
//
|
|
125
|
-
const vfs = brainyProxy.vfs;
|
|
126
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
127
|
-
const versions = brainyProxy.versions;
|
|
123
|
+
// This legacy factory only wires the brainy namespace. All other namespaces
|
|
124
|
+
// throw at access time. For full namespace support, use createSoulcraftProxy().
|
|
128
125
|
const sdk = {
|
|
129
126
|
brainy: brainyProxy,
|
|
130
|
-
vfs,
|
|
131
|
-
versions,
|
|
132
127
|
// Client mode stubs — these module namespaces are server-only.
|
|
133
128
|
// Accessing them from a client app is a usage error; throw explicitly.
|
|
134
129
|
get auth() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-client-sdk.js","sourceRoot":"","sources":["../../src/client/create-client-sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"create-client-sdk.js","sourceRoot":"","sources":["../../src/client/create-client-sdk.ts"],"names":[],"mappings":"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"}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -3,64 +3,69 @@
|
|
|
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
|
-
*
|
|
7
|
-
* (server-push), and PostMessage (WebContainer iframe ↔ parent frame) transports.
|
|
8
|
-
* Cookie-based and Bearer token auth. The Brainy proxy factory for creating a
|
|
9
|
-
* fully-typed `sdk.brainy` API surface over any transport.
|
|
6
|
+
* ## SDK 2.0 — Namespace-aware transports (recommended)
|
|
10
7
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
8
|
+
* Use `createSoulcraftProxy()` with a namespace-aware transport for full access to
|
|
9
|
+
* all 25 SDK namespaces (brainy, chat, graph, search, ai, media, realtime, etc.).
|
|
13
10
|
*
|
|
14
|
-
* @
|
|
15
|
-
*
|
|
16
|
-
*
|
|
11
|
+
* - {@link HttpRpcTransport} — JSON POST to `/api/rpc`. Stateless, works everywhere.
|
|
12
|
+
* - {@link PostMessageRpcTransport} — `soulcraft:request` PostMessage. WebContainer iframes.
|
|
13
|
+
* - {@link WsTransport} — MessagePack binary over WebSocket. Real-time, bidirectional.
|
|
17
14
|
*
|
|
18
|
-
*
|
|
19
|
-
* new HttpTransport('https://workshop.soulcraft.com', undefined, true)
|
|
20
|
-
* )
|
|
15
|
+
* ## Legacy transports (brainy-only)
|
|
21
16
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
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.
|
|
24
19
|
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
20
|
+
* - `LegacyHttpTransport` — `/api/brainy/rpc` only.
|
|
21
|
+
* - `LegacyPostMessageTransport` — `brainy:request` only.
|
|
22
|
+
* - `WorkshopTransport` — `workshop:request` non-brainy relay (superseded by PostMessageRpcTransport).
|
|
28
23
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* 'wicks-and-whiskers'
|
|
33
|
-
* )
|
|
34
|
-
* await transport.connect()
|
|
35
|
-
*
|
|
36
|
-
* const brainy = createBrainyProxy(transport)
|
|
37
|
-
* brainy.onDataChange((event) => console.log('live change:', event))
|
|
24
|
+
* @example SDK 2.0 — full namespace access
|
|
25
|
+
* ```typescript
|
|
26
|
+
* import { createSoulcraftProxy, HttpRpcTransport } from '@soulcraft/sdk/client'
|
|
38
27
|
*
|
|
39
|
-
* const
|
|
28
|
+
* const sdk = createSoulcraftProxy(new HttpRpcTransport('/api'))
|
|
29
|
+
* const results = await sdk.brainy.find({ query: 'candle kits' })
|
|
30
|
+
* const graph = await sdk.graph.getData()
|
|
40
31
|
* ```
|
|
41
32
|
*
|
|
42
|
-
* @example
|
|
33
|
+
* @example SDK 2.0 — PostMessage in WebContainer iframe
|
|
43
34
|
* ```typescript
|
|
44
|
-
* import {
|
|
35
|
+
* import { createSoulcraftProxy, PostMessageRpcTransport } from '@soulcraft/sdk/client'
|
|
45
36
|
*
|
|
46
|
-
* const
|
|
47
|
-
* const
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
* sse.onEvent((event) => refreshUI(event))
|
|
37
|
+
* const sdk = createSoulcraftProxy(new PostMessageRpcTransport(parentOrigin))
|
|
38
|
+
* const entities = await sdk.brainy.find({ query: 'notes' })
|
|
39
|
+
* for await (const chunk of sdk.chat.sendStreaming('Summarize my notes')) {
|
|
40
|
+
* if (chunk.type === 'text') process.stdout.write(chunk.text!)
|
|
41
|
+
* }
|
|
52
42
|
* ```
|
|
53
43
|
*/
|
|
44
|
+
export { createSoulcraftProxy } from './namespace-proxy.js';
|
|
45
|
+
export type { NamespaceTransport } from './namespace-proxy.js';
|
|
46
|
+
export { HttpNamespaceTransport, PostMessageNamespaceTransport, HttpRpcTransport, PostMessageRpcTransport, } from '../transports/http-namespace.js';
|
|
47
|
+
export type { HttpNamespaceTransportOptions } from '../transports/http-namespace.js';
|
|
54
48
|
export { createClientSDK } from './create-client-sdk.js';
|
|
55
|
-
|
|
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';
|
|
56
59
|
export { WsTransport } from '../transports/ws.js';
|
|
57
60
|
export { SseTransport } from '../transports/sse.js';
|
|
58
|
-
export { PostMessageTransport } from '../transports/postmessage.js';
|
|
59
61
|
export type { PostMessageRequest, PostMessageResponse } from '../transports/postmessage.js';
|
|
60
62
|
export type { SDKTransport } from '../transports/transport.js';
|
|
63
|
+
/** @deprecated Use `createSoulcraftProxy()` for full namespace access. */
|
|
61
64
|
export { createBrainyProxy } from '../modules/brainy/proxy.js';
|
|
65
|
+
/** @deprecated Use `createSoulcraftProxy()` for full namespace access. */
|
|
62
66
|
export { createAppContext } from '../modules/app-context/index.js';
|
|
63
67
|
export type { CreateAppContextOptions, AppContext } from '../modules/app-context/index.js';
|
|
68
|
+
/** @deprecated Use {@link PostMessageRpcTransport} which handles all namespaces. */
|
|
64
69
|
export { WorkshopTransport } from '../transports/workshop.js';
|
|
65
70
|
export type { WorkshopRequest, WorkshopResponse, WorkshopStreamChunk, } from '../transports/workshop.js';
|
|
66
71
|
export { createYjsProvider } from '../transports/yjs-provider.js';
|
|
@@ -68,7 +73,9 @@ export type { YjsProvider } from '../transports/yjs-provider.js';
|
|
|
68
73
|
export { joinHallRoom } from '../modules/hall/browser.js';
|
|
69
74
|
export type { JoinHallRoomOptions } from '../modules/hall/browser.js';
|
|
70
75
|
export type { HallRoomHandle, HallRoomHandleEvents, TranscriptEvent, ConceptMentionEvent, RelationProposedEvent, SpeakerChangedEvent, PeerJoinedEvent, PeerLeftEvent, RoomOptions, RecordingManifest, ConceptInput, } from '../modules/hall/types.js';
|
|
76
|
+
export type { SoulcraftSDK } from '../types.js';
|
|
71
77
|
export type { ClientSDKOptions } from '../types.js';
|
|
78
|
+
export type { SoulcraftNamespaces } from '../namespaces.js';
|
|
72
79
|
export type { SoulcraftBrainy } from '../modules/brainy/types.js';
|
|
73
80
|
export type { BrainyChangeEvent } from '../modules/brainy/events.js';
|
|
74
81
|
export { SDKError, SDKDisconnectedError, SDKTimeoutError, SDKAuthError, SDKForbiddenError, SDKRpcError, SDKMethodNotFoundError, } from '../modules/brainy/errors.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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
package/dist/client/index.js
CHANGED
|
@@ -3,70 +3,85 @@
|
|
|
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
|
-
*
|
|
7
|
-
* (server-push), and PostMessage (WebContainer iframe ↔ parent frame) transports.
|
|
8
|
-
* Cookie-based and Bearer token auth. The Brainy proxy factory for creating a
|
|
9
|
-
* fully-typed `sdk.brainy` API surface over any transport.
|
|
6
|
+
* ## SDK 2.0 — Namespace-aware transports (recommended)
|
|
10
7
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
8
|
+
* Use `createSoulcraftProxy()` with a namespace-aware transport for full access to
|
|
9
|
+
* all 25 SDK namespaces (brainy, chat, graph, search, ai, media, realtime, etc.).
|
|
13
10
|
*
|
|
14
|
-
* @
|
|
15
|
-
*
|
|
16
|
-
*
|
|
11
|
+
* - {@link HttpRpcTransport} — JSON POST to `/api/rpc`. Stateless, works everywhere.
|
|
12
|
+
* - {@link PostMessageRpcTransport} — `soulcraft:request` PostMessage. WebContainer iframes.
|
|
13
|
+
* - {@link WsTransport} — MessagePack binary over WebSocket. Real-time, bidirectional.
|
|
17
14
|
*
|
|
18
|
-
*
|
|
19
|
-
* new HttpTransport('https://workshop.soulcraft.com', undefined, true)
|
|
20
|
-
* )
|
|
15
|
+
* ## Legacy transports (brainy-only)
|
|
21
16
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
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.
|
|
24
19
|
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
20
|
+
* - `LegacyHttpTransport` — `/api/brainy/rpc` only.
|
|
21
|
+
* - `LegacyPostMessageTransport` — `brainy:request` only.
|
|
22
|
+
* - `WorkshopTransport` — `workshop:request` non-brainy relay (superseded by PostMessageRpcTransport).
|
|
28
23
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* 'wicks-and-whiskers'
|
|
33
|
-
* )
|
|
34
|
-
* await transport.connect()
|
|
35
|
-
*
|
|
36
|
-
* const brainy = createBrainyProxy(transport)
|
|
37
|
-
* brainy.onDataChange((event) => console.log('live change:', event))
|
|
24
|
+
* @example SDK 2.0 — full namespace access
|
|
25
|
+
* ```typescript
|
|
26
|
+
* import { createSoulcraftProxy, HttpRpcTransport } from '@soulcraft/sdk/client'
|
|
38
27
|
*
|
|
39
|
-
* const
|
|
28
|
+
* const sdk = createSoulcraftProxy(new HttpRpcTransport('/api'))
|
|
29
|
+
* const results = await sdk.brainy.find({ query: 'candle kits' })
|
|
30
|
+
* const graph = await sdk.graph.getData()
|
|
40
31
|
* ```
|
|
41
32
|
*
|
|
42
|
-
* @example
|
|
33
|
+
* @example SDK 2.0 — PostMessage in WebContainer iframe
|
|
43
34
|
* ```typescript
|
|
44
|
-
* import {
|
|
35
|
+
* import { createSoulcraftProxy, PostMessageRpcTransport } from '@soulcraft/sdk/client'
|
|
45
36
|
*
|
|
46
|
-
* const
|
|
47
|
-
* const
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
* sse.onEvent((event) => refreshUI(event))
|
|
37
|
+
* const sdk = createSoulcraftProxy(new PostMessageRpcTransport(parentOrigin))
|
|
38
|
+
* const entities = await sdk.brainy.find({ query: 'notes' })
|
|
39
|
+
* for await (const chunk of sdk.chat.sendStreaming('Summarize my notes')) {
|
|
40
|
+
* if (chunk.type === 'text') process.stdout.write(chunk.text!)
|
|
41
|
+
* }
|
|
52
42
|
* ```
|
|
53
43
|
*/
|
|
54
|
-
//
|
|
44
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
45
|
+
// SDK 2.0 — Namespace proxy + transports (recommended)
|
|
46
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
47
|
+
// ── Namespace proxy factory ─────────────────────────────────────────────────
|
|
48
|
+
export { createSoulcraftProxy } from './namespace-proxy.js';
|
|
49
|
+
// ── Namespace-aware transports ──────────────────────────────────────────────
|
|
50
|
+
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
55
|
export { createClientSDK } from './create-client-sdk.js';
|
|
56
|
-
// ──
|
|
57
|
-
|
|
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.
|
|
58
68
|
export { WsTransport } from '../transports/ws.js';
|
|
59
69
|
export { SseTransport } from '../transports/sse.js';
|
|
60
|
-
|
|
61
|
-
|
|
70
|
+
// ── Brainy proxy factory (brainy-only) ──────────────────────────────────────
|
|
71
|
+
/** @deprecated Use `createSoulcraftProxy()` for full namespace access. */
|
|
62
72
|
export { createBrainyProxy } from '../modules/brainy/proxy.js';
|
|
63
|
-
// ── App context factory
|
|
73
|
+
// ── App context factory ─────────────────────────────────────────────────────
|
|
74
|
+
/** @deprecated Use `createSoulcraftProxy()` for full namespace access. */
|
|
64
75
|
export { createAppContext } from '../modules/app-context/index.js';
|
|
65
|
-
// ── Workshop transport (
|
|
76
|
+
// ── Workshop transport (superseded by PostMessageRpcTransport) ──────────────
|
|
77
|
+
/** @deprecated Use {@link PostMessageRpcTransport} which handles all namespaces. */
|
|
66
78
|
export { WorkshopTransport } from '../transports/workshop.js';
|
|
67
|
-
//
|
|
79
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
80
|
+
// Shared — used by both SDK 2.0 and legacy
|
|
81
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
82
|
+
// ── Y.js provider (collaborative editing) ───────────────────────────────────
|
|
68
83
|
export { createYjsProvider } from '../transports/yjs-provider.js';
|
|
69
|
-
// ── Hall room client (browser WebRTC)
|
|
84
|
+
// ── Hall room client (browser WebRTC) ───────────────────────────────────────
|
|
70
85
|
export { joinHallRoom } from '../modules/hall/browser.js';
|
|
71
86
|
export { SDKError, SDKDisconnectedError, SDKTimeoutError, SDKAuthError, SDKForbiddenError, SDKRpcError, SDKMethodNotFoundError, } from '../modules/brainy/errors.js';
|
|
72
87
|
//# 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module client/namespace-proxy
|
|
3
|
+
* @description Universal client proxy factory for namespace-aware RPC.
|
|
4
|
+
*
|
|
5
|
+
* Extends the recursive Proxy pattern from `modules/brainy/proxy.ts` to ALL
|
|
6
|
+
* 25 SDK namespaces. Accessing `sdk.chat.send('hello')` serializes as:
|
|
7
|
+
*
|
|
8
|
+
* ```
|
|
9
|
+
* transport.callNs('chat', 'send', ['hello'])
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* The first property access on the returned proxy selects the namespace.
|
|
13
|
+
* Subsequent accesses build the method path within that namespace. When the
|
|
14
|
+
* proxy is invoked as a function, the call is dispatched.
|
|
15
|
+
*
|
|
16
|
+
* ## Special namespace: brainy
|
|
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).
|
|
22
|
+
*
|
|
23
|
+
* ## Streaming
|
|
24
|
+
*
|
|
25
|
+
* Methods that return `AsyncIterable` (e.g. `chat.sendStreaming`) require the
|
|
26
|
+
* transport to support streaming. The proxy calls `transport.callNsStream()`
|
|
27
|
+
* when the caller signals a stream is expected (by convention — the handler
|
|
28
|
+
* decides at the server level).
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* import { createSoulcraftProxy } from '@soulcraft/sdk/client'
|
|
33
|
+
*
|
|
34
|
+
* const soulcraft = createSoulcraftProxy(transport)
|
|
35
|
+
*
|
|
36
|
+
* // Brainy — delegates to existing BrainyProxy for full compat
|
|
37
|
+
* const results = await soulcraft.brainy.find({ query: 'candles' })
|
|
38
|
+
* const files = await soulcraft.brainy.vfs.readdir('/')
|
|
39
|
+
*
|
|
40
|
+
* // Tier 2 namespaces — new RPC dispatch
|
|
41
|
+
* const graph = await soulcraft.graph.getData()
|
|
42
|
+
* const response = await soulcraft.chat.send('Hello')
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
import type { SoulcraftSDK } from '../types.js';
|
|
46
|
+
/**
|
|
47
|
+
* Transport interface for namespace-aware RPC.
|
|
48
|
+
*
|
|
49
|
+
* Extends the concept of `SDKTransport.call()` with a namespace field. Adapters
|
|
50
|
+
* for HTTP, WebSocket, and PostMessage implement this by encoding the namespace
|
|
51
|
+
* into their respective wire formats.
|
|
52
|
+
*/
|
|
53
|
+
export interface NamespaceTransport {
|
|
54
|
+
/**
|
|
55
|
+
* Dispatch a namespace-aware RPC call.
|
|
56
|
+
*
|
|
57
|
+
* @param ns - Target namespace (e.g. `'chat'`, `'graph'`, `'brainy.vfs'`).
|
|
58
|
+
* @param method - Method within the namespace (e.g. `'send'`, `'getData'`).
|
|
59
|
+
* @param args - Positional arguments.
|
|
60
|
+
* @returns The handler's return value.
|
|
61
|
+
*/
|
|
62
|
+
callNs(ns: string, method: string, args: unknown[]): Promise<unknown>;
|
|
63
|
+
/**
|
|
64
|
+
* Dispatch a streaming namespace-aware RPC call.
|
|
65
|
+
*
|
|
66
|
+
* @param ns - Target namespace.
|
|
67
|
+
* @param method - Method within the namespace.
|
|
68
|
+
* @param args - Positional arguments.
|
|
69
|
+
* @returns An async iterable of response chunks.
|
|
70
|
+
*/
|
|
71
|
+
callNsStream(ns: string, method: string, args: unknown[]): AsyncIterable<unknown>;
|
|
72
|
+
/**
|
|
73
|
+
* Returns `true` if the transport has an active connection.
|
|
74
|
+
*/
|
|
75
|
+
isAlive(): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Gracefully close the transport.
|
|
78
|
+
*/
|
|
79
|
+
close(): Promise<void>;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Creates a `SoulcraftSDK` proxy backed by a {@link NamespaceTransport}.
|
|
83
|
+
*
|
|
84
|
+
* Every property access on the returned object is intercepted:
|
|
85
|
+
* - First-level access selects the namespace (e.g. `sdk.chat`)
|
|
86
|
+
* - Second-level access selects the method (e.g. `sdk.chat.send`)
|
|
87
|
+
* - Invoking as a function dispatches the RPC call
|
|
88
|
+
*
|
|
89
|
+
* Lifecycle methods (`connect`, `disconnect`, `shutdown`) are wired to
|
|
90
|
+
* the transport's lifecycle. The `brainy` namespace supports sub-namespaces
|
|
91
|
+
* (`brainy.vfs`, `brainy.versions`) via namespace promotion.
|
|
92
|
+
*
|
|
93
|
+
* @param transport - The namespace-aware transport.
|
|
94
|
+
* @returns A fully typed `SoulcraftSDK` proxy.
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```typescript
|
|
98
|
+
* import { createSoulcraftProxy, HttpTransport } from '@soulcraft/sdk/client'
|
|
99
|
+
*
|
|
100
|
+
* const transport = new HttpTransport('https://workshop.soulcraft.com')
|
|
101
|
+
* const sdk = createSoulcraftProxy(transport)
|
|
102
|
+
*
|
|
103
|
+
* const graph = await sdk.graph.getData()
|
|
104
|
+
* const results = await sdk.brainy.find({ query: 'candles' })
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
export declare function createSoulcraftProxy(transport: NamespaceTransport): SoulcraftSDK;
|
|
108
|
+
//# sourceMappingURL=namespace-proxy.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module client/namespace-proxy
|
|
3
|
+
* @description Universal client proxy factory for namespace-aware RPC.
|
|
4
|
+
*
|
|
5
|
+
* Extends the recursive Proxy pattern from `modules/brainy/proxy.ts` to ALL
|
|
6
|
+
* 25 SDK namespaces. Accessing `sdk.chat.send('hello')` serializes as:
|
|
7
|
+
*
|
|
8
|
+
* ```
|
|
9
|
+
* transport.callNs('chat', 'send', ['hello'])
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* The first property access on the returned proxy selects the namespace.
|
|
13
|
+
* Subsequent accesses build the method path within that namespace. When the
|
|
14
|
+
* proxy is invoked as a function, the call is dispatched.
|
|
15
|
+
*
|
|
16
|
+
* ## Special namespace: brainy
|
|
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).
|
|
22
|
+
*
|
|
23
|
+
* ## Streaming
|
|
24
|
+
*
|
|
25
|
+
* Methods that return `AsyncIterable` (e.g. `chat.sendStreaming`) require the
|
|
26
|
+
* transport to support streaming. The proxy calls `transport.callNsStream()`
|
|
27
|
+
* when the caller signals a stream is expected (by convention — the handler
|
|
28
|
+
* decides at the server level).
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* import { createSoulcraftProxy } from '@soulcraft/sdk/client'
|
|
33
|
+
*
|
|
34
|
+
* const soulcraft = createSoulcraftProxy(transport)
|
|
35
|
+
*
|
|
36
|
+
* // Brainy — delegates to existing BrainyProxy for full compat
|
|
37
|
+
* const results = await soulcraft.brainy.find({ query: 'candles' })
|
|
38
|
+
* const files = await soulcraft.brainy.vfs.readdir('/')
|
|
39
|
+
*
|
|
40
|
+
* // Tier 2 namespaces — new RPC dispatch
|
|
41
|
+
* const graph = await soulcraft.graph.getData()
|
|
42
|
+
* const response = await soulcraft.chat.send('Hello')
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
46
|
+
// Proxy factory
|
|
47
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
48
|
+
/**
|
|
49
|
+
* Creates a `SoulcraftSDK` proxy backed by a {@link NamespaceTransport}.
|
|
50
|
+
*
|
|
51
|
+
* Every property access on the returned object is intercepted:
|
|
52
|
+
* - First-level access selects the namespace (e.g. `sdk.chat`)
|
|
53
|
+
* - Second-level access selects the method (e.g. `sdk.chat.send`)
|
|
54
|
+
* - Invoking as a function dispatches the RPC call
|
|
55
|
+
*
|
|
56
|
+
* Lifecycle methods (`connect`, `disconnect`, `shutdown`) are wired to
|
|
57
|
+
* the transport's lifecycle. The `brainy` namespace supports sub-namespaces
|
|
58
|
+
* (`brainy.vfs`, `brainy.versions`) via namespace promotion.
|
|
59
|
+
*
|
|
60
|
+
* @param transport - The namespace-aware transport.
|
|
61
|
+
* @returns A fully typed `SoulcraftSDK` proxy.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```typescript
|
|
65
|
+
* import { createSoulcraftProxy, HttpTransport } from '@soulcraft/sdk/client'
|
|
66
|
+
*
|
|
67
|
+
* const transport = new HttpTransport('https://workshop.soulcraft.com')
|
|
68
|
+
* const sdk = createSoulcraftProxy(transport)
|
|
69
|
+
*
|
|
70
|
+
* const graph = await sdk.graph.getData()
|
|
71
|
+
* const results = await sdk.brainy.find({ query: 'candles' })
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export function createSoulcraftProxy(transport) {
|
|
75
|
+
return _createRootProxy(transport);
|
|
76
|
+
}
|
|
77
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
78
|
+
// Internal recursive proxy
|
|
79
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
80
|
+
/**
|
|
81
|
+
* Creates the root-level proxy that intercepts namespace selection.
|
|
82
|
+
*
|
|
83
|
+
* @param transport - The namespace transport.
|
|
84
|
+
* @returns A Proxy that dispatches namespace RPC calls.
|
|
85
|
+
*/
|
|
86
|
+
function _createRootProxy(transport) {
|
|
87
|
+
return new Proxy(function () { }, {
|
|
88
|
+
get(_target, prop) {
|
|
89
|
+
if (typeof prop === 'symbol')
|
|
90
|
+
return undefined;
|
|
91
|
+
if (prop === 'then')
|
|
92
|
+
return undefined;
|
|
93
|
+
const ns = String(prop);
|
|
94
|
+
// Root-level lifecycle methods.
|
|
95
|
+
if (ns === '_transport')
|
|
96
|
+
return transport;
|
|
97
|
+
if (ns === 'isAlive')
|
|
98
|
+
return () => transport.isAlive();
|
|
99
|
+
if (ns === 'close')
|
|
100
|
+
return () => transport.close();
|
|
101
|
+
// Return a namespace proxy that accumulates the method path.
|
|
102
|
+
return _createNamespaceProxy(transport, ns, '');
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Creates a proxy for a specific namespace, accumulating the method path.
|
|
108
|
+
*
|
|
109
|
+
* Supports nested sub-methods (e.g. `soulcraft.brainy.vfs.readdir()`):
|
|
110
|
+
* - `ns: 'brainy'`, `methodPath: ''` → access `.vfs` → `ns: 'brainy.vfs'`, `methodPath: ''`
|
|
111
|
+
* - `ns: 'brainy.vfs'`, `methodPath: ''` → access `.readdir` → `methodPath: 'readdir'`
|
|
112
|
+
* - Invoked with `['/']` → `transport.callNs('brainy.vfs', 'readdir', ['/'])`
|
|
113
|
+
*
|
|
114
|
+
* For the `brainy` namespace, the first few sub-properties become namespace
|
|
115
|
+
* extensions (`brainy.vfs`, `brainy.versions`) rather than method paths.
|
|
116
|
+
*
|
|
117
|
+
* @param transport - The namespace transport.
|
|
118
|
+
* @param ns - The resolved namespace.
|
|
119
|
+
* @param methodPath - Accumulated dot-separated method path (empty at namespace root).
|
|
120
|
+
* @returns A callable Proxy.
|
|
121
|
+
*/
|
|
122
|
+
function _createNamespaceProxy(transport, ns, methodPath) {
|
|
123
|
+
return new Proxy(function () { }, {
|
|
124
|
+
get(_target, prop) {
|
|
125
|
+
if (typeof prop === 'symbol')
|
|
126
|
+
return undefined;
|
|
127
|
+
if (prop === 'then')
|
|
128
|
+
return undefined;
|
|
129
|
+
const propStr = String(prop);
|
|
130
|
+
// Brainy sub-namespace promotion: brainy.vfs, brainy.versions become
|
|
131
|
+
// their own namespace rather than a method path.
|
|
132
|
+
if (ns === 'brainy' && methodPath === '' && BRAINY_SUB_NAMESPACES.has(propStr)) {
|
|
133
|
+
return _createNamespaceProxy(transport, `brainy.${propStr}`, '');
|
|
134
|
+
}
|
|
135
|
+
// Accumulate method path.
|
|
136
|
+
const nextPath = methodPath ? `${methodPath}.${propStr}` : propStr;
|
|
137
|
+
return _createNamespaceProxy(transport, ns, nextPath);
|
|
138
|
+
},
|
|
139
|
+
apply(_target, _thisArg, args) {
|
|
140
|
+
// The proxy was invoked as a function — dispatch the RPC call.
|
|
141
|
+
if (!methodPath) {
|
|
142
|
+
// Namespace-level invocation (e.g. `soulcraft.brainy()`) — not valid.
|
|
143
|
+
return Promise.reject(new Error(`Cannot call namespace '${ns}' directly. Use a method, e.g. ${ns}.someMethod()`));
|
|
144
|
+
}
|
|
145
|
+
return transport.callNs(ns, methodPath, args);
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
/** Brainy sub-properties that promote to their own namespace. */
|
|
150
|
+
const BRAINY_SUB_NAMESPACES = new Set(['vfs', 'versions']);
|
|
151
|
+
//# sourceMappingURL=namespace-proxy.js.map
|
|
@@ -0,0 +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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -32,4 +32,6 @@ export type { WvizDocument, WvizEntity, WvizEdge, WvizSnapshot, WvizViewType, Wd
|
|
|
32
32
|
export { SOULCRAFT_FORMATS } from './modules/formats/types.js';
|
|
33
33
|
export type { BillingModule, BillingPlanType, SubscriptionStatus, ModelUsage, UsageData, UsageStatus, SubscriptionData, LimitCheckResult, BatchIncrementData, CreateCheckoutSessionOptions, CreatePortalSessionOptions, } from './modules/billing/types.js';
|
|
34
34
|
export type { NotificationsModule, Notification, NotificationResult, NotificationSender, EmailNotification, SmsNotification, } from './modules/notifications/types.js';
|
|
35
|
+
export type { SoulcraftRPC, SoulcraftRPCResponse, SoulcraftRPCStream, SoulcraftRPCError, SoulcraftPostMessageRequest, SoulcraftPostMessageResponse, SoulcraftPostMessageStream, SoulcraftPostMessageEvent, SoulcraftPostMessage, } from './rpc.js';
|
|
36
|
+
export type { SoulcraftNamespaces, ChatNamespace, GraphNamespace, SearchNamespace, CollectionsNamespace, AnnotationsNamespace, WorkspaceNamespace, PublishNamespace, ImportNamespace, ExportNamespace, ConfigNamespace, SettingsNamespace, ProjectNamespace, SessionNamespace, PulseNamespace, AuthNamespace, MediaNamespace, RealtimeNamespace, CommerceNamespace, CertificationNamespace, FormatsNamespace, ChatStreamChunk, ChatConversation, ChatMessage, ChatConversationDetail, GraphData, GraphNode, GraphEdge, GraphStats, SearchResult, ViewCollection, Annotation, WorkspaceInfo, WorkspaceStatus, PublishedLink, ImportProgress, ExportFormat, PlatformConfig, ApiKeyInfo, StorageUsage, SessionState, MediaUploadResult, MediaInfo, RealtimePeer, RealtimeSubscription, CommerceProduct, CheckoutSession, PaymentRecord, Certification, AssessmentResult, OutputFormat, FormatValidationResult, } from './namespaces.js';
|
|
35
37
|
//# sourceMappingURL=index.d.ts.map
|