libmodulor 0.29.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.
Files changed (137) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +2 -2
  3. package/dist/esm/apps/Helper/src/lib/layers/product.js +1 -1
  4. package/dist/esm/apps/Helper/src/lib/layers/project.js +6 -6
  5. package/dist/esm/apps/Helper/src/lib/layers/target.js +27 -11
  6. package/dist/esm/convention.d.ts +2 -0
  7. package/dist/esm/convention.js +1 -0
  8. package/dist/esm/dt/base/TObject.js +13 -5
  9. package/dist/esm/dt/index.d.ts +1 -1
  10. package/dist/esm/dt/targets/json-schema.d.ts +23 -11
  11. package/dist/esm/error/funcs.d.ts +1 -0
  12. package/dist/esm/error/funcs.js +4 -0
  13. package/dist/esm/error/index.d.ts +1 -1
  14. package/dist/esm/error/index.js +1 -1
  15. package/dist/esm/i18n/locales/de.js +2 -0
  16. package/dist/esm/i18n/locales/en.js +2 -0
  17. package/dist/esm/i18n/locales/es.js +2 -0
  18. package/dist/esm/i18n/locales/fr.js +2 -0
  19. package/dist/esm/i18n/types.d.ts +1 -1
  20. package/dist/esm/index.d.ts +3 -0
  21. package/dist/esm/index.js +3 -0
  22. package/dist/esm/index.node-express.d.ts +2 -0
  23. package/dist/esm/index.node-express.js +1 -0
  24. package/dist/esm/index.node-hono.d.ts +2 -0
  25. package/dist/esm/index.node-hono.js +1 -0
  26. package/dist/esm/index.node-mcp-express.d.ts +3 -0
  27. package/dist/esm/index.node-mcp-express.js +2 -0
  28. package/dist/esm/index.node-mcp-hono.d.ts +3 -0
  29. package/dist/esm/index.node-mcp-hono.js +2 -0
  30. package/dist/esm/index.node-mcp.d.ts +3 -1
  31. package/dist/esm/index.node-mcp.js +3 -1
  32. package/dist/esm/products/Helper/i18n.d.ts +2 -0
  33. package/dist/esm/std/lib/settings.js +4 -5
  34. package/dist/esm/target/edge-worker-hono-server/SyncEdgeWorkerHonoServerManager.d.ts +2 -0
  35. package/dist/esm/target/edge-worker-hono-server/SyncEdgeWorkerHonoServerManager.js +3 -0
  36. package/dist/esm/target/index.d.ts +1 -1
  37. package/dist/esm/target/index.js +1 -1
  38. package/dist/esm/target/lib/client/AuthDataStore.d.ts +5 -0
  39. package/dist/esm/target/lib/client/impl/InMemoryAuthDataStore.d.ts +7 -0
  40. package/dist/esm/target/lib/client/impl/InMemoryAuthDataStore.js +20 -0
  41. package/dist/esm/target/lib/client/impl/MixedServerClientManager.d.ts +15 -0
  42. package/dist/esm/target/lib/client/impl/MixedServerClientManager.js +44 -0
  43. package/dist/esm/target/lib/json-schema/error.d.ts +3 -0
  44. package/dist/esm/target/lib/json-schema/error.js +14 -0
  45. package/dist/esm/target/lib/json-schema/input.d.ts +16 -0
  46. package/dist/esm/target/lib/json-schema/input.js +67 -0
  47. package/dist/esm/target/lib/json-schema/output.d.ts +19 -0
  48. package/dist/esm/target/lib/json-schema/output.js +128 -0
  49. package/dist/esm/target/lib/manifest.d.ts +32 -1
  50. package/dist/esm/target/lib/manifest.js +22 -1
  51. package/dist/esm/target/lib/mcp-server/MCPServerRequestHandler.d.ts +16 -0
  52. package/dist/esm/target/lib/mcp-server/MCPServerRequestHandler.js +54 -0
  53. package/dist/esm/target/lib/mcp-server/consts.d.ts +1 -0
  54. package/dist/esm/target/lib/mcp-server/consts.js +1 -0
  55. package/dist/esm/target/lib/mcp-server/funcs.d.ts +13 -0
  56. package/dist/esm/target/lib/mcp-server/funcs.js +84 -0
  57. package/dist/esm/target/lib/mcp-server/http/MCPHTTPRequestHandlerBuilder.d.ts +14 -0
  58. package/dist/esm/target/lib/mcp-server/http/MCPHTTPRequestHandlerBuilder.js +1 -0
  59. package/dist/esm/target/lib/mcp-server/http/express/MCPHTTPExpressFakeRequestHandlerBuilder.d.ts +5 -0
  60. package/dist/esm/target/lib/mcp-server/http/express/MCPHTTPExpressFakeRequestHandlerBuilder.js +18 -0
  61. package/dist/esm/target/lib/mcp-server/http/express/MCPHTTPExpressProtocolRequestHandlerBuilder.d.ts +15 -0
  62. package/dist/esm/target/lib/mcp-server/http/express/MCPHTTPExpressProtocolRequestHandlerBuilder.js +88 -0
  63. package/dist/esm/target/lib/mcp-server/http/express/types.d.ts +3 -0
  64. package/dist/esm/target/lib/mcp-server/http/express/types.js +1 -0
  65. package/dist/esm/target/lib/mcp-server/http/funcs.d.ts +6 -0
  66. package/dist/esm/target/lib/mcp-server/http/funcs.js +50 -0
  67. package/dist/esm/target/lib/mcp-server/http/hono/MCPHTTPHonoFakeRequestHandlerBuilder.d.ts +5 -0
  68. package/dist/esm/target/lib/mcp-server/http/hono/MCPHTTPHonoFakeRequestHandlerBuilder.js +18 -0
  69. package/dist/esm/target/lib/mcp-server/http/hono/MCPHTTPHonoProtocolRequestHandlerBuilder.d.ts +15 -0
  70. package/dist/esm/target/lib/mcp-server/http/hono/MCPHTTPHonoProtocolRequestHandlerBuilder.js +88 -0
  71. package/dist/esm/target/lib/mcp-server/http/hono/types.d.ts +3 -0
  72. package/dist/esm/target/lib/mcp-server/http/hono/types.js +1 -0
  73. package/dist/esm/target/lib/mcp-server/stdio/MCPStdioRequestHandler.d.ts +31 -0
  74. package/dist/esm/target/lib/mcp-server/stdio/MCPStdioRequestHandler.js +108 -0
  75. package/dist/esm/target/lib/mcp-server/stdio/MCPStdioUCClientConfirmManager.d.ts +7 -0
  76. package/dist/esm/target/lib/mcp-server/stdio/MCPStdioUCClientConfirmManager.js +36 -0
  77. package/dist/esm/target/lib/mcp-server/stdio/consts.d.ts +2 -0
  78. package/dist/esm/target/lib/mcp-server/stdio/consts.js +3 -0
  79. package/dist/esm/target/lib/mcp-server/stdio/funcs.d.ts +2 -0
  80. package/dist/esm/target/lib/mcp-server/stdio/funcs.js +10 -0
  81. package/dist/esm/target/lib/mcp-server/stdio/input.d.ts +10 -0
  82. package/dist/esm/target/lib/mcp-server/stdio/input.js +15 -0
  83. package/dist/esm/target/lib/mcp-server/types.d.ts +2 -0
  84. package/dist/esm/target/lib/mcp-server/types.js +1 -0
  85. package/dist/esm/target/lib/openapi/OpenAPISpecBuilder.js +8 -4
  86. package/dist/esm/target/lib/openapi/funcs.d.ts +4 -9
  87. package/dist/esm/target/lib/openapi/funcs.js +18 -119
  88. package/dist/esm/target/lib/openapi/types.d.ts +5 -16
  89. package/dist/esm/target/lib/server/ServerBooter.d.ts +1 -1
  90. package/dist/esm/target/lib/server/ServerBooter.js +10 -0
  91. package/dist/esm/target/lib/server/ServerManager.d.ts +10 -0
  92. package/dist/esm/target/lib/server/ServerRequestHandler.d.ts +10 -5
  93. package/dist/esm/target/lib/server/ServerRequestHandler.js +35 -25
  94. package/dist/esm/target/lib/server/consts.js +4 -0
  95. package/dist/esm/target/lib/server-express/funcs.js +2 -6
  96. package/dist/esm/target/lib/server-hono/funcs.js +4 -2
  97. package/dist/esm/target/lib/shared.d.ts +1 -0
  98. package/dist/esm/target/lib/shared.js +1 -0
  99. package/dist/esm/target/nextjs-server/NextJSServerManager.d.ts +2 -0
  100. package/dist/esm/target/nextjs-server/NextJSServerManager.js +3 -0
  101. package/dist/esm/target/node-express-server/NodeExpressServerManager.d.ts +6 -2
  102. package/dist/esm/target/node-express-server/NodeExpressServerManager.js +15 -6
  103. package/dist/esm/target/node-hono-server/NodeHonoServerManager.d.ts +6 -2
  104. package/dist/esm/target/node-hono-server/NodeHonoServerManager.js +15 -6
  105. package/dist/esm/target/{node-mcp-server/NodeLocalStdioMCPServerManager.d.ts → node-mcp-server-stdio/NodeMCPStdioServerManager.d.ts} +9 -20
  106. package/dist/esm/target/node-mcp-server-stdio/NodeMCPStdioServerManager.js +108 -0
  107. package/dist/esm/testing/impl/newNodeAppTester.js +5 -0
  108. package/dist/esm/uc/cardinality.d.ts +7 -0
  109. package/dist/esm/uc/cardinality.js +14 -0
  110. package/dist/esm/uc/examples.d.ts +2 -0
  111. package/dist/esm/uc/examples.js +12 -0
  112. package/dist/esm/uc/helpers/UCOutputReader.d.ts +2 -2
  113. package/dist/esm/uc/helpers/UCOutputReader.js +2 -2
  114. package/dist/esm/uc/index.d.ts +2 -0
  115. package/dist/esm/uc/index.js +2 -0
  116. package/dist/esm/uc/input-field.d.ts +3 -6
  117. package/dist/esm/uc/input-field.js +5 -21
  118. package/dist/esm/uc/opi.d.ts +3 -1
  119. package/dist/esm/uc/opi.js +4 -1
  120. package/dist/esm/uc/output-field.d.ts +13 -1
  121. package/dist/esm/uc/output-field.js +9 -11
  122. package/dist/esm/utils/bundling/funcs.js +1 -1
  123. package/dist/esm/utils/bundling/vite/plugin.d.ts +1 -1
  124. package/dist/esm/utils/index.d.ts +1 -0
  125. package/dist/esm/utils/index.js +1 -0
  126. package/dist/esm/utils/streams/funcs.d.ts +2 -0
  127. package/dist/esm/utils/streams/funcs.js +10 -0
  128. package/package.json +20 -9
  129. package/dist/esm/target/lib/openapi/consts.d.ts +0 -2
  130. package/dist/esm/target/lib/openapi/consts.js +0 -1
  131. package/dist/esm/target/lib/openapi/input.d.ts +0 -16
  132. package/dist/esm/target/lib/openapi/input.js +0 -33
  133. package/dist/esm/target/node-mcp-server/NodeLocalStdioMCPServerManager.js +0 -188
  134. package/dist/esm/target/node-mcp-server/funcs.d.ts +0 -7
  135. package/dist/esm/target/node-mcp-server/funcs.js +0 -45
  136. package/dist/esm/target/node-mcp-server/types.d.ts +0 -15
  137. /package/dist/esm/target/{node-mcp-server/types.js → lib/client/AuthDataStore.js} +0 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "libmodulor",
