@majkapp/plugin-kit 3.6.0 → 3.6.2

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.
@@ -39,6 +39,7 @@ const path = __importStar(require("path"));
39
39
  const fs = __importStar(require("fs"));
40
40
  const child_process_1 = require("child_process");
41
41
  const generator_1 = require("./generator");
42
+ const extract_command_1 = require("./extract-command");
42
43
  // Check args BEFORE commander parses to intercept for documentation
43
44
  const args = process.argv.slice(2);
44
45
  // If -h or --help, let commander handle it normally (show generator help)
@@ -163,6 +164,26 @@ commander_1.program
163
164
  await generate();
164
165
  }
165
166
  });
167
+ // Extract capabilities command
168
+ commander_1.program
169
+ .command('extract')
170
+ .description('Extract plugin capabilities to .majk/capabilities.json for market indexing')
171
+ .option('-e, --entry <path>', 'Path to the compiled plugin entry file', './dist/index.js')
172
+ .option('-o, --output <path>', 'Output directory for capabilities.json', '.majk')
173
+ .option('-s, --silent', 'Suppress output messages', false)
174
+ .action(async (options) => {
175
+ try {
176
+ await (0, extract_command_1.extractCapabilities)({
177
+ entry: options.entry,
178
+ output: options.output,
179
+ silent: options.silent
180
+ });
181
+ }
182
+ catch (error) {
183
+ console.error(error.message);
184
+ process.exit(1);
185
+ }
186
+ });
166
187
  // Add documentation options to help
167
188
  commander_1.program
168
189
  .option('--llm', 'Show plugin development documentation (quick start)')
@@ -198,6 +219,8 @@ async function extractMetadata(entryPath) {
198
219
  }
199
220
  const content = fs.readFileSync(tempFile, 'utf-8');
200
221
  const metadata = JSON.parse(content);
222
+ // NEW: Also save capabilities.json for market indexing
223
+ await saveCapabilitiesForMarket(metadata);
201
224
  // Clean up temp file
202
225
  fs.unlinkSync(tempFile);
203
226
  return metadata;
@@ -210,3 +233,74 @@ async function extractMetadata(entryPath) {
210
233
  throw new Error(`Failed to extract metadata: ${error.message}`);
211
234
  }
212
235
  }
