@soulcraft/sdk 2.5.0 → 2.6.1

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.
@@ -1,28 +1,35 @@
1
1
  /**
2
2
  * @module @soulcraft/sdk/server
3
3
  * @description Server entry point for @soulcraft/sdk. Exports everything needed to
4
- * run the SDK in a product backend (Hono, SvelteKit, or any Bun/Node server).
4
+ * run the SDK in a product backend (SvelteKit, Bun, Hono, or any server).
5
5
  *
6
- * Use `createSoulcraftRouter()` to mount a single Hono router that handles ALL
7
- * 25 SDK namespaces via a unified `/api/rpc` endpoint. Products configure which
8
- * namespaces are active via `NamespaceProviders`.
6
+ * ## RPC Handler (recommended)
9
7
  *
10
- * This entry point must never be imported in browser bundles — it has hard
11
- * server-only dependencies (`@soulcraft/brainy`, `lru-cache`, `crypto`, `fs`).
8
+ * Use `createRpcHandler()` to get a framework-agnostic `(Request) => Response`
9
+ * handler for the unified `/api/rpc` endpoint. Works with any server that speaks
10
+ * Web Standard `Request`/`Response` — no framework dependency.
12
11
  *
13
- * @example Unified router
14
12
  * ```typescript
15
- * import { createSoulcraftRouter, BrainyInstancePool } from '@soulcraft/sdk/server'
16
- *
17
- * const pool = new BrainyInstancePool({ storage: 'filesystem', dataPath: './data', strategy: 'per-user' })
13
+ * import { createRpcHandler } from '@soulcraft/sdk/server'
18
14
  *
19
- * const router = createSoulcraftRouter({
15
+ * const handleRpc = createRpcHandler({
20
16
  * resolveBrain: async (ctx) => pool.forUser(ctx.user.emailHash, ctx.workspaceId),
21
17
  * authenticate: async (ctx) => verifySession(ctx.request),
22
- * providers: { ai: { client: anthropic }, billing, hall, ... },
18
+ * providers: { graph: graphHandler, search: searchHandler },
23
19
  * })
24
- * app.route('', router)
20
+ *
21
+ * // SvelteKit: export const POST = ({ request }) => handleRpc(request)
22
+ * // Bun: Bun.serve({ fetch: (req) => handleRpc(req) })
23
+ * // Hono: app.post('/api/rpc', (c) => handleRpc(c.req.raw))
25
24
  * ```
25
+ *
26
+ * ## Hono Router (legacy)
27
+ *
28
+ * `createSoulcraftRouter()` returns a Hono app — use if your server is Hono-based.
29
+ * Requires `hono` as a peer dependency.
30
+ *
31
+ * This entry point must never be imported in browser bundles — it has hard
32
+ * server-only dependencies (`@soulcraft/brainy`, `lru-cache`, `crypto`, `fs`).
26
33
  */
27
34
  export { BrainyInstancePool, computeEmailHash, } from './instance-pool.js';
28
35
  export type { InstancePoolConfig, InstancePoolStats, } from './instance-pool.js';
@@ -57,7 +64,8 @@ export { createNamespaceRouter } from './namespace-router.js';
57
64
  export type { NamespaceRouterConfig, NamespaceRouter, NamespaceProvider, NamespaceProviders, RequestContext, UserContext, HandlerContext, PreAuthenticatedContext, DispatchResult, } from './namespace-router.js';
58
65
  export { createNamespaceWsHandler } from './ws-handler.js';
59
66
  export type { NamespaceWsHandlerConfig, NamespaceWsHandler, WsSession, } from './ws-handler.js';
60
- export { createSoulcraftRouter } from './hono-router.js';
67
+ export { createRpcHandler } from './rpc-handler.js';
68
+ export type { RpcHandlerConfig } from './rpc-handler.js';
61
69
  export type { SoulcraftRouterConfig } from './hono-router.js';
62
70
  export { createAnnotationsHandler, createAuthHandler, createChatHandler, createCertificationHandler, createCollectionsHandler, createCommerceHandler, createConfigHandler, createExportHandler, createFormatsHandler, createGraphHandler, createImportHandler, createMediaHandler, createProjectHandler, createPublishHandler, createPulseHandler, createRealtimeHandler, createSearchHandler, createSessionHandler, createSettingsHandler, createWorkspaceHandler, } from './handlers/index.js';
