optimized performance

This commit is contained in:
dswbx
2025-08-14 10:05:15 +02:00
parent 70f0240da5
commit 9ac5fa03c6
28 changed files with 134 additions and 66 deletions

View File

@@ -1,7 +1,7 @@
import { describe, test, expect, beforeEach, beforeAll, afterAll } from "bun:test";
import { type App, createApp, createMcpToolCaller } from "core/test/utils";
import { getSystemMcp } from "modules/mcp/system-mcp";
import { disableConsoleLog, enableConsoleLog } from "core/utils";
import type { McpServer } from "bknd/utils";
beforeAll(disableConsoleLog);
afterAll(enableConsoleLog);
@@ -26,7 +26,7 @@ afterAll(enableConsoleLog);
*/
describe("mcp auth", async () => {
let app: App;
let server: ReturnType<typeof getSystemMcp>;
let server: McpServer;
beforeEach(async () => {
app = createApp({
initialConfig: {
@@ -44,7 +44,7 @@ describe("mcp auth", async () => {
},
});
await app.build();
server = getSystemMcp(app);
server = app.mcp!;
server.setLogLevel("error");
server.onNotification((message) => {
console.dir(message, { depth: null });

View File

@@ -1,6 +1,5 @@
import { describe, it, expect } from "bun:test";
import { createApp } from "core/test/utils";
import { getSystemMcp } from "modules/mcp/system-mcp";
import { registries } from "index";
import { StorageLocalAdapter } from "adapter/node/storage/StorageLocalAdapter";
@@ -22,11 +21,15 @@ describe("mcp", () => {
},
},
},
server: {
mcp: {
enabled: true,
},
},
},
});
await app.build();
const server = getSystemMcp(app);
expect(server.tools.length).toBeGreaterThan(0);
expect(app.mcp?.tools.length).toBeGreaterThan(0);
});
});

View File