236
+ /**
237
+ * Save capabilities.json to .majk/ directory and auto-update package.json
238
+ */
239
+ async function saveCapabilitiesForMarket(metadata) {
240
+ try {
241
+ // Find project root (where package.json is)
242
+ const projectRoot = process.cwd();
243
+ // Check if plugin opted out
244
+ const pkgPath = path.join(projectRoot, 'package.json');
245
+ if (fs.existsSync(pkgPath)) {
246
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
247
+ if (pkg.majk?.skipCapabilitiesExtraction === true) {
248
+ console.log(' ℹ️ Skipping capabilities extraction (skipCapabilitiesExtraction: true)');
249
+ return;
250
+ }
251
+ }
252
+ // 1. Create .majk directory
253
+ const majkDir = path.join(projectRoot, '.majk');
254
+ fs.mkdirSync(majkDir, { recursive: true });
255
+ // 2. Write capabilities.json
256
+ const capabilitiesPath = path.join(majkDir, 'capabilities.json');
257
+ fs.writeFileSync(capabilitiesPath, JSON.stringify(metadata, null, 2) + '\n');
258
+ console.log(' ✓ Generated .majk/capabilities.json for market indexing');
259
+ // 3. Check and update package.json files array
260
+ if (fs.existsSync(pkgPath)) {
261
+ const content = fs.readFileSync(pkgPath, 'utf-8');
262
+ const pkg = JSON.parse(content);
263
+ if (pkg.files) {
264
+ if (!pkg.files.includes('.majk')) {
265
+ // Detect original indentation
266
+ const indent = detectIndent(content);
267
+ pkg.files.push('.majk');
268
+ fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, indent) + '\n');
269
+ console.log(' ✓ Added .majk to package.json files array (commit this change)');
270
+ }
271
+ }
272
+ else {
273
+ // Create files array with .majk + dist (most common setup)
274
+ // Note: .majk is in .gitignore so it won't be published without explicit files array
275
+ const indent = detectIndent(content);
276
+ pkg.files = ['dist', '.majk'];
277
+ fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, indent) + '\n');
278
+ console.log(' ✓ Created files array with dist and .majk in package.json (commit this change)');
279
+ }
280
+ }
281
+ // 4. Check for service implementations
282
+ const capabilities = metadata.capabilities || [];
283
+ const services = capabilities.filter((c) => c.type === 'service');
284
+ const implementations = services.filter((s) => s.implements);
285
+ if (implementations.length > 0) {
286
+ console.log(' 🔌 Service interface implementations detected:');
287
+ implementations.forEach((impl) => {
288
+ console.log(` • ${impl.implements}`);
289
+ });
290
+ }
291
+ }
292
+ catch (error) {
293
+ // Non-fatal: log but don't fail the build
294
+ console.warn(` ⚠️ Could not save capabilities for market: ${error.message}`);
295
+ }
296
+ }
297
+ /**
298
+ * Detect indentation used in a JSON file
299
+ */
300
+ function detectIndent(jsonString) {
301
+ const match = jsonString.match(/^(\s+)/m);
302
+ if (match) {
303
+ return match[1].length;
304
+ }
305
+ return 2; // Default to 2 spaces
306
+ }
@@ -0,0 +1,10 @@
1
+ export interface ExtractOptions {
2
+ entry?: string;
3
+ output?: string;
4
+ silent?: boolean;
5
+ }
6
+ /**
7
+ * Extract plugin capabilities and write to .majk/capabilities.json
8
+ */
9
+ export declare function extractCapabilities(options?: ExtractOptions): Promise<void>;
10
+ //# sourceMappingURL=extract-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-command.d.ts","sourceRoot":"","sources":["../../src/generator/extract-command.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyFrF"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.extractCapabilities = extractCapabilities;
37
+ /**
38
+ * Extract capabilities command - Creates .majk/capabilities.json for market indexing
39
+ */
40
+ const path = __importStar(require("path"));
41
+ const fs = __importStar(require("fs"));
42
+ const child_process_1 = require("child_process");
43
+ /**
44
+ * Extract plugin capabilities and write to .majk/capabilities.json
45
+ */
46
+ async function extractCapabilities(options = {}) {
47
+ const entryPath = path.resolve(options.entry || './dist/index.js');
48
+ const outputDir = path.resolve(options.output || '.majk');
49
+ const outputFile = path.join(outputDir, 'capabilities.json');
50
+ const silent = options.silent || false;
51
+ if (!silent) {
52
+ console.log('🔍 Extracting plugin capabilities...');
53
+ console.log(` Entry: ${entryPath}`);
54
+ console.log(` Output: ${outputFile}`);
55
+ console.log('');
56
+ }
57
+ // Check if entry file exists
58
+ if (!fs.existsSync(entryPath)) {
59
+ throw new Error(`Entry file not found: ${entryPath}\n` +
60
+ `Make sure to run 'npm run build' first to compile your plugin.`);
61
+ }
62
+ // Ensure output directory exists
63
+ fs.mkdirSync(outputDir, { recursive: true });
64
+ try {
65
+ // Run the plugin in extract mode
66
+ (0, child_process_1.execSync)(`node "${entryPath}"`, {
67
+ env: {
68
+ ...process.env,
69
+ PLUGIN_KIT_MODE: 'extract',
70
+ PLUGIN_KIT_OUTPUT: outputFile
71
+ },
72
+ cwd: path.dirname(entryPath),
73
+ stdio: silent ? 'pipe' : 'inherit'
74
+ });
75
+ // Verify the file was created
76
+ if (!fs.existsSync(outputFile)) {
77
+ throw new Error('Capabilities file was not created');
78
+ }
79
+ // Validate it's valid JSON
80
+ const content = fs.readFileSync(outputFile, 'utf-8');
81
+ const capabilities = JSON.parse(content);
82
+ if (!silent) {
83
+ console.log('✅ Successfully extracted capabilities!');
84
+ console.log('');
85
+ console.log('📊 Summary:');
86
+ console.log(` Plugin: ${capabilities.name} v${capabilities.version}`);
87
+ console.log(` Functions: ${capabilities.functions?.length || 0}`);
88
+ console.log(` Services: ${capabilities.capabilities?.filter((c) => c.type === 'service').length || 0}`);
89
+ console.log(` Screens: ${capabilities.screens?.length || 0}`);
90
+ console.log(` Tools: ${capabilities.tools?.length || 0}`);
91
+ console.log('');
92
+ // Check for service implementations
93
+ const services = capabilities.capabilities?.filter((c) => c.type === 'service') || [];
94
+ const implementations = services.filter((s) => s.implements);
95
+ if (implementations.length > 0) {
96
+ console.log('🔌 Service Interface Implementations:');
97
+ implementations.forEach((impl) => {
98
+ console.log(` • ${impl.implements} (${impl.serviceName})`);
99
+ });
100
+ console.log('');
101
+ }
102
+ console.log('📝 Next steps:');
103
+ console.log(' 1. Ensure ".majk" is in your package.json "files" array');
104
+ console.log(' 2. Run this command before publishing (add to prepublishOnly script)');
105
+ console.log(' 3. Publish to npm/CodeArtifact as usual');
106
+ console.log('');
107
+ console.log('💡 Tip: Add this to package.json scripts:');
108
+ console.log(' "scripts": {');
109
+ console.log(' "extract": "plugin-kit extract",');
110
+ console.log(' "prepublishOnly": "npm run build && npm run extract"');
111
+ console.log(' }');
112
+ }
113
+ }
114
+ catch (error) {
115
+ if (!silent) {
116
+ console.error('');
117
+ console.error('❌ Failed to extract capabilities');
118
+ console.error('');
119
+ }
120
+ throw new Error(`Failed to extract capabilities: ${error.message}`);
121
+ }
122
+ }
package/dist/index.d.ts CHANGED
@@ -18,6 +18,90 @@ export { definePlugin, FluentBuilder, ServiceBuilder } from './plugin-kit';
18
18
  export { FunctionRegistryImpl, FunctionProviderImpl } from './registry';
19
19
  export { FilesystemResourceProvider } from './resource-provider';
20
20
  export { generateClient } from './generator/generator';
