@miragon/mcp-toolkit-core 0.10.1 → 1.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.
Files changed (76) hide show
  1. package/README.md +7 -7
  2. package/dist/framework/render-view.d.ts +1 -1
  3. package/dist/framework/render-view.d.ts.map +1 -1
  4. package/dist/framework/render-view.js +3 -0
  5. package/dist/framework/render-view.js.map +1 -1
  6. package/dist/index.d.ts +2 -2
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +1 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/middleware/role-filter.d.ts +16 -32
  11. package/dist/middleware/role-filter.d.ts.map +1 -1
  12. package/dist/middleware/role-filter.js +10 -22
  13. package/dist/middleware/role-filter.js.map +1 -1
  14. package/dist/tools/backend-registry.d.ts +9 -3
  15. package/dist/tools/backend-registry.d.ts.map +1 -1
  16. package/dist/tools/backend-registry.js +13 -12
  17. package/dist/tools/backend-registry.js.map +1 -1
  18. package/dist/tools/create-framework-app.d.ts +51 -38
  19. package/dist/tools/create-framework-app.d.ts.map +1 -1
  20. package/dist/tools/create-framework-app.js +79 -78
  21. package/dist/tools/create-framework-app.js.map +1 -1
  22. package/dist/tools/index.d.ts +4 -5
  23. package/dist/tools/index.d.ts.map +1 -1
  24. package/dist/tools/index.js +3 -3
  25. package/dist/tools/index.js.map +1 -1
  26. package/dist/tools/install-toolkit.d.ts +77 -0
  27. package/dist/tools/install-toolkit.d.ts.map +1 -0
  28. package/dist/tools/install-toolkit.js +85 -0
  29. package/dist/tools/install-toolkit.js.map +1 -0
  30. package/dist/tools/register-catalogue-tool.d.ts +1 -1
  31. package/dist/tools/register-catalogue-tool.d.ts.map +1 -1
  32. package/dist/tools/register-catalogue-tool.js +2 -3
  33. package/dist/tools/register-catalogue-tool.js.map +1 -1
  34. package/dist/tools/register-dashboard-tools.d.ts +1 -1
  35. package/dist/tools/register-dashboard-tools.d.ts.map +1 -1
  36. package/dist/tools/register-dashboard-tools.js +6 -6
  37. package/dist/tools/register-dashboard-tools.js.map +1 -1
  38. package/dist/tools/register-framework-tools.d.ts +15 -47
  39. package/dist/tools/register-framework-tools.d.ts.map +1 -1
  40. package/dist/tools/register-framework-tools.js +31 -63
  41. package/dist/tools/register-framework-tools.js.map +1 -1
  42. package/dist/tools/register-tool.d.ts +1 -1
  43. package/dist/tools/register-tool.d.ts.map +1 -1
  44. package/dist/tools/register-tool.js +14 -8
  45. package/dist/tools/register-tool.js.map +1 -1
  46. package/dist/tools/register-widget-tool.d.ts +35 -11
  47. package/dist/tools/register-widget-tool.d.ts.map +1 -1
  48. package/dist/tools/register-widget-tool.js +57 -30
  49. package/dist/tools/register-widget-tool.js.map +1 -1
  50. package/dist/tools/tool-results.d.ts +46 -0
  51. package/dist/tools/tool-results.d.ts.map +1 -0
  52. package/dist/tools/tool-results.js +39 -0
  53. package/dist/tools/tool-results.js.map +1 -0
  54. package/dist/tools/with-tool-errors.d.ts +12 -6
  55. package/dist/tools/with-tool-errors.d.ts.map +1 -1
  56. package/dist/tools/with-tool-errors.js +12 -6
  57. package/dist/tools/with-tool-errors.js.map +1 -1
  58. package/dist/types/app.d.ts +10 -7
  59. package/dist/types/app.d.ts.map +1 -1
  60. package/dist/types/index.d.ts +2 -2
  61. package/dist/types/index.d.ts.map +1 -1
  62. package/dist/types/index.js +1 -1
  63. package/dist/types/index.js.map +1 -1
  64. package/dist/types/meta.d.ts +73 -56
  65. package/dist/types/meta.d.ts.map +1 -1
  66. package/dist/types/meta.js +49 -53
  67. package/dist/types/meta.js.map +1 -1
  68. package/package.json +14 -6
  69. package/dist/tools/app-resource-uri.d.ts +0 -28
  70. package/dist/tools/app-resource-uri.d.ts.map +0 -1
  71. package/dist/tools/app-resource-uri.js +0 -30
  72. package/dist/tools/app-resource-uri.js.map +0 -1
  73. package/dist/tools/tool-call-name.d.ts +0 -53
  74. package/dist/tools/tool-call-name.d.ts.map +0 -1
  75. package/dist/tools/tool-call-name.js +0 -92
  76. package/dist/tools/tool-call-name.js.map +0 -1