63
71
  export type { AnnotationAiClient, AnnotationsHandlerOptions, ChatHandlerOptions, ChatAIClient, AnthropicStreamEvent, ToolDefinition, ToolExecutor, ToolExecutionContext, SystemPromptBuilder, SystemPromptContext, ChatBillingCheck, ChatEventEmitter, ModelSelector, TieredRouting, RetrievedMemory, UserExpertiseProfile, AIPlan, PlanStep, StepProgress, PlanExecutionResult, AIClientResolverOptions, ResolvedAIClient, CapabilityTokenFactory, AuthHandlerOptions, SampleDataProvider, CollectionsHandlerOptions, PaymentProvider, CommerceHandlerOptions, ConfigService, ConfigBillingService, ConfigHandlerOptions, ExportPipeline, ExportHandlerOptions, FormatConverter, FormatsHandlerOptions, ImportPipeline, ImportHandlerOptions, MediaBackend, MediaHandlerOptions, KitLoader, ProjectHandlerOptions, PublishBackend, VenueDeployService, AcademyPublishService, PublishHandlerOptions, PulseHandlerOptions, RealtimeBackend, RealtimeHandlerOptions, SessionEventEmitter, SessionHandlerOptions, ApiKeyService, SettingsBillingService, StorageTracker, StorageLimitResolver, SettingsHandlerOptions, WorkspaceManager, WorkspaceHandlerOptions, } from './handlers/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,35 @@
1
1
  /**
2
2
  * @module @soulcraft/sdk/server
3
3
  * @description Server entry point for @soulcraft/sdk. Exports everything needed to
4
- * run the SDK in a product backend (Hono, SvelteKit, or any Bun/Node server).
4
+ * run the SDK in a product backend (SvelteKit, Bun, Hono, or any server).
5
5
  *
6
- * Use `createSoulcraftRouter()` to mount a single Hono router that handles ALL
7
- * 25 SDK namespaces via a unified `/api/rpc` endpoint. Products configure which
8
- * namespaces are active via `NamespaceProviders`.
6
+ * ## RPC Handler (recommended)
9
7
  *
10
- * This entry point must never be imported in browser bundles — it has hard
11
- * server-only dependencies (`@soulcraft/brainy`, `lru-cache`, `crypto`, `fs`).
8
+ * Use `createRpcHandler()` to get a framework-agnostic `(Request) => Response`
9
+ * handler for the unified `/api/rpc` endpoint. Works with any server that speaks
10
+ * Web Standard `Request`/`Response` — no framework dependency.
12
11
  *
13
- * @example Unified router
14
12
  * ```typescript
15
- * import { createSoulcraftRouter, BrainyInstancePool } from '@soulcraft/sdk/server'
16
- *
17
- * const pool = new BrainyInstancePool({ storage: 'filesystem', dataPath: './data', strategy: 'per-user' })
13
+ * import { createRpcHandler } from '@soulcraft/sdk/server'
18
14
  *
19
- * const router = createSoulcraftRouter({
15
+ * const handleRpc = createRpcHandler({
20
16
  * resolveBrain: async (ctx) => pool.forUser(ctx.user.emailHash, ctx.workspaceId),
21
17
  * authenticate: async (ctx) => verifySession(ctx.request),
22
- * providers: { ai: { client: anthropic }, billing, hall, ... },
18
+ * providers: { graph: graphHandler, search: searchHandler },
23
19
  * })
24
- * app.route('', router)
20
+ *
21
+ * // SvelteKit: export const POST = ({ request }) => handleRpc(request)
22
+ * // Bun: Bun.serve({ fetch: (req) => handleRpc(req) })
23
+ * // Hono: app.post('/api/rpc', (c) => handleRpc(c.req.raw))
25
24
  * ```
25
+ *
26
+ * ## Hono Router (legacy)
27
+ *
28
+ * `createSoulcraftRouter()` returns a Hono app — use if your server is Hono-based.
29
+ * Requires `hono` as a peer dependency.
30
+ *
31
+ * This entry point must never be imported in browser bundles — it has hard
32
+ * server-only dependencies (`@soulcraft/brainy`, `lru-cache`, `crypto`, `fs`).
26
33
  */