21
+ /**
22
+ * Service Discovery Utilities
23
+ *
24
+ * Helper functions for discovering services that implement specific interfaces at runtime.
25
+ * Uses ctx.capabilities to query installed plugins and filter by interface implementation.
26
+ */
27
+ export declare const ServiceDiscovery: {
28
+ /**
29
+ * Find all installed services that implement a specific interface
30
+ *
31
+ * @param ctx - Plugin context with capabilities API
32
+ * @param interfacePackage - Interface package identifier (e.g., "@majk/service-registry/task-service")
33
+ * @returns Array of CapabilityMetadata for services implementing the interface
34
+ *
35
+ * @example
36
+ * const openaiServices = await ServiceDiscovery.findImplementations(
37
+ * ctx,
38
+ * '@majk/service-registry/openai-services'
39
+ * );
40
+ *
41
+ * if (openaiServices.length > 0) {
42
+ * const service = await ctx.rpc.createProxy(openaiServices[0].serviceName);
43
+ * const result = await service.prompt({ message: 'Hello!' });
44
+ * }
45
+ */
46
+ findImplementations(ctx: any, interfacePackage: string): Promise<any[]>;
47
+ /**
48
+ * Find the first service that implements a specific interface
49
+ *
50
+ * @param ctx - Plugin context with capabilities API
51
+ * @param interfacePackage - Interface package identifier
52
+ * @returns CapabilityMetadata for the first matching service, or undefined if none found
53
+ *
54
+ * @example
55
+ * const taskService = await ServiceDiscovery.findFirst(
56
+ * ctx,
57
+ * '@majk/service-registry/task-service'
58
+ * );
59
+ *
60
+ * if (taskService) {
61
+ * const service = await ctx.rpc.createProxy(taskService.serviceName);
62
+ * await service.createTask({ title: 'New task' });
63
+ * }
64
+ */
65
+ findFirst(ctx: any, interfacePackage: string): Promise<any | undefined>;
66
+ /**
67
+ * Create an RPC proxy for the first service implementing an interface
68
+ *
69
+ * @param ctx - Plugin context with capabilities and RPC APIs
70
+ * @param interfacePackage - Interface package identifier
71
+ * @returns RPC proxy to the service, or undefined if no implementation found
72
+ *
73
+ * @example
74
+ * const openai = await ServiceDiscovery.resolve(
75
+ * ctx,
76
+ * '@majk/service-registry/openai-services'
77
+ * );
78
+ *
79
+ * if (openai) {
80
+ * const result = await openai.prompt({ message: 'Hello!' });
81
+ * } else {
82
+ * throw new Error('No OpenAI service implementation found');
83
+ * }
84
+ */
85
+ resolve<T = any>(ctx: any, interfacePackage: string): Promise<T | undefined>;
86
+ /**
87
+ * Create an RPC proxy for a service implementing an interface, or throw an error
88
+ *
89
+ * @param ctx - Plugin context with capabilities and RPC APIs
90
+ * @param interfacePackage - Interface package identifier
91
+ * @returns RPC proxy to the service
92
+ * @throws Error if no implementation is found
93
+ *
94
+ * @example
95
+ * const storage = await ServiceDiscovery.resolveOrThrow(
96
+ * ctx,
97
+ * '@majk/service-registry/storage-service'
98
+ * );
99
+ *
100
+ * // Guaranteed to be defined - will throw if not found
101
+ * await storage.save({ key: 'data', value: '...' });
102
+ */
103
+ resolveOrThrow<T = any>(ctx: any, interfacePackage: string): Promise<T>;
104
+ };
21
105
  export type { PluginContext, PluginLogger, PluginStorage, ScopedTimers, ScopedIpcRegistry, PluginCapabilities, PluginCapability, ToolImplementation, InProcessPlugin, PluginHealthStatus, ToolSpec, ToolHandler, ApiMethod, ApiRouteDef, JsonSchema, RouteHandler, RequestLike, ResponseLike, UiConfig, HistoryMode, ScreenBase, ReactScreen, HtmlScreen, ConfigWizardDef, SettingsDef, Scope, EntityType, CleanupFn, HealthCheckFn, MCPServerEntity, TeamMemberEntity, ServiceFunctionBinding, CallbackHandle, CreateCallbackOptions, CallbackStats, FunctionHandler, SubscriptionHandler, FunctionDefinition, SubscriptionDefinition, FunctionRegistry, ClientGenerationConfig, Plugin, FunctionProvider, ResourceProvider, FunctionInfo, AsyncPluginHealthStatus, ServiceCapability, ServiceMetadata, ServiceFunctionMetadata, ServiceParameterMetadata, ServiceReturnMetadata, FunctionEnrichment, IdentityDefinitionCapability, IdentityProviderInfo, IdentitySetupInstructions, IdentityTestConfig, IdentityRequirement } from './types';