@@ -1,110 +1,111 @@
1
- import { MCPServer, } from "mcp-use/server";
2
- import { loadApps } from "../registry/app-loader.js";
3
- import { StepRegistry } from "../registry/step-registry.js";
4
- import { WidgetRegistry } from "../registry/widget-registry.js";
1
+ import fs from "node:fs/promises";
2
+ import { MCPServer, registerViews, } from "mcp-use";
5
3
  import { createOrgGateMiddleware } from "../middleware/org-gate.js";
6
4
  import { createRoleFilterMiddleware } from "../middleware/role-filter.js";
7
- import { createInMemoryDashboardStore } from "../framework/dashboard-store.js";
8
- import { registerFrameworkTools } from "./register-framework-tools.js";
9
- import { registerCatalogueTool } from "./register-catalogue-tool.js";
10
- import { registerDashboardTools } from "./register-dashboard-tools.js";
11
- import { installToolCallNameCapture } from "./tool-call-name.js";
12
- import { deriveAppResourceUri } from "./app-resource-uri.js";
13
- // Async without an internal await today: the boot path became fully
14
- // synchronous when upstream discovery was removed, but the Promise return
15
- // stays — consumers `await` it, and future boot steps may be async again.
16
- // eslint-disable-next-line @typescript-eslint/require-await
5
+ import { installToolkit } from "./install-toolkit.js";
6
+ /**
7
+ * Read a bundle file, failing soft: a missing file logs a warning and yields
8
+ * an empty string so a dev server can boot before the first bundle build —
9
+ * matching the old missing-`htmlPath` behaviour. Views then render an empty
10
+ * document until the server restarts with a built bundle.
11
+ */
12
+ async function readBundleFile(filePath, label) {
13
+ try {
14
+ return await fs.readFile(filePath, "utf-8");
15
+ }
16
+ catch {
17
+ console.warn(`[createFrameworkApp] could not read the app bundle ${label} at ${filePath}; ` +
18
+ `views will render empty until the bundle is built and the server restarts.`);
19
+ return "";
20
+ }
21
+ }
17
22
  export async function createFrameworkApp(options) {
23
+ // `baseUrl` is deliberately absent: mcp-use 2.x resolves the serving origin
24
+ // from the request (or the MCP_URL env var) and injects it into the view
25
+ // resource CSP itself.
18
26
  const baseConfig = {
19
27
  name: options.name,
20
28
  version: options.version ?? "0.1.0",
21
29
  description: options.description,
22
30
  host: options.host ?? "localhost",
23
- baseUrl: options.baseUrl,
24
31
  };
25
32
  // `serverOptions` is statically disjoint from `baseConfig` (its type Omits
26
33
  // every toolkit-owned key); the spread order is defense-in-depth so the
27
34
  // toolkit's first-class options always win at runtime.
35
+ // `ServerConfig<TUser>` is conditional on TUser (`[TUser] extends [never]`
36
+ // selects between `oauth?: undefined` and a required `oauth`). TypeScript
37
+ // cannot evaluate that against a still-generic TUser inside this
38
+ // implementation signature, so the constructor arg is cast here. The two
39
+ // public overloads above are what callers see, and they carry the real
40
+ // guarantee.
28
41
  const server = options.oauth
29
- ? new MCPServer({ ...options.serverOptions, ...baseConfig, oauth: options.oauth })
42
+ ? new MCPServer({
43
+ ...options.serverOptions,
44
+ ...baseConfig,
45
+ oauth: options.oauth,
46
+ })
30
47
  : new MCPServer({ ...options.serverOptions, ...baseConfig });
48
+ // The registrars are typed against the OAuth-less `MCPServer`; a
49
+ // `MCPServer<TUser>` differs only in the `ctx.auth` its callbacks receive,
50
+ // which none of them read.
51
+ const serverForRegistrars = server;
52
+ // Collect every view name bound during boot so the registry can be primed
53
+ // once at the end (mcp-use accepts `view` bindings before priming — they
54
+ // are validated lazily — but priming itself is one-shot and must happen
55
+ // before the first request). Every bound name resolves to the shared app
56
+ // bundle: that IS the toolkit's architecture — one bundle whose widget map
57
+ // decides what renders. Wrapping `server.tool` covers plugin registrations
58
+ // without an API change; `never` keeps the checked assignment sound under
59
+ // parameter contravariance (the wrapper only forwards the callback).
60
+ const boundViews = new Set();
61
+ const originalTool = serverForRegistrars.tool.bind(serverForRegistrars);
62
+ const wrappedTool = (definition, callback) => {
63
+ if (definition.view?.name)
64
+ boundViews.add(definition.view.name);
65
+ return originalTool(definition, callback);
66
+ };
67
+ serverForRegistrars.tool = wrappedTool;
31
68
  const orgGateId = options.middleware?.orgGate;
32
69
  if (orgGateId) {
70
+ // The middleware is typed structurally on purpose so it stays host-
71
+ // agnostic; mcp-use 2.x types `ctx.auth` as its own `AuthInfo`, which is
72
+ // not mutually assignable with that shape. Only `auth.user` is read.
33
73
  server.use("mcp:*", createOrgGateMiddleware(orgGateId));
34
74
  }
35
- // Capture the `tools/call` tool name from the JSON-RPC envelope at the HTTP
36
- // layer. mcp-use 1.28 populates `mcp:tools/call` middleware's `ctx.params`
37
- // with the tool *arguments*, not `{ name, arguments }`, so the role filter
38
- // can't read the name from there. The resolver is request-scoped via
39
- // `getRequestContext()` and is safe to install unconditionally.
40
- const resolveToolName = installToolCallNameCapture(server);
41
75
  const roleFilter = options.middleware?.roleFilter;
42
76
  if (roleFilter && Object.keys(roleFilter).length > 0) {
43
77
  const { toolsList, toolsCall } = createRoleFilterMiddleware(roleFilter, {
44
- resolveToolName,
45
- // Batch-aware: a JSON-RPC batch envelope can carry several tools/call
46
- // requests; the guard must check all of them, not just the first.
47
- resolveToolNames: resolveToolName.all,
48
78
  failClosed: options.middleware?.roleFilterFailClosed ?? false,
49
79
  });
80
+ // Cast for the same reason as the org gate above.
50
81
  server.use("mcp:tools/list", toolsList);
51
82
  server.use("mcp:tools/call", toolsCall);
52
83
  }
53
- const stepRegistry = new StepRegistry();
54
- const widgetRegistry = new WidgetRegistry();
55
- // Plugin step/widget ids are author-controlled, so a collision is a real
56
- // bug and must fail loud (hard throw).
57
- const allPlugins = options.plugins;
58
- loadApps(allPlugins.map((p) => p.definition), stepRegistry, widgetRegistry);
59
- for (const plugin of allPlugins) {
60
- plugin.registerTools?.(server);
61
- }
62
- // Per-app step configuration: each plugin's `appConfig` keyed by app name.
63
- // A plugin may inject closures here (e.g. a typed `callTool`) — the pipeline
64
- // executor pre-binds the per-request user context on any `callTool` it finds
65
- // (see `pipeline-executor.ts:bindAppConfig`).
66
- const appConfigs = Object.fromEntries(allPlugins.map((p) => [p.definition.name, p.appConfig ?? {}]));
67
- const appConfig = options.appConfig ?? {
68
- activeApps: allPlugins.map((p) => ({ app: p.definition.name, config: {} })),
69
- pipelines: {},
70
- };
71
- // Derive a content-hashed resource URI when one isn't pinned, so each build
72
- // busts the host's widget-bundle cache (a fixed URI would keep serving a
73
- // stale bundle across restarts). `deriveAppResourceUri` warns and falls back
74
- // to a stable dev URI when the bundle file is missing.
75
- const resourceUri = options.app.resourceUri ??
76
- deriveAppResourceUri({ appName: options.name, htmlPath: options.app.htmlPath });
77
- registerFrameworkTools(server, {
78
- stepRegistry,
79
- widgetRegistry,
80
- config: appConfig,
81
- appConfigs,
82
- plugins: allPlugins,
83
- resourceUri,
84
- htmlPath: options.app.htmlPath,
84
+ // Everything toolkit-owned goes through the same core `installToolkit`
85
+ // uses standalone — this wrapper only adds server construction, middleware
86
+ // wiring, and the inline bundle priming below. Anything the wrapper can do
87
+ // must work through `installToolkit` on a user-owned server too.
88
+ installToolkit(serverForRegistrars, {
89
+ modules: options.plugins,
85
90
  refreshToolName: options.app.refreshToolName,
86
- // Advertise builder availability in the view payload so the iframe shell
87
- // shows its Build affordance only when the catalogue/dashboard tools below
88
- // are actually registered.
89
- builderAvailable: options.app.builder ?? false,
90
- // Feeds the widget-resource CSP (`_meta.ui.csp` + `openai/widgetCSP`):
91
- // the baseUrl origin is auto-injected next to any explicit `app.csp`.
92
- baseUrl: options.baseUrl,
93
91
  csp: options.app.csp,
92
+ builder: options.app.builder,
93
+ catalogueToolName: options.app.catalogueToolName,
94
+ dashboardStore: options.app.dashboardStore,
95
+ appConfig: options.appConfig,
94
96
  });
95
- // The visual builder platform is opt-in: the catalogue (its data source)
96
- // and the dashboard CRUD tools (its persistence) are registered together
97
- // only when `app.builder` is true. Lean servers leave it off so render-view
98
- // / the widget core stay the entire surface. See the `app.builder` TSDoc.
99
- if (options.app.builder) {
100
- registerCatalogueTool(server, {
101
- stepRegistry,
102
- widgetRegistry,
103
- appConfigs,
104
- toolName: options.app.catalogueToolName,
105
- });
106
- const dashboardStore = options.app.dashboardStore ?? createInMemoryDashboardStore();
107
- registerDashboardTools(server, { store: dashboardStore, widgetRegistry });
97
+ // Prime the view registry LAST, once every registrar and plugin has bound
98
+ // its views. One inline entry per bound name, all sharing the same bundle
99
+ // strings — mcp-use synthesizes the view document, serves the resource, and
100
+ // emits the `_meta.ui` wire keys (CSP included) from here on.
101
+ if (boundViews.size > 0) {
102
+ const js = await readBundleFile(options.app.bundle.jsPath, "module");
103
+ const css = options.app.bundle.cssPath
104
+ ? await readBundleFile(options.app.bundle.cssPath, "stylesheet")
105
+ : "";
106
+ const entry = { kind: "inline", js, css };
107
+ const manifest = Object.fromEntries([...boundViews].map((name) => [name, entry]));
108
+ serverForRegistrars[registerViews](manifest);
108
109
  }
109
110
  return server;
110
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-framework-app.js","sourceRoot":"","sources":["../../src/tools/create-framework-app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-framework-app.js","sourceRoot":"","sources":["../../src/tools/create-framework-app.ts"],"names":[],"mappings":"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"}
@@ -3,20 +3,19 @@ export type { ToolConfig, RegisteredToolMeta } from "./register-tool.js";
3
3
  export { createWidgetToolRegistrar } from "./register-widget-tool.js";
4
4
  export type { WidgetToolConfig, WidgetToolVisibility } from "./register-widget-tool.js";
5
5
  export { withToolErrors } from "./with-tool-errors.js";
6
- export { registerFrameworkTools, buildAppResourceCsp } from "./register-framework-tools.js";
6
+ export { textResult, objectResult, errorResult } from "./tool-results.js";
7
+ export { registerFrameworkTools, RENDER_VIEW_NAME } from "./register-framework-tools.js";
7
8
  export type { RegisterFrameworkToolsOptions, AppResourceCsp } from "./register-framework-tools.js";
8
9
  export { registerCatalogueTool } from "./register-catalogue-tool.js";
9
10
  export type { RegisterCatalogueToolOptions } from "./register-catalogue-tool.js";
10
11
  export { registerDashboardTools } from "./register-dashboard-tools.js";
11
12
  export type { RegisterDashboardToolsOptions } from "./register-dashboard-tools.js";
13
+ export { installToolkit } from "./install-toolkit.js";
14
+ export type { InstallToolkitOptions, InstalledToolkit } from "./install-toolkit.js";
12
15
  export { createFrameworkApp } from "./create-framework-app.js";
13
16
  export type { CreateFrameworkAppOptions } from "./create-framework-app.js";
14
- export { deriveAppResourceUri } from "./app-resource-uri.js";
15
- export type { DeriveAppResourceUriInput } from "./app-resource-uri.js";
16
17
  export { createBackendRegistry, withBackend, BackendNotSelectedError, UnknownBackendError, DEFAULT_BACKEND_SESSION_TTL_MS, } from "./backend-registry.js";
17
18
  export type { BackendRegistry, BackendEntry, ResolvedBackend, CreateBackendRegistryOptions, } from "./backend-registry.js";
18
- export { installToolCallNameCapture, extractToolCallName, extractToolCallNames, } from "./tool-call-name.js";
19
- export type { ToolNameResolver, ToolNameCapture } from "./tool-call-name.js";
20
19
  export { createInMemoryDashboardStore, createFileSystemDashboardStore, DashboardOwnershipError, resolveSavedRecord, parseDashboardRecord, DASHBOARD_SCHEMA_VERSION, } from "../framework/dashboard-store.js";
21
20
  export type { DashboardStore, DashboardRecord, DashboardSaveInput, DashboardSummary, DashboardListFilter, FileSystemDashboardStoreOptions, } from "../framework/dashboard-store.js";
22
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AACrE,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAC3F,YAAY,EAAE,6BAA6B,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,YAAY,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAA;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,YAAY,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAA;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,YAAY,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,YAAY,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,uBAAuB,EACvB,mBAAmB,EACnB,8BAA8B,GAC/B,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EACV,eAAe,EACf,YAAY,EACZ,eAAe,EACf,4BAA4B,GAC7B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAK5E,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,iCAAiC,CAAA;AACxC,YAAY,EACV,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,+BAA+B,GAChC,MAAM,iCAAiC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AACrE,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACzE,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AACxF,YAAY,EAAE,6BAA6B,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,YAAY,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAA;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,YAAY,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAA;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,YAAY,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,YAAY,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,uBAAuB,EACvB,mBAAmB,EACnB,8BAA8B,GAC/B,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EACV,eAAe,EACf,YAAY,EACZ,eAAe,EACf,4BAA4B,GAC7B,MAAM,uBAAuB,CAAA;AAK9B,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,iCAAiC,CAAA;AACxC,YAAY,EACV,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,+BAA+B,GAChC,MAAM,iCAAiC,CAAA"}
@@ -1,13 +1,13 @@
1
1
  export { createToolRegistrar } from "./register-tool.js";
2
2
  export { createWidgetToolRegistrar } from "./register-widget-tool.js";
3
3
  export { withToolErrors } from "./with-tool-errors.js";
4
- export { registerFrameworkTools, buildAppResourceCsp } from "./register-framework-tools.js";
4
+ export { textResult, objectResult, errorResult } from "./tool-results.js";
5
+ export { registerFrameworkTools, RENDER_VIEW_NAME } from "./register-framework-tools.js";
5
6
  export { registerCatalogueTool } from "./register-catalogue-tool.js";
6
7
  export { registerDashboardTools } from "./register-dashboard-tools.js";
8
+ export { installToolkit } from "./install-toolkit.js";
7
9
  export { createFrameworkApp } from "./create-framework-app.js";
8
- export { deriveAppResourceUri } from "./app-resource-uri.js";
9
10
  export { createBackendRegistry, withBackend, BackendNotSelectedError, UnknownBackendError, DEFAULT_BACKEND_SESSION_TTL_MS, } from "./backend-registry.js";
10
- export { installToolCallNameCapture, extractToolCallName, extractToolCallNames, } from "./tool-call-name.js";
11
11
  // Dashboard-store implementations are server-side (the filesystem impl
12
12
  // imports `node:fs`). Consumers wire them through `createFrameworkApp`'s
13
13
  // `app.dashboardStore`.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAErE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAE3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAEpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAE5D,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,uBAAuB,EACvB,mBAAmB,EACnB,8BAA8B,GAC/B,MAAM,uBAAuB,CAAA;AAO9B,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,qBAAqB,CAAA;AAG5B,uEAAuE;AACvE,yEAAyE;AACzE,wBAAwB;AACxB,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,iCAAiC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAErE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACzE,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAExF,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAEpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAE9D,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,uBAAuB,EACvB,mBAAmB,EACnB,8BAA8B,GAC/B,MAAM,uBAAuB,CAAA;AAQ9B,uEAAuE;AACvE,yEAAyE;AACzE,wBAAwB;AACxB,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,iCAAiC,CAAA"}
@@ -0,0 +1,77 @@
1
+ import { type MCPServer } from "mcp-use";
2
+ import { StepRegistry } from "../registry/step-registry.js";
3
+ import { WidgetRegistry } from "../registry/widget-registry.js";
4
+ import { type DashboardStore } from "../framework/dashboard-store.js";
5
+ import type { AppConfig, AppDefinition, AppPlugin } from "../types/index.js";
6
+ import type { AppResourceCsp } from "../types/meta.js";
7
+ export interface InstallToolkitOptions {
8
+ /**
9
+ * App definitions contributing steps + widgets to the pipeline registries —
10
+ * the lightweight input when all a project wants is `render-view` and the
11
+ * composition features on top of its own tools. For modules that also
12
+ * register tools of their own, use {@link modules}.
13
+ */
14
+ apps?: AppDefinition[];
15
+ /**
16
+ * Full module bundles ({@link AppPlugin}): an app definition plus optional
17
+ * `registerTools` / `registerWidgetTools` hooks and per-app step config.
18
+ * `registerTools` runs before the framework tools, `registerWidgetTools`
19
+ * inside them (receiving the CSP meta defaults).
20
+ */
21
+ modules?: AppPlugin[];
22
+ /** Override the refresh tool name (default: `refresh-view`). */
23
+ refreshToolName?: string;
24
+ /**
25
+ * Additional CSP origins advertised on the view resources (`_meta.ui.csp`)
26
+ * and widget tools (`openai/widgetCSP`). The server origin is appended by
27
+ * mcp-use itself at emission time.
28
+ */
29
+ csp?: AppResourceCsp;
30
+ /**
31
+ * Opt into the visual in-iframe builder platform: registers
32
+ * `get-builder-catalogue` plus the dashboard CRUD quartet, and advertises
33
+ * `builderAvailable` in every view payload. Defaults to `false` (lean).
34
+ */
35
+ builder?: boolean;
36
+ /** Override the catalogue tool name; only relevant with {@link builder}. */
37
+ catalogueToolName?: string;
38
+ /**
39
+ * Persistence for the dashboard CRUD tools; defaults to an in-memory store.
40
+ * Only relevant with {@link builder}.
41
+ */
42
+ dashboardStore?: DashboardStore;
43
+ /** Overrides the active-apps/pipelines config derived from apps + modules. */
44
+ appConfig?: AppConfig;
45
+ }
46
+ /** The registries {@link installToolkit} built — for advanced composition. */
47
+ export interface InstalledToolkit {
48
+ stepRegistry: StepRegistry;
49
+ widgetRegistry: WidgetRegistry;
50
+ }
51
+ /**
52
+ * Install the toolkit's composition features on an existing `MCPServer` —
53
+ * the "standard mcp-use project, toolkit on top" entry point.
54
+ *
55
+ * The server stays yours: you construct it, register your own tools and
56
+ * middleware, run it through the mcp-use CLI (`mcp-use dev` / `build` /
57
+ * `start`) or embed it yourself. This call adds the framework surface on
58
+ * top: `get-framework-manifest`, `render-view` (bound to its own view),
59
+ * the app-only `refresh-view`, each module's widget tools, and — with
60
+ * `builder: true` — the catalogue + dashboard tools.
61
+ *
62
+ * View delivery follows however the server is run:
63
+ *
64
+ * - **mcp-use CLI** (the standard path): create `views/render-view/view.tsx`
65
+ * (plus `views/<tool>/view.tsx` per model-visible widget tool) rendering
66
+ * `McpToolkitApp` with the widget map — the CLI discovers, builds, and
67
+ * serves them by convention; nothing to wire here.
68
+ * - **Own process with an own bundle**: use `createFrameworkApp`, the
69
+ * batteries-included wrapper that composes this function with server
70
+ * construction and inline bundle priming.
71
+ *
72
+ * A half-wired setup cannot fail silently: mcp-use validates at mount (first
73
+ * request) that every `view`-bound tool has a primed view, and rejects with a
74
+ * message pointing at the CLI otherwise.
75
+ */
76
+ export declare function installToolkit(server: MCPServer, options?: InstallToolkitOptions): InstalledToolkit;
77
+ //# sourceMappingURL=install-toolkit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-toolkit.d.ts","sourceRoot":"","sources":["../../src/tools/install-toolkit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAgC,KAAK,cAAc,EAAE,MAAM,iCAAiC,CAAA;AACnG,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAKtD,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,aAAa,EAAE,CAAA;IACtB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,SAAS,EAAE,CAAA;IACrB,gEAAgE;IAChE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;OAIG;IACH,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,4EAA4E;IAC5E,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;OAGG;IACH,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,8EAA8E;IAC9E,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,YAAY,CAAA;IAC1B,cAAc,EAAE,cAAc,CAAA;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,qBAA0B,GAClC,gBAAgB,CA6DlB"}
@@ -0,0 +1,85 @@
1
+ import { loadApps } from "../registry/app-loader.js";
2
+ import { StepRegistry } from "../registry/step-registry.js";
3
+ import { WidgetRegistry } from "../registry/widget-registry.js";
4
+ import { createInMemoryDashboardStore } from "../framework/dashboard-store.js";
5
+ import { registerFrameworkTools } from "./register-framework-tools.js";
6
+ import { registerCatalogueTool } from "./register-catalogue-tool.js";
7
+ import { registerDashboardTools } from "./register-dashboard-tools.js";
8
+ /**
9
+ * Install the toolkit's composition features on an existing `MCPServer` —
10
+ * the "standard mcp-use project, toolkit on top" entry point.
11
+ *
12
+ * The server stays yours: you construct it, register your own tools and
13
+ * middleware, run it through the mcp-use CLI (`mcp-use dev` / `build` /
14
+ * `start`) or embed it yourself. This call adds the framework surface on
15
+ * top: `get-framework-manifest`, `render-view` (bound to its own view),
16
+ * the app-only `refresh-view`, each module's widget tools, and — with
17
+ * `builder: true` — the catalogue + dashboard tools.
18
+ *
19
+ * View delivery follows however the server is run:
20
+ *
21
+ * - **mcp-use CLI** (the standard path): create `views/render-view/view.tsx`
22
+ * (plus `views/<tool>/view.tsx` per model-visible widget tool) rendering
23
+ * `McpToolkitApp` with the widget map — the CLI discovers, builds, and
24
+ * serves them by convention; nothing to wire here.
25
+ * - **Own process with an own bundle**: use `createFrameworkApp`, the
26
+ * batteries-included wrapper that composes this function with server
27
+ * construction and inline bundle priming.
28
+ *
29
+ * A half-wired setup cannot fail silently: mcp-use validates at mount (first
30
+ * request) that every `view`-bound tool has a primed view, and rejects with a
31
+ * message pointing at the CLI otherwise.
32
+ */
33
+ export function installToolkit(server, options = {}) {
34
+ const stepRegistry = new StepRegistry();
35
+ const widgetRegistry = new WidgetRegistry();
36
+ const apps = options.apps ?? [];
37
+ const modules = options.modules ?? [];
38
+ // Step/widget ids are author-controlled, so a collision is a real bug and
39
+ // must fail loud (hard throw).
40
+ loadApps([...apps, ...modules.map((m) => m.definition)], stepRegistry, widgetRegistry);
41
+ for (const module of modules) {
42
+ module.registerTools?.(server);
43
+ }
44
+ // Per-app step configuration: each module's `appConfig` keyed by app name.
45
+ // A module may inject closures here (e.g. a typed `callTool`) — the pipeline
46
+ // executor pre-binds the per-request user context on any `callTool` it finds
47
+ // (see `pipeline-executor.ts:bindAppConfig`).
48
+ const appConfigs = Object.fromEntries(modules.map((m) => [m.definition.name, m.appConfig ?? {}]));
49
+ const appConfig = options.appConfig ?? {
50
+ activeApps: [
51
+ ...apps.map((a) => ({ app: a.name, config: {} })),
52
+ ...modules.map((m) => ({ app: m.definition.name, config: {} })),
53
+ ],
54
+ pipelines: {},
55
+ };
56
+ registerFrameworkTools(server, {
57
+ stepRegistry,
58
+ widgetRegistry,
59
+ config: appConfig,
60
+ appConfigs,
61
+ plugins: modules,
62
+ refreshToolName: options.refreshToolName,
63
+ // Advertise builder availability in the view payload so the iframe shell
64
+ // shows its Build affordance only when the catalogue/dashboard tools below
65
+ // are actually registered.
66
+ builderAvailable: options.builder ?? false,
67
+ csp: options.csp,
68
+ });
69
+ // The visual builder platform is opt-in: the catalogue (its data source)
70
+ // and the dashboard CRUD tools (its persistence) are registered together
71
+ // only when `builder` is true. Lean servers leave it off so render-view /
72
+ // the widget core stay the entire surface.
73
+ if (options.builder) {
74
+ registerCatalogueTool(server, {
75
+ stepRegistry,
76
+ widgetRegistry,
77
+ appConfigs,
78
+ toolName: options.catalogueToolName,
79
+ });
80
+ const dashboardStore = options.dashboardStore ?? createInMemoryDashboardStore();
81
+ registerDashboardTools(server, { store: dashboardStore, widgetRegistry });
82
+ }
83
+ return { stepRegistry, widgetRegistry };
84
+ }
85
+ //# sourceMappingURL=install-toolkit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-toolkit.js","sourceRoot":"","sources":["../../src/tools/install-toolkit.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type MCPServer } from "mcp-use/server";
1
+ import { type MCPServer } from "mcp-use";
2
2
  import type { StepRegistry } from "../registry/step-registry.js";
3
3
  import type { WidgetRegistry } from "../registry/widget-registry.js";
4
4
  export interface RegisterCatalogueToolOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"register-catalogue-tool.d.ts","sourceRoot":"","sources":["../../src/tools/register-catalogue-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAGpE,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,YAAY,CAAA;IAC1B,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACnD,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAkBD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,4BAA4B,GACpC,IAAI,CAsBN"}
1
+ {"version":3,"file":"register-catalogue-tool.d.ts","sourceRoot":"","sources":["../../src/tools/register-catalogue-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAA;AAGxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAEpE,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,YAAY,CAAA;IAC1B,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACnD,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAkBD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,4BAA4B,GACpC,IAAI,CAsBN"}
@@ -1,6 +1,5 @@
1
1
  import { z } from "zod";
2
2
  import { getBuilderCatalogue } from "../framework/catalogue.js";
3
- import { APP_ONLY_META } from "../types/meta.js";
4
3
  const stepRefSchema = z.object({
5
4
  id: z.string(),
6
5
  step: z.string(),
@@ -30,8 +29,8 @@ export function registerCatalogueTool(server, options) {
30
29
  name: toolName,
31
30
  title: "Get Builder Catalogue",
32
31
  description: "App-only. Returns the live pipeline context plus the reachable / unreachable widgets, available steps and key catalogue for the current keys + steps. Used by the in-iframe LayoutBuilder.",
33
- schema: catalogueSchema,
34
- _meta: APP_ONLY_META,
32
+ inputSchema: catalogueSchema,
33
+ visibility: "app",
35
34
  }, async (params, ctx) => {
36
35
  return getBuilderCatalogue({
37
36
  input: { keys: params.keys, steps: params.steps },
@@ -1 +1 @@
1
- {"version":3,"file":"register-catalogue-tool.js","sourceRoot":"","sources":["../../src/tools/register-catalogue-tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAG/D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAUhD,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAA;AAEF,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IAClD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAA;AAEF,SAAS,aAAa,CAAC,GAAY;IACjC,MAAM,IAAI,GAAI,GAA8D,EAAE,IAAI,EAAE,IAAI,CAAA;IACxF,OAAO,OAAO,IAAI,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;AACnE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAiB,EACjB,OAAqC;IAErC,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,GAAG,uBAAuB,EAAE,GAAG,OAAO,CAAA;IAEhG,MAAM,CAAC,IAAI,CACT;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,4LAA4L;QAC9L,MAAM,EAAE,eAAe;QACvB,KAAK,EAAE,aAAa;KACrB,EACD,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QACpB,OAAO,mBAAmB,CAAC;YACzB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;YACjD,YAAY;YACZ,cAAc;YACd,UAAU;YACV,GAAG,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;SACpC,CAAC,CAAA;IACJ,CAAC,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"register-catalogue-tool.js","sourceRoot":"","sources":["../../src/tools/register-catalogue-tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAY/D,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAA;AAEF,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IAClD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAA;AAEF,SAAS,aAAa,CAAC,GAAY;IACjC,MAAM,IAAI,GAAI,GAA8D,EAAE,IAAI,EAAE,IAAI,CAAA;IACxF,OAAO,OAAO,IAAI,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;AACnE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAiB,EACjB,OAAqC;IAErC,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,GAAG,uBAAuB,EAAE,GAAG,OAAO,CAAA;IAEhG,MAAM,CAAC,IAAI,CACT;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,4LAA4L;QAC9L,WAAW,EAAE,eAAe;QAC5B,UAAU,EAAE,KAAK;KAClB,EACD,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QACpB,OAAO,mBAAmB,CAAC;YACzB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;YACjD,YAAY;YACZ,cAAc;YACd,UAAU;YACV,GAAG,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;SACpC,CAAC,CAAA;IACJ,CAAC,CACF,CAAA;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type MCPServer } from "mcp-use/server";
1
+ import { type MCPServer } from "mcp-use";
2
2
  import type { DashboardStore } from "../framework/dashboard-store.js";
3
3
  import type { WidgetRegistry } from "../registry/widget-registry.js";
4
4
  export interface RegisterDashboardToolsOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"register-dashboard-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-dashboard-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAU,MAAM,gBAAgB,CAAA;AAEvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAGrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAEpE,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,cAAc,CAAA;IACrB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,cAAc,CAAA;CAChC;AA8BD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,6BAA6B,GACrC,IAAI,CA0HN"}
1
+ {"version":3,"file":"register-dashboard-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-dashboard-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAA;AAGxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAGrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAEpE,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,cAAc,CAAA;IACrB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,cAAc,CAAA;CAChC;AA8BD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,6BAA6B,GACrC,IAAI,CA0HN"}
@@ -1,5 +1,5 @@
1
- import { object } from "mcp-use/server";
2
1
  import { z } from "zod";
2
+ import { objectResult } from "./tool-results.js";
3
3
  import { collectLayoutWidgets } from "../framework/view-builders.js";
4
4
  import { layoutSchema } from "../framework/layout-schemas.js";
5
5
  const stepRefSchema = z.object({
@@ -49,7 +49,7 @@ export function registerDashboardTools(server, options) {
49
49
  name: "save-dashboard",
50
50
  title: "Save Dashboard",
51
51
  description: "Persists a dashboard (render-view input bundle + name). Pass an existing `id` to update, omit to create. The builder UI's Save button invokes this tool.",
52
- schema: saveSchema,
52
+ inputSchema: saveSchema,
53
53
  }, async (params, ctx) => {
54
54
  // Warn (never reject) on unknown widget ids — usually a typo. A save is
55
55
  // deliberately never blocked on a cosmetic layout mistake; the unknown
@@ -91,13 +91,13 @@ export function registerDashboardTools(server, options) {
91
91
  annotations: { readOnlyHint: true },
92
92
  }, async (_params, ctx) => {
93
93
  const items = await store.list({ userId: extractUserId(ctx) });
94
- return object({ items });
94
+ return objectResult({ items });
95
95
  });
96
96
  server.tool({
97
97
  name: "load-dashboard",
98
98
  title: "Load Dashboard",
99
99
  description: "Returns the full dashboard bundle. The returned `{ keys, steps, layout, title }` fields can be handed straight to `render-view`.",
100
- schema: idSchema,
100
+ inputSchema: idSchema,
101
101
  annotations: { readOnlyHint: true },
102
102
  }, async ({ id }, ctx) => {
103
103
  const record = await store.get(id, { userId: extractUserId(ctx) });
@@ -125,13 +125,13 @@ export function registerDashboardTools(server, options) {
125
125
  isError: true,
126
126
  };
127
127
  }
128
- return object(record);
128
+ return objectResult(record);
129
129
  });
130
130
  server.tool({
131
131
  name: "delete-dashboard",
132
132
  title: "Delete Dashboard",
133
133
  description: "Permanently removes a dashboard by id.",
134
- schema: idSchema,
134
+ inputSchema: idSchema,
135
135
  }, async ({ id }, ctx) => {
136
136
  const deleted = await store.delete(id, { userId: extractUserId(ctx) });
137
137
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"register-dashboard-tools.js","sourceRoot":"","sources":["../../src/tools/register-dashboard-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register-dashboard-tools.js","sourceRoot":"","sources":["../../src/tools/register-dashboard-tools.ts"],"names":[],"mappings":"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"}