@@ -1,7 +1,7 @@
import { describe, test, expect, beforeEach, beforeAll, afterAll } from "bun:test";
import { type App, createApp, createMcpToolCaller } from "core/test/utils";
import { getSystemMcp } from "modules/mcp/system-mcp";
import { pickKeys } from "bknd/utils";
import { pickKeys, type McpServer } from "bknd/utils";
import { entity, text } from "bknd";
import { disableConsoleLog, enableConsoleLog } from "core/utils";
@@ -37,8 +37,9 @@ afterAll(enableConsoleLog);
*/
describe("mcp data", async () => {
let app: App;
let server: ReturnType<typeof getSystemMcp>;
let server: McpServer;
beforeEach(async () => {
const time = performance.now();
app = createApp({
initialConfig: {
server: {
@@ -49,7 +50,7 @@ describe("mcp data", async () => {
},
});
await app.build();
server = getSystemMcp(app);
server = app.mcp!;
server.setLogLevel("error");
server.onNotification((message) => {
console.dir(message, { depth: null });

View File

@@ -4,6 +4,7 @@ import { getSystemMcp } from "modules/mcp/system-mcp";
import { registries } from "index";
import { StorageLocalAdapter } from "adapter/node/storage/StorageLocalAdapter";
import { disableConsoleLog, enableConsoleLog } from "core/utils";
import type { McpServer } from "bknd/utils";
beforeAll(disableConsoleLog);
afterAll(enableConsoleLog);
@@ -16,7 +17,7 @@ afterAll(enableConsoleLog);
*/
describe("mcp media", async () => {
let app: App;
let server: ReturnType<typeof getSystemMcp>;
let server: McpServer;
beforeEach(async () => {
registries.media.register("local", StorageLocalAdapter);
app = createApp({
@@ -38,7 +39,7 @@ describe("mcp media", async () => {
},
});
await app.build();
server = getSystemMcp(app);
server = app.mcp!;
server.setLogLevel("error");
server.onNotification((message) => {
console.dir(message, { depth: null });

View File

@@ -1,6 +1,6 @@
import { describe, test, expect, beforeAll, mock } from "bun:test";
import { describe, test, expect, beforeAll, mock, beforeEach, afterAll } from "bun:test";
import { type App, createApp, createMcpToolCaller } from "core/test/utils";
import { getSystemMcp } from "modules/mcp/system-mcp";
import type { McpServer } from "bknd/utils";
/**
* - [x] config_server_get
@@ -8,7 +8,7 @@ import { getSystemMcp } from "modules/mcp/system-mcp";
*/
describe("mcp system", async () => {
let app: App;
let server: ReturnType<typeof getSystemMcp>;
let server: McpServer;
beforeAll(async () => {
app = createApp({
initialConfig: {
@@ -20,23 +20,33 @@ describe("mcp system", async () => {
},
});
await app.build();
server = getSystemMcp(app);
server = app.mcp!;
});
const tool = createMcpToolCaller();
test("config_server_get", async () => {
const result = await tool(server, "config_server_get", {});
expect(result).toEqual({
expect(JSON.parse(JSON.stringify(result))).toEqual({
path: "",
secrets: false,
partial: false,
value: app.toJSON().server,
value: JSON.parse(JSON.stringify(app.toJSON().server)),
});
});
test("config_server_get2", async () => {
const result = await tool(server, "config_server_get", {});
expect(JSON.parse(JSON.stringify(result))).toEqual({
path: "",
secrets: false,
partial: false,
value: JSON.parse(JSON.stringify(app.toJSON().server)),
});
});
test("config_server_update", async () => {
const original = app.toJSON().server;
const original = JSON.parse(JSON.stringify(app.toJSON().server));
const result = await tool(server, "config_server_update", {
value: {
cors: {
@@ -46,7 +56,7 @@ describe("mcp system", async () => {
return_config: true,
});
expect(result).toEqual({
expect(JSON.parse(JSON.stringify(result))).toEqual({
success: true,
module: "server",
config: {

View File

@@ -1,9 +1,7 @@
import { AppEvents } from "App";
import { describe, test, expect, beforeAll, mock } from "bun:test";
import { type App, createApp, createMcpToolCaller } from "core/test/utils";
import { getSystemMcp } from "modules/mcp/system-mcp";
import { inspect } from "node:util";
inspect.defaultOptions.depth = 10;
import type { McpServer } from "bknd/utils";
/**
* - [x] system_config
@@ -13,7 +11,7 @@ inspect.defaultOptions.depth = 10;
*/
describe("mcp system", async () => {
let app: App;
let server: ReturnType<typeof getSystemMcp>;
let server: McpServer;
beforeAll(async () => {
app = createApp({
initialConfig: {
@@ -25,7 +23,7 @@ describe("mcp system", async () => {
},
});
await app.build();
server = getSystemMcp(app);
server = app.mcp!;
});
const tool = createMcpToolCaller();

View File

@@ -47,8 +47,4 @@ describe("[data] Entity", async () => {
entity.addField(field);
expect(entity.getField("new_field")).toBe(field);
});
test.only("types", async () => {
console.log(entity.toTypes());
});
});

View File

@@ -0,0 +1,24 @@
import { describe, it, expect } from "bun:test";
import * as sDirect from "jsonv-ts";
import { s as sFromBknd } from "bknd/utils";
describe("jsonv-ts resolution", () => {
it("should resolve to a single instance", () => {
const sameNamespace = sDirect === (sFromBknd as unknown as typeof sDirect);
// If this fails, two instances are being loaded via different specifiers/paths
expect(sameNamespace).toBe(true);
});
it("should resolve specifiers to a single package path", async () => {
const base = await import.meta.resolve("jsonv-ts");
const hono = await import.meta.resolve("jsonv-ts/hono");
const mcp = await import.meta.resolve("jsonv-ts/mcp");
expect(typeof base).toBe("string");
expect(typeof hono).toBe("string");
expect(typeof mcp).toBe("string");
// They can be different files (subpath exports), but they should share the same package root
const pkgRoot = (p: string) => p.slice(0, p.lastIndexOf("jsonv-ts") + "jsonv-ts".length);
expect(pkgRoot(base)).toBe(pkgRoot(hono));
expect(pkgRoot(base)).toBe(pkgRoot(mcp));
});
});

View File

@@ -5,7 +5,7 @@ import { format as sqlFormat } from "sql-formatter";
import type { em as protoEm } from "../src/data/prototype";
import { writeFile } from "node:fs/promises";
import { join } from "node:path";
import { slugify } from "core/utils/strings";
import { slugify } from "bknd/utils";
import { type Connection, SqliteLocalConnection } from "data/connection";
import { EntityManager } from "data/entities/EntityManager";

View File

@@ -2,13 +2,12 @@ import { beforeEach, describe, expect, it } from "bun:test";
import { Hono } from "hono";
import { Guard } from "auth/authorize/Guard";
import { DebugLogger } from "core/utils/DebugLogger";
import { EventManager } from "core/events";
import { EntityManager } from "data/entities/EntityManager";
import { Module, type ModuleBuildContext } from "modules/Module";
import { getDummyConnection } from "../helper";
import { ModuleHelper } from "modules/ModuleHelper";
import { McpServer } from "bknd/utils";
import { DebugLogger, McpServer } from "bknd/utils";
export function makeCtx(overrides?: Partial<ModuleBuildContext>): ModuleBuildContext {
const { dummyConnection } = getDummyConnection();