22
- export type { MajkInterface, EntityId, Unsubscribe, BaseEntity, StandardEventType, PluginEventType, RepositoryEventType, EntityType as MajkEntityType, RepositoryEvent, EventFilter, EventListener, Subscription, QueryBuilder, QueryableEventChannel, EventBusAPI, PluginInfo, PluginHealth, PluginCapabilityInfo, PluginLog, InstallPluginOptions, InstallPluginResult, GetLogsOptions, PluginManagementAPI, SecretScope, SecretInfo, ScopedSecretsAPI, SecretsAPI, StartTaskRequest, TaskFilter, TaskMessage, TaskProgress, TaskResult, TaskError, TaskHandle, TaskEventHandler, TaskEvent, TaskAPI, AccountType, AccountMetadata, TimeWindow, CredentialOptions, RefreshOptions, RefreshResult, ValidationResult, TokenInfo, AutoRefreshConfig, AutoRefreshHandle, AwsSdkCredentials, CognitoTokenSet, AzureSdkCredentials, AccountJSON, AwsCognitoCredentials, AzureEntraCredentials, ApiKeyCredentials, SystemDefaultCredentials, Credentials, SystemAccount, OAuthAccount, AwsAccount, AzureAccount, AuthEvent, AuthStateChangeEvent, AuthTokenRefreshedEvent, AuthErrorEvent, AccountChangedEvent, AuthAPI, Message, Conversation, Agent, TeamMember, TeamMemberSkills, TeamMemberPersonality, TeamMemberCodeStats, TeamMemberMetadata, ServiceFunctionBinding as MajkServiceFunctionBinding, Todo, WorkStrategy, Project, MCPServer, ConversationFilter, MessageQueryOptions, ConversationHandle, ConversationAPI, CreateTeammateRequest, TeammateUpdate, TeammateFilter, TeammateHandle, TeammateAPI, CreateTodoRequest, TodoUpdate, TodoFilter, SpawnOptions, TodoHandle, TodoAPI, CreateProjectRequest, ProjectUpdate, ProjectFilter, ProjectHandle, ProjectAPI, CreateMCPServerRequest, MCPServerUpdate, MCPServerFilter, ConnectionTestResult, MCPServerHandle, MCPServerScopedHandle, DiscoveredTool, MCPServerAPI, EverywhereScope, EverywhereScopedHandle, CreateAgentRequest, AgentUpdate, AgentFilter, TestResult, AgentHandle, AgentAPI, AddKnowledgeInput, KnowledgeNode, KnowledgeTree, KnowledgeSearchOptions, KnowledgeAPI, AIAPI, AIProvider, AIProviderCapabilities, AIProviderError, LLMInterface, ModelInfo, AIMessage, ContentBlock, PromptParams, PromptResult, PromptChunk, AIFunctionDefinition, AIJsonSchema, FunctionCallParams, FunctionCallResult, ImageGenerationParams, ImageResult, TranscriptionParams, TranscriptionResult, ProviderStatus } from './majk-interface-types';
106
+ export type { MajkInterface, EntityId, Unsubscribe, BaseEntity, StandardEventType, PluginEventType, RepositoryEventType, EntityType as MajkEntityType, RepositoryEvent, EventFilter, EventListener, Subscription, QueryBuilder, QueryableEventChannel, EventBusAPI, PluginInfo, PluginHealth, PluginCapabilityInfo, PluginLog, InstallPluginOptions, InstallPluginResult, GetLogsOptions, GetPluginExternalUrlOptions, GetPluginScreenUrlOptions, PluginManagementAPI, SecretScope, SecretInfo, ScopedSecretsAPI, SecretsAPI, StartTaskRequest, TaskFilter, TaskMessage, TaskProgress, TaskResult, TaskError, TaskHandle, TaskEventHandler, TaskEvent, TaskAPI, AccountType, AccountMetadata, TimeWindow, CredentialOptions, RefreshOptions, RefreshResult, ValidationResult, TokenInfo, AutoRefreshConfig, AutoRefreshHandle, AwsSdkCredentials, CognitoTokenSet, AzureSdkCredentials, AccountJSON, AwsCognitoCredentials, AzureEntraCredentials, ApiKeyCredentials, SystemDefaultCredentials, Credentials, SystemAccount, OAuthAccount, AwsAccount, AzureAccount, AuthEvent, AuthStateChangeEvent, AuthTokenRefreshedEvent, AuthErrorEvent, AccountChangedEvent, AuthAPI, Message, Conversation, Agent, TeamMember, TeamMemberSkills, TeamMemberPersonality, TeamMemberCodeStats, TeamMemberMetadata, ServiceFunctionBinding as MajkServiceFunctionBinding, Todo, WorkStrategy, Project, MCPServer, ConversationFilter, MessageQueryOptions, ConversationHandle, ConversationAPI, CreateTeammateRequest, TeammateUpdate, TeammateFilter, TeammateHandle, TeammateAPI, CreateTodoRequest, TodoUpdate, TodoFilter, SpawnOptions, TodoHandle, TodoAPI, CreateProjectRequest, ProjectUpdate, ProjectFilter, ProjectHandle, ProjectAPI, CreateMCPServerRequest, MCPServerUpdate, MCPServerFilter, ConnectionTestResult, MCPServerHandle, MCPServerScopedHandle, DiscoveredTool, MCPServerAPI, EverywhereScope, EverywhereScopedHandle, CreateAgentRequest, AgentUpdate, AgentFilter, TestResult, AgentHandle, AgentAPI, AddKnowledgeInput, KnowledgeNode, KnowledgeTree, KnowledgeSearchOptions, KnowledgeAPI, AIAPI, AIProvider, AIProviderCapabilities, AIProviderError, LLMInterface, ModelInfo, AIMessage, ContentBlock, PromptParams, PromptResult, PromptChunk, AIFunctionDefinition, AIJsonSchema, FunctionCallParams, FunctionCallResult, ImageGenerationParams, ImageResult, TranscriptionParams, TranscriptionResult, ProviderStatus } from './majk-interface-types';
23
107
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;IAC3B;;;;;;;;;;;;;;;;;OAiBG;6BAC4B,GAAG,oBAAoB,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAO7E;;;;;;;;;;;;;;;;;OAiBG;mBACkB,GAAG,oBAAoB,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;IAK7E;;;;;;;;;;;;;;;;;;OAkBG;YACW,CAAC,aAAa,GAAG,oBAAoB,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAQlF;;;;;;;;;;;;;;;;OAgBG;mBACkB,CAAC,aAAa,GAAG,oBAAoB,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAU9E,CAAC;AAEF,YAAY,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,QAAQ,EACR,WAAW,EACX,SAAS,EACT,WAAW,EACX,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,UAAU,EACV,WAAW,EACX,UAAU,EACV,eAAe,EACf,WAAW,EACX,KAAK,EACL,UAAU,EACV,SAAS,EACT,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EAEtB,cAAc,EACd,qBAAqB,EACrB,aAAa,EAEb,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EAEtB,MAAM,EACN,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,uBAAuB,EAEvB,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAElB,4BAA4B,EAC5B,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EAElB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,aAAa,EACb,QAAQ,EACR,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,UAAU,IAAI,cAAc,EAC5B,eAAe,EACf,WAAW,EACX,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,WAAW,EACX,UAAU,EACV,YAAY,EACZ,oBAAoB,EACpB,SAAS,EACT,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,2BAA2B,EAC3B,yBAAyB,EACzB,mBAAmB,EACnB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,YAAY,EACZ,UAAU,EACV,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,OAAO,EACP,WAAW,EACX,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,wBAAwB,EACxB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,SAAS,EACT,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,OAAO,EACP,OAAO,EACP,YAAY,EACZ,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,IAAI,0BAA0B,EACpD,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,YAAY,EACZ,UAAU,EACV,OAAO,EACP,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,WAAW,EACX,WAAW,EACX,UAAU,EACV,WAAW,EACX,QAAQ,EACR,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,YAAY,EAEZ,KAAK,EACL,UAAU,EACV,sBAAsB,EACtB,eAAe,EACf,YAAY,EACZ,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACf,MAAM,wBAAwB,CAAC"}
package/dist/index.js CHANGED
@@ -16,7 +16,7 @@
16
16
  * - Lifecycle hooks with cleanup management
