@majkapp/plugin-kit 3.1.0 → 3.1.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.
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-kit.d.ts","sourceRoot":"","sources":["../src/plugin-kit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-kit.d.ts","sourceRoot":"","sources":["../src/plugin-kit.ts"],"names":[],"mappings":"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"}
@@ -530,8 +530,9 @@ function getTypeString(schema) {
530
530
  * ServiceBuilder implementation - sub-builder for service capabilities
531
531
  */
532
532
  class ServiceBuilderImpl {
533
- constructor(parentBuilder, serviceName, serviceType, serviceMetadata, discoverable, functionRegistry) {
533
+ constructor(parentBuilder, addCapability, serviceName, serviceType, serviceMetadata, discoverable, functionRegistry) {
534
534
  this.parentBuilder = parentBuilder;
535
+ this.addCapability = addCapability;
535
536
  this.serviceName = serviceName;
536
537
  this.serviceType = serviceType;
537
538
  this.serviceMetadata = serviceMetadata;
@@ -582,8 +583,7 @@ class ServiceBuilderImpl {
582
583
  functions: functionMetadata
583
584
  };
584
585
  // Add to parent builder's capabilities
585
- this.parentBuilder._capabilities.push(serviceCapability);
586
- this.parentBuilder._currentService = null;
586
+ this.addCapability(serviceCapability);
587
587
  log(` 📡 Registered service: ${this.serviceName} with ${functionMetadata.length} functions`);
588
588
  return this.parentBuilder;
589
589
  }
@@ -907,7 +907,7 @@ function definePlugin(id, name, version) {
907
907
  throw new PluginBuildError('Service metadata must include name, description, and version', 'Provide complete metadata for the service', { serviceName, metadata: config.metadata });
908
908
  }
909
909
  // Create and return ServiceBuilder
910
- const serviceBuilder = new ServiceBuilderImpl(builder, serviceName, config.type, config.metadata, config.discoverable ?? true, _functionRegistry);
910
+ const serviceBuilder = new ServiceBuilderImpl(builder, (cap) => _capabilities.push(cap), serviceName, config.type, config.metadata, config.discoverable ?? true, _functionRegistry);
911
911
  log(` 🛠 Building service: ${serviceName}`);
912
912
  return serviceBuilder;
913
913
  },
@@ -0,0 +1,59 @@
1
+ import type { Transport, TransportMetadata, FunctionRegistry, PluginContext, RequestLike, ResponseLike } from './types';
2
+ /**
3
+ * HTTP Transport configuration
4
+ */
5
+ export interface HttpTransportConfig {
6
+ basePath?: string;
7
+ cors?: boolean;
8
+ validation?: {
9
+ request?: boolean;
10
+ response?: boolean;
11
+ };
12
+ }
13
+ /**
14
+ * HTTP Transport implementation
15
+ */
16
+ export declare class HttpTransport implements Transport {
17
+ name: string;
18
+ private registry?;
19
+ private context?;
20
+ private config;
21
+ constructor(config?: HttpTransportConfig);
22
+ initialize(registry: FunctionRegistry, context: PluginContext): Promise<void>;
23
+ start(): Promise<void>;
24
+ stop(): Promise<void>;
25
+ getMetadata(): TransportMetadata;
26
+ /**
27
+ * Handle a function call via HTTP
28
+ */
29
+ handleFunctionCall(functionName: string, req: RequestLike, res: ResponseLike, ctx: any): Promise<void>;
30
+ /**
31
+ * Get discovery information
32
+ */
33
+ getDiscovery(): any;
34
+ }
35
+ /**
36
+ * WebSocket Transport (placeholder for future implementation)
37
+ */
38
+ export declare class WebSocketTransport implements Transport {
39
+ name: string;
40
+ private config;
41
+ constructor(config?: any);
42
+ initialize(registry: FunctionRegistry, context: PluginContext): Promise<void>;
43
+ start(): Promise<void>;
44
+ stop(): Promise<void>;
45
+ getMetadata(): TransportMetadata;
46
+ }
47
+ /**
48
+ * MCP Transport (placeholder for future implementation)
49
+ */
50
+ export declare class MCPTransport implements Transport {
51
+ name: string;
52
+ private config;
53
+ constructor(config?: any);
54
+ initialize(registry: FunctionRegistry, context: PluginContext): Promise<void>;
55
+ start(): Promise<void>;
56
+ stop(): Promise<void>;
57
+ getMetadata(): TransportMetadata;
58
+ }
59
+ //# sourceMappingURL=transports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transports.d.ts","sourceRoot":"","sources":["../src/transports.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,aAAc,YAAW,SAAS;IAC7C,IAAI,SAAU;IACd,OAAO,CAAC,QAAQ,CAAC,CAAmB;IACpC,OAAO,CAAC,OAAO,CAAC,CAAgB;IAChC,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,GAAE,mBAAwB;IAWtC,UAAU,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,WAAW,IAAI,iBAAiB;IAUhC;;OAEG;IACG,kBAAkB,CACtB,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,YAAY,EACjB,GAAG,EAAE,GAAG,GACP,OAAO,CAAC,IAAI,CAAC;IAgDhB;;OAEG;IACH,YAAY,IAAI,GAAG;CAkCpB;AAED;;GAEG;AACH,qBAAa,kBAAmB,YAAW,SAAS;IAClD,IAAI,SAAe;IACnB,OAAO,CAAC,MAAM,CAAM;gBAER,MAAM,GAAE,GAAQ;IAItB,UAAU,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,WAAW,IAAI,iBAAiB;CAMjC;AAED;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS;IAC5C,IAAI,SAAS;IACb,OAAO,CAAC,MAAM,CAAM;gBAER,MAAM,GAAE,GAAQ;IAItB,UAAU,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,WAAW,IAAI,iBAAiB;CAMjC"}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MCPTransport = exports.WebSocketTransport = exports.HttpTransport = void 0;
4
+ /**
5
+ * HTTP Transport implementation
6
+ */
7
+ class HttpTransport {
8
+ constructor(config = {}) {
9
+ this.name = 'http';
10
+ this.config = {
11
+ basePath: config.basePath || '/api',
12
+ cors: config.cors !== false,
13
+ validation: {
14
+ request: config.validation?.request !== false,
15
+ response: config.validation?.response !== false
16
+ }
17
+ };
18
+ }
19
+ async initialize(registry, context) {
20
+ this.registry = registry;
21
+ this.context = context;
22
+ context.logger.info(`HTTP Transport initialized with base path ${this.config.basePath}`);
23
+ }
24
+ async start() {
25
+ // HTTP server is managed by the BuiltPlugin
26
+ // This transport just provides the route handlers
27
+ }
28
+ async stop() {
29
+ // Cleanup if needed
30
+ }
31
+ getMetadata() {
32
+ // Use the baseUrl from context if available, otherwise construct from context.http
33
+ const baseUrl = this.context?.http?.baseUrl || '';
34
+ return {
35
+ type: 'http',
36
+ endpoint: `${baseUrl}${this.config.basePath}`,
37
+ discovery: `${baseUrl}${this.config.basePath}/discovery`
38
+ };
39
+ }
40
+ /**
41
+ * Handle a function call via HTTP
42
+ */
43
+ async handleFunctionCall(functionName, req, res, ctx) {
44
+ if (!this.registry) {
45
+ res.status(500);
46
+ res.json({ success: false, error: 'Transport not initialized' });
47
+ return;
48
+ }
49
+ const func = this.registry.functions.get(functionName);
50
+ if (!func) {
51
+ res.status(404);
52
+ res.json({ success: false, error: `Function "${functionName}" not found` });
53
+ return;
54
+ }
55
+ try {
56
+ // Get input from request body
57
+ const input = req.body || {};
58
+ // Validate input if configured
59
+ if (this.config.validation?.request) {
60
+ // TODO: Add actual JSON Schema validation here
61
+ // For now, just check basic structure
62
+ if (func.input.type === 'object' && typeof input !== 'object') {
63
+ res.status(400);
64
+ res.json({
65
+ success: false,
66
+ error: 'Invalid input',
67
+ details: ['Input must be an object']
68
+ });
69
+ return;
70
+ }
71
+ }
72
+ // Call the function handler
73
+ const output = await func.handler(input, this.context);
74
+ // Return success response
75
+ res.json({ success: true, data: output });
76
+ }
77
+ catch (error) {
78
+ this.context?.logger.error(`Function "${functionName}" error: ${error.message}`);
79
+ res.status(500);
80
+ res.json({
81
+ success: false,
82
+ error: error.message || 'Internal server error'
83
+ });
84
+ }
85
+ }
86
+ /**
87
+ * Get discovery information
88
+ */
89
+ getDiscovery() {
90
+ if (!this.registry) {
91
+ return { error: 'Transport not initialized' };
92
+ }
93
+ const functions = [];
94
+ for (const [name, func] of this.registry.functions) {
95
+ functions.push({
96
+ name,
97
+ description: func.description,
98
+ input: func.input,
99
+ output: func.output,
100
+ tags: func.tags,
101
+ deprecated: func.deprecated
102
+ });
103
+ }
104
+ const subscriptions = [];
105
+ for (const [name, sub] of this.registry.subscriptions) {
106
+ subscriptions.push({
107
+ name,
108
+ description: sub.description,
109
+ input: sub.input,
110
+ output: sub.output
111
+ });
112
+ }
113
+ return {
114
+ plugin: this.registry.plugin,
115
+ functions,
116
+ subscriptions,
117
+ transports: [this.getMetadata()]
118
+ };
119
+ }
120
+ }
121
+ exports.HttpTransport = HttpTransport;
122
+ /**
123
+ * WebSocket Transport (placeholder for future implementation)
124
+ */
125
+ class WebSocketTransport {
126
+ constructor(config = {}) {
127
+ this.name = 'websocket';
128
+ this.config = config;
129
+ }
130
+ async initialize(registry, context) {
131
+ context.logger.info('WebSocket Transport initialized (not yet implemented)');
132
+ }
133
+ async start() {
134
+ // TODO: Implement WebSocket server
135
+ }
136
+ async stop() {
137
+ // TODO: Stop WebSocket server
138
+ }
139
+ getMetadata() {
140
+ return {
141
+ type: 'websocket',
142
+ endpoint: `ws://localhost:${this.config.port || 3001}${this.config.path || '/ws'}`
143
+ };
144
+ }
145
+ }
146
+ exports.WebSocketTransport = WebSocketTransport;
147
+ /**
148
+ * MCP Transport (placeholder for future implementation)
149
+ */
150
+ class MCPTransport {
151
+ constructor(config = {}) {
152
+ this.name = 'mcp';
153
+ this.config = config;
154
+ }
155
+ async initialize(registry, context) {
156
+ context.logger.info('MCP Transport initialized (not yet implemented)');
157
+ }
158
+ async start() {
159
+ // TODO: Register functions as MCP tools
160
+ }
161
+ async stop() {
162
+ // TODO: Cleanup MCP registration
163
+ }
164
+ getMetadata() {
165
+ return {
166
+ type: 'mcp',
167
+ name: this.config.name || 'plugin-mcp-server'
168
+ };
169
+ }
170
+ }
171
+ exports.MCPTransport = MCPTransport;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@majkapp/plugin-kit",
3
- "version": "3.1.0",
3
+ "version": "3.1.1",
4
4
  "description": "Pure plugin definition library for MAJK - outputs plugin definitions, not HTTP servers",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",