3
3
  "description": "A TypeScript library to create platform-agnostic applications",
4
- "version": "0.29.0",
4
+ "version": "0.30.0",
5
5
  "license": "LGPL-3.0",
6
6
  "author": "Chafik H'nini <chafik.hnini@gmail.com>",
7
7
  "homepage": "https://libmodulor.c100k.eu",
@@ -53,6 +53,12 @@
53
53
  "./node-mcp": {
54
54
  "import": "./dist/esm/index.node-mcp.js"
55
55
  },
56
+ "./node-mcp-express": {
57
+ "import": "./dist/esm/index.node-mcp-express.js"
58
+ },
59
+ "./node-mcp-hono": {
60
+ "import": "./dist/esm/index.node-mcp-hono.js"
61
+ },
56
62
  "./node-stricli-cli": {
57
63
  "import": "./dist/esm/index.node-stricli-cli.js"
58
64
  },
@@ -97,27 +103,28 @@
97
103
  "test": "tsc && vitest run"
98
104
  },
99
105
  "devDependencies": {
100
- "@biomejs/biome": "^2.4.14",
106
+ "@biomejs/biome": "^2.4.15",
101
107
  "@react-native-community/slider": "^4.5.7",
102
108
  "@types/react": "^19.2.14",
103
109
  "@types/react-dom": "^19.2.3",
104
110
  "babel-plugin-parameter-decorator": "^1.0.16",
105
111
  "babel-plugin-transform-typescript-metadata": "^0.3.2",
106
- "expo": "55.0.11",
107
- "expo-document-picker": "~14.0.8",
112
+ "expo": "^55.0.24",
113
+ "expo-document-picker": "^14.0.8",
108
114
  "expo-image-picker": "^17.0.11",
109
115
  "react-native-safe-area-context": "^5.7.0",
110
- "wrangler": "^4.90.0"
116
+ "wrangler": "^4.91.0",
117
+ "zod": "^4.4.3"
111
118
  },