27
34
  // ── Instance pool ─────────────────────────────────────────────────────────────
28
35
  export { BrainyInstancePool, computeEmailHash, } from './instance-pool.js';
@@ -54,8 +61,8 @@ export { createCachedDispatch, LruCacheProvider, DEFAULT_CACHEABLE_METHODS } fro
54
61
  export { createNamespaceRouter } from './namespace-router.js';
55
62
  // ── Namespace WebSocket handler ─────────────────────────────────────────────
56
63
  export { createNamespaceWsHandler } from './ws-handler.js';
57
- // ── Hono router factory ─────────────────────────────────────────────────────
58
- export { createSoulcraftRouter } from './hono-router.js';
64
+ // ── RPC handler (framework-agnostic, recommended) ───────────────────────────
65
+ export { createRpcHandler } from './rpc-handler.js';
59
66
  // ── Namespace handler factories ──────────────────────────────────────────────
60
67
  // Each factory creates a NamespaceProvider wired into `providers` on the router.
61
68
  export { createAnnotationsHandler, createAuthHandler, createChatHandler, createCertificationHandler, createCollectionsHandler, createCommerceHandler, createConfigHandler, createExportHandler, createFormatsHandler, createGraphHandler, createImportHandler, createMediaHandler, createProjectHandler, createPublishHandler, createPulseHandler, createRealtimeHandler, createSearchHandler, createSessionHandler, createSettingsHandler, createWorkspaceHandler, } from './handlers/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,iFAAiF;AACjF,OAAO,EACL,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,oBAAoB,CAAA;AAM3B,iFAAiF;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAA;AAE/D,gFAAgF;AAChF,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,UAAU,EACV,eAAe,GAChB,MAAM,oBAAoB,CAAA;AA4C3B,iFAAiF;AACjF,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EACzB,aAAa,GACd,MAAM,+BAA+B,CAAA;AAYtC,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAA;AAM/E,iFAAiF;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AASlE,iFAAiF;AACjF,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,kCAAkC,CAAA;AAEzC,gFAAgF;AAChF,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,WAAW,EACX,mBAAmB,GACpB,MAAM,2BAA2B,CAAA;AAElC,gFAAgF;AAChF,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,kBAAkB,GACnB,MAAM,6BAA6B,CAAA;AAMpC,gFAAgF;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAK7E,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAExF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEvD,iFAAiF;AACjF,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AAGlG,gFAAgF;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAa7D,+EAA+E;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAO1D,+EAA+E;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAGxD,gFAAgF;AAChF,iFAAiF;AACjF,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AA4D5B,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,0BAA0B,EAC1B,YAAY,EACZ,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,sBAAsB,GACvB,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,iFAAiF;AACjF,OAAO,EACL,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,oBAAoB,CAAA;AAM3B,iFAAiF;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAA;AAE/D,gFAAgF;AAChF,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,UAAU,EACV,eAAe,GAChB,MAAM,oBAAoB,CAAA;AA4C3B,iFAAiF;AACjF,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EACzB,aAAa,GACd,MAAM,+BAA+B,CAAA;AAYtC,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAA;AAM/E,iFAAiF;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AASlE,iFAAiF;AACjF,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,kCAAkC,CAAA;AAEzC,gFAAgF;AAChF,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,WAAW,EACX,mBAAmB,GACpB,MAAM,2BAA2B,CAAA;AAElC,gFAAgF;AAChF,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,kBAAkB,GACnB,MAAM,6BAA6B,CAAA;AAMpC,gFAAgF;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAK7E,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAExF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEvD,iFAAiF;AACjF,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AAGlG,gFAAgF;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAa7D,+EAA+E;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAO1D,+EAA+E;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAWnD,gFAAgF;AAChF,iFAAiF;AACjF,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AA4D5B,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,0BAA0B,EAC1B,YAAY,EACZ,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,sBAAsB,GACvB,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * @module server/rpc-handler
