@opensaas/stack-core 0.28.0 → 0.30.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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +79 -0
- package/CLAUDE.md +4 -4
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/types.d.ts +62 -8
- package/dist/config/types.d.ts.map +1 -1
- package/dist/context/index.js +1 -1
- package/dist/context/index.js.map +1 -1
- package/dist/internal.d.ts +1 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/mcp/handler.d.ts +11 -3
- package/dist/mcp/handler.d.ts.map +1 -1
- package/dist/mcp/handler.js +96 -20
- package/dist/mcp/handler.js.map +1 -1
- package/package.json +2 -2
- package/src/config/index.ts +2 -0
- package/src/config/types.ts +64 -8
- package/src/context/index.ts +1 -1
- package/src/internal.ts +2 -0
- package/src/mcp/handler.ts +118 -28
- package/tsconfig.tsbuildinfo +1 -1
package/dist/mcp/handler.js
CHANGED
|
@@ -2,7 +2,53 @@
|
|
|
2
2
|
* Runtime MCP route handler
|
|
3
3
|
* Creates MCP API handlers from OpenSaaS config at runtime
|
|
4
4
|
*/
|
|
5
|
+
import * as z from 'zod';
|
|
5
6
|
import { getDbKey } from '../lib/case-utils.js';
|
|
7
|
+
/**
|
|
8
|
+
* Convert an MCP session into a context session.
|
|
9
|
+
* Transport-level fields (accessToken, expiresAt, scopes) are stripped;
|
|
10
|
+
* everything else — userId plus any custom fields the session provider
|
|
11
|
+
* attached (email, role, ...) — flows through to access control.
|
|
12
|
+
*/
|
|
13
|
+
function toContextSession(session) {
|
|
14
|
+
const { accessToken: _accessToken, expiresAt: _expiresAt, scopes: _scopes, ...rest } = session;
|
|
15
|
+
return rest;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* MCP tools registered globally by plugins via `registerMcpTool`
|
|
19
|
+
* (stored by the plugin engine under `_pluginData.__mcpTools`).
|
|
20
|
+
*/
|
|
21
|
+
function getPluginMcpTools(config) {
|
|
22
|
+
return config._pluginData?.__mcpTools ?? [];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Whether a custom tool's inputSchema is a Zod schema (as opposed to a plain
|
|
26
|
+
* JSON Schema object). Duck-typed so it works across zod module instances.
|
|
27
|
+
*/
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- duck-typing across zod instances
|
|
29
|
+
function isZodSchema(schema) {
|
|
30
|
+
return !!schema && typeof schema.safeParse === 'function';
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Normalize a custom tool's inputSchema for the tools/list response.
|
|
34
|
+
* Zod schemas are converted to JSON Schema (the MCP wire format); plain
|
|
35
|
+
* objects are passed through as-is.
|
|
36
|
+
*/
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- inputSchema is user-supplied
|
|
38
|
+
function toolInputSchemaToJson(inputSchema) {
|
|
39
|
+
if (isZodSchema(inputSchema)) {
|
|
40
|
+
try {
|
|
41
|
+
const { $schema: _$schema, ...jsonSchema } = z.toJSONSchema(inputSchema);
|
|
42
|
+
return jsonSchema;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Unconvertible schema (transforms, custom types) — advertise a
|
|
46
|
+
// permissive object schema; runtime validation still applies.
|
|
47
|
+
return { type: 'object', properties: {} };
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return inputSchema;
|
|
51
|
+
}
|
|
6
52
|
/**
|
|
7
53
|
* Create MCP route handlers
|
|
8
54
|
*
|
|
@@ -304,11 +350,19 @@ function handleToolsList(config, id) {
|
|
|
304
350
|
tools.push({
|
|
305
351
|
name: customTool.name,
|
|
306
352
|
description: customTool.description,
|
|
307
|
-
inputSchema: customTool.inputSchema,
|
|
353
|
+
inputSchema: toolInputSchemaToJson(customTool.inputSchema),
|
|
308
354
|
});
|
|
309
355
|
}
|
|
310
356
|
}
|
|
311
357
|
}
|
|
358
|
+
// Tools registered globally by plugins (e.g. the RAG plugin's semantic search)
|
|
359
|
+
for (const pluginTool of getPluginMcpTools(config)) {
|
|
360
|
+
tools.push({
|
|
361
|
+
name: pluginTool.name,
|
|
362
|
+
description: pluginTool.description,
|
|
363
|
+
inputSchema: toolInputSchemaToJson(pluginTool.inputSchema),
|
|
364
|
+
});
|
|
365
|
+
}
|
|
312
366
|
return new Response(JSON.stringify({
|
|
313
367
|
jsonrpc: '2.0',
|
|
314
368
|
id: id ?? null,
|
|
@@ -350,8 +404,8 @@ params, session, config, getContext, id) {
|
|
|
350
404
|
async function handleCrudTool(dbKey, operation,
|
|
351
405
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Tool arguments vary by operation
|
|
352
406
|
args, session, config, getContext, id) {
|
|
353
|
-
// Create context with user session
|
|
354
|
-
const context = await getContext(
|
|
407
|
+
// Create context with the user session (custom session fields pass through)
|
|
408
|
+
const context = await getContext(toContextSession(session));
|
|
355
409
|
try {
|
|
356
410
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Result type varies by Prisma operation
|
|
357
411
|
let result;
|
|
@@ -406,25 +460,47 @@ args, session, config, getContext, id) {
|
|
|
406
460
|
async function handleCustomTool(toolName,
|
|
407
461
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Custom tool arguments are user-defined
|
|
408
462
|
args, session, config, getContext, id) {
|
|
409
|
-
// Find
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
463
|
+
// Find the tool: list-level custom tools first, then plugin-registered tools
|
|
464
|
+
let customTool;
|
|
465
|
+
for (const listConfig of Object.values(config.lists)) {
|
|
466
|
+
customTool = listConfig.mcp?.customTools?.find((t) => t.name === toolName);
|
|
467
|
+
if (customTool)
|
|
468
|
+
break;
|
|
469
|
+
}
|
|
470
|
+
customTool ??= getPluginMcpTools(config).find((t) => t.name === toolName);
|
|
471
|
+
if (!customTool) {
|
|
472
|
+
return createErrorResponse(`Unknown tool: ${toolName}`, id);
|
|
473
|
+
}
|
|
474
|
+
// Validate input when the tool declares a Zod schema
|
|
475
|
+
let input = args;
|
|
476
|
+
if (isZodSchema(customTool.inputSchema)) {
|
|
477
|
+
const parsed = customTool.inputSchema.safeParse(args);
|
|
478
|
+
if (!parsed.success) {
|
|
479
|
+
return new Response(JSON.stringify({
|
|
480
|
+
jsonrpc: '2.0',
|
|
481
|
+
id: id ?? null,
|
|
482
|
+
error: {
|
|
483
|
+
code: -32602,
|
|
484
|
+
message: `Invalid params: ${parsed.error.message}`,
|
|
485
|
+
},
|
|
486
|
+
}), {
|
|
487
|
+
status: 400,
|
|
488
|
+
headers: { 'Content-Type': 'application/json' },
|
|
489
|
+
});
|
|
425
490
|
}
|
|
491
|
+
input = parsed.data;
|
|
492
|
+
}
|
|
493
|
+
const context = await getContext(toContextSession(session));
|
|
494
|
+
try {
|
|
495
|
+
const result = await customTool.handler({
|
|
496
|
+
input,
|
|
497
|
+
context,
|
|
498
|
+
});
|
|
499
|
+
return createSuccessResponse(result, id);
|
|
500
|
+
}
|
|
501
|
+
catch (error) {
|
|
502
|
+
return createErrorResponse('Custom tool execution failed: ' + (error instanceof Error ? error.message : 'Unknown error'), id);
|
|
426
503
|
}
|
|
427
|
-
return createErrorResponse(`Unknown tool: ${toolName}`, id);
|
|
428
504
|
}
|
|
429
505
|
/**
|
|
430
506
|
* Helper to create success response
|
package/dist/mcp/handler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/mcp/handler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/mcp/handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAGxB,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAU/C;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,OAAmB;IAC3C,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;IAC9F,OAAO,IAAsB,CAAA;AAC/B,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,MAAsB;IAC/C,OAAQ,MAAM,CAAC,WAAW,EAAE,UAA0C,IAAI,EAAE,CAAA;AAC9E,CAAC;AAED;;;GAGG;AACH,kGAAkG;AAClG,SAAS,WAAW,CAAC,MAAW;IAC9B,OAAO,CAAC,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,UAAU,CAAA;AAC3D,CAAC;AAED;;;;GAIG;AACH,8FAA8F;AAC9F,SAAS,qBAAqB,CAAC,WAAgB;IAC7C,IAAI,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;YACxE,OAAO,UAAoC,CAAA;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,gEAAgE;YAChE,8DAA8D;YAC9D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAA;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,WAAqC,CAAA;AAC9C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAIjC;IAKC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;IAElD,0BAA0B;IAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;QACzB,MAAM,iBAAiB,GAAG,KAAK,IAAI,EAAE,CACnC,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,EAAE;YACzD,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAChD,CAAC,CAAA;QACJ,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAA;IACvF,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,UAAU,CAAA;IAElD;;OAEG;IACH,MAAM,OAAO,GAAG,KAAK,EAAE,GAAY,EAAqB,EAAE;QACxD,+CAA+C;QAC/C,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;gBACxB,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE;oBACP,kBAAkB,EAAE,iBAAiB,QAAQ,0BAA0B;iBACxE;aACF,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAM7B,CAAA;YAED,oBAAoB;YACpB,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBACjC,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;YAC/C,CAAC;YAED,8EAA8E;YAC9E,IAAI,IAAI,CAAC,MAAM,KAAK,2BAA2B,EAAE,CAAC;gBAChD,yDAAyD;gBACzD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YAC5C,CAAC;YAED,oBAAoB;YACpB,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBACjC,OAAO,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;YACzC,CAAC;YAED,oBAAoB;YACpB,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBACjC,OAAO,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;YACjF,CAAC;YAED,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;gBACb,OAAO,EAAE,KAAK;gBACd,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI;gBACnB,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE;aACrD,CAAC,EACF;gBACE,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CACF,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;gBACb,KAAK,EAAE,yBAAyB;gBAChC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAClE,CAAC,EACF;gBACE,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CACF,CAAA;QACH,CAAC;IACH,CAAC,CAAA;IAED,OAAO;QACL,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,OAAO;KAChB,CAAA;AACH,CAAC;AAeD;;GAEG;AACH,uGAAuG;AACvG,SAAS,gBAAgB,CAAC,OAAa,EAAE,EAAoB;IAC3D,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;QACb,OAAO,EAAE,KAAK;QACd,EAAE,EAAE,EAAE,IAAI,IAAI;QACd,MAAM,EAAE;YACN,eAAe,EAAE,YAAY;YAC7B,YAAY,EAAE;gBACZ,KAAK,EAAE,EAAE;aACV;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE,OAAO;aACjB;SACF;KACF,CAAC,EACF;QACE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CACF,CAAA;AACH,CAAC;AAED;;GAEG;AACH,uGAAuG;AACvG,SAAS,iBAAiB,CAAC,SAAiB,EAAE,WAAgB;IAC5D,MAAM,UAAU,GAA4B,EAAE,CAAA;IAE9C,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU;YACb,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAA;YAC1B,IAAI,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;gBACnC,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG;oBACnC,UAAU,CAAC,SAAS,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAA;gBAC1D,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG;oBACnC,UAAU,CAAC,SAAS,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAA;YAC5D,CAAC;YACD,MAAK;QACP,KAAK,SAAS;YACZ,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAA;YAC1B,IAAI,WAAW,CAAC,UAAU,EAAE,GAAG,KAAK,SAAS;gBAAE,UAAU,CAAC,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,CAAA;YAC9F,IAAI,WAAW,CAAC,UAAU,EAAE,GAAG,KAAK,SAAS;gBAAE,UAAU,CAAC,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,CAAA;YAC9F,MAAK;QACP,KAAK,UAAU;YACb,UAAU,CAAC,IAAI,GAAG,SAAS,CAAA;YAC3B,MAAK;QACP,KAAK,WAAW;YACd,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAA;YAC1B,UAAU,CAAC,MAAM,GAAG,WAAW,CAAA;YAC/B,MAAK;QACP,KAAK,QAAQ;YACX,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAA;YAC1B,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBACxB,UAAU,CAAC,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAsB,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAClF,CAAC;YACD,MAAK;QACP,KAAK,cAAc;YACjB,oDAAoD;YACpD,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAA;YAC1B,UAAU,CAAC,UAAU,GAAG;gBACtB,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBACvB;iBACF;aACF,CAAA;YACD,MAAK;QACP;YACE,4CAA4C;YAC5C,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAA;IAC9B,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC;AAED;;GAEG;AAEH,SAAS,oBAAoB,CAC3B,MAAmC,EACnC,SAA8B;IAK9B,MAAM,UAAU,GAA4B,EAAE,CAAA;IAC9C,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,KAAK,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9D,qBAAqB;QACrB,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,SAAQ;QAElE,UAAU,CAAC,SAAS,CAAC,GAAG,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QAEjE,gEAAgE;QAChE,IACE,SAAS,KAAK,QAAQ;YACtB,YAAY,IAAI,WAAW;YAC3B,0GAA0G;YACzG,WAAW,CAAC,UAAkB,EAAE,UAAU,EAC3C,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAA;AACjC,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,MAAsB,EAAE,EAAoB;IACnE,MAAM,KAAK,GAAc,EAAE,CAAA;IAE3B,oCAAoC;IACpC,KAAK,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,wCAAwC;QACxC,IAAI,UAAU,CAAC,GAAG,EAAE,OAAO,KAAK,KAAK;YAAE,SAAQ;QAE/C,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC/B,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,EAAE,YAAY,IAAI;YAC/C,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;SACb,CAAA;QAED,MAAM,YAAY,GAAG;YACnB,IAAI,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,IAAI,YAAY,CAAC,IAAI,IAAI,IAAI;YAC9D,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,IAAI,YAAY,CAAC,MAAM,IAAI,IAAI;YACpE,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,IAAI,YAAY,CAAC,MAAM,IAAI,IAAI;YACpE,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,IAAI,YAAY,CAAC,MAAM,IAAI,IAAI;SACrE,CAAA;QAED,YAAY;QACZ,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,QAAQ,KAAK,QAAQ;gBAC3B,WAAW,EAAE,SAAS,OAAO,gCAAgC;gBAC7D,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE;wBAC7D,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;wBAC9E,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;wBAClE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;qBACvD;iBACF;aACF,CAAC,CAAA;QACJ,CAAC;QAED,cAAc;QACd,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,YAAY,GAAG,oBAAoB,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YACtE,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,QAAQ,KAAK,SAAS;gBAC5B,WAAW,EAAE,gBAAgB,OAAO,SAAS;gBAC7C,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,IAAI,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,uCAAuC;4BACpD,UAAU,EAAE,YAAY,CAAC,UAAU;4BACnC,QAAQ,EAAE,YAAY,CAAC,QAAQ;yBAChC;qBACF;oBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;iBACnB;aACF,CAAC,CAAA;QACJ,CAAC;QAED,cAAc;QACd,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,YAAY,GAAG,oBAAoB,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YACtE,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,QAAQ,KAAK,SAAS;gBAC5B,WAAW,EAAE,sBAAsB,OAAO,SAAS;gBACnD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,mBAAmB;4BAChC,UAAU,EAAE;gCACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;6BACvB;4BACD,QAAQ,EAAE,CAAC,IAAI,CAAC;yBACjB;wBACD,IAAI,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,kBAAkB;4BAC/B,UAAU,EAAE,YAAY,CAAC,UAAU;yBACpC;qBACF;oBACD,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;iBAC5B;aACF,CAAC,CAAA;QACJ,CAAC;QAED,cAAc;QACd,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,QAAQ,KAAK,SAAS;gBAC5B,WAAW,EAAE,YAAY,OAAO,SAAS;gBACzC,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,mBAAmB;4BAChC,UAAU,EAAE;gCACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;6BACvB;4BACD,QAAQ,EAAE,CAAC,IAAI,CAAC;yBACjB;qBACF;oBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;iBACpB;aACF,CAAC,CAAA;QACJ,CAAC;QAED,eAAe;QACf,IAAI,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC;YAChC,KAAK,MAAM,UAAU,IAAI,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACpD,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,WAAW,EAAE,UAAU,CAAC,WAAW;oBACnC,WAAW,EAAE,qBAAqB,CAAC,UAAU,CAAC,WAAW,CAAC;iBAC3D,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,KAAK,MAAM,UAAU,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,WAAW,EAAE,qBAAqB,CAAC,UAAU,CAAC,WAAW,CAAC;SAC3D,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;QACb,OAAO,EAAE,KAAK;QACd,EAAE,EAAE,EAAE,IAAI,IAAI;QACd,MAAM,EAAE,EAAE,KAAK,EAAE;KAClB,CAAC,EACF;QACE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CACF,CAAA;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe;AAC5B,8FAA8F;AAC9F,MAAW,EACX,OAAmB,EACnB,MAAsB,EACtB,UAAgE,EAChE,EAAoB;IAEpB,MAAM,QAAQ,GAAG,MAAM,EAAE,IAAI,CAAA;IAC7B,MAAM,QAAQ,GAAG,MAAM,EAAE,SAAS,IAAI,EAAE,CAAA;IAExC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;YACb,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,EAAE,IAAI,IAAI;YACd,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,oCAAoC,EAAE;SACvE,CAAC,EACF;YACE,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAChD,CACF,CAAA;IACH,CAAC;IAED,4CAA4C;IAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAA;IAEvF,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAA;QAClC,OAAO,MAAM,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;IAC1F,CAAC;IAED,sBAAsB;IACtB,OAAO,MAAM,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;AACpF,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAC3B,KAAa,EACb,SAAiB;AACjB,kGAAkG;AAClG,IAAS,EACT,OAAmB,EACnB,MAAsB,EACtB,UAAgE,EAChE,EAAoB;IAEpB,4EAA4E;IAC5E,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAA;IAE3D,IAAI,CAAC;QACH,wGAAwG;QACxG,IAAI,MAAW,CAAA;QAEf,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,OAAO;gBACV,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;oBACxC,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC;oBACpC,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,OAAO,EAAE,IAAI,CAAC,OAAO;iBACtB,CAAC,CAAA;gBACF,OAAO,qBAAqB,CAC1B;oBACE,KAAK,EAAE,MAAM;oBACb,KAAK,EAAE,MAAM,CAAC,MAAM;iBACrB,EACD,EAAE,CACH,CAAA;YAEH,KAAK,QAAQ;gBACX,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;oBACtC,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB,CAAC,CAAA;gBACF,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,mBAAmB,CACxB,8DAA8D,EAC9D,EAAE,CACH,CAAA;gBACH,CAAC;gBACD,OAAO,qBAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;YAEnE,KAAK,QAAQ;gBACX,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;oBACtC,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB,CAAC,CAAA;gBACF,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,mBAAmB,CACxB,6DAA6D,EAC7D,EAAE,CACH,CAAA;gBACH,CAAC;gBACD,OAAO,qBAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;YAEnE,KAAK,QAAQ;gBACX,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;oBACtC,KAAK,EAAE,IAAI,CAAC,KAAK;iBAClB,CAAC,CAAA;gBACF,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,mBAAmB,CACxB,6DAA6D,EAC7D,EAAE,CACH,CAAA;gBACH,CAAC;gBACD,OAAO,qBAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;YAE/E;gBACE,OAAO,mBAAmB,CAAC,sBAAsB,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;QACrE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,mBAAmB,CACxB,oBAAoB,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,EACjF,EAAE,CACH,CAAA;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAC7B,QAAgB;AAChB,wGAAwG;AACxG,IAAS,EACT,OAAmB,EACnB,MAAsB,EACtB,UAAgE,EAChE,EAAoB;IAEpB,6EAA6E;IAC7E,IAAI,UAAqC,CAAA;IACzC,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;QAC1E,IAAI,UAAU;YAAE,MAAK;IACvB,CAAC;IACD,UAAU,KAAK,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;IAEzE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,mBAAmB,CAAC,iBAAiB,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAA;IAC7D,CAAC;IAED,qDAAqD;IACrD,IAAI,KAAK,GAAG,IAAI,CAAA;IAChB,IAAI,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACrD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;gBACb,OAAO,EAAE,KAAK;gBACd,EAAE,EAAE,EAAE,IAAI,IAAI;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,CAAC,KAAK;oBACZ,OAAO,EAAE,mBAAmB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;iBACnD;aACF,CAAC,EACF;gBACE,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CACF,CAAA;QACH,CAAC;QACD,KAAK,GAAG,MAAM,CAAC,IAAI,CAAA;IACrB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAA;IAE3D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;YACtC,KAAK;YACL,OAAO;SACR,CAAC,CAAA;QAEF,OAAO,qBAAqB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,mBAAmB,CACxB,gCAAgC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,EAC7F,EAAE,CACH,CAAA;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,sHAAsH;AACtH,SAAS,qBAAqB,CAAC,IAAS,EAAE,EAAoB;IAC5D,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;QACb,OAAO,EAAE,KAAK;QACd,EAAE,EAAE,EAAE,IAAI,IAAI;QACd,MAAM,EAAE;YACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SACjE;KACF,CAAC,EACF;QACE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CACF,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAAe,EAAE,EAAoB;IAChE,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;QACb,OAAO,EAAE,KAAK;QACd,EAAE,EAAE,EAAE,IAAI,IAAI;QACd,KAAK,EAAE;YACL,IAAI,EAAE,CAAC,KAAK;YACZ,OAAO;SACR;KACF,CAAC,EACF;QACE,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CACF,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensaas/stack-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.30.0",
|
|
4
4
|
"description": "Core stack for OpenSaas - schema definition, access control, and runtime utilities",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"bcryptjs": "^3.0.3",
|
|
56
|
-
"zod": "^4.3
|
|
56
|
+
"zod": "^4.4.3"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@prisma/client": "^7.8.0",
|
package/src/config/index.ts
CHANGED
package/src/config/types.ts
CHANGED
|
@@ -593,6 +593,21 @@ export type BaseFieldConfig<TTypeInfo extends TypeInfo> = {
|
|
|
593
593
|
* e.g., "color" to use a globally registered ColorPickerField
|
|
594
594
|
*/
|
|
595
595
|
fieldType?: string
|
|
596
|
+
/**
|
|
597
|
+
* Help / description text rendered beneath the field control in the admin UI.
|
|
598
|
+
*
|
|
599
|
+
* `FieldRenderer` surfaces this to the rendered field component as its
|
|
600
|
+
* `helpText` prop, so it appears via the shared field-shell `FieldHelp`
|
|
601
|
+
* rhythm (data-slot="field-help") for admin-rendered fields.
|
|
602
|
+
*
|
|
603
|
+
* @example
|
|
604
|
+
* ```typescript
|
|
605
|
+
* fields: {
|
|
606
|
+
* slug: text({ ui: { description: 'URL-friendly identifier, lowercase only.' } })
|
|
607
|
+
* }
|
|
608
|
+
* ```
|
|
609
|
+
*/
|
|
610
|
+
description?: string
|
|
596
611
|
/**
|
|
597
612
|
* Transform field value before sending to client (browser)
|
|
598
613
|
* Useful for sensitive fields (e.g., passwords) or complex data structures
|
|
@@ -2029,8 +2044,13 @@ export type SessionConfig = {
|
|
|
2029
2044
|
export type ThemePreset = 'modern' | 'classic' | 'neon'
|
|
2030
2045
|
|
|
2031
2046
|
/**
|
|
2032
|
-
* Custom theme colors
|
|
2033
|
-
*
|
|
2047
|
+
* Custom theme colors.
|
|
2048
|
+
*
|
|
2049
|
+
* Each value is passed through verbatim to the corresponding CSS custom
|
|
2050
|
+
* property, so any valid CSS color string works: `oklch(…)`, `#hex`, `rgb(…)`,
|
|
2051
|
+
* or a wrapped `hsl(…)`. Bare HSL triplets (`"220 20% 97%"`) are a clean break —
|
|
2052
|
+
* they are no longer accepted and trigger a dev-mode warning. See
|
|
2053
|
+
* `specs/THEMING.md` and ADR-0015.
|
|
2034
2054
|
*/
|
|
2035
2055
|
export type ThemeColors = {
|
|
2036
2056
|
background?: string
|
|
@@ -2049,6 +2069,10 @@ export type ThemeColors = {
|
|
|
2049
2069
|
accentForeground?: string
|
|
2050
2070
|
destructive?: string
|
|
2051
2071
|
destructiveForeground?: string
|
|
2072
|
+
success?: string
|
|
2073
|
+
successForeground?: string
|
|
2074
|
+
warning?: string
|
|
2075
|
+
warningForeground?: string
|
|
2052
2076
|
border?: string
|
|
2053
2077
|
input?: string
|
|
2054
2078
|
ring?: string
|
|
@@ -2057,27 +2081,59 @@ export type ThemeColors = {
|
|
|
2057
2081
|
}
|
|
2058
2082
|
|
|
2059
2083
|
/**
|
|
2060
|
-
*
|
|
2084
|
+
* Font family tokens. Each value is a CSS `font-family` string, designed to
|
|
2085
|
+
* compose with `next/font`: set the value to the font's CSS variable, e.g.
|
|
2086
|
+
* `sans: 'var(--font-inter), system-ui, sans-serif'`. `heading` defaults to the
|
|
2087
|
+
* `sans` value when omitted.
|
|
2088
|
+
*/
|
|
2089
|
+
export type ThemeFonts = {
|
|
2090
|
+
sans?: string
|
|
2091
|
+
mono?: string
|
|
2092
|
+
heading?: string
|
|
2093
|
+
}
|
|
2094
|
+
|
|
2095
|
+
/**
|
|
2096
|
+
* Elevation shadow tokens. Each value is a CSS `box-shadow` string. Set them to
|
|
2097
|
+
* `'none'` for a fully flat theme without forking components.
|
|
2098
|
+
*/
|
|
2099
|
+
export type ThemeShadows = {
|
|
2100
|
+
sm?: string
|
|
2101
|
+
md?: string
|
|
2102
|
+
lg?: string
|
|
2103
|
+
}
|
|
2104
|
+
|
|
2105
|
+
/**
|
|
2106
|
+
* Theme configuration. Compiles to token overrides written onto the same CSS
|
|
2107
|
+
* custom properties the UI package stylesheet declares — the config layer and
|
|
2108
|
+
* the stylesheet write to one token set so they can never drift (ADR-0015).
|
|
2061
2109
|
*/
|
|
2062
2110
|
export type ThemeConfig = {
|
|
2063
2111
|
/**
|
|
2064
|
-
* Preset theme to
|
|
2112
|
+
* Preset theme to start from. Individual tokens can be overridden on top.
|
|
2065
2113
|
* @default "modern"
|
|
2066
2114
|
*/
|
|
2067
2115
|
preset?: ThemePreset
|
|
2068
2116
|
/**
|
|
2069
|
-
* Custom color overrides for light mode
|
|
2117
|
+
* Custom color overrides for light mode.
|
|
2070
2118
|
*/
|
|
2071
2119
|
colors?: ThemeColors
|
|
2072
2120
|
/**
|
|
2073
|
-
* Custom color overrides for dark mode
|
|
2121
|
+
* Custom color overrides for dark mode.
|
|
2074
2122
|
*/
|
|
2075
2123
|
darkColors?: ThemeColors
|
|
2076
2124
|
/**
|
|
2077
|
-
*
|
|
2078
|
-
|
|
2125
|
+
* Font family overrides (`--font-sans`, `--font-mono`, `--font-heading`).
|
|
2126
|
+
*/
|
|
2127
|
+
fonts?: ThemeFonts
|
|
2128
|
+
/**
|
|
2129
|
+
* Base border radius in rem. Derived sm/md/lg radii are computed from it.
|
|
2130
|
+
* @default 0.625
|
|
2079
2131
|
*/
|
|
2080
2132
|
radius?: number
|
|
2133
|
+
/**
|
|
2134
|
+
* Elevation shadow overrides (`--shadow-sm`, `--shadow-md`, `--shadow-lg`).
|
|
2135
|
+
*/
|
|
2136
|
+
shadows?: ThemeShadows
|
|
2081
2137
|
}
|
|
2082
2138
|
|
|
2083
2139
|
/**
|
package/src/context/index.ts
CHANGED
|
@@ -64,7 +64,7 @@ function warnIfSelectIgnored(
|
|
|
64
64
|
`[@opensaas/stack-core] \`select\` is ignored by context.db.${getDbKey(listName)}.${operation}() ` +
|
|
65
65
|
`and the full (access-filtered) record is returned. ` +
|
|
66
66
|
`Narrow a read with \`include\` or a fragment \`query\` instead. ` +
|
|
67
|
-
`See https://stack.opensaas.au/docs/
|
|
67
|
+
`See https://stack.opensaas.au/docs/concepts/queries`,
|
|
68
68
|
)
|
|
69
69
|
}
|
|
70
70
|
|
package/src/internal.ts
CHANGED
package/src/mcp/handler.ts
CHANGED
|
@@ -3,11 +3,67 @@
|
|
|
3
3
|
* Creates MCP API handlers from OpenSaaS config at runtime
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import
|
|
6
|
+
import * as z from 'zod'
|
|
7
|
+
import type { OpenSaasConfig, FieldConfig, McpCustomTool } from '../config/types.js'
|
|
7
8
|
import type { AccessContext } from '../access/types.js'
|
|
8
9
|
import { getDbKey } from '../lib/case-utils.js'
|
|
9
10
|
import type { McpSession, McpSessionProvider } from './types.js'
|
|
10
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Context session type accepted by the generated getContext factory.
|
|
14
|
+
* userId is always present; auth adapters may pass additional session fields
|
|
15
|
+
* (email, role, ...) through for access control.
|
|
16
|
+
*/
|
|
17
|
+
type ContextSession = { userId: string; [key: string]: unknown }
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Convert an MCP session into a context session.
|
|
21
|
+
* Transport-level fields (accessToken, expiresAt, scopes) are stripped;
|
|
22
|
+
* everything else — userId plus any custom fields the session provider
|
|
23
|
+
* attached (email, role, ...) — flows through to access control.
|
|
24
|
+
*/
|
|
25
|
+
function toContextSession(session: McpSession): ContextSession {
|
|
26
|
+
const { accessToken: _accessToken, expiresAt: _expiresAt, scopes: _scopes, ...rest } = session
|
|
27
|
+
return rest as ContextSession
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* MCP tools registered globally by plugins via `registerMcpTool`
|
|
32
|
+
* (stored by the plugin engine under `_pluginData.__mcpTools`).
|
|
33
|
+
*/
|
|
34
|
+
function getPluginMcpTools(config: OpenSaasConfig): McpCustomTool[] {
|
|
35
|
+
return (config._pluginData?.__mcpTools as McpCustomTool[] | undefined) ?? []
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Whether a custom tool's inputSchema is a Zod schema (as opposed to a plain
|
|
40
|
+
* JSON Schema object). Duck-typed so it works across zod module instances.
|
|
41
|
+
*/
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- duck-typing across zod instances
|
|
43
|
+
function isZodSchema(schema: any): schema is z.ZodType {
|
|
44
|
+
return !!schema && typeof schema.safeParse === 'function'
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Normalize a custom tool's inputSchema for the tools/list response.
|
|
49
|
+
* Zod schemas are converted to JSON Schema (the MCP wire format); plain
|
|
50
|
+
* objects are passed through as-is.
|
|
51
|
+
*/
|
|
52
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- inputSchema is user-supplied
|
|
53
|
+
function toolInputSchemaToJson(inputSchema: any): McpTool['inputSchema'] {
|
|
54
|
+
if (isZodSchema(inputSchema)) {
|
|
55
|
+
try {
|
|
56
|
+
const { $schema: _$schema, ...jsonSchema } = z.toJSONSchema(inputSchema)
|
|
57
|
+
return jsonSchema as McpTool['inputSchema']
|
|
58
|
+
} catch {
|
|
59
|
+
// Unconvertible schema (transforms, custom types) — advertise a
|
|
60
|
+
// permissive object schema; runtime validation still applies.
|
|
61
|
+
return { type: 'object', properties: {} }
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return inputSchema as McpTool['inputSchema']
|
|
65
|
+
}
|
|
66
|
+
|
|
11
67
|
/**
|
|
12
68
|
* Create MCP route handlers
|
|
13
69
|
*
|
|
@@ -32,7 +88,7 @@ import type { McpSession, McpSessionProvider } from './types.js'
|
|
|
32
88
|
export function createMcpHandlers(options: {
|
|
33
89
|
config: OpenSaasConfig
|
|
34
90
|
getSession: McpSessionProvider
|
|
35
|
-
getContext: (session?:
|
|
91
|
+
getContext: (session?: ContextSession) => Promise<AccessContext>
|
|
36
92
|
}): {
|
|
37
93
|
GET: (req: Request) => Promise<Response>
|
|
38
94
|
POST: (req: Request) => Promise<Response>
|
|
@@ -378,12 +434,21 @@ function handleToolsList(config: OpenSaasConfig, id?: number | string): Response
|
|
|
378
434
|
tools.push({
|
|
379
435
|
name: customTool.name,
|
|
380
436
|
description: customTool.description,
|
|
381
|
-
inputSchema: customTool.inputSchema,
|
|
437
|
+
inputSchema: toolInputSchemaToJson(customTool.inputSchema),
|
|
382
438
|
})
|
|
383
439
|
}
|
|
384
440
|
}
|
|
385
441
|
}
|
|
386
442
|
|
|
443
|
+
// Tools registered globally by plugins (e.g. the RAG plugin's semantic search)
|
|
444
|
+
for (const pluginTool of getPluginMcpTools(config)) {
|
|
445
|
+
tools.push({
|
|
446
|
+
name: pluginTool.name,
|
|
447
|
+
description: pluginTool.description,
|
|
448
|
+
inputSchema: toolInputSchemaToJson(pluginTool.inputSchema),
|
|
449
|
+
})
|
|
450
|
+
}
|
|
451
|
+
|
|
387
452
|
return new Response(
|
|
388
453
|
JSON.stringify({
|
|
389
454
|
jsonrpc: '2.0',
|
|
@@ -404,7 +469,7 @@ async function handleToolsCall(
|
|
|
404
469
|
params: any,
|
|
405
470
|
session: McpSession,
|
|
406
471
|
config: OpenSaasConfig,
|
|
407
|
-
getContext: (session?:
|
|
472
|
+
getContext: (session?: ContextSession) => Promise<AccessContext>,
|
|
408
473
|
id?: number | string,
|
|
409
474
|
): Promise<Response> {
|
|
410
475
|
const toolName = params?.name
|
|
@@ -446,11 +511,11 @@ async function handleCrudTool(
|
|
|
446
511
|
args: any,
|
|
447
512
|
session: McpSession,
|
|
448
513
|
config: OpenSaasConfig,
|
|
449
|
-
getContext: (session?:
|
|
514
|
+
getContext: (session?: ContextSession) => Promise<AccessContext>,
|
|
450
515
|
id?: number | string,
|
|
451
516
|
): Promise<Response> {
|
|
452
|
-
// Create context with user session
|
|
453
|
-
const context = await getContext(
|
|
517
|
+
// Create context with the user session (custom session fields pass through)
|
|
518
|
+
const context = await getContext(toContextSession(session))
|
|
454
519
|
|
|
455
520
|
try {
|
|
456
521
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Result type varies by Prisma operation
|
|
@@ -529,34 +594,59 @@ async function handleCustomTool(
|
|
|
529
594
|
args: any,
|
|
530
595
|
session: McpSession,
|
|
531
596
|
config: OpenSaasConfig,
|
|
532
|
-
getContext: (session?:
|
|
597
|
+
getContext: (session?: ContextSession) => Promise<AccessContext>,
|
|
533
598
|
id?: number | string,
|
|
534
599
|
): Promise<Response> {
|
|
535
|
-
// Find
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
if (customTool)
|
|
540
|
-
|
|
600
|
+
// Find the tool: list-level custom tools first, then plugin-registered tools
|
|
601
|
+
let customTool: McpCustomTool | undefined
|
|
602
|
+
for (const listConfig of Object.values(config.lists)) {
|
|
603
|
+
customTool = listConfig.mcp?.customTools?.find((t) => t.name === toolName)
|
|
604
|
+
if (customTool) break
|
|
605
|
+
}
|
|
606
|
+
customTool ??= getPluginMcpTools(config).find((t) => t.name === toolName)
|
|
541
607
|
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
context,
|
|
546
|
-
})
|
|
608
|
+
if (!customTool) {
|
|
609
|
+
return createErrorResponse(`Unknown tool: ${toolName}`, id)
|
|
610
|
+
}
|
|
547
611
|
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
612
|
+
// Validate input when the tool declares a Zod schema
|
|
613
|
+
let input = args
|
|
614
|
+
if (isZodSchema(customTool.inputSchema)) {
|
|
615
|
+
const parsed = customTool.inputSchema.safeParse(args)
|
|
616
|
+
if (!parsed.success) {
|
|
617
|
+
return new Response(
|
|
618
|
+
JSON.stringify({
|
|
619
|
+
jsonrpc: '2.0',
|
|
620
|
+
id: id ?? null,
|
|
621
|
+
error: {
|
|
622
|
+
code: -32602,
|
|
623
|
+
message: `Invalid params: ${parsed.error.message}`,
|
|
624
|
+
},
|
|
625
|
+
}),
|
|
626
|
+
{
|
|
627
|
+
status: 400,
|
|
628
|
+
headers: { 'Content-Type': 'application/json' },
|
|
629
|
+
},
|
|
630
|
+
)
|
|
556
631
|
}
|
|
632
|
+
input = parsed.data
|
|
557
633
|
}
|
|
558
634
|
|
|
559
|
-
|
|
635
|
+
const context = await getContext(toContextSession(session))
|
|
636
|
+
|
|
637
|
+
try {
|
|
638
|
+
const result = await customTool.handler({
|
|
639
|
+
input,
|
|
640
|
+
context,
|
|
641
|
+
})
|
|
642
|
+
|
|
643
|
+
return createSuccessResponse(result, id)
|
|
644
|
+
} catch (error) {
|
|
645
|
+
return createErrorResponse(
|
|
646
|
+
'Custom tool execution failed: ' + (error instanceof Error ? error.message : 'Unknown error'),
|
|
647
|
+
id,
|
|
648
|
+
)
|
|
649
|
+
}
|
|
560
650
|
}
|
|
561
651
|
|
|
562
652
|
/**
|