112
119
  "peerDependencies": {
113
120
  "@hono/node-server": "^1.19.14",
114
121
  "@modelcontextprotocol/sdk": "^1.29.0",
115
- "@stricli/core": "^1.2.6",
122
+ "@stricli/core": "^1.2.7",
116
123
  "buffer": "^6.0.3",
117
124
  "cookie-parser": "^1.4.7",
118
125
  "express": "^5.2.1",
119
126
  "express-fileupload": "^1.5.2",
120
- "fast-check": "^4.7.0",
127
+ "fast-check": "^4.8.0",
121
128
  "helmet": "^8.1.0",
122
129
  "hono": "^4.12.18",
123
130
  "inversify": "^7.11.0",
@@ -131,8 +138,9 @@
131
138
  "reflect-metadata": "^0.2.2",
132
139
  "sqlite3": "^5.1.7",
133
140
  "typescript": "^6.0.3",
134
- "vite": "^6.4.2",
135
- "vitest": "^3.2.4"
141
+ "vite": "^8.0.13",
142
+ "vitest": "^4.1.6",
143
+ "zod": "^4.4.3"
136
144
  },
137
145
  "peerDependenciesMeta": {
138
146
  "@hono/node-server": {
@@ -194,6 +202,9 @@
194
202
  },
195
203
  "vitest": {
196
204
  "optional": true
205
+ },
206
+ "zod": {
207
+ "optional": true
197
208
  }
198
209
  },
