mirror of
https://github.com/shishantbiswas/bknd.git
synced 2026-03-16 04:27:21 +00:00
added mcp tools from routes
This commit is contained in:
@@ -65,8 +65,7 @@ export class Controller {
|
||||
|
||||
protected getEntitiesEnum(em: EntityManager<any>): s.StringSchema {
|
||||
const entities = em.entities.map((e) => e.name);
|
||||
// @todo: current workaround to allow strings (sometimes building is not fast enough to get the entities)
|
||||
return entities.length > 0 ? s.anyOf([s.string({ enum: entities }), s.string()]) : s.string();
|
||||
return entities.length > 0 ? s.string({ enum: entities }) : s.string();
|
||||
}
|
||||
|
||||
registerMcp(): void {}
|
||||
|
||||
@@ -5,7 +5,7 @@ import { s } from "../../core/utils/schema";
|
||||
describe("rescursiveOptional", () => {
|
||||
it("should make all properties optional", () => {
|
||||
const schema = s.strictObject({
|
||||
a: s.string(),
|
||||
a: s.string({ default: "a" }),
|
||||
b: s.number(),
|
||||
nested: s.strictObject({
|
||||
c: s.string().optional(),
|
||||
@@ -15,14 +15,16 @@ describe("rescursiveOptional", () => {
|
||||
});
|
||||
|
||||
//console.log(schema.toJSON());
|
||||
console.log(
|
||||
rescursiveClean(schema, {
|
||||
removeRequired: true,
|
||||
removeDefault: true,
|
||||
}).toJSON(),
|
||||
);
|
||||
/* const result = rescursiveOptional(schema);
|
||||
expect(result.properties.a.optional).toBe(true); */
|
||||
const result = rescursiveClean(schema, {
|
||||
removeRequired: true,
|
||||
removeDefault: true,
|
||||
});
|
||||
const json = result.toJSON();
|
||||
|
||||
expect(json.required).toBeUndefined();
|
||||
expect(json.properties.a.default).toBeUndefined();
|
||||
expect(json.properties.nested.required).toBeUndefined();
|
||||
expect(json.properties.nested.properties.nested2.required).toBeUndefined();
|
||||
});
|
||||
|
||||
it("should exclude properties", () => {
|
||||
@@ -31,6 +33,7 @@ describe("rescursiveOptional", () => {
|
||||
b: s.number(),
|
||||
});
|
||||
|
||||
console.log(excludePropertyTypes(schema, [s.StringSchema]));
|
||||
const result = excludePropertyTypes(schema, (instance) => instance instanceof s.StringSchema);
|
||||
expect(Object.keys(result).length).toBe(1);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -8,12 +8,12 @@ import {
|
||||
getTimezoneOffset,
|
||||
$console,
|
||||
getRuntimeKey,
|
||||
SecretSchema,
|
||||
jsc,
|
||||
s,
|
||||
describeRoute,
|
||||
InvalidSchemaError,
|
||||
openAPISpecs,
|
||||
mcpTool,
|
||||
} from "bknd/utils";
|
||||
import type { Context, Hono } from "hono";
|
||||
import { Controller } from "modules/Controller";
|
||||
@@ -78,6 +78,7 @@ export class SystemController extends Controller {
|
||||
summary: "Get the config for a module",
|
||||
tags: ["system"],
|
||||
}),
|
||||
mcpTool("system_config"), // @todo: ":module" gets not removed
|
||||
jsc("param", s.object({ module: s.string({ enum: MODULE_NAMES }).optional() })),
|
||||
jsc("query", s.object({ secrets: s.boolean().optional() })),
|
||||
async (c) => {
|
||||
@@ -284,6 +285,7 @@ export class SystemController extends Controller {
|
||||
summary: "Build the app",
|
||||
tags: ["system"],
|
||||
}),
|
||||
mcpTool("system_build"),
|
||||
jsc("query", s.object({ sync: s.boolean().optional(), fetch: s.boolean().optional() })),
|
||||
async (c) => {
|
||||
const options = c.req.valid("query") as Record<string, boolean>;
|
||||
@@ -299,6 +301,7 @@ export class SystemController extends Controller {
|
||||
|
||||
hono.get(
|
||||
"/ping",
|
||||
mcpTool("system_ping"),
|
||||
describeRoute({
|
||||
summary: "Ping the server",
|
||||
tags: ["system"],
|
||||
@@ -308,6 +311,7 @@ export class SystemController extends Controller {
|
||||
|
||||
hono.get(
|
||||
"/info",
|
||||
mcpTool("system_info"),
|
||||
describeRoute({
|
||||
summary: "Get the server info",
|
||||
tags: ["system"],
|
||||
@@ -329,19 +333,6 @@ export class SystemController extends Controller {
|
||||
},
|
||||
origin: new URL(c.req.raw.url).origin,
|
||||
plugins: Array.from(this.app.plugins.keys()),
|
||||
walk: {
|
||||
auth: [
|
||||
...c
|
||||
.get("app")
|
||||
.getSchema()
|
||||
.auth.walk({ data: c.get("app").toJSON(true).auth }),
|
||||
]
|
||||
.filter((n) => n.schema instanceof SecretSchema)
|
||||
.map((n) => ({
|
||||
...n,
|
||||
schema: n.schema.constructor.name,
|
||||
})),
|
||||
},
|
||||
}),
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user