nestjs-apcore 0.1.0 → 0.3.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 (36) hide show
  1. package/README.md +78 -56
  2. package/dist/bridge/binding-loader.d.ts +2 -2
  3. package/dist/bridge/binding-loader.d.ts.map +1 -1
  4. package/dist/bridge/binding-loader.js +16 -30
  5. package/dist/bridge/binding-loader.js.map +1 -1
  6. package/dist/core/apcore-executor.service.d.ts +7 -3
  7. package/dist/core/apcore-executor.service.d.ts.map +1 -1
  8. package/dist/core/apcore-executor.service.js +7 -3
  9. package/dist/core/apcore-executor.service.js.map +1 -1
  10. package/dist/core/apcore-registry.service.d.ts +26 -9
  11. package/dist/core/apcore-registry.service.d.ts.map +1 -1
  12. package/dist/core/apcore-registry.service.js +71 -38
  13. package/dist/core/apcore-registry.service.js.map +1 -1
  14. package/dist/core/apcore.module.d.ts +4 -1
  15. package/dist/core/apcore.module.d.ts.map +1 -1
  16. package/dist/core/apcore.module.js +20 -2
  17. package/dist/core/apcore.module.js.map +1 -1
  18. package/dist/decorators/ap-tool-scanner.service.d.ts +46 -7
  19. package/dist/decorators/ap-tool-scanner.service.d.ts.map +1 -1
  20. package/dist/decorators/ap-tool-scanner.service.js +110 -56
  21. package/dist/decorators/ap-tool-scanner.service.js.map +1 -1
  22. package/dist/index.d.ts +8 -3
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +6 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/mcp/apcore-mcp.service.d.ts +21 -3
  27. package/dist/mcp/apcore-mcp.service.d.ts.map +1 -1
  28. package/dist/mcp/apcore-mcp.service.js +58 -41
  29. package/dist/mcp/apcore-mcp.service.js.map +1 -1
  30. package/dist/types.d.ts +23 -4
  31. package/dist/types.d.ts.map +1 -1
  32. package/dist/utils/module-factory.d.ts +29 -0
  33. package/dist/utils/module-factory.d.ts.map +1 -0
  34. package/dist/utils/module-factory.js +45 -0
  35. package/dist/utils/module-factory.js.map +1 -0
  36. package/package.json +8 -3
@@ -11,15 +11,28 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
11
  return function (target, key) { decorator(target, key, paramIndex); }
12
12
  };
13
13
  import { Injectable, Inject } from '@nestjs/common';
14
- import { serve, toOpenaiTools } from 'apcore-mcp';
14
+ import { serve, asyncServe, toOpenaiTools } from 'apcore-mcp';
15
15
  import { ApcoreRegistryService } from '../core/apcore-registry.service.js';
16
16
  import { ApcoreExecutorService } from '../core/apcore-executor.service.js';
17
17
  import { APCORE_MCP_MODULE_OPTIONS } from '../constants.js';
18
+ /** Keys shared between serve() and asyncServe() option forwarding. */
19
+ const SHARED_OPTION_KEYS = [
20
+ 'name', 'version', 'tags', 'prefix', 'validateInputs', 'logLevel',
21
+ 'metricsCollector', 'authenticator', 'requireAuth', 'exemptPaths',
22
+ 'approvalHandler', 'outputFormatter',
23
+ ];
24
+ /** Keys only used by serve() (transport-specific). */
25
+ const SERVE_ONLY_KEYS = [
26
+ 'transport', 'host', 'port', 'explorer', 'explorerPrefix', 'allowExecute',
27
+ 'dynamic', 'onStartup', 'onShutdown', 'explorerTitle',
28
+ 'explorerProjectName', 'explorerProjectUrl',
29
+ ];
18
30
  /**
19
31
  * NestJS service that manages the MCP (Model Context Protocol) server lifecycle.
20
32
  *
21
- * Wraps the `serve()` and `toOpenaiTools()` functions from `apcore-mcp`,
22
- * integrating them with NestJS lifecycle hooks for automatic startup/shutdown.
33
+ * Wraps the `serve()`, `asyncServe()`, and `toOpenaiTools()` functions from
34
+ * `apcore-mcp`, integrating them with NestJS lifecycle hooks for automatic
35
+ * startup/shutdown.
23
36
  */