199
210
  "sideEffects": false
@@ -1,2 +0,0 @@
1
- import type { OpenAPIDescription } from './types.js';
2
- export declare const SUCCESS_DESCRIPTION: OpenAPIDescription;
@@ -1 +0,0 @@
1
- export const SUCCESS_DESCRIPTION = '🕺🏽';
@@ -1,16 +0,0 @@
1
- import type { DataType } from '../../../dt/index.js';
2
- import { type UCInputField } from '../../../uc/index.js';
3
- import type { OpenAPIProperty } from './types.js';
4
- export interface OpenAPIInputDef<T extends DataType> {
5
- /**
6
- * Internal types that are not part of the spec
7
- */
8
- internal?: {
9
- required?: boolean;
10
- };
11
- /**
12
- * Fields that are part of the spec
13
- */
14
- spec?: OpenAPIProperty<T>;
15
- }
16
- export declare function openAPIInputDef<T extends DataType>(field: UCInputField<T>): OpenAPIInputDef<T>;
@@ -1,33 +0,0 @@
1
- import { ucifExamples, ucifIsMandatory, ucifRepeatability, } from '../../../uc/index.js';
2
- export function openAPIInputDef(field) {
3
- const def = {
4
- internal: {},
5
- spec: { type: 'string' },
6
- };
7
- if (!def.internal || !def.spec) {
8
- // Just a guard to safely type the rest of the function without using !
9
- return def;
10
- }
11
- const { def: fDef } = field;
12
- const { type: fType } = fDef;
13
- def.internal.required = ucifIsMandatory(fDef);
14
- def.spec = fType.jsonSchemaType();
15
- const examples = ucifExamples(fDef);
16
- if (examples) {
17
- def.spec.examples = examples;
18
- }
19
- const options = fType.getOptions();
20
- if (options) {
21
- def.spec.enum = options.map((o) => o.value);
22
- }
23
- const [isRepeatable] = ucifRepeatability(fDef);
24
- if (isRepeatable) {
25
- def.spec = {
26
- items: def.spec,
27
- maxItems: fDef.cardinality?.max,
28
- minItems: fDef.cardinality?.min,
29
- type: 'array',
30
- };
31
- }
32
- return def;
33
- }
@@ -1,188 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- var __param = (this && this.__param) || function (paramIndex, decorator) {
11
- return function (target, key) { decorator(target, key, paramIndex); }
12
- };
13
- import { Server } from '@modelcontextprotocol/sdk/server/index.js';
14
- import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
15
- import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
16
- import { inject, injectable } from 'inversify';
17
- import { NotAvailableError } from '../../error/index.js';
18
- import { WordingManager } from '../../i18n/index.js';
19
- import { UCBuilder, ucifIsMandatory, ucMountingPoint, } from '../../uc/index.js';
20
- import { DEFAULT_VERSION } from '../lib/shared.js';
21
- import { propertyType, resError, resObj } from './funcs.js';
22
- /**
23
- * A simple MCP Server implementation
24
- *
25
- * Although it implements {@link ServerManager}, this implementation is not necessarily a "server".
26
- * Indeed, it uses a local `Transport` so it must be considered the same as a {@link NodeCoreCLIManager}.
27
- * Therefore, it calls `execClient` and not `execServer`.
28
- * This way, Claude AI, or any other client is just a wrapper on top of it.
29
- *
30
- * @alpha This implementation still has lots of TODOs and has not been tested in real conditions. It needs to be stabilized before usage.
31
- */
32
- let NodeLocalStdioMCPServerManager = class NodeLocalStdioMCPServerManager {
33
- productManifest;
34
- settingsManager;
35
- ucBuilder;
36
- ucManager;
37
- wordingManager;
38
- runtime;
39
- transport;
40
- appManifests;
41
- tools;
42
- constructor(productManifest, settingsManager, ucBuilder, ucManager, wordingManager) {
43
- this.productManifest = productManifest;
44
- this.settingsManager = settingsManager;
45
- this.ucBuilder = ucBuilder;
46
- this.ucManager = ucManager;
47
- this.wordingManager = wordingManager;
48
- this.appManifests = new Map();
49
- this.tools = new Map();
50
- }
51
- s() {
52
- return {
53
- logger_level: this.settingsManager.get()('logger_level'),
54
- };
55
- }
56
- overrideUCManager(ucManager) {
57
- this.ucManager = ucManager;
58
- }
59
- async init() {
60
- this.initCommon();
61
- }
62
- initSync() {
63
- this.initCommon();
64
- }
65
- async mount(appManifest, ucd, contract) {
66
- this.mountCommon(appManifest, ucd, contract);
67
- }
68
- mountSync(appManifest, ucd, contract) {
69
- this.mountCommon(appManifest, ucd, contract);
70
- }
71
- async mountOpenAPISpec(_spec, _at) {
72
- // Nothing to do
73
- }
74
- async mountStaticDir(_dirPath) {
75
- throw new NotAvailableError('mountStaticDir');
76
- }
77
- async start() {
78
- this.transport = new StdioServerTransport();
79
- await this.runtime.connect(this.transport);
80
- }
81
- async stop() {
82
- await this.runtime.close();
83
- await this.transport.close();
84
- }
85
- async warmUp() {
86
- this.runtime.setRequestHandler(ListToolsRequestSchema, async () => {
87
- return {
88
- tools: [...this.tools.values().map((v) => v.tool)],
89
- };
90
- });
91
- this.runtime.setRequestHandler(CallToolRequestSchema, async (request) => this.execRequest(request));
92
- }
93
- buildInputSchema(uc) {
94
- const res = {
95
- type: 'object',
96
- };
97
- if (!uc.hasInput()) {
98
- return res;
99
- }
100
- res.properties = {};
101
- for (const f of uc.inputFields) {
102
- const { def, key } = f;
103
- const { desc } = this.wordingManager.ucif(f);
104
- res.properties[key] = {
105
- ...propertyType(def),
106
- description: desc,
107
- required: ucifIsMandatory(def),
108
- };
109
- }
110
- return res;
111
- }
112
- async execRequest(request) {
113
- const { name, arguments: args } = request.params;
114
- // TODO : Check authentication in some way (see if MCP handles it)
115
- const auth = null;
116
- try {
117
- const route = this.tools.get(name);
118
- if (!route) {
119
- throw new Error(`Unrecognized use case : ${name}`);
120
- }
121
- const { appName, ucd } = route;
122
- const appManifest = this.appManifests.get(appName);
123
- if (!appManifest) {
124
- throw new Error(`Unrecognized app : ${appName}`);
125
- }
126
- const uc = this.ucBuilder.exec({
127
- appManifest,
128
- auth,
129
- def: ucd,
130
- });
131
- if (args) {
132
- // biome-ignore lint/suspicious/noExplicitAny: can be anything
133
- uc.fill(args);
134
- }
135
- const confirmed = await this.ucManager.confirmClient(uc);
136
- if (!confirmed) {
137
- throw new Error('Ask for the user to confirm');
138
- }
139
- const ucor = await this.ucManager.execClient(uc);
140
- return resObj(ucor);
141
- }
142
- catch (err) {
143
- return resError(err);
144
- }
145
- }
146
- initCommon() {
147
- const { name, version } = this.productManifest;
148
- this.runtime = new Server({
149
- name: name,
150
- version: version ?? DEFAULT_VERSION,
151
- }, {
152
- capabilities: {
153
- tools: {},
154
- },
155
- });
156
- if (this.s().logger_level !== 'error') {
157
- const message = 'Set the logging_level to "error" as MCP does not want the server to log to stdout (see https://modelcontextprotocol.io/docs/tools/debugging#implementing-logging)';
158
- // Depending on the `Logger` implementation, this.logger.error() might not write to stderr (e.g. can write to a file).
159
- // That's why we explicitly write to stdout by calling console.error().
160
- // biome-ignore lint/suspicious/noConsole: we want it
161
- console.error(new Error(message));
162
- }
163
- }
164
- mountCommon(appManifest, ucd, _contract) {
165
- const uc = this.ucBuilder.exec({
166
- appManifest,
167
- auth: null,
168
- def: ucd,
169
- });
170
- if (!this.appManifests.has(appManifest.name)) {
171
- this.appManifests.set(appManifest.name, appManifest);
172
- }
173
- const inputSchema = this.buildInputSchema(uc);
174
- const mountingPoint = uc.def.ext?.cmd?.mountAt ?? ucMountingPoint(uc);
175
- const tool = { inputSchema, name: mountingPoint };
176
- this.tools.set(mountingPoint, { appName: appManifest.name, tool, ucd });
177
- }
178
- };
179
- NodeLocalStdioMCPServerManager = __decorate([
180
- injectable(),
181
- __param(0, inject('ProductManifest')),
182
- __param(1, inject('SettingsManager')),
183
- __param(2, inject(UCBuilder)),
184
- __param(3, inject('UCManager')),
185
- __param(4, inject(WordingManager)),
186
- __metadata("design:paramtypes", [Object, Object, UCBuilder, Object, WordingManager])
187
- ], NodeLocalStdioMCPServerManager);
188
- export { NodeLocalStdioMCPServerManager };
@@ -1,7 +0,0 @@
1
- import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
2
- import { type DataType } from '../../dt/index.js';
3
- import { type UCInputFieldDef } from '../../uc/index.js';
4
- import type { PropertyType } from './types.js';
5
- export declare function propertyType<T extends DataType>(def: UCInputFieldDef<T>): PropertyType;
6
- export declare function resError(err: Error): CallToolResult;
7
- export declare function resObj<T>(obj: T): CallToolResult;
@@ -1,45 +0,0 @@
1
- import { TBoolean, TEmbeddedObject, TInt, TNumber, } from '../../dt/index.js';
2
- import { ucifRepeatability } from '../../uc/index.js';
3
- export function propertyType(def) {
4
- const { cardinality, type } = def;
5
- let primitive = 'string';
6
- if (type instanceof TBoolean) {
7
- primitive = 'boolean';
8
- }
9
- else if (type instanceof TInt) {
10
- primitive = 'integer';
11
- }
12
- else if (type instanceof TNumber) {
13
- primitive = 'number';
14
- }
15
- else if (type instanceof TEmbeddedObject) {
16
- primitive = 'object';
17
- }
18
- const [isRepeatable] = ucifRepeatability(def);
19
- const maxItems = cardinality?.max;
20
- const minItems = cardinality?.min;
21
- return isRepeatable
22
- ? { items: { type: primitive }, maxItems, minItems, type: 'array' }
23
- : { type: primitive };
24
- }
25
- export function resError(err) {
26
- return {
27
- content: [
28
- {
29
- text: err.message,
30
- type: 'text',
31
- },
32
- ],
33
- isError: true,
34
- };
35
- }
36
- export function resObj(obj) {
37
- return {
38
- content: [
39
- {
40
- text: JSON.stringify(obj),
41
- type: 'text',
42
- },
43
- ],
44
- };
45
- }
@@ -1,15 +0,0 @@
1
- import type { ListToolsResult } from '@modelcontextprotocol/sdk/types.js';
2
- import type { UIntQuantity } from '../../dt/index.js';
3
- export type PropertyPrimitiveType = 'boolean' | 'integer' | 'number' | 'object' | 'string';
4
- export type PropertyArrayType<T extends PropertyPrimitiveType> = {
5
- items: {
6
- type: T;
7
- };
8
- maxItems?: UIntQuantity | undefined;
9
- minItems?: UIntQuantity | undefined;
10
- type: 'array';
11
- };
12
- export type PropertyType<T extends PropertyPrimitiveType = PropertyPrimitiveType> = {
13
- type: T;
14
- } | PropertyArrayType<T>;
15
- export type Tool = ListToolsResult['tools'][0];