17
17
  */
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.generateClient = exports.FilesystemResourceProvider = exports.FunctionProviderImpl = exports.FunctionRegistryImpl = exports.definePlugin = void 0;
19
+ exports.ServiceDiscovery = exports.generateClient = exports.FilesystemResourceProvider = exports.FunctionProviderImpl = exports.FunctionRegistryImpl = exports.definePlugin = void 0;
20
20
  var plugin_kit_1 = require("./plugin-kit");
21
21
  Object.defineProperty(exports, "definePlugin", { enumerable: true, get: function () { return plugin_kit_1.definePlugin; } });
22
22
  var registry_1 = require("./registry");
@@ -26,3 +26,106 @@ var resource_provider_1 = require("./resource-provider");
26
26
  Object.defineProperty(exports, "FilesystemResourceProvider", { enumerable: true, get: function () { return resource_provider_1.FilesystemResourceProvider; } });
27
27
  var generator_1 = require("./generator/generator");
28
28
  Object.defineProperty(exports, "generateClient", { enumerable: true, get: function () { return generator_1.generateClient; } });
29
+ /**
30
+ * Service Discovery Utilities
31
+ *
32
+ * Helper functions for discovering services that implement specific interfaces at runtime.
33
+ * Uses ctx.capabilities to query installed plugins and filter by interface implementation.
34
+ */
35
+ exports.ServiceDiscovery = {
36
+ /**
37
+ * Find all installed services that implement a specific interface
38
+ *
39
+ * @param ctx - Plugin context with capabilities API
40
+ * @param interfacePackage - Interface package identifier (e.g., "@majk/service-registry/task-service")
41
+ * @returns Array of CapabilityMetadata for services implementing the interface
42
+ *
43
+ * @example
44
+ * const openaiServices = await ServiceDiscovery.findImplementations(
45
+ * ctx,
46
+ * '@majk/service-registry/openai-services'
47
+ * );
48
+ *
49
+ * if (openaiServices.length > 0) {
50
+ * const service = await ctx.rpc.createProxy(openaiServices[0].serviceName);
51
+ * const result = await service.prompt({ message: 'Hello!' });
52
+ * }
53
+ */
54
+ async findImplementations(ctx, interfacePackage) {
55
+ const allServices = await ctx.capabilities.getProviders('service');
56
+ return allServices.filter((s) => s.metadata?.implements === interfacePackage);
57
+ },
58
+ /**
59
+ * Find the first service that implements a specific interface
60
+ *
61
+ * @param ctx - Plugin context with capabilities API
62
+ * @param interfacePackage - Interface package identifier
63
+ * @returns CapabilityMetadata for the first matching service, or undefined if none found
64
+ *
65
+ * @example
66
+ * const taskService = await ServiceDiscovery.findFirst(
67
+ * ctx,
68
+ * '@majk/service-registry/task-service'
69
+ * );
70
+ *
71
+ * if (taskService) {
72
+ * const service = await ctx.rpc.createProxy(taskService.serviceName);
73
+ * await service.createTask({ title: 'New task' });
74
+ * }
75
+ */
76
+ async findFirst(ctx, interfacePackage) {
77
+ const implementations = await this.findImplementations(ctx, interfacePackage);
78
+ return implementations[0];
79
+ },
80
+ /**
81
+ * Create an RPC proxy for the first service implementing an interface
82
+ *
83
+ * @param ctx - Plugin context with capabilities and RPC APIs
84
+ * @param interfacePackage - Interface package identifier
85
+ * @returns RPC proxy to the service, or undefined if no implementation found
86
+ *
87
+ * @example
88
+ * const openai = await ServiceDiscovery.resolve(
89
+ * ctx,
90
+ * '@majk/service-registry/openai-services'
91
+ * );
92
+ *
93
+ * if (openai) {
94
+ * const result = await openai.prompt({ message: 'Hello!' });
95
+ * } else {
96
+ * throw new Error('No OpenAI service implementation found');
97
+ * }
98
+ */
99
+ async resolve(ctx, interfacePackage) {
100
+ const service = await this.findFirst(ctx, interfacePackage);
101
+ if (!service) {
102
+ return undefined;
103
+ }
104
+ return (await ctx.rpc.createProxy(service.serviceName));
105
+ },
106
+ /**
107
+ * Create an RPC proxy for a service implementing an interface, or throw an error
108
+ *
109
+ * @param ctx - Plugin context with capabilities and RPC APIs
110
+ * @param interfacePackage - Interface package identifier
111
+ * @returns RPC proxy to the service
112
+ * @throws Error if no implementation is found
113
+ *
114
+ * @example
115
+ * const storage = await ServiceDiscovery.resolveOrThrow(
116
+ * ctx,
117
+ * '@majk/service-registry/storage-service'
118
+ * );
119
+ *
120
+ * // Guaranteed to be defined - will throw if not found
121
+ * await storage.save({ key: 'data', value: '...' });
122
+ */
123
+ async resolveOrThrow(ctx, interfacePackage) {
124
+ const service = await this.resolve(ctx, interfacePackage);
125
+ if (!service) {
126
+ throw new Error(`No service found implementing interface: ${interfacePackage}. ` +
127
+ `Make sure the required plugin is installed and enabled.`);
128
+ }
129
+ return service;
130
+ }
131
+ };
@@ -21,6 +21,22 @@ export interface ServiceBuilder<Id extends string> {
21
21
  * @example .mayRequireIdentity('developer-token:aws', { region: 'us-east-1' }, 'AWS backup')
22
22
  */
23
23
  mayRequireIdentity(identityType: string, parameters?: Record<string, any>, purpose?: string): this;
24
+ /**
25
+ * Declare that this service implements a service interface.
26
+ * This enables automatic discovery and type-safe consumption of this service.
27
+ *
28
+ * @param interfacePackage - The interface package identifier (e.g., "@majk/service-registry/task-service")
29
+ *
30
+ * @example
31
+ * .service('@myorg/my-plugin:tasks', { ... })
32
+ * .implements('@majk/service-registry/task-service')
33
+ * .withFunction('createTask')
34
+ * .withFunction('getTask')
35
+ * .endService()
36
+ */
37
+ implements(interfacePackage: string | {
38
+ package: string;
39
+ }): this;
24
40
  /** Add a function to this service with optional enrichment metadata */
25
41
  withFunction(functionName: string, enrichment?: FunctionEnrichment): this;
26
42
  /** Complete the service definition and return to main builder */
@@ -106,6 +122,48 @@ export interface FluentBuilder<Id extends string> {
106
122
  configWizard(def: ConfigWizardDef): this;
107
123
  /** Add settings screen */
108
124
  settings(def: SettingsDef): this;
125
+ /**
126
+ * Declare that the auto-generated plugin service implements a service interface.
127
+ * This marks the plugin's default service (${packageName}:all) as implementing
128
+ * the specified interface, enabling automatic discovery and type-safe consumption.
129
+ *
130
+ * @param interfacePackage - The interface package identifier (e.g., "@majk/service-registry/task-service")
131
+ *
132
+ * @example
133
+ * import { TaskServiceSchemas } from '@majk/service-registry/task-service';
134
+ *
135
+ * definePlugin('my-tasks', 'My Tasks', '1.0.0')
136
+ * .interface('@majk/service-registry/task-service')
137
+ * .function('createTask', {
138
+ * input: TaskServiceSchemas.createTask.input,
139
+ * output: TaskServiceSchemas.createTask.output,
140
+ * handler: async (input, ctx) => { ... }
141
+ * })
142
+ * .build()
143
+ */
144
+ interface(interfacePackage: string | {
145
+ package: string;
146
+ }): this;
147
+ /**
148
+ * Declare that this plugin requires a service interface to function.
149
+ * This is used for documentation and can be used by the runtime to ensure
150
+ * required services are available before loading the plugin.
151
+ *
152
+ * @param interfacePackage - The interface package identifier
153
+ * @param version - Optional semver version constraint (default: '*')
154
+ *
155
+ * @example
156
+ * definePlugin('task-dashboard', 'Task Dashboard', '1.0.0')
157
+ * .requiresInterface('@majk/service-registry/task-service', '^1.0.0')
158
+ * .function('getStats', {
159
+ * handler: async (input, ctx) => {
160
+ * const tasks = await ctx.services.resolve('@majk/service-registry/task-service');
161
+ * // ... use tasks
162
+ * }
163
+ * })
164
+ * .build()
165
+ */
166
+ requiresInterface(interfacePackage: string, version?: string): this;
109
167
  /** Create a service capability that groups functions with rich metadata */
110
168
  service(serviceName: string, config: {
111
169
  type: string;
@@ -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":"AAEA,OAAO,EACL,aAAa,EAGb,eAAe,EACf,QAAQ,EACR,WAAW,EACX,WAAW,EACX,UAAU,EACV,QAAQ,EACR,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,KAAK,EACL,UAAU,EACV,SAAS,EACT,aAAa,EAEb,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EAGjB,sBAAsB,EAStB,kBAAkB,EAElB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AA06BjB;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,EAAE,SAAS,MAAM;IAC/C;;;;OAIG;IACH,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhG;;;;OAIG;IACH,eAAe,CAAC,WAAW,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAExD;;;;OAIG;IACH,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnG;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAEjE,uEAAuE;IACvE,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAE1E,iEAAiE;IACjE,UAAU,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,EAAE,SAAS,MAAM;IAC9C,mDAAmD;IACnD,MAAM,CAAC,KAAK,EAAE,mBAAmB,EAAE,IAAI,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAE7G,0CAA0C;IAC1C,UAAU,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC;IAE/C,iDAAiD;IACjD,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAEjD,0CAA0C;IAC1C,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAE5B,yBAAyB;IACzB,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IAE3C,yBAAyB;IACzB,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IAEzC,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAEnC,+DAA+D;IAC/D,QAAQ,CACN,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,UAAU,CAAC;QAClB,MAAM,EAAE,UAAU,CAAC;QACnB,OAAO,EAAE,eAAe,CAAC;QACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,GACA,IAAI,CAAC;IAER,+CAA+C;IAC/C,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,UAAU,CAAC;QAClB,MAAM,EAAE,UAAU,CAAC;QACnB,OAAO,EAAE,mBAAmB,CAAC;KAC9B,GACA,IAAI,CAAC;IAER;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,GAAG,GAAG,IAAI,CAAC;IAEhC,kCAAkC;IAClC,cAAc,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAErD,iBAAiB;IACjB,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAE/D,oEAAoE;IACpE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAEtD,8DAA8D;IAC9D,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAE5C,+DAA+D;IAC/D,UAAU,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAE9C,oFAAoF;IACpF,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC;IAElF,yEAAyE;IACzE,eAAe,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,eAAe,EAAE,GAAG,IAAI,CAAC;IAEnE,0EAA0E;IAC1E,sBAAsB,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAE3E,0BAA0B;IAC1B,cAAc,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAE7C,yEAAyE;IACzE,kBAAkB,CAAC,GAAG,EAAE;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;QAChC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,mBAAmB,EAAE,UAAU,CAAC;QAChC,WAAW,CAAC,EAAE,UAAU,CAAC;QACzB,iBAAiB,CAAC,EAAE,yBAAyB,CAAC;QAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,UAAU,CAAC,EAAE,kBAAkB,CAAC;KACjC,GAAG,IAAI,CAAC;IAET,wBAAwB;IACxB,YAAY,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAAC;IAEzC,0BAA0B;IAC1B,QAAQ,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC;IAEjC;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,CAAC,gBAAgB,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAEhE;;;;;;;;;;;;;;;;;;OAkBG;IACH,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpE,2EAA2E;IAC3E,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE;QACnC,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,EAAE,MAAM,CAAC;YACpB,OAAO,EAAE,MAAM,CAAC;YAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;SACjB,CAAC;QACF,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;IAEvB,sCAAsC;IACtC,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAElG,0BAA0B;IAC1B,MAAM,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI,CAAC;IAEhC;;;;;;;;;;OAUG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B;;;;OAIG;IACH,eAAe,IAAI,IAAI,CAAC;IAExB;;;;;;OAMG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC;;;;OAIG;IACH,iBAAiB,IAAI,IAAI,CAAC;IAE1B,uBAAuB;IACvB,KAAK,IAAI,eAAe,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAClD,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,aAAa,CAAC,EAAE,CAAC,CAw0CnB"}
@@ -693,6 +693,17 @@ class ServiceBuilderImpl {
693
693
  purpose
694
694
  });
695
695
  }
696
+ implements(interfacePackage) {
697
+ const pkgString = typeof interfacePackage === 'string'
698
+ ? interfacePackage
699
+ : interfacePackage.package;
700
+ if (!pkgString || typeof pkgString !== 'string') {
701
+ throw new PluginBuildError('Interface package must be a non-empty string', 'Provide a valid interface package identifier (e.g., "@majk/service-registry/task-service")', { provided: interfacePackage });
702
+ }
703
+ this.implementsInterface = pkgString;
704
+ log(` 🔌 Service implements: ${this.implementsInterface}`);
705
+ return this;
706
+ }
696
707
  withFunction(functionName, enrichment) {
697
708
  // Validate function exists
698
709
  if (!this.functionRegistry.functions.has(functionName)) {
@@ -741,11 +752,15 @@ class ServiceBuilderImpl {
741
752
  serviceName: this.serviceName,
742
753
  serviceType: this.serviceType,
743
754
  discoverable: this.discoverable,
744
- metadata: this.serviceMetadata,
755
+ metadata: {
756
+ ...this.serviceMetadata,
757
+ implements: this.implementsInterface // Set in metadata for runtime accessibility via ctx.capabilities
758
+ },
745
759
  identityRequirements: this.identityRequirements.length > 0
746
760
  ? this.identityRequirements
747
761
  : undefined,
748
- functions: functionMetadata
762
+ functions: functionMetadata,
763
+ implements: this.implementsInterface // Also at top-level for type safety
749
764
  };
750
765
  // Add to parent builder's capabilities
751
766
  this.addCapability(serviceCapability);
@@ -787,6 +802,8 @@ function definePlugin(id, name, version) {
787
802
  let _autoPluginService = true; // Auto-generate plugin service by default
788
803
  let _autoDefaultTeammate = true; // Auto-generate default teammate by default
789
804
  let _instructions = null; // Instructions for default teammate
805
+ let _interfacePackage = null; // Service interface this plugin implements
806
+ let _requiredInterfaces = []; // Service interfaces this plugin requires
790
807
  const builder = {
791
808
  topbar(route, opts) {
792
809
  _topbars.push({
@@ -1209,6 +1226,29 @@ function definePlugin(id, name, version) {
1209
1226
  _settings = def;
1210
1227
  return this;
1211
1228
  },
1229
+ interface(interfacePackage) {
1230
+ // Check for null/undefined first
1231
+ if (!interfacePackage) {
1232
+ throw new PluginBuildError('Interface package must be a non-empty string', 'Provide a valid interface package identifier (e.g., "@majk/service-registry/task-service")', { provided: interfacePackage });
1233
+ }
1234
+ const pkgString = typeof interfacePackage === 'string'
1235
+ ? interfacePackage
1236
+ : interfacePackage.package;
1237
+ if (!pkgString || typeof pkgString !== 'string') {
1238
+ throw new PluginBuildError('Interface package must be a non-empty string', 'Provide a valid interface package identifier (e.g., "@majk/service-registry/task-service")', { provided: interfacePackage });
1239
+ }
1240
+ _interfacePackage = pkgString;
1241
+ log(` 🔌 Implements interface: ${_interfacePackage}`);
1242
+ return this;
1243
+ },
1244
+ requiresInterface(interfacePackage, version = '*') {
1245
+ if (!interfacePackage || typeof interfacePackage !== 'string') {
1246
+ throw new PluginBuildError('Interface package must be a non-empty string', 'Provide a valid interface package identifier', { provided: interfacePackage });
1247
+ }
1248
+ _requiredInterfaces.push({ package: interfacePackage, version });
1249
+ log(` 📥 Requires interface: ${interfacePackage}@${version}`);
1250
+ return this;
1251
+ },
1212
1252
  onReady(fn) {
1213
1253
  _onReady = fn;
1214
1254
  log(` 🏁 Registered onReady lifecycle hook`);
@@ -1603,12 +1643,17 @@ function definePlugin(id, name, version) {
1603
1643
  name: `${name} Functions`,
1604
1644
  description: `All functions from the ${name} plugin`,
1605
1645
  version: version,
1606
- category: 'plugin'
1646
+ category: 'plugin',
1647
+ implements: _interfacePackage || undefined // Set in metadata for runtime accessibility via ctx.capabilities
1607
1648
  },
1608
- functions: functionMetadata
1649
+ functions: functionMetadata,
1650
+ implements: _interfacePackage || undefined // Also at top-level for type safety
1609
1651
  };
1610
1652
  _capabilities.push(pluginServiceCapability);
1611
1653
  log(` 🔄 Auto-generated service: ${serviceBaseName}:all (${functionMetadata.length} functions)`);
1654
+ if (_interfacePackage) {
1655
+ log(` 🔌 Service implements: ${_interfacePackage}`);
1656
+ }
1612
1657
  }
1613
1658
  // ========== Build Plugin Class ==========
1614
1659
  // MAJK expects a class/constructor, not an instance
@@ -1644,6 +1689,7 @@ function definePlugin(id, name, version) {
1644
1689
  description: t.spec.description,
1645
1690
  scope: t.scope
1646
1691
  })),
1692
+ capabilities: _capabilities,
1647
1693
  openapi: _functionRegistry.toOpenAPISpec()
1648
1694
  };
1649
1695
  // Write to file specified by env variable
package/dist/types.d.ts CHANGED
@@ -516,6 +516,7 @@ export interface ServiceMetadata {
516
516
  version: string;
517
517
  category?: string;
518
518
  tags?: string[];
519
+ implements?: string;
519
520
  }
520
521
  export interface ServiceCapability extends PluginCapability {
521
522
  type: 'service';
@@ -525,6 +526,7 @@ export interface ServiceCapability extends PluginCapability {
525
526
  metadata: ServiceMetadata;
526
527
  identityRequirements?: IdentityRequirement[];
527
528
  functions: ServiceFunctionMetadata[];
529
+ implements?: string;
528
530
  }
529
531
  export interface FunctionEnrichment {
530
532
  examples?: string[];
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@majkapp/plugin-kit",
3
- "version": "3.6.0",
3
+ "version": "3.6.2",
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",
@@ -27,6 +27,9 @@
27
27
  "build": "tsc && cp src/mcp-dom-agent.js dist/",
28
28
  "watch": "tsc --watch",
29
29
  "clean": "rm -rf dist",
30
+ "test": "vitest run",
31
+ "test:watch": "vitest",
32
+ "test:ui": "vitest --ui",
30
33
  "promptable": "node ./bin/promptable-cli.js --llm",
31
34
  "promptable:functions": "node ./bin/promptable-cli.js --functions",
32
35
  "promptable:screens": "node ./bin/promptable-cli.js --screens",
@@ -54,6 +57,8 @@
54
57
  },
55
58
  "devDependencies": {
56
59
  "@types/node": "^20.19.25",
57
- "typescript": "^5.9.3"
60
+ "@vitest/ui": "^4.0.12",
61
+ "typescript": "^5.9.3",
62
+ "vitest": "^4.0.12"
58
63
  }
59
64
  }
@@ -1,59 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,171 +0,0 @@
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;