@soulcraft/sdk 2.8.0 → 3.0.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.
- package/dist/modules/auth/products.d.ts +1 -1
- package/dist/modules/auth/products.js +1 -1
- package/dist/modules/auth/request-backchannel.d.ts +39 -6
- package/dist/modules/auth/request-backchannel.d.ts.map +1 -1
- package/dist/modules/auth/request-backchannel.js +15 -5
- package/dist/modules/auth/request-backchannel.js.map +1 -1
- package/dist/modules/auth/request-middleware.d.ts +267 -24
- package/dist/modules/auth/request-middleware.d.ts.map +1 -1
- package/dist/modules/auth/request-middleware.js +264 -23
- package/dist/modules/auth/request-middleware.js.map +1 -1
- package/dist/modules/auth/service-token.d.ts +8 -7
- package/dist/modules/auth/service-token.d.ts.map +1 -1
- package/dist/modules/auth/service-token.js +8 -7
- package/dist/modules/auth/service-token.js.map +1 -1
- package/dist/modules/auth/sveltekit.d.ts +1 -1
- package/dist/modules/auth/sveltekit.d.ts.map +1 -1
- package/dist/modules/auth/sveltekit.js +1 -1
- package/dist/modules/auth/sveltekit.js.map +1 -1
- package/dist/namespaces.d.ts +1 -1
- package/dist/server/handlers/export.js +1 -1
- package/dist/server/handlers/export.js.map +1 -1
- package/dist/server/handlers/workspace.d.ts +1 -1
- package/dist/server/handlers/workspace.d.ts.map +1 -1
- package/dist/server/handlers/workspace.js +3 -4
- package/dist/server/handlers/workspace.js.map +1 -1
- package/dist/server/index.d.ts +5 -14
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +3 -11
- package/dist/server/index.js.map +1 -1
- package/dist/server/namespace-router.d.ts +1 -1
- package/dist/server/namespace-router.js +1 -1
- package/dist/server/rpc-handler.d.ts +27 -20
- package/dist/server/rpc-handler.d.ts.map +1 -1
- package/dist/server/rpc-handler.js +20 -20
- package/dist/server/rpc-handler.js.map +1 -1
- package/docs/ADR-001-sdk-design.md +3 -3
- package/docs/ADR-004-product-registry.md +1 -1
- package/docs/ADR-005-hall-integration.md +1 -1
- package/docs/ADR-006-rpc-cache.md +2 -2
- package/docs/IMPLEMENTATION-PLAN.md +7 -7
- package/docs/KIT-APP-GUIDE.md +100 -99
- package/docs/USAGE.md +30 -40
- package/docs/kit-sdk-guide.md +59 -60
- package/package.json +1 -1
- package/dist/modules/auth/backchannel.d.ts +0 -98
- package/dist/modules/auth/backchannel.d.ts.map +0 -1
- package/dist/modules/auth/backchannel.js +0 -171
- package/dist/modules/auth/backchannel.js.map +0 -1
- package/dist/modules/auth/middleware.d.ts +0 -412
- package/dist/modules/auth/middleware.d.ts.map +0 -1
- package/dist/modules/auth/middleware.js +0 -586
- package/dist/modules/auth/middleware.js.map +0 -1
|
@@ -166,8 +166,7 @@ export function createWorkspaceHandler(options) {
|
|
|
166
166
|
+ JSON.stringify(manifest).length;
|
|
167
167
|
// The actual zip creation happens at the transport/route level since it
|
|
168
168
|
// requires streaming binary data. The handler provides the data; the
|
|
169
|
-
//
|
|
170
|
-
// For now, return a placeholder that the Hono adapter interprets.
|
|
169
|
+
// route adapter assembles the archive.
|
|
171
170
|
return {
|
|
172
171
|
downloadUrl: `__backup__:${ctx.workspaceId}`,
|
|
173
172
|
size: estimatedSize,
|
|
@@ -190,8 +189,8 @@ export function createWorkspaceHandler(options) {
|
|
|
190
189
|
// 1. Parse manifest.json from zip
|
|
191
190
|
// 2. Restore vfs/ entries via brain.vfs.writeFile()
|
|
192
191
|
// 3. Restore data/entities.json via brain.add()
|
|
193
|
-
// This will be fully wired when the
|
|
194
|
-
throw new Error('workspace.restore requires binary transport — use the
|
|
192
|
+
// This will be fully wired when the route adapter handles multipart uploads.
|
|
193
|
+
throw new Error('workspace.restore requires binary transport — use the route adapter');
|
|
195
194
|
},
|
|
196
195
|
/**
|
|
197
196
|
* Connect the workspace to a Venue site.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/server/handlers/workspace.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/server/handlers/workspace.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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 (SvelteKit, Bun,
|
|
4
|
+
* run the SDK in a product backend (SvelteKit, Bun, or any server).
|
|
5
5
|
*
|
|
6
6
|
* ## RPC Handler (recommended)
|
|
7
7
|
*
|
|
@@ -20,14 +20,8 @@
|
|
|
20
20
|
*
|
|
21
21
|
* // SvelteKit: export const POST = ({ request }) => handleRpc(request)
|
|
22
22
|
* // Bun: Bun.serve({ fetch: (req) => handleRpc(req) })
|
|
23
|
-
* // Hono: app.post('/api/rpc', (c) => handleRpc(c.req.raw))
|
|
24
23
|
* ```
|
|
25
24
|
*
|
|
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
25
|
* This entry point must never be imported in browser bundles — it has hard
|
|
32
26
|
* server-only dependencies (`@soulcraft/brainy`, `lru-cache`, `crypto`, `fs`).
|
|
33
27
|
*/
|
|
@@ -37,13 +31,10 @@ export { YDocManager } from '../modules/brainy/ydoc-manager.js';
|
|
|
37
31
|
export { createHallModule, createHallMediaClient, generateTurnCredentials, HallClient, HallMediaClient, } from './hall-handlers.js';
|
|
38
32
|
export type { HallConnectionOptions, HallModule, HallMediaClientOptions, MediaUploadOptions, MediaUploadResult, TurnCredentialOptions, TurnCredentials, } from './hall-handlers.js';
|
|
39
33
|
export type { HallRoom, HallRoomEvents, HallPubsubEvents, RoomOptions, ConceptInput, RecordingManifest, HallPeerRole, ScreenShareMode, TranscriptEvent, ConceptMentionEvent, RelationProposedEvent, SpeakerChangedEvent, PeerJoinedEvent, PeerLeftEvent, PeerPromotedEvent, PeerDemotedEvent, ViewerCountEvent, ScreenShareThumbnailEvent, ChatMessage, ChatHistoryEvent, MediaInfo, MediaReadyEvent, MediaErrorEvent, TranscodeTarget, ReplayEntry, TopicSubscribedEvent, TopicUnsubscribedEvent, TopicMessageEvent, PresenceUpdateEvent, PresenceEntry, PresenceSnapshotEvent, } from '../modules/hall/types.js';
|
|
40
|
-
export {
|
|
41
|
-
export type {
|
|
42
|
-
export { createBackchannelLogoutHandler } from '../modules/auth/backchannel.js';
|
|
43
|
-
export type { BackchannelLogoutConfig, BackchannelAuthLike, } from '../modules/auth/backchannel.js';
|
|
44
|
-
export { createRequestAuthMiddleware, createRequestDevLoginHandler, createRequestGuestSessionHandler, getUser, } from '../modules/auth/request-middleware.js';
|
|
45
|
-
export type { RequestMiddleware, RequestAuthMiddleware, } from '../modules/auth/request-middleware.js';
|
|
34
|
+
export { createRequestAuthMiddleware, createRequestDevLoginHandler, createRequestGuestSessionHandler, createRemoteSessionVerifier, createDevSessionVerifier, createDevCookieVerifier, createGuestCookieVerifier, getUser, } from '../modules/auth/request-middleware.js';
|
|
35
|
+
export type { RequestMiddleware, RequestAuthMiddleware, AuthMiddlewareOptions, BetterAuthLike, SessionVerifier, RemoteSessionVerifierOptions, DevSessionVerifierOptions, DevLoginHandlerOptions, GuestSessionHandlerOptions, } from '../modules/auth/request-middleware.js';
|
|
46
36
|
export { createRequestBackchannelLogoutHandler } from '../modules/auth/request-backchannel.js';
|
|
37
|
+
export type { BackchannelLogoutConfig, BackchannelAuthLike, } from '../modules/auth/request-backchannel.js';
|
|
47
38
|
export { createSoulcraftAuth } from '../modules/auth/sveltekit.js';
|
|
48
39
|
export type { SoulcraftAuthOptions, SoulcraftAuth, SvelteKitHandle, SvelteKitEvent, SvelteKitRequestHandler, } from '../modules/auth/sveltekit.js';
|
|
49
40
|
export { verifyServiceToken, extractBearerToken, } from '../modules/auth/service-token.js';
|
|
@@ -68,7 +59,7 @@ export type { NamespaceRouterConfig, NamespaceRouter, NamespaceProvider, Namespa
|
|
|
68
59
|
export { createNamespaceWsHandler } from './ws-handler.js';
|
|
69
60
|
export type { NamespaceWsHandlerConfig, NamespaceWsHandler, WsSession, } from './ws-handler.js';
|
|
70
61
|
export { createRpcHandler } from './rpc-handler.js';
|
|
71
|
-
export type { RpcHandlerConfig } from './rpc-handler.js';
|
|
62
|
+
export type { RpcHandlerConfig, RpcRequestContext } from './rpc-handler.js';
|
|
72
63
|
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';
|
|
73
64
|
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';
|
|
74
65
|
export { analyzeComplexity, calculateComplexityScore, selectTieredRouting, createDefaultModelSelector, estimateCost, formatCost, DEFAULT_MODELS, DEFAULT_MODEL_TIERS, streamMessage, sendMessage, createAIClientResolver, } from './handlers/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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 (SvelteKit, Bun,
|
|
4
|
+
* run the SDK in a product backend (SvelteKit, Bun, or any server).
|
|
5
5
|
*
|
|
6
6
|
* ## RPC Handler (recommended)
|
|
7
7
|
*
|
|
@@ -20,14 +20,8 @@
|
|
|
20
20
|
*
|
|
21
21
|
* // SvelteKit: export const POST = ({ request }) => handleRpc(request)
|
|
22
22
|
* // Bun: Bun.serve({ fetch: (req) => handleRpc(req) })
|
|
23
|
-
* // Hono: app.post('/api/rpc', (c) => handleRpc(c.req.raw))
|
|
24
23
|
* ```
|
|
25
24
|
*
|
|
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
25
|
* This entry point must never be imported in browser bundles — it has hard
|
|
32
26
|
* server-only dependencies (`@soulcraft/brainy`, `lru-cache`, `crypto`, `fs`).
|
|
33
27
|
*/
|
|
@@ -38,10 +32,8 @@ export { YDocManager } from '../modules/brainy/ydoc-manager.js';
|
|
|
38
32
|
// ── Hall module factory + media client + TURN utilities ──────────────────────
|
|
39
33
|
export { createHallModule, createHallMediaClient, generateTurnCredentials, HallClient, HallMediaClient, } from './hall-handlers.js';
|
|
40
34
|
// ── Auth middleware + session factories ───────────────────────────────────────
|
|
41
|
-
export {
|
|
42
|
-
|
|
43
|
-
// ── Framework-agnostic auth middleware (Web Standard Request/Response) ──────
|
|
44
|
-
export { createRequestAuthMiddleware, createRequestDevLoginHandler, createRequestGuestSessionHandler, getUser, } from '../modules/auth/request-middleware.js';
|
|
35
|
+
export { createRequestAuthMiddleware, createRequestDevLoginHandler, createRequestGuestSessionHandler, createRemoteSessionVerifier, createDevSessionVerifier, createDevCookieVerifier, createGuestCookieVerifier, getUser, } from '../modules/auth/request-middleware.js';
|
|
36
|
+
// ── Backchannel logout handler ──────────────────────────────────────────────
|
|
45
37
|
export { createRequestBackchannelLogoutHandler } from '../modules/auth/request-backchannel.js';
|
|
46
38
|
// ── SvelteKit auth integration ────────────────────────────────────────────────
|
|
47
39
|
export { createSoulcraftAuth } from '../modules/auth/sveltekit.js';
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;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,2BAA2B,EAC3B,4BAA4B,EAC5B,gCAAgC,EAChC,2BAA2B,EAC3B,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,OAAO,GACR,MAAM,uCAAuC,CAAA;AAa9C,+EAA+E;AAC/E,OAAO,EAAE,qCAAqC,EAAE,MAAM,wCAAwC,CAAA;AAM9F,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;AAGnD,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"}
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* All errors are caught at the dispatch level and returned as `SoulcraftRPCResponse`
|
|
25
25
|
* with an `error` field. Handler code does not need to wrap logic in try/catch.
|
|
26
26
|
*
|
|
27
|
-
* @example
|
|
27
|
+
* @example Usage
|
|
28
28
|
* ```typescript
|
|
29
29
|
* import { createNamespaceRouter } from '@soulcraft/sdk/server'
|
|
30
30
|
*
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* All errors are caught at the dispatch level and returned as `SoulcraftRPCResponse`
|
|
25
25
|
* with an `error` field. Handler code does not need to wrap logic in try/catch.
|
|
26
26
|
*
|
|
27
|
-
* @example
|
|
27
|
+
* @example Usage
|
|
28
28
|
* ```typescript
|
|
29
29
|
* import { createNamespaceRouter } from '@soulcraft/sdk/server'
|
|
30
30
|
*
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* parses the JSON body, validates RPC fields, dispatches to the namespace
|
|
7
7
|
* router, and serializes the result — all using Web Standard APIs only.
|
|
8
8
|
*
|
|
9
|
-
* No framework dependency
|
|
10
|
-
*
|
|
9
|
+
* No framework dependency — works with any server that speaks Web Standard
|
|
10
|
+
* `Request`/`Response` (SvelteKit, Bun.serve, Deno, Cloudflare Workers, etc.).
|
|
11
11
|
*
|
|
12
12
|
* @example SvelteKit
|
|
13
13
|
* ```typescript
|
|
@@ -29,16 +29,21 @@
|
|
|
29
29
|
* }
|
|
30
30
|
* })
|
|
31
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
32
|
*/
|
|
40
|
-
import type { NamespaceRouterConfig } from './namespace-router.js';
|
|
33
|
+
import type { NamespaceRouterConfig, UserContext } from './namespace-router.js';
|
|
41
34
|
import type { RpcCacheConfig } from './rpc-cache.js';
|
|
35
|
+
/**
|
|
36
|
+
* @description Optional pre-authenticated context for RPC requests.
|
|
37
|
+
* When provided, the handler skips the `authenticate()` callback and uses
|
|
38
|
+
* the given user directly. This is the recommended pattern when auth is
|
|
39
|
+
* already handled by framework middleware (e.g., SvelteKit hooks).
|
|
40
|
+
*/
|
|
41
|
+
export interface RpcRequestContext {
|
|
42
|
+
/** The authenticated user — skips the router's authenticate() callback. */
|
|
43
|
+
user: UserContext;
|
|
44
|
+
/** The active workspace ID (from headers, cookies, or framework locals). */
|
|
45
|
+
workspaceId?: string;
|
|
46
|
+
}
|
|
42
47
|
/**
|
|
43
48
|
* @description Configuration for {@link createRpcHandler}.
|
|
44
49
|
* Extends {@link NamespaceRouterConfig} with optional RPC response caching.
|
|
@@ -61,19 +66,21 @@ export interface RpcHandlerConfig extends NamespaceRouterConfig {
|
|
|
61
66
|
* Streaming results are delivered as SSE (`text/event-stream`).
|
|
62
67
|
*
|
|
63
68
|
* @param config - Namespace router configuration (auth, brain resolution, providers).
|
|
64
|
-
* @returns An async function: `(request
|
|
69
|
+
* @returns An async function: `(request, ctx?) => Promise<Response>`.
|
|
65
70
|
*
|
|
66
|
-
* @example
|
|
71
|
+
* @example Without pre-auth (handler calls authenticate itself):
|
|
67
72
|
* ```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:
|
|
73
|
+
* const handleRpc = createRpcHandler({ authenticate, resolveBrain, providers })
|
|
75
74
|
* const response = await handleRpc(request)
|
|
76
75
|
* ```
|
|
76
|
+
*
|
|
77
|
+
* @example With pre-auth (SvelteKit — auth handled by hooks):
|
|
78
|
+
* ```typescript
|
|
79
|
+
* const handleRpc = createRpcHandler({ resolveBrain, providers })
|
|
80
|
+
*
|
|
81
|
+
* export const POST: RequestHandler = ({ request, locals }) =>
|
|
82
|
+
* handleRpc(request, { user: locals.user, workspaceId: locals.workspaceId })
|
|
83
|
+
* ```
|
|
77
84
|
*/
|
|
78
|
-
export declare function createRpcHandler(config: RpcHandlerConfig): (request: Request) => Promise<Response>;
|
|
85
|
+
export declare function createRpcHandler(config: RpcHandlerConfig): (request: Request, ctx?: RpcRequestContext) => Promise<Response>;
|
|
79
86
|
//# sourceMappingURL=rpc-handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-handler.d.ts","sourceRoot":"","sources":["../../src/server/rpc-handler.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"rpc-handler.d.ts","sourceRoot":"","sources":["../../src/server/rpc-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAAkB,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC/F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAGpD;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,2EAA2E;IAC3E,IAAI,EAAE,WAAW,CAAA;IACjB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,cAAc,CAAA;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,gBAAgB,GACvB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,iBAAiB,KAAK,OAAO,CAAC,QAAQ,CAAC,CA2ClE"}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* parses the JSON body, validates RPC fields, dispatches to the namespace
|
|
7
7
|
* router, and serializes the result — all using Web Standard APIs only.
|
|
8
8
|
*
|
|
9
|
-
* No framework dependency
|
|
10
|
-
*
|
|
9
|
+
* No framework dependency — works with any server that speaks Web Standard
|
|
10
|
+
* `Request`/`Response` (SvelteKit, Bun.serve, Deno, Cloudflare Workers, etc.).
|
|
11
11
|
*
|
|
12
12
|
* @example SvelteKit
|
|
13
13
|
* ```typescript
|
|
@@ -29,13 +29,6 @@
|
|
|
29
29
|
* }
|
|
30
30
|
* })
|
|
31
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
32
|
*/
|
|
40
33
|
import { createNamespaceRouter } from './namespace-router.js';
|
|
41
34
|
import { createCachedDispatch } from './rpc-cache.js';
|
|
@@ -47,26 +40,28 @@ import { createCachedDispatch } from './rpc-cache.js';
|
|
|
47
40
|
* Streaming results are delivered as SSE (`text/event-stream`).
|
|
48
41
|
*
|
|
49
42
|
* @param config - Namespace router configuration (auth, brain resolution, providers).
|
|
50
|
-
* @returns An async function: `(request
|
|
43
|
+
* @returns An async function: `(request, ctx?) => Promise<Response>`.
|
|
51
44
|
*
|
|
52
|
-
* @example
|
|
45
|
+
* @example Without pre-auth (handler calls authenticate itself):
|
|
53
46
|
* ```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:
|
|
47
|
+
* const handleRpc = createRpcHandler({ authenticate, resolveBrain, providers })
|
|
61
48
|
* const response = await handleRpc(request)
|
|
62
49
|
* ```
|
|
50
|
+
*
|
|
51
|
+
* @example With pre-auth (SvelteKit — auth handled by hooks):
|
|
52
|
+
* ```typescript
|
|
53
|
+
* const handleRpc = createRpcHandler({ resolveBrain, providers })
|
|
54
|
+
*
|
|
55
|
+
* export const POST: RequestHandler = ({ request, locals }) =>
|
|
56
|
+
* handleRpc(request, { user: locals.user, workspaceId: locals.workspaceId })
|
|
57
|
+
* ```
|
|
63
58
|
*/
|
|
64
59
|
export function createRpcHandler(config) {
|
|
65
60
|
const baseRouter = createNamespaceRouter(config);
|
|
66
61
|
const router = config.cache
|
|
67
62
|
? createCachedDispatch(baseRouter, config.cache)
|
|
68
63
|
: baseRouter;
|
|
69
|
-
return async (request) => {
|
|
64
|
+
return async (request, ctx) => {
|
|
70
65
|
// ── Parse JSON body ────────────────────────────────────────────────────
|
|
71
66
|
let body;
|
|
72
67
|
try {
|
|
@@ -87,7 +82,12 @@ export function createRpcHandler(config) {
|
|
|
87
82
|
stream: body.stream ?? false,
|
|
88
83
|
};
|
|
89
84
|
// ── Dispatch ──────────────────────────────────────────────────────────
|
|
90
|
-
|
|
85
|
+
// When a pre-authenticated context is provided, pass it to the router so
|
|
86
|
+
// it skips the authenticate() callback. Otherwise pass the raw request.
|
|
87
|
+
const dispatchCtx = ctx
|
|
88
|
+
? { user: ctx.user, workspaceId: ctx.workspaceId ?? '', request }
|
|
89
|
+
: request;
|
|
90
|
+
const result = await router.dispatch(rpc, dispatchCtx);
|
|
91
91
|
return _toResponse(result);
|
|
92
92
|
};
|
|
93
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-handler.js","sourceRoot":"","sources":["../../src/server/rpc-handler.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"rpc-handler.js","sourceRoot":"","sources":["../../src/server/rpc-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -156,8 +156,8 @@ set in all production and staging environments. It is never set in local dev.
|
|
|
156
156
|
**SDK provides:**
|
|
157
157
|
- `getAuthMode()` — returns `'standalone'` or `'oidc-client'` based on env
|
|
158
158
|
- `getOIDCClientConfig()` — reads OIDC config from env, validates required vars
|
|
159
|
-
- `
|
|
160
|
-
- `
|
|
159
|
+
- `createRequestAuthMiddleware(verifier)` — framework-agnostic `requireAuth` / `optionalAuth` middleware
|
|
160
|
+
- `createRequestBackchannelLogoutHandler(config)` — OIDC backchannel logout endpoint factory
|
|
161
161
|
- `SOULCRAFT_USER_FIELDS`, `SOULCRAFT_SESSION_CONFIG` — shared better-auth config
|
|
162
162
|
- `computeEmailHash(email)` — SHA-256 digest for Brainy path isolation
|
|
163
163
|
- Capability tokens for cross-product server-to-server RPC auth
|
|
@@ -233,7 +233,7 @@ consistent everywhere.
|
|
|
233
233
|
|
|
234
234
|
### Phase 3 — Auth + License
|
|
235
235
|
- [x]`src/modules/auth/` — OIDC client config, session cache, capability tokens,
|
|
236
|
-
|
|
236
|
+
framework-agnostic middleware, SvelteKit handle, backchannel logout
|
|
237
237
|
- [x]`src/modules/license/` — Cortex activation, plan verification, credit metering,
|
|
238
238
|
BYOK validation, heartbeat background task
|
|
239
239
|
- [x]Absorb `@soulcraft/auth` package entirely
|
|
@@ -12,7 +12,7 @@ Before this change, adding a new Soulcraft product (e.g. Pulse) required editing
|
|
|
12
12
|
**five separate hardcoded arrays** in `auth/apps/server/server.ts`:
|
|
13
13
|
|
|
14
14
|
1. `trustedOrigins` — callback URL allowlist for better-auth
|
|
15
|
-
2.
|
|
15
|
+
2. CORS origin allowlist
|
|
16
16
|
3. `BACKCHANNEL_CLIENTS` — products that receive OIDC Logout Tokens on sign-out
|
|
17
17
|
4. `trustedClients` — OIDC client registrations (clientId, secret, redirectUrls)
|
|
18
18
|
5. Status page HTML — product badges displayed on the auth home page
|
|
@@ -27,7 +27,7 @@ Hall uses a strict separation between control plane (server) and data plane (bro
|
|
|
27
27
|
```
|
|
28
28
|
┌──────────────────┐ msgpack/WS ┌──────────────────┐
|
|
29
29
|
│ Product backend │ ◄──────────────────► │ Hall server │
|
|
30
|
-
│
|
|
30
|
+
│ (SvelteKit) │ control plane │ (Rust, SFU) │
|
|
31
31
|
└────────┬─────────┘ └────────┬─────────┘
|
|
32
32
|
│ │
|
|
33
33
|
│ POST /api/join │ WebRTC / WS
|
|
@@ -25,8 +25,8 @@ The value of an application-level cache is **not** avoiding Brainy reads — it'
|
|
|
25
25
|
### Layer: Namespace Router (server-side)
|
|
26
26
|
|
|
27
27
|
The cache wraps the `NamespaceRouter` via `createCachedDispatch()`. This means all
|
|
28
|
-
transports (HTTP, WebSocket, local) benefit automatically. The
|
|
29
|
-
|
|
28
|
+
transports (HTTP, WebSocket, local) benefit automatically. The `RpcHandlerConfig`
|
|
29
|
+
accepts an optional `cache` field for zero-effort integration.
|
|
30
30
|
|
|
31
31
|
### Invalidation: TTL + Scope-Flush on Write
|
|
32
32
|
|
|
@@ -224,7 +224,7 @@ class BrainyInstancePool {
|
|
|
224
224
|
Migrated from `brainy-client/src/server/`:
|
|
225
225
|
|
|
226
226
|
```typescript
|
|
227
|
-
//
|
|
227
|
+
// Framework-agnostic HTTP RPC handler:
|
|
228
228
|
createBrainyHandler(config: BrainyHandlerConfig): (c: Context) => Promise<Response>
|
|
229
229
|
|
|
230
230
|
// Bun WebSocket handler:
|
|
@@ -298,9 +298,9 @@ Includes: OIDC client plugin (`genericOAuth`), PKCE, `crossSubDomainCookies`,
|
|
|
298
298
|
`additionalFields` (platformRole + emailHash), `databaseHooks.user.create.before`
|
|
299
299
|
(computes emailHash, sets defaultRole).
|
|
300
300
|
|
|
301
|
-
#### `src/modules/auth/middleware.ts`
|
|
301
|
+
#### `src/modules/auth/request-middleware.ts`
|
|
302
302
|
```typescript
|
|
303
|
-
//
|
|
303
|
+
// Auth middleware:
|
|
304
304
|
createAuthMiddleware(auth: BetterAuth): MiddlewareHandler
|
|
305
305
|
requireAuth(auth: BetterAuth): MiddlewareHandler
|
|
306
306
|
optionalAuth(auth: BetterAuth): MiddlewareHandler
|
|
@@ -316,9 +316,9 @@ createRemoteSessionVerifier(options: {
|
|
|
316
316
|
}): (cookieHeader: string) => Promise<SoulcraftSession | null>
|
|
317
317
|
```
|
|
318
318
|
|
|
319
|
-
#### `src/modules/auth/backchannel.ts`
|
|
319
|
+
#### `src/modules/auth/request-backchannel.ts`
|
|
320
320
|
```typescript
|
|
321
|
-
//
|
|
321
|
+
// Request handler for POST /api/auth/backchannel-logout:
|
|
322
322
|
createBackchannelLogoutHandler(options: {
|
|
323
323
|
auth: BetterAuth
|
|
324
324
|
clientSecret: string
|
|
@@ -428,7 +428,7 @@ From `chat/ui-actions.ts`:
|
|
|
428
428
|
#### `src/modules/ai/companion.ts`
|
|
429
429
|
From `routes/ai.ts`:
|
|
430
430
|
- `AiPersona` type — name, description, systemPrompt, voice, etc.
|
|
431
|
-
- `createAiHandler(options)` —
|
|
431
|
+
- `createAiHandler(options)` — request handler factory for `/api/ai/*`
|
|
432
432
|
- `AiGenerateRequest`, `AiChatRequest`, `AiChatResponse` types
|
|
433
433
|
- Max tokens: 1024 default, 2048 ceiling
|
|
434
434
|
- Stateless generate + session-based chat endpoints
|
|
@@ -467,7 +467,7 @@ class PlatformEventBus extends EventEmitter {
|
|
|
467
467
|
createEventBus(): PlatformEventBus
|
|
468
468
|
```
|
|
469
469
|
|
|
470
|
-
SSE stream factory (for
|
|
470
|
+
SSE stream factory (for server endpoints):
|
|
471
471
|
```typescript
|
|
472
472
|
createSSEStream(options: {
|
|
473
473
|
bus: PlatformEventBus
|