@ampeco/public-api-mcp 0.2.2 → 0.3.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 (59) hide show
  1. package/README.md +235 -4
  2. package/dist/build/optimizer.d.ts.map +1 -1
  3. package/dist/build/optimizer.js +82 -21
  4. package/dist/build/optimizer.js.map +1 -1
  5. package/dist/build/parser.d.ts.map +1 -1
  6. package/dist/build/parser.js +74 -1
  7. package/dist/build/parser.js.map +1 -1
  8. package/dist/cli/index.js +25 -11
  9. package/dist/cli/index.js.map +1 -1
  10. package/dist/generated/build-stats.json +5 -5
  11. package/dist/generated/endpoints.json +29214 -20896
  12. package/dist/generated/schemas.d.ts +7530 -2789
  13. package/dist/generated/schemas.d.ts.map +1 -1
  14. package/dist/generated/schemas.js +1443 -590
  15. package/dist/generated/schemas.js.map +1 -1
  16. package/dist/generated/schemas.ts +1447 -596
  17. package/dist/server/factory.d.ts +2 -1
  18. package/dist/server/factory.d.ts.map +1 -1
  19. package/dist/server/factory.js +17 -206
  20. package/dist/server/factory.js.map +1 -1
  21. package/dist/server/factory.test.js +62 -4
  22. package/dist/server/factory.test.js.map +1 -1
  23. package/dist/server/http.d.ts +2 -1
  24. package/dist/server/http.d.ts.map +1 -1
  25. package/dist/server/http.js +8 -2
  26. package/dist/server/http.js.map +1 -1
  27. package/dist/server/index.d.ts +2 -0
  28. package/dist/server/index.d.ts.map +1 -1
  29. package/dist/server/index.js +9 -1388
  30. package/dist/server/index.js.map +1 -1
  31. package/dist/server/instructions.d.ts +13 -0
  32. package/dist/server/instructions.d.ts.map +1 -0
  33. package/dist/server/instructions.js +146 -0
  34. package/dist/server/instructions.js.map +1 -0
  35. package/dist/server/resources/handlers.d.ts +31 -0
  36. package/dist/server/resources/handlers.d.ts.map +1 -0
  37. package/dist/server/resources/handlers.js +113 -0
  38. package/dist/server/resources/handlers.js.map +1 -0
  39. package/dist/server/resources/handlers.test.d.ts +6 -0
  40. package/dist/server/resources/handlers.test.d.ts.map +1 -0
  41. package/dist/server/resources/handlers.test.js +203 -0
  42. package/dist/server/resources/handlers.test.js.map +1 -0
  43. package/dist/server/resources/native.d.ts +11 -0
  44. package/dist/server/resources/native.d.ts.map +1 -0
  45. package/dist/server/resources/native.js +31 -0
  46. package/dist/server/resources/native.js.map +1 -0
  47. package/dist/server/resources/tools.d.ts +11 -0
  48. package/dist/server/resources/tools.d.ts.map +1 -0
  49. package/dist/server/resources/tools.js +41 -0
  50. package/dist/server/resources/tools.js.map +1 -0
  51. package/dist/server/stdio.d.ts +2 -1
  52. package/dist/server/stdio.d.ts.map +1 -1
  53. package/dist/server/stdio.js +8 -2
  54. package/dist/server/stdio.js.map +1 -1
  55. package/dist/server/types.d.ts +36 -0
  56. package/dist/server/types.d.ts.map +1 -0
  57. package/dist/server/types.js +6 -0
  58. package/dist/server/types.js.map +1 -0
  59. package/package.json +3 -2
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Native MCP resources registration
3
+ * Uses the shared ResourceHandler to avoid code duplication
4
+ */
5
+ import { ListResourcesRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
6
+ import { ResourceHandler } from './handlers.js';
7
+ /**
8
+ * Register native MCP resources using the shared ResourceHandler
9
+ */
10
+ export function registerNativeResources(server, endpoints) {
11
+ const handler = new ResourceHandler(endpoints);
12
+ // Register resources/list handler - delegates to shared handler
13
+ server.server.setRequestHandler(ListResourcesRequestSchema, async () => {
14
+ const resources = handler.listTags();
15
+ return { resources };
16
+ });
17
+ // Register resources/read handler - delegates to shared handler
18
+ server.server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
19
+ const data = handler.readResource(request.params.uri);
20
+ return {
21
+ contents: [
22
+ {
23
+ uri: request.params.uri,
24
+ mimeType: 'application/json',
25
+ text: JSON.stringify(data, null, 2),
26
+ },
27
+ ],
28
+ };
29
+ });
30
+ }
31
+ //# sourceMappingURL=native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.js","sourceRoot":"","sources":["../../../src/server/resources/native.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,SAAsB;IAC/E,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;IAE/C,gEAAgE;IAChE,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrC,OAAO,EAAE,SAAS,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,gEAAgE;IAChE,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,yBAAyB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC3E,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEtD,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG;oBACvB,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBACpC;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Tool emulation for MCP resources
3
+ * Uses the shared ResourceHandler to avoid code duplication
4
+ */
5
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
+ import type { BuildOutput } from '../../build/types.js';
7
+ /**
8
+ * Register tool emulation using the shared ResourceHandler
9
+ */
10
+ export declare function registerEmulationTools(server: McpServer, endpoints: BuildOutput): void;
11
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/server/resources/tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,GAAG,IAAI,CA4CtF"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Tool emulation for MCP resources
3
+ * Uses the shared ResourceHandler to avoid code duplication
4
+ */
5
+ import { z } from 'zod';
6
+ import { ResourceHandler } from './handlers.js';
7
+ /**
8
+ * Register tool emulation using the shared ResourceHandler
9
+ */
10
+ export function registerEmulationTools(server, endpoints) {
11
+ const handler = new ResourceHandler(endpoints);
12
+ // Tool 1: list_resources - delegates to shared handler
13
+ server.tool('list_resources', 'List all available API tags. This emulates the native MCP resources/list functionality. Returns a list of tags that group related endpoints together (e.g., Users, ChargingSessions, Connectors). Each tag can then be read using the read_resource tool with tag:// URIs.', {
14
+ // No parameters - always returns all tags
15
+ }, async () => {
16
+ const resources = handler.listTags();
17
+ return {
18
+ content: [
19
+ {
20
+ type: 'text',
21
+ text: JSON.stringify({ resources }, null, 2),
22
+ },
23
+ ],
24
+ };
25
+ });
26
+ // Tool 2: read_resource - delegates to shared handler
27
+ server.tool('read_resource', 'Read a specific resource by URI. This emulates the native MCP resources/read functionality. Supports two URI formats: tag://{TagName} to read all endpoints within a tag, and api://{METHOD}{path} to read detailed endpoint specifications. You MUST use this tool to read endpoint definitions before calling api_request.', {
28
+ uri: z.string().describe('The resource URI to read. Format: tag://{TagName} or api://{METHOD}{path}. Examples: "tag://Users", "api://GET/users/{id}", "api://POST/charging-sessions"'),
29
+ }, async (args) => {
30
+ const data = handler.readResource(args.uri);
31
+ return {
32
+ content: [
33
+ {
34
+ type: 'text',
35
+ text: JSON.stringify(data, null, 2),
36
+ },
37
+ ],
38
+ };
39
+ });
40
+ }
41
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/server/resources/tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,SAAsB;IAC9E,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;IAE/C,uDAAuD;IACvD,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,4QAA4Q,EAC5Q;IACE,0CAA0C;KAC3C,EACD,KAAK,IAAI,EAAE;QACT,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QAErC,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC7C;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,sDAAsD;IACtD,MAAM,CAAC,IAAI,CACT,eAAe,EACf,8TAA8T,EAC9T;QACE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4JAA4J,CAAC;KACvL,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE5C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBACpC;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -2,9 +2,10 @@
2
2
  * Stdio MCP Server