24
37
  let ApcoreMcpService = class ApcoreMcpService {
25
38
  registry;
@@ -54,46 +67,33 @@ let ApcoreMcpService = class ApcoreMcpService {
54
67
  /** Starts the MCP server using the configured transport and options. */
55
68
  async start() {
56
69
  this._isRunning = true;
57
- const serveOptions = {};
58
- // Forward all relevant options to serve()
59
- if (this.options.transport !== undefined)
60
- serveOptions.transport = this.options.transport;
61
- if (this.options.host !== undefined)
62
- serveOptions.host = this.options.host;
63
- if (this.options.port !== undefined)
64
- serveOptions.port = this.options.port;
65
- if (this.options.name !== undefined)
66
- serveOptions.name = this.options.name;
67
- if (this.options.version !== undefined)
68
- serveOptions.version = this.options.version;
69
- if (this.options.tags !== undefined)
70
- serveOptions.tags = this.options.tags;
71
- if (this.options.prefix !== undefined)
72
- serveOptions.prefix = this.options.prefix;
73
- if (this.options.explorer !== undefined)
74
- serveOptions.explorer = this.options.explorer;
75
- if (this.options.explorerPrefix !== undefined)
76
- serveOptions.explorerPrefix = this.options.explorerPrefix;
77
- if (this.options.allowExecute !== undefined)
78
- serveOptions.allowExecute = this.options.allowExecute;
79
- if (this.options.dynamic !== undefined)
80
- serveOptions.dynamic = this.options.dynamic;
81
- if (this.options.validateInputs !== undefined)
82
- serveOptions.validateInputs = this.options.validateInputs;
83
- if (this.options.logLevel !== undefined)
84
- serveOptions.logLevel = this.options.logLevel;
85
- if (this.options.onStartup !== undefined)
86
- serveOptions.onStartup = this.options.onStartup;
87
- if (this.options.onShutdown !== undefined)
88
- serveOptions.onShutdown = this.options.onShutdown;
89
- if (this.options.metricsCollector !== undefined)
90
- serveOptions.metricsCollector = this.options.metricsCollector;
91
- if (this.options.authenticator !== undefined)
92
- serveOptions.authenticator = this.options.authenticator;
93
- if (this.options.exemptPaths !== undefined)
94
- serveOptions.exemptPaths = this.options.exemptPaths;
70
+ const serveOptions = {
71
+ ...this.collectOptions(SHARED_OPTION_KEYS),
72
+ ...this.collectOptions(SERVE_ONLY_KEYS),
73
+ };
95
74
  await serve(this.executor.raw, serveOptions);
96
75
  }
76
+ /**
77
+ * Build an embeddable HTTP request handler without starting a standalone server.
78
+ *
79
+ * Returns an `AsyncServeApp` with `handler` and `close` methods, suitable for
80
+ * mounting into Express, Fastify, or any Node HTTP framework.
81
+ */
82
+ async asyncServe(options) {
83
+ const asyncOptions = {
84
+ ...this.collectOptions(SHARED_OPTION_KEYS),
85
+ };
86
+ // Forward per-call options
87
+ if (options?.endpoint !== undefined)
88
+ asyncOptions.endpoint = options.endpoint;
89
+ if (options?.explorer !== undefined)
90
+ asyncOptions.explorer = options.explorer;
91
+ if (options?.explorerPrefix !== undefined)
92
+ asyncOptions.explorerPrefix = options.explorerPrefix;
93
+ if (options?.allowExecute !== undefined)
94
+ asyncOptions.allowExecute = options.allowExecute;
95
+ return asyncServe(this.executor.raw, asyncOptions);
96
+ }
97
97
  /** Stops the MCP server. */
98
98
  async stop() {
99
99
  this._isRunning = false;
@@ -135,6 +135,23 @@ let ApcoreMcpService = class ApcoreMcpService {
135
135
  await this.stop();
136
136
  }
137
137
  }
138
+ // -----------------------------------------------------------------------
139
+ // Private helpers
140
+ // -----------------------------------------------------------------------
141
+ /**
142
+ * Collect defined option values from this.options for the given keys.
143
+ * Only includes keys whose values are not `undefined`.
144
+ */
145
+ collectOptions(keys) {
146
+ const result = {};
147
+ for (const key of keys) {
148
+ const value = this.options[key];
149
+ if (value !== undefined) {
150
+ result[key] = value;
151
+ }
152
+ }
153
+ return result;
154
+ }
138
155
  };
139
156
  ApcoreMcpService = __decorate([
140
157
  Injectable(),
@@ -1 +1 @@
1
- {"version":3,"file":"apcore-mcp.service.js","sourceRoot":"","sources":["../../src/mcp/apcore-mcp.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apcore-mcp.service.js","sourceRoot":"","sources":["../../src/mcp/apcore-mcp.service.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type { ModuleAnnotations, ModuleExample, Module, Context, Identity, ModuleDescriptor, } from 'apcore-js';
1
+ export type { ModuleAnnotations, ModuleExample, Module, Context, Identity, ModuleDescriptor, PreflightResult, PreflightCheckResult, ValidationResult, } from 'apcore-js';
2
2
  /** Annotations describing tool behavior characteristics. */
3
3
  export interface ApToolAnnotations {
4
4
  readonly?: boolean;
@@ -7,6 +7,11 @@ export interface ApToolAnnotations {
7
7
  requiresApproval?: boolean;
8
8
  openWorld?: boolean;
9
9
  streaming?: boolean;
10
+ cacheable?: boolean;
11
+ cacheTtl?: number;
12
+ cacheKeyFields?: string[] | null;
13
+ paginated?: boolean;
14
+ paginationStyle?: 'cursor' | 'offset' | 'page';
10
15
  }
11
16
  /** Example entry for a tool invocation. */
12
17
  export interface ApToolExample {
@@ -39,6 +44,8 @@ export interface ApcoreModuleOptions {
39
44
  acl?: unknown | null;
40
45
  middleware?: unknown[];
41
46
  bindings?: string | null;
47
+ /** Optional configuration for the MCP server. If provided, ApcoreMcpModule will be automatically imported. */
48
+ mcp?: ApcoreMcpModuleOptions;
42
49
  schema?: {
43
50
  adapters?: string[];
44
51
  strictOutput?: boolean;
@@ -49,6 +56,14 @@ export interface ApcoreModuleAsyncOptions {
49
56
  imports?: unknown[];
50
57
  useFactory: (...args: unknown[]) => Promise<ApcoreModuleOptions> | ApcoreModuleOptions;
51
58
  inject?: unknown[];
59
+ /**
60
+ * Static MCP configuration — evaluated at module-definition time.
61
+ *
62
+ * Because `useFactory` resolves asynchronously, dynamic-module imports
63
+ * (like ApcoreMcpModule) must be decided statically. Provide MCP config
64
+ * here rather than returning it from the factory.
65
+ */
66
+ mcp?: ApcoreMcpModuleOptions;
52
67
  }
53
68
  /** Options for ApcoreMcpModule.forRoot(). */
54
69
  export interface ApcoreMcpModuleOptions {
@@ -62,16 +77,20 @@ export interface ApcoreMcpModuleOptions {
62
77
  explorer?: boolean;
63
78
  explorerPrefix?: string;
64
79
  allowExecute?: boolean;
80
+ explorerTitle?: string;
81
+ explorerProjectName?: string;
82
+ explorerProjectUrl?: string;
65
83
  dynamic?: boolean;
66
84
  validateInputs?: boolean;
67
85
  logLevel?: 'DEBUG' | 'INFO' | 'WARNING' | 'ERROR' | 'CRITICAL';
68
86
  onStartup?: () => void | Promise<void>;
69
87
  onShutdown?: () => void | Promise<void>;
70
- metricsCollector?: {
71
- exportPrometheus(): string;
72
- };
88
+ metricsCollector?: import('apcore-mcp').MetricsExporter;
73
89
  authenticator?: import('apcore-mcp').Authenticator;
90
+ requireAuth?: boolean;
74
91
  exemptPaths?: string[];
92
+ approvalHandler?: unknown;
93
+ outputFormatter?: (result: Record<string, unknown>) => string;
75
94
  }
76
95
  /** Async options for ApcoreMcpModule.forRootAsync(). */
77
96
  export interface ApcoreMcpModuleAsyncOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { FunctionModule } from 'apcore-js';
2
+ import type { ModuleAnnotations } from 'apcore-js';
3
+ import type { ScannedModule } from 'apcore-toolkit';
4
+ import type { ApToolAnnotations } from '../types.js';
5
+ /**
6
+ * Execute function signature for NestJS-bound modules.
7
+ *
8
+ * Unlike apcore-toolkit's RegistryWriter (which resolves targets via dynamic
9
+ * import), NestJS modules are already instantiated — we receive a pre-bound
10
+ * execute function directly.
11
+ */
12
+ export type BoundExecuteFn = (inputs: Record<string, unknown>, context: unknown) => Promise<Record<string, unknown>> | Record<string, unknown>;
13
+ /**
14
+ * Convert partial `ApToolAnnotations` (all-optional booleans) to a full
15
+ * `ModuleAnnotations` (required booleans) by spreading over
16
+ * `DEFAULT_ANNOTATIONS` from apcore-js.
17
+ *
18
+ * Returns `null` when the input is nullish.
19
+ */
20
+ export declare function toModuleAnnotations(partial: ApToolAnnotations | null | undefined): ModuleAnnotations | null;
21
+ /**
22
+ * Convert a toolkit ScannedModule + pre-bound execute function into an
23
+ * apcore-js FunctionModule ready for registry registration.
24
+ *
25
+ * This is the NestJS counterpart to apcore-toolkit's RegistryWriter._toFunctionModule(),
26
+ * adapted for live service instances rather than dynamic imports.
27
+ */
28
+ export declare function scannedModuleToFunctionModule(mod: ScannedModule, execute: BoundExecuteFn): FunctionModule;
29
+ //# sourceMappingURL=module-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-factory.d.ts","sourceRoot":"","sources":["../../src/utils/module-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA4C,MAAM,WAAW,CAAC;AACrF,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,WAAW,CAAC;AAElE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,OAAO,KACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEhE;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAC5C,iBAAiB,GAAG,IAAI,CAG1B;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,cAAc,GACtB,cAAc,CAuBhB"}
@@ -0,0 +1,45 @@
1
+ import { FunctionModule, DEFAULT_ANNOTATIONS, jsonSchemaToTypeBox } from 'apcore-js';
2
+ import { annotationsToDict } from 'apcore-toolkit';
3
+ /**
4
+ * Convert partial `ApToolAnnotations` (all-optional booleans) to a full
5
+ * `ModuleAnnotations` (required booleans) by spreading over
6
+ * `DEFAULT_ANNOTATIONS` from apcore-js.
7
+ *
8
+ * Returns `null` when the input is nullish.
9
+ */
10
+ export function toModuleAnnotations(partial) {
11
+ if (partial == null)
12
+ return null;
13
+ return { ...DEFAULT_ANNOTATIONS, ...partial };
14
+ }
15
+ /**
16
+ * Convert a toolkit ScannedModule + pre-bound execute function into an
17
+ * apcore-js FunctionModule ready for registry registration.
18
+ *
19
+ * This is the NestJS counterpart to apcore-toolkit's RegistryWriter._toFunctionModule(),
20
+ * adapted for live service instances rather than dynamic imports.
21
+ */
22
+ export function scannedModuleToFunctionModule(mod, execute) {
23
+ // Filter out internal keys (e.g. _execute) from metadata before
24
+ // forwarding to FunctionModule so they don't leak into the public API.
25
+ const cleanMetadata = {};
26
+ for (const [k, v] of Object.entries(mod.metadata)) {
27
+ if (!k.startsWith('_')) {
28
+ cleanMetadata[k] = v;
29
+ }
30
+ }
31
+ return new FunctionModule({
32
+ execute,
33
+ moduleId: mod.moduleId,
34
+ inputSchema: jsonSchemaToTypeBox(mod.inputSchema),
35
+ outputSchema: jsonSchemaToTypeBox(mod.outputSchema),
36
+ description: mod.description,
37
+ documentation: mod.documentation,
38
+ tags: mod.tags.length > 0 ? [...mod.tags] : null,
39
+ version: mod.version,
40
+ annotations: annotationsToDict(mod.annotations),
41
+ metadata: Object.keys(cleanMetadata).length > 0 ? cleanMetadata : null,
42
+ examples: mod.examples.length > 0 ? [...mod.examples] : null,
43
+ });
44
+ }
45
+ //# sourceMappingURL=module-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-factory.js","sourceRoot":"","sources":["../../src/utils/module-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAErF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAgBnD;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAA6C;IAE7C,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,EAAE,GAAG,mBAAmB,EAAE,GAAG,OAAO,EAAE,CAAC;AAChD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAC3C,GAAkB,EAClB,OAAuB;IAEvB,gEAAgE;IAChE,uEAAuE;IACvE,MAAM,aAAa,GAA4B,EAAE,CAAC;IAClD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,cAAc,CAAC;QACxB,OAAO;QACP,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,WAAW,EAAE,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC;QACjD,YAAY,EAAE,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC;QACnD,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;QAChD,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAA6B;QAC3E,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI;QACtE,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAqB,CAAC,CAAC,CAAC,IAAI;KAClF,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nestjs-apcore",
3
- "version": "0.1.0",
3
+ "version": "0.3.1",
4
4
  "description": "NestJS adapter for the apcore AI-Perceivable module ecosystem",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -32,6 +32,7 @@
32
32
  "peerDependencies": {
33
33
  "@nestjs/common": ">=10.0.0",
34
34
  "@nestjs/core": ">=10.0.0",
35
+ "apcore-mcp": "^0.10.0",
35
36
  "reflect-metadata": ">=0.1.13",
36
37
  "rxjs": ">=7.0.0"
37
38
  },
@@ -44,12 +45,15 @@
44
45
  },
45
46
  "zod": {
46
47
  "optional": true
48
+ },
49
+ "apcore-mcp": {
50
+ "optional": true
47
51
  }
48
52
  },
49
53
  "dependencies": {
50
54
  "@modelcontextprotocol/sdk": "^1.26.0",
51
- "apcore-js": "^0.6.0",
52
- "apcore-mcp": "^0.7.0",
55
+ "apcore-js": "^0.13.0",
56
+ "apcore-toolkit": "^0.2.0",
53
57
  "js-yaml": "^4.1.0"
54
58
  },
55
59
  "devDependencies": {
@@ -61,6 +65,7 @@
61
65
  "@types/js-yaml": "^4.0.0",
62
66
  "@types/node": "^20.0.0",
63
67
  "@vitest/coverage-v8": "^3.0.0",
68
+ "apcore-mcp": "^0.10.0",
64
69
  "apdev-js": "^0.2.0",
65
70
  "class-transformer": "^0.5.0",
66
71
  "class-validator": "^0.14.0",