code-engine-mcp-server 1.0.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 (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +387 -0
  3. package/build/client.d.ts +3 -0
  4. package/build/client.d.ts.map +1 -0
  5. package/build/client.js +194 -0
  6. package/build/client.js.map +1 -0
  7. package/build/context-discovery.d.ts +86 -0
  8. package/build/context-discovery.d.ts.map +1 -0
  9. package/build/context-discovery.js +291 -0
  10. package/build/context-discovery.js.map +1 -0
  11. package/build/deploy-tool-enhanced.d.ts +42 -0
  12. package/build/deploy-tool-enhanced.d.ts.map +1 -0
  13. package/build/deploy-tool-enhanced.js +323 -0
  14. package/build/deploy-tool-enhanced.js.map +1 -0
  15. package/build/deploy-tool.d.ts +27 -0
  16. package/build/deploy-tool.d.ts.map +1 -0
  17. package/build/deploy-tool.js +213 -0
  18. package/build/deploy-tool.js.map +1 -0
  19. package/build/index.d.ts +11 -0
  20. package/build/index.d.ts.map +1 -0
  21. package/build/index.js +1117 -0
  22. package/build/index.js.map +1 -0
  23. package/build/simple-client.d.ts +3 -0
  24. package/build/simple-client.d.ts.map +1 -0
  25. package/build/simple-client.js +275 -0
  26. package/build/simple-client.js.map +1 -0
  27. package/build/test-all-tools.d.ts +3 -0
  28. package/build/test-all-tools.d.ts.map +1 -0
  29. package/build/test-all-tools.js +254 -0
  30. package/build/test-all-tools.js.map +1 -0
  31. package/build/test-integration.d.ts +3 -0
  32. package/build/test-integration.d.ts.map +1 -0
  33. package/build/test-integration.js +484 -0
  34. package/build/test-integration.js.map +1 -0
  35. package/docs/API_CALL_SCENARIOS.md +594 -0
  36. package/docs/CLIENT_README.md +310 -0
  37. package/docs/CLINE_CONFIG_EXAMPLE.json +14 -0
  38. package/docs/CODE_ENGINE_API_REFERENCE.md +764 -0
  39. package/docs/CODE_OF_CONDUCT.md +46 -0
  40. package/docs/CONTRIBUTING.md +38 -0
  41. package/docs/MAINTAINERS.md +15 -0
  42. package/docs/SETUP_INSTRUCTIONS.md +218 -0
  43. package/package.json +44 -0
@@ -0,0 +1,86 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Context Discovery Module for IBM Code Engine
4
+ *
5
+ * This module discovers and caches deployment context including:
6
+ * - Available Code Engine projects
7
+ * - Container Registry namespaces
8
+ * - Existing applications
9
+ * - Resource groups
10
+ *
11
+ * Uses IBM Cloud REST API directly (no CLI required).
12
+ *
13
+ * Author: Markus van Kempen | markus.van.kempen@gmail.com
14
+ * Research | Floor 7½ šŸ¢šŸ¤
15
+ * "No bug too small, no syntax too weird."
16
+ */
17
+ export interface Project {
18
+ id: string;
19
+ name: string;
20
+ region: string;
21
+ resource_group_id: string;
22
+ created_at: string;
23
+ status: string;
24
+ }
25
+ export interface Application {
26
+ name: string;
27
+ project_id: string;
28
+ project_name: string;
29
+ status: string;
30
+ url?: string;
31
+ image?: string;
32
+ }
33
+ export interface RegistryNamespace {
34
+ name: string;
35
+ resource_group_id: string;
36
+ created_date: string;
37
+ updated_date: string;
38
+ }
39
+ export interface DeploymentContext {
40
+ projects: Project[];
41
+ applications: Application[];
42
+ registryNamespaces: RegistryNamespace[];
43
+ timestamp: string;
44
+ }
45
+ /**
46
+ * Get IAM access token using API key
47
+ */
48
+ export declare function getIAMToken(apiKey: string): Promise<string>;
49
+ /**
50
+ * List all Code Engine projects
51
+ */
52
+ export declare function listProjects(token: string, region?: string): Promise<Project[]>;
53
+ /**
54
+ * List applications in a specific project
55
+ */
56
+ export declare function listApplicationsInProject(token: string, region: string, projectId: string): Promise<any[]>;
57
+ /**
58
+ * List all applications across all projects
59
+ */
60
+ export declare function listAllApplications(token: string, region?: string): Promise<Application[]>;
61
+ /**
62
+ * List Container Registry namespaces
63
+ * Note: This requires IBM Cloud CLI as there's no direct REST API for registry namespaces
64
+ */
65
+ export declare function listRegistryNamespaces(token: string): Promise<RegistryNamespace[]>;
66
+ /**
67
+ * Discover complete deployment context
68
+ */
69
+ export declare function discoverContext(apiKey: string, region?: string): Promise<DeploymentContext>;
70
+ /**
71
+ * Format context for display
72
+ */
73
+ export declare function formatContext(context: DeploymentContext): string;
74
+ /**
75
+ * Interactive project selection
76
+ */
77
+ export declare function selectProject(projects: Project[]): void;
78
+ /**
79
+ * Find project by name
80
+ */
81
+ export declare function findProjectByName(projects: Project[], name: string): Project | undefined;
82
+ /**
83
+ * Check if application exists in any project
84
+ */
85
+ export declare function findApplication(applications: Application[], appName: string): Application | undefined;
86
+ //# sourceMappingURL=context-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-discovery.d.ts","sourceRoot":"","sources":["../src/context-discovery.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmCjE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAmB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CA4BjG;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,EAAE,CAAC,CA4BhB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAmB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAuB5G;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAKxF;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6B7G;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAwDhE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAOvD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAKxF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAErG"}
@@ -0,0 +1,291 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Context Discovery Module for IBM Code Engine
4
+ *
5
+ * This module discovers and caches deployment context including:
6
+ * - Available Code Engine projects
7
+ * - Container Registry namespaces
8
+ * - Existing applications
9
+ * - Resource groups
10
+ *
11
+ * Uses IBM Cloud REST API directly (no CLI required).
12
+ *
13
+ * Author: Markus van Kempen | markus.van.kempen@gmail.com
14
+ * Research | Floor 7½ šŸ¢šŸ¤
15
+ * "No bug too small, no syntax too weird."
16
+ */
17
+ import * as https from 'https';
18
+ /**
19
+ * Get IAM access token using API key
20
+ */
21
+ export async function getIAMToken(apiKey) {
22
+ return new Promise((resolve, reject) => {
23
+ const postData = `grant_type=urn:ibm:params:oauth:grant-type:apikey&apikey=${apiKey}`;
24
+ const options = {
25
+ hostname: 'iam.cloud.ibm.com',
26
+ path: '/identity/token',
27
+ method: 'POST',
28
+ headers: {
29
+ 'Content-Type': 'application/x-www-form-urlencoded',
30
+ 'Content-Length': Buffer.byteLength(postData)
31
+ }
32
+ };
33
+ const req = https.request(options, (res) => {
34
+ let data = '';
35
+ res.on('data', (chunk) => data += chunk);
36
+ res.on('end', () => {
37
+ try {
38
+ const response = JSON.parse(data);
39
+ if (response.access_token) {
40
+ resolve(response.access_token);
41
+ }
42
+ else {
43
+ reject(new Error('No access token in response'));
44
+ }
45
+ }
46
+ catch (error) {
47
+ reject(error);
48
+ }
49
+ });
50
+ });
51
+ req.on('error', reject);
52
+ req.write(postData);
53
+ req.end();
54
+ });
55
+ }
56
+ /**
57
+ * List all Code Engine projects
58
+ */
59
+ export async function listProjects(token, region = 'us-south') {
60
+ return new Promise((resolve, reject) => {
61
+ const options = {
62
+ hostname: `api.${region}.codeengine.cloud.ibm.com`,
63
+ path: `/v2/projects`,
64
+ method: 'GET',
65
+ headers: {
66
+ 'Authorization': `Bearer ${token}`,
67
+ 'Content-Type': 'application/json'
68
+ }
69
+ };
70
+ const req = https.request(options, (res) => {
71
+ let data = '';
72
+ res.on('data', (chunk) => data += chunk);
73
+ res.on('end', () => {
74
+ try {
75
+ const response = JSON.parse(data);
76
+ resolve(response.projects || []);
77
+ }
78
+ catch (error) {
79
+ reject(error);
80
+ }
81
+ });
82
+ });
83
+ req.on('error', reject);
84
+ req.end();
85
+ });
86
+ }
87
+ /**
88
+ * List applications in a specific project
89
+ */
90
+ export async function listApplicationsInProject(token, region, projectId) {
91
+ return new Promise((resolve, reject) => {
92
+ const options = {
93
+ hostname: `api.${region}.codeengine.cloud.ibm.com`,
94
+ path: `/v2/projects/${projectId}/apps`,
95
+ method: 'GET',
96
+ headers: {
97
+ 'Authorization': `Bearer ${token}`,
98
+ 'Content-Type': 'application/json'
99
+ }
100
+ };
101
+ const req = https.request(options, (res) => {
102
+ let data = '';
103
+ res.on('data', (chunk) => data += chunk);
104
+ res.on('end', () => {
105
+ try {
106
+ const response = JSON.parse(data);
107
+ resolve(response.apps || []);
108
+ }
109
+ catch (error) {
110
+ reject(error);
111
+ }
112
+ });
113
+ });
114
+ req.on('error', reject);
115
+ req.end();
116
+ });
117
+ }
118
+ /**
119
+ * List all applications across all projects
120
+ */
121
+ export async function listAllApplications(token, region = 'us-south') {
122
+ const projects = await listProjects(token, region);
123
+ const allApps = [];
124
+ for (const project of projects) {
125
+ try {
126
+ const apps = await listApplicationsInProject(token, region, project.id);
127
+ for (const app of apps) {
128
+ allApps.push({
129
+ name: app.name,
130
+ project_id: project.id,
131
+ project_name: project.name,
132
+ status: app.status?.state || 'unknown',
133
+ url: app.status?.url,
134
+ image: app.spec?.image_reference
135
+ });
136
+ }
137
+ }
138
+ catch (error) {
139
+ console.error(`Failed to list apps in project ${project.name}:`, error);
140
+ }
141
+ }
142
+ return allApps;
143
+ }
144
+ /**
145
+ * List Container Registry namespaces
146
+ * Note: This requires IBM Cloud CLI as there's no direct REST API for registry namespaces
147
+ */
148
+ export async function listRegistryNamespaces(token) {
149
+ // For now, return empty array as registry API requires CLI
150
+ // In production, you would use: ibmcloud cr namespace-list
151
+ console.warn('Registry namespace listing requires IBM Cloud CLI');
152
+ return [];
153
+ }
154
+ /**
155
+ * Discover complete deployment context
156
+ */
157
+ export async function discoverContext(apiKey, region = 'us-south') {
158
+ console.log('šŸ” Discovering deployment context...\n');
159
+ // Get IAM token
160
+ console.log('šŸ” Authenticating with IBM Cloud...');
161
+ const token = await getIAMToken(apiKey);
162
+ console.log('āœ… Authentication successful\n');
163
+ // Discover projects
164
+ console.log('šŸ“¦ Discovering Code Engine projects...');
165
+ const projects = await listProjects(token, region);
166
+ console.log(`āœ… Found ${projects.length} project(s)\n`);
167
+ // Discover applications
168
+ console.log('šŸš€ Discovering applications...');
169
+ const applications = await listAllApplications(token, region);
170
+ console.log(`āœ… Found ${applications.length} application(s)\n`);
171
+ // Discover registry namespaces
172
+ console.log('šŸ“¦ Discovering registry namespaces...');
173
+ const registryNamespaces = await listRegistryNamespaces(token);
174
+ console.log(`āœ… Found ${registryNamespaces.length} namespace(s)\n`);
175
+ return {
176
+ projects,
177
+ applications,
178
+ registryNamespaces,
179
+ timestamp: new Date().toISOString()
180
+ };
181
+ }
182
+ /**
183
+ * Format context for display
184
+ */
185
+ export function formatContext(context) {
186
+ let output = '# IBM Cloud Deployment Context\n\n';
187
+ output += `**Discovered:** ${new Date(context.timestamp).toLocaleString()}\n\n`;
188
+ // Projects
189
+ output += '## Code Engine Projects\n\n';
190
+ if (context.projects.length === 0) {
191
+ output += '*No projects found*\n\n';
192
+ }
193
+ else {
194
+ context.projects.forEach((project, index) => {
195
+ output += `${index + 1}. **${project.name}**\n`;
196
+ output += ` - ID: \`${project.id}\`\n`;
197
+ output += ` - Region: ${project.region}\n`;
198
+ output += ` - Status: ${project.status}\n`;
199
+ output += ` - Created: ${new Date(project.created_at).toLocaleDateString()}\n\n`;
200
+ });
201
+ }
202
+ // Applications
203
+ output += '## Deployed Applications\n\n';
204
+ if (context.applications.length === 0) {
205
+ output += '*No applications found*\n\n';
206
+ }
207
+ else {
208
+ const appsByProject = context.applications.reduce((acc, app) => {
209
+ if (!acc[app.project_name]) {
210
+ acc[app.project_name] = [];
211
+ }
212
+ acc[app.project_name].push(app);
213
+ return acc;
214
+ }, {});
215
+ Object.entries(appsByProject).forEach(([projectName, apps]) => {
216
+ output += `### Project: ${projectName}\n\n`;
217
+ apps.forEach((app, index) => {
218
+ output += `${index + 1}. **${app.name}**\n`;
219
+ output += ` - Status: ${app.status}\n`;
220
+ if (app.url)
221
+ output += ` - URL: ${app.url}\n`;
222
+ if (app.image)
223
+ output += ` - Image: \`${app.image}\`\n`;
224
+ output += '\n';
225
+ });
226
+ });
227
+ }
228
+ // Registry Namespaces
229
+ output += '## Container Registry Namespaces\n\n';
230
+ if (context.registryNamespaces.length === 0) {
231
+ output += '*No namespaces found (requires IBM Cloud CLI)*\n\n';
232
+ }
233
+ else {
234
+ context.registryNamespaces.forEach((ns, index) => {
235
+ output += `${index + 1}. **${ns.name}**\n`;
236
+ output += ` - Created: ${new Date(ns.created_date).toLocaleDateString()}\n`;
237
+ output += ` - Updated: ${new Date(ns.updated_date).toLocaleDateString()}\n\n`;
238
+ });
239
+ }
240
+ return output;
241
+ }
242
+ /**
243
+ * Interactive project selection
244
+ */
245
+ export function selectProject(projects) {
246
+ console.log('\nšŸ“‹ Available Projects:\n');
247
+ projects.forEach((project, index) => {
248
+ console.log(`${index + 1}. ${project.name}`);
249
+ console.log(` Region: ${project.region} | Status: ${project.status}`);
250
+ console.log(` ID: ${project.id}\n`);
251
+ });
252
+ }
253
+ /**
254
+ * Find project by name
255
+ */
256
+ export function findProjectByName(projects, name) {
257
+ return projects.find(p => p.name.toLowerCase() === name.toLowerCase() ||
258
+ p.id === name);
259
+ }
260
+ /**
261
+ * Check if application exists in any project
262
+ */
263
+ export function findApplication(applications, appName) {
264
+ return applications.find(app => app.name === appName);
265
+ }
266
+ // CLI interface
267
+ import { fileURLToPath } from 'url';
268
+ import { writeFileSync } from 'fs';
269
+ const __filename = fileURLToPath(import.meta.url);
270
+ const isMainModule = process.argv[1] === __filename;
271
+ if (isMainModule) {
272
+ const apiKey = process.env.IBM_CLOUD_API_KEY;
273
+ const region = process.env.IBM_CLOUD_REGION || 'us-south';
274
+ if (!apiKey) {
275
+ console.error('āŒ Error: IBM_CLOUD_API_KEY environment variable not set');
276
+ process.exit(1);
277
+ }
278
+ discoverContext(apiKey, region)
279
+ .then(context => {
280
+ console.log(formatContext(context));
281
+ // Save to file
282
+ writeFileSync('deployment-context.json', JSON.stringify(context, null, 2));
283
+ console.log('šŸ’¾ Context saved to deployment-context.json');
284
+ })
285
+ .catch(error => {
286
+ console.error('āŒ Discovery failed:', error.message);
287
+ process.exit(1);
288
+ });
289
+ }
290
+ // Made by MVK
291
+ //# sourceMappingURL=context-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-discovery.js","sourceRoot":"","sources":["../src/context-discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Enhanced Code Engine Deployment Tool with Context Discovery
4
+ *
5
+ * This tool automatically discovers available projects and namespaces,
6
+ * then prompts the user to select deployment targets.
7
+ *
8
+ * Uses IBM Cloud REST API directly (no CLI required).
9
+ *
10
+ * Author: Markus van Kempen | markus.van.kempen@gmail.com
11
+ * Research | Floor 7½ šŸ¢šŸ¤
12
+ * "No bug too small, no syntax too weird."
13
+ */
14
+ import { DeploymentContext } from './context-discovery.js';
15
+ interface EnhancedDeploymentSpec {
16
+ appName: string;
17
+ appDir: string;
18
+ message?: string;
19
+ port?: number;
20
+ region?: string;
21
+ projectName?: string;
22
+ namespace?: string;
23
+ interactive?: boolean;
24
+ }
25
+ interface DeploymentResult {
26
+ success: boolean;
27
+ appName: string;
28
+ projectName: string;
29
+ projectId: string;
30
+ url?: string;
31
+ imageTag?: string;
32
+ error?: string;
33
+ steps: string[];
34
+ logs?: string[];
35
+ context?: DeploymentContext;
36
+ }
37
+ /**
38
+ * Enhanced deployment with context discovery
39
+ */
40
+ export declare function deployWithContext(spec: EnhancedDeploymentSpec): Promise<DeploymentResult>;
41
+ export {};
42
+ //# sourceMappingURL=deploy-tool-enhanced.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-tool-enhanced.d.ts","sourceRoot":"","sources":["../src/deploy-tool-enhanced.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AAWH,OAAO,EAEL,iBAAiB,EAIlB,MAAM,wBAAwB,CAAC;AAIhC,UAAU,sBAAsB;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAsLD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAmG/F"}