3
3
  * Runs MCP server with stdio transport for local integrations (Claude Desktop, NPX, etc.)
4
4
  */
5
+ import type { StdioServerOptions } from './types.js';
5
6
  /**
6
7
  * Start MCP server in stdio mode
7
8
  * Uses stdin/stdout for communication with MCP clients
8
9
  */
9
- export declare function startStdioServer(bearerToken: string, hostname: string): Promise<void>;
10
+ export declare function startStdioServer(options: StdioServerOptions): Promise<void>;
10
11
  //# sourceMappingURL=stdio.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../src/server/stdio.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAiBf"}
1
+ {"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../src/server/stdio.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
@@ -9,15 +9,21 @@ import { loadEndpoints } from './loader.js';
9
9
  * Start MCP server in stdio mode
10
10
  * Uses stdin/stdout for communication with MCP clients
11
11
  */
12
- export async function startStdioServer(bearerToken, hostname) {
12
+ export async function startStdioServer(options) {
13
+ const { bearerToken, hostname, emulateResourcesViaTools = false, } = options;
13
14
  console.error('[Stdio Mode] Starting MCP server...');
14
15
  const endpoints = loadEndpoints();
15
16
  console.error(`[Stdio Mode] Loaded ${endpoints.endpoints.length} endpoints from ${endpoints.info.title} v${endpoints.info.version}`);
16
- const server = createServer(endpoints, bearerToken, hostname);
17
+ const server = createServer(endpoints, {
18
+ hostname,
19
+ bearerToken,
20
+ emulateResourcesViaTools,
21
+ });
17
22
  const transport = new StdioServerTransport();
18
23
  await server.connect(transport);
19
24
  console.error('[Stdio Mode] Server connected and ready');
20
25
  console.error(`[Stdio Mode] Target API: ${hostname}`);
26
+ console.error(`[Stdio Mode] Resource mode: ${emulateResourcesViaTools ? 'Tool Emulation' : 'Native Resources'}`);
21
27
  console.error(`[Stdio Mode] Bearer token: ${bearerToken ? 'provided' : 'not provided'}`);
22
28
  // Keep process alive
23
29
  process.stdin.resume();
@@ -1 +1 @@
1
- {"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/server/stdio.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,WAAmB,EACnB,QAAgB;IAEhB,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAErD,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,uBAAuB,SAAS,CAAC,SAAS,CAAC,MAAM,mBAAmB,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAErI,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACzD,OAAO,CAAC,KAAK,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,KAAK,CAAC,8BAA8B,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;IAEzF,qBAAqB;IACrB,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/server/stdio.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAA2B;IAE3B,MAAM,EACJ,WAAW,EACX,QAAQ,EACR,wBAAwB,GAAG,KAAK,GACjC,GAAG,OAAO,CAAC;IAEZ,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAErD,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,uBAAuB,SAAS,CAAC,SAAS,CAAC,MAAM,mBAAmB,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAErI,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE;QACrC,QAAQ;QACR,WAAW;QACX,wBAAwB;KACzB,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACzD,OAAO,CAAC,KAAK,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,KAAK,CAAC,+BAA+B,wBAAwB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACjH,OAAO,CAAC,KAAK,CAAC,8BAA8B,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;IAEzF,qBAAqB;IACrB,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AACzB,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Server Configuration Types
3
+ * Defines options interfaces for server creation and startup functions
4
+ */
5
+ /**
6
+ * Options for creating an MCP server instance
7
+ */
8
+ export interface ServerOptions {
9
+ /** API hostname to proxy requests to */
10
+ hostname: string;
11
+ /** Bearer token for authentication */
12
+ bearerToken: string;
13
+ /** Emulate resources via tools instead of native MCP resources */
14
+ emulateResourcesViaTools?: boolean;
15
+ }
16
+ /**
17
+ * Options for starting the MCP server in stdio mode
18
+ */
19
+ export interface StdioServerOptions {
20
+ /** Bearer token for API authentication */
21
+ bearerToken: string;
22
+ /** Target API hostname */
23
+ hostname: string;
24
+ /** Emulate resources via tools instead of native MCP resources */
25
+ emulateResourcesViaTools?: boolean;
26
+ }
27
+ /**
28
+ * Options for starting the MCP server in HTTP mode
29
+ */
30
+ export interface HttpServerOptions {
31
+ /** Port to listen on */
32
+ port: number;
33
+ /** Emulate resources via tools instead of native MCP resources (for all requests) */
34
+ emulateResourcesViaTools?: boolean;
35
+ }
36
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,wBAAwB,CAAC,EAAE,OAAO,CAAC;CAMpC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,wBAAwB,CAAC,EAAE,OAAO,CAAC;CAKpC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,wBAAwB,CAAC,EAAE,OAAO,CAAC;CAMpC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Server Configuration Types
3
+ * Defines options interfaces for server creation and startup functions
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ampeco/public-api-mcp",
3
- "version": "0.2.2",
3
+ "version": "0.3.0",
4
4
  "description": "MCP server that dynamically exposes the AMPECO.CHARGE Public API defined by an OpenAPI 3 specification",
5
5
  "type": "module",
6
6
  "main": "dist/cli/index.js",
@@ -15,7 +15,8 @@
15
15
  ],
16
16
  "scripts": {
17
17
  "build": "tsx src/build/index.ts \"$OPENAPI_SPEC_PATH\" && tsc && mkdir -p dist/generated && cp src/generated/*.json src/generated/*.ts dist/generated/",
18
- "dev:stdio": "(tsx src/build/index.ts \"$OPENAPI_SPEC_PATH\" && echo '[Build] Complete' >&2) >&2 && tsx src/cli/index.ts --stdio --hostname http://demo.charge.alex2.dev.ampeco.tech --token \"$AMPECO_TOKEN\"",
18
+ "build:silent": "(tsx src/build/index.ts \"$OPENAPI_SPEC_PATH\" && echo '[Build] Complete' >&2) >&2",
19
+ "dev:stdio": "npm run --silent build:silent && tsx src/cli/index.ts --stdio --hostname http://demo.charge.alex2.dev.ampeco.tech --token \"$AMPECO_TOKEN\"",
19
20
  "dev:http": "tsx src/build/index.ts \"$OPENAPI_SPEC_PATH\" && tsx src/cli/index.ts --http --port 3001",
20
21
  "dev": "npm run dev:http",
21
22
  "start": "node dist/cli/index.js",