3
+ * @description Framework-agnostic RPC request handler for the Soulcraft SDK.
4
+ *
5
+ * Creates a standard `(request: Request) => Promise<Response>` handler that
6
+ * parses the JSON body, validates RPC fields, dispatches to the namespace
7
+ * router, and serializes the result — all using Web Standard APIs only.
8
+ *
9
+ * No framework dependency (no Hono, no Express, no SvelteKit). Works with
10
+ * any server that speaks `Request`/`Response`:
11
+ *
12
+ * @example SvelteKit
13
+ * ```typescript
14
+ * import { createRpcHandler } from '@soulcraft/sdk/server'
15
+ *
16
+ * const handleRpc = createRpcHandler({ resolveBrain, authenticate, providers })
17
+ *
18
+ * export const POST: RequestHandler = ({ request }) => handleRpc(request)
19
+ * ```
20
+ *
21
+ * @example Bun.serve
22
+ * ```typescript
23
+ * const handleRpc = createRpcHandler({ resolveBrain, authenticate, providers })
24
+ *
25
+ * Bun.serve({
26
+ * fetch(req) {
27
+ * if (new URL(req.url).pathname === '/api/rpc') return handleRpc(req)
28
+ * return new Response('Not found', { status: 404 })
29
+ * }
30
+ * })
31
+ * ```
32
+ *
33
+ * @example Hono (if you still use it)
34
+ * ```typescript
35
+ * const handleRpc = createRpcHandler({ resolveBrain, authenticate, providers })
36
+ *
37
+ * app.post('/api/rpc', (c) => handleRpc(c.req.raw))
38
+ * ```
39
+ */
40
+ import type { NamespaceRouterConfig } from './namespace-router.js';
41
+ import type { RpcCacheConfig } from './rpc-cache.js';
42
+ /**
43
+ * @description Configuration for {@link createRpcHandler}.
44
+ * Extends {@link NamespaceRouterConfig} with optional RPC response caching.
45
+ */
46
+ export interface RpcHandlerConfig extends NamespaceRouterConfig {
47
+ /**
48
+ * Optional RPC response cache configuration.
49
+ * When provided, cacheable read methods are served from an in-process LRU cache
50
+ * with singleflight deduplication. Write methods flush the scope automatically.
51
+ *
52
+ * @see {@link RpcCacheConfig}
53
+ */
54
+ cache?: RpcCacheConfig;
55
+ }
56
+ /**
57
+ * Creates a framework-agnostic RPC request handler.
58
+ *
59
+ * Takes a standard Web `Request`, parses the JSON body, validates the RPC
60
+ * envelope, dispatches to the namespace router, and returns a standard `Response`.
61
+ * Streaming results are delivered as SSE (`text/event-stream`).
62
+ *
63
+ * @param config - Namespace router configuration (auth, brain resolution, providers).
64
+ * @returns An async function: `(request: Request) => Promise<Response>`.
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * const handleRpc = createRpcHandler({
69
+ * resolveBrain: async (ctx) => pool.forUser(ctx.user!.emailHash, ctx.workspaceId),
70
+ * authenticate: async (ctx) => verifySession(ctx.request),
71
+ * providers: { graph: graphHandler, search: searchHandler },
72
+ * })
73
+ *
74
+ * // Use in any server framework:
75
+ * const response = await handleRpc(request)
76
+ * ```
77
+ */
78
+ export declare function createRpcHandler(config: RpcHandlerConfig): (request: Request) => Promise<Response>;
79
+ //# sourceMappingURL=rpc-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-handler.d.ts","sourceRoot":"","sources":["../../src/server/rpc-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAAkB,MAAM,uBAAuB,CAAA;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAGpD;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,cAAc,CAAA;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAsClG"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * @module server/rpc-handler
3
+ * @description Framework-agnostic RPC request handler for the Soulcraft SDK.
4
+ *
5
+ * Creates a standard `(request: Request) => Promise<Response>` handler that
6
+ * parses the JSON body, validates RPC fields, dispatches to the namespace
7
+ * router, and serializes the result — all using Web Standard APIs only.
8
+ *
9
+ * No framework dependency (no Hono, no Express, no SvelteKit). Works with
10
+ * any server that speaks `Request`/`Response`:
11
+ *
12
+ * @example SvelteKit
13
+ * ```typescript
14
+ * import { createRpcHandler } from '@soulcraft/sdk/server'
15
+ *
16
+ * const handleRpc = createRpcHandler({ resolveBrain, authenticate, providers })
17
+ *
18
+ * export const POST: RequestHandler = ({ request }) => handleRpc(request)
19
+ * ```
20
+ *
21
+ * @example Bun.serve
22
+ * ```typescript
23
+ * const handleRpc = createRpcHandler({ resolveBrain, authenticate, providers })
24
+ *
25
+ * Bun.serve({
26
+ * fetch(req) {
27
+ * if (new URL(req.url).pathname === '/api/rpc') return handleRpc(req)
28
+ * return new Response('Not found', { status: 404 })
29
+ * }
30
+ * })
31
+ * ```
32
+ *
33
+ * @example Hono (if you still use it)
34
+ * ```typescript
35
+ * const handleRpc = createRpcHandler({ resolveBrain, authenticate, providers })
36
+ *
37
+ * app.post('/api/rpc', (c) => handleRpc(c.req.raw))
38
+ * ```
39
+ */
40
+ import { createNamespaceRouter } from './namespace-router.js';
41
+ import { createCachedDispatch } from './rpc-cache.js';
42
+ /**
43
+ * Creates a framework-agnostic RPC request handler.
44
+ *
45
+ * Takes a standard Web `Request`, parses the JSON body, validates the RPC
46
+ * envelope, dispatches to the namespace router, and returns a standard `Response`.
47
+ * Streaming results are delivered as SSE (`text/event-stream`).
48
+ *
49
+ * @param config - Namespace router configuration (auth, brain resolution, providers).
50
+ * @returns An async function: `(request: Request) => Promise<Response>`.
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * const handleRpc = createRpcHandler({
55
+ * resolveBrain: async (ctx) => pool.forUser(ctx.user!.emailHash, ctx.workspaceId),
56
+ * authenticate: async (ctx) => verifySession(ctx.request),
57
+ * providers: { graph: graphHandler, search: searchHandler },
58
+ * })
59
+ *
60
+ * // Use in any server framework:
61
+ * const response = await handleRpc(request)
62
+ * ```
63
+ */
64
+ export function createRpcHandler(config) {
65
+ const baseRouter = createNamespaceRouter(config);
66
+ const router = config.cache
67
+ ? createCachedDispatch(baseRouter, config.cache)
68
+ : baseRouter;
69
+ return async (request) => {
70
+ // ── Parse JSON body ────────────────────────────────────────────────────
71
+ let body;
72
+ try {
73
+ body = await request.json();
74
+ }
75
+ catch {
76
+ return _jsonResponse({ error: { code: 'BAD_REQUEST', message: 'Request body must be valid JSON' } }, 400);
77
+ }
78
+ // ── Validate required RPC fields ───────────────────────────────────────
79
+ if (typeof body.ns !== 'string' || typeof body.method !== 'string' || !Array.isArray(body.args)) {
80
+ return _jsonResponse({ error: { code: 'BAD_REQUEST', message: '{ ns: string, method: string, args: unknown[] } required' } }, 400);
81
+ }
82
+ const rpc = {
83
+ id: typeof body.id === 'string' ? body.id : crypto.randomUUID(),
84
+ ns: body.ns,
85
+ method: body.method,
86
+ args: body.args,
87
+ stream: body.stream ?? false,
88
+ };
89
+ // ── Dispatch ──────────────────────────────────────────────────────────
90
+ const result = await router.dispatch(rpc, request);
91
+ return _toResponse(result);
92
+ };
93
+ }
94
+ // ─────────────────────────────────────────────────────────────────────────────
95
+ // Response helpers (framework-agnostic, Web Standard only)
96
+ // ─────────────────────────────────────────────────────────────────────────────
97
+ /**
98
+ * Converts a {@link DispatchResult} into a standard Web `Response`.
99
+ *
100
+ * @param result - The dispatch result from the namespace router.
101
+ * @returns A Response — JSON for normal results, SSE for streaming results.
102
+ */
103
+ function _toResponse(result) {
104
+ if (result.type === 'response') {
105
+ const { response } = result;
106
+ const status = response.error ? _errorStatusCode(response.error.code) : 200;
107
+ const headers = { 'Content-Type': 'application/json' };
108
+ // Merge cache headers (Cache-Control, ETag, X-Cache) when present.
109
+ if (result.headers) {
110
+ for (const [key, value] of Object.entries(result.headers)) {
111
+ headers[key] = value;
112
+ }
113
+ }
114
+ return new Response(JSON.stringify(response), { status, headers });
115
+ }
116
+ // Streaming result — deliver as SSE.
117
+ const { id, iterable } = result;
118
+ const stream = new ReadableStream({
119
+ async start(controller) {
120
+ const encoder = new TextEncoder();
121
+ try {
122
+ for await (const chunk of iterable) {
123
+ const frame = { id, chunk };
124
+ controller.enqueue(encoder.encode(`data: ${JSON.stringify(frame)}\n\n`));
125
+ }
126
+ const doneFrame = { id, done: true };
127
+ controller.enqueue(encoder.encode(`data: ${JSON.stringify(doneFrame)}\n\n`));
128
+ }
129
+ catch (err) {
130
+ const message = err instanceof Error ? err.message : String(err);
131
+ const errorFrame = { id, error: message };
132
+ controller.enqueue(encoder.encode(`data: ${JSON.stringify(errorFrame)}\n\n`));
133
+ }
134
+ finally {
135
+ controller.close();
136
+ }
137
+ },
138
+ });
139
+ return new Response(stream, {
140
+ status: 200,
141
+ headers: {
142
+ 'Content-Type': 'text/event-stream',
143
+ 'Cache-Control': 'no-cache',
144
+ 'Connection': 'keep-alive',
145
+ },
146
+ });
147
+ }
148
+ /**
149
+ * Creates a JSON Response with the given status code.
150
+ *
151
+ * @param data - The response body.
152
+ * @param status - HTTP status code.
153
+ * @returns A Response with `Content-Type: application/json`.
154
+ */
155
+ function _jsonResponse(data, status) {
156
+ return new Response(JSON.stringify(data), {
157
+ status,
158
+ headers: { 'Content-Type': 'application/json' },
159
+ });
160
+ }
161
+ /**
162
+ * Maps RPC error codes to HTTP status codes.
163
+ *
164
+ * @param code - The error code from the dispatch result.
165
+ * @returns HTTP status code.
166
+ */
167
+ function _errorStatusCode(code) {
168
+ switch (code) {
169
+ case 'UNAUTHORIZED':
170
+ case 'AUTH_ERROR':
171
+ return 401;
172
+ case 'FORBIDDEN':
173
+ return 403;
174
+ case 'NAMESPACE_NOT_FOUND':
175
+ case 'METHOD_NOT_FOUND':
176
+ return 404;
177
+ case 'BRAIN_UNAVAILABLE':
178
+ return 503;
179
+ case 'BAD_REQUEST':
180
+ return 400;
181
+ default:
182
+ return 500;
183
+ }
184
+ }
185
+ //# sourceMappingURL=rpc-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-handler.js","sourceRoot":"","sources":["../../src/server/rpc-handler.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soulcraft/sdk",
3
- "version": "2.5.0",
3
+ "version": "2.6.1",
4
4
  "description": "The unified Soulcraft platform SDK — data, auth, AI, billing, and notifications",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -41,6 +41,7 @@
41
41
  "@soulcraft/kit-schema": ">=2.0.0",
42
42
  "@soulcraft/kits": ">=1.0.0",
43
43
  "better-auth": ">=1.0.0",
44
+ "hono": ">=4.0.0",
44
45
  "stripe": ">=20.0.0"
45
46
  },
46
47
  "peerDependenciesMeta": {
@@ -61,6 +62,9 @@
61
62
  },
62
63
  "stripe": {
63
64
  "optional": true
65
+ },
66
+ "hono": {
67
+ "optional": true
64
68
  }
65
69
  },
66
70
  "dependencies": {