@172ai/containers-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/.env.example +43 -0
  2. package/README.md +366 -0
  3. package/dist/auth.d.ts +57 -0
  4. package/dist/auth.d.ts.map +1 -0
  5. package/dist/auth.js +192 -0
  6. package/dist/auth.js.map +1 -0
  7. package/dist/config.d.ts +84 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +246 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/server.d.ts +63 -0
  12. package/dist/server.d.ts.map +1 -0
  13. package/dist/server.js +886 -0
  14. package/dist/server.js.map +1 -0
  15. package/dist/services/buildService.d.ts +51 -0
  16. package/dist/services/buildService.d.ts.map +1 -0
  17. package/dist/services/buildService.js +268 -0
  18. package/dist/services/buildService.js.map +1 -0
  19. package/dist/services/capabilityService.d.ts +62 -0
  20. package/dist/services/capabilityService.d.ts.map +1 -0
  21. package/dist/services/capabilityService.js +240 -0
  22. package/dist/services/capabilityService.js.map +1 -0
  23. package/dist/services/containerService.d.ts +52 -0
  24. package/dist/services/containerService.d.ts.map +1 -0
  25. package/dist/services/containerService.js +251 -0
  26. package/dist/services/containerService.js.map +1 -0
  27. package/dist/services/fileService.d.ts +65 -0
  28. package/dist/services/fileService.d.ts.map +1 -0
  29. package/dist/services/fileService.js +330 -0
  30. package/dist/services/fileService.js.map +1 -0
  31. package/dist/setup.d.ts +30 -0
  32. package/dist/setup.d.ts.map +1 -0
  33. package/dist/setup.js +328 -0
  34. package/dist/setup.js.map +1 -0
  35. package/dist/types.d.ts +229 -0
  36. package/dist/types.d.ts.map +1 -0
  37. package/dist/types.js +4 -0
  38. package/dist/types.js.map +1 -0
  39. package/dist/utils/errorHandler.d.ts +78 -0
  40. package/dist/utils/errorHandler.d.ts.map +1 -0
  41. package/dist/utils/errorHandler.js +269 -0
  42. package/dist/utils/errorHandler.js.map +1 -0
  43. package/package.json +81 -0
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.capabilityService = exports.CapabilityService = void 0;
4
+ const auth_1 = require("../auth");
5
+ const errorHandler_1 = require("../utils/errorHandler");
6
+ /**
7
+ * Capability management service
8
+ */
9
+ class CapabilityService {
10
+ constructor() {
11
+ this.httpClient = auth_1.authManager.getHttpClient();
12
+ }
13
+ /**
14
+ * List available capabilities
15
+ */
16
+ async listCapabilities(params = {}) {
17
+ try {
18
+ const queryParams = new URLSearchParams();
19
+ if (params.category)
20
+ queryParams.append('category', params.category);
21
+ if (params.limit)
22
+ queryParams.append('limit', params.limit.toString());
23
+ if (params.offset)
24
+ queryParams.append('offset', params.offset.toString());
25
+ if (params.query)
26
+ queryParams.append('query', params.query);
27
+ const response = await this.httpClient.get(`/v1/capabilities?${queryParams.toString()}`);
28
+ if (!response.data) {
29
+ throw errorHandler_1.ErrorHandler.createServerError('Invalid response format from capabilities list API');
30
+ }
31
+ const data = response.data;
32
+ if (!Array.isArray(data.capabilities)) {
33
+ throw errorHandler_1.ErrorHandler.createServerError('Invalid capabilities array in response');
34
+ }
35
+ return {
36
+ capabilities: data.capabilities,
37
+ total: data.total || data.capabilities.length,
38
+ page: data.page || 1,
39
+ limit: data.limit || params.limit || 20,
40
+ hasMore: data.hasMore || false
41
+ };
42
+ }
43
+ catch (error) {
44
+ throw errorHandler_1.ErrorHandler.processError(error, 'CapabilityService.listCapabilities');
45
+ }
46
+ }
47
+ /**
48
+ * Get capability by ID
49
+ */
50
+ async getCapability(params) {
51
+ try {
52
+ if (!params.capabilityId) {
53
+ throw errorHandler_1.ErrorHandler.createValidationError('Capability ID is required');
54
+ }
55
+ const response = await this.httpClient.get(`/v1/capabilities/${params.capabilityId}`);
56
+ if (!response.data) {
57
+ throw errorHandler_1.ErrorHandler.createNotFoundError(`Capability ${params.capabilityId} not found`);
58
+ }
59
+ return response.data;
60
+ }
61
+ catch (error) {
62
+ if (error instanceof errorHandler_1.ApiError && error.status === 404) {
63
+ throw errorHandler_1.ErrorHandler.createNotFoundError(`Capability ${params.capabilityId} not found`);
64
+ }
65
+ throw errorHandler_1.ErrorHandler.processError(error, 'CapabilityService.getCapability');
66
+ }
67
+ }
68
+ /**
69
+ * Search capabilities by name or description
70
+ */
71
+ async searchCapabilities(query, category, limit = 20) {
72
+ try {
73
+ if (!query || query.trim().length === 0) {
74
+ throw errorHandler_1.ErrorHandler.createValidationError('Search query is required');
75
+ }
76
+ const response = await this.listCapabilities({
77
+ query: query.trim(),
78
+ category,
79
+ limit
80
+ });
81
+ return response.capabilities;
82
+ }
83
+ catch (error) {
84
+ throw errorHandler_1.ErrorHandler.processError(error, 'CapabilityService.searchCapabilities');
85
+ }
86
+ }
87
+ /**
88
+ * Get capabilities by category
89
+ */
90
+ async getCapabilitiesByCategory(category, limit = 20) {
91
+ try {
92
+ if (!category || category.trim().length === 0) {
93
+ throw errorHandler_1.ErrorHandler.createValidationError('Category is required');
94
+ }
95
+ const response = await this.listCapabilities({
96
+ category: category.trim(),
97
+ limit
98
+ });
99
+ return response.capabilities;
100
+ }
101
+ catch (error) {
102
+ throw errorHandler_1.ErrorHandler.processError(error, 'CapabilityService.getCapabilitiesByCategory');
103
+ }
104
+ }
105
+ /**
106
+ * Get available categories
107
+ */
108
+ async getAvailableCategories() {
109
+ try {
110
+ const response = await this.httpClient.get('/v1/capabilities/categories');
111
+ if (!response.data || !Array.isArray(response.data.categories)) {
112
+ return [];
113
+ }
114
+ return response.data.categories;
115
+ }
116
+ catch (error) {
117
+ if (error instanceof errorHandler_1.ApiError && error.status === 404) {
118
+ return [];
119
+ }
120
+ throw errorHandler_1.ErrorHandler.processError(error, 'CapabilityService.getAvailableCategories');
121
+ }
122
+ }
123
+ /**
124
+ * Get capability dependencies
125
+ */
126
+ async getCapabilityDependencies(capabilityId) {
127
+ try {
128
+ if (!capabilityId) {
129
+ throw errorHandler_1.ErrorHandler.createValidationError('Capability ID is required');
130
+ }
131
+ const response = await this.httpClient.get(`/v1/capabilities/${capabilityId}/dependencies`);
132
+ if (!response.data || !Array.isArray(response.data.dependencies)) {
133
+ return [];
134
+ }
135
+ return response.data.dependencies;
136
+ }
137
+ catch (error) {
138
+ if (error instanceof errorHandler_1.ApiError && error.status === 404) {
139
+ throw errorHandler_1.ErrorHandler.createNotFoundError(`Capability ${capabilityId} not found`);
140
+ }
141
+ throw errorHandler_1.ErrorHandler.processError(error, 'CapabilityService.getCapabilityDependencies');
142
+ }
143
+ }
144
+ /**
145
+ * Check if capability is compatible with container
146
+ */
147
+ async checkCompatibility(capabilityId, containerId) {
148
+ try {
149
+ if (!capabilityId) {
150
+ throw errorHandler_1.ErrorHandler.createValidationError('Capability ID is required');
151
+ }
152
+ if (!containerId) {
153
+ throw errorHandler_1.ErrorHandler.createValidationError('Container ID is required');
154
+ }
155
+ const response = await this.httpClient.post('/v1/capabilities/compatibility', {
156
+ capabilityId,
157
+ containerId
158
+ });
159
+ if (!response.data) {
160
+ return { compatible: false, issues: ['Unable to check compatibility'] };
161
+ }
162
+ return {
163
+ compatible: response.data.compatible || false,
164
+ issues: response.data.issues || [],
165
+ suggestions: response.data.suggestions || []
166
+ };
167
+ }
168
+ catch (error) {
169
+ if (error instanceof errorHandler_1.ApiError && error.status === 404) {
170
+ return {
171
+ compatible: false,
172
+ issues: ['Capability or container not found']
173
+ };
174
+ }
175
+ throw errorHandler_1.ErrorHandler.processError(error, 'CapabilityService.checkCompatibility');
176
+ }
177
+ }
178
+ /**
179
+ * Get recommended capabilities for a container
180
+ */
181
+ async getRecommendedCapabilities(containerId, limit = 10) {
182
+ try {
183
+ if (!containerId) {
184
+ throw errorHandler_1.ErrorHandler.createValidationError('Container ID is required');
185
+ }
186
+ const response = await this.httpClient.get(`/v1/containers/${containerId}/capabilities/recommendations?limit=${limit}`);
187
+ if (!response.data || !Array.isArray(response.data.recommendations)) {
188
+ return [];
189
+ }
190
+ return response.data.recommendations;
191
+ }
192
+ catch (error) {
193
+ if (error instanceof errorHandler_1.ApiError && error.status === 404) {
194
+ return [];
195
+ }
196
+ throw errorHandler_1.ErrorHandler.processError(error, 'CapabilityService.getRecommendedCapabilities');
197
+ }
198
+ }
199
+ /**
200
+ * Get capability usage statistics
201
+ */
202
+ async getCapabilityStats(capabilityId) {
203
+ try {
204
+ let endpoint = '/v1/capabilities/stats';
205
+ if (capabilityId) {
206
+ endpoint = `/v1/capabilities/${capabilityId}/stats`;
207
+ }
208
+ const response = await this.httpClient.get(endpoint);
209
+ if (!response.data) {
210
+ return {
211
+ totalCapabilities: 0,
212
+ activeCapabilities: 0,
213
+ mostUsed: [],
214
+ categories: []
215
+ };
216
+ }
217
+ return {
218
+ totalCapabilities: response.data.totalCapabilities || 0,
219
+ activeCapabilities: response.data.activeCapabilities || 0,
220
+ mostUsed: response.data.mostUsed || [],
221
+ categories: response.data.categories || []
222
+ };
223
+ }
224
+ catch (error) {
225
+ if (error instanceof errorHandler_1.ApiError && error.status === 404) {
226
+ return {
227
+ totalCapabilities: 0,
228
+ activeCapabilities: 0,
229
+ mostUsed: [],
230
+ categories: []
231
+ };
232
+ }
233
+ throw errorHandler_1.ErrorHandler.processError(error, 'CapabilityService.getCapabilityStats');
234
+ }
235
+ }
236
+ }
237
+ exports.CapabilityService = CapabilityService;
238
+ // Export singleton instance
239
+ exports.capabilityService = new CapabilityService();
240
+ //# sourceMappingURL=capabilityService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilityService.js","sourceRoot":"","sources":["../../src/services/capabilityService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { Container, ContainerListResponse, ListContainersParams, GetContainerParams, CreateContainerParams, UpdateContainerParams, DeleteContainerParams } from '../types';
2
+ /**
3
+ * Container management service
4
+ */
5
+ export declare class ContainerService {
6
+ private httpClient;
7
+ constructor();
8
+ /**
9
+ * List containers with optional filtering
10
+ */
11
+ listContainers(params?: ListContainersParams): Promise<ContainerListResponse>;
12
+ /**
13
+ * Get container by ID
14
+ */
15
+ getContainer(params: GetContainerParams): Promise<Container>;
16
+ /**
17
+ * Create a new container
18
+ */
19
+ createContainer(params: CreateContainerParams): Promise<Container>;
20
+ /**
21
+ * Update an existing container
22
+ */
23
+ updateContainer(params: UpdateContainerParams): Promise<Container>;
24
+ /**
25
+ * Delete a container
26
+ */
27
+ deleteContainer(params: DeleteContainerParams): Promise<{
28
+ success: boolean;
29
+ message: string;
30
+ }>;
31
+ /**
32
+ * Copy/duplicate a container
33
+ */
34
+ copyContainer(params: {
35
+ containerId: string;
36
+ newName: string;
37
+ }): Promise<Container>;
38
+ /**
39
+ * Search containers by name or description
40
+ */
41
+ searchContainers(query: string, limit?: number): Promise<Container[]>;
42
+ /**
43
+ * Get containers by tag
44
+ */
45
+ getContainersByTag(tag: string, limit?: number): Promise<Container[]>;
46
+ /**
47
+ * Get available tags
48
+ */
49
+ getAvailableTags(): Promise<string[]>;
50
+ }
51
+ export declare const containerService: ContainerService;
52
+ //# sourceMappingURL=containerService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerService.d.ts","sourceRoot":"","sources":["../../src/services/containerService.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,qBAAqB,EAErB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAIlB;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,UAAU,CAAgB;;IAMlC;;OAEG;IACG,cAAc,CAAC,MAAM,GAAE,oBAAyB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAiCvF;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC;IAqBlE;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC;IAkCxE;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC;IAmCxE;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAoBpG;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IA4BzF;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAkB/E;;OAEG;IACG,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAqB/E;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAgB5C;AAGD,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
@@ -0,0 +1,251 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.containerService = exports.ContainerService = void 0;
4
+ const auth_1 = require("../auth");
5
+ const errorHandler_1 = require("../utils/errorHandler");
6
+ /**
7
+ * Container management service
8
+ */
9
+ class ContainerService {
10
+ constructor() {
11
+ this.httpClient = auth_1.authManager.getHttpClient();
12
+ }
13
+ /**
14
+ * List containers with optional filtering
15
+ */
16
+ async listContainers(params = {}) {
17
+ try {
18
+ const queryParams = new URLSearchParams();
19
+ if (params.scope)
20
+ queryParams.append('scope', params.scope);
21
+ if (params.limit)
22
+ queryParams.append('limit', params.limit.toString());
23
+ if (params.offset)
24
+ queryParams.append('offset', params.offset.toString());
25
+ if (params.query)
26
+ queryParams.append('query', params.query);
27
+ const response = await this.httpClient.get(`/v1/containers?${queryParams.toString()}`);
28
+ if (!response.data) {
29
+ throw errorHandler_1.ErrorHandler.createServerError('Invalid response format from container list API');
30
+ }
31
+ // Validate response structure
32
+ const data = response.data;
33
+ if (!Array.isArray(data.containers)) {
34
+ throw errorHandler_1.ErrorHandler.createServerError('Invalid containers array in response');
35
+ }
36
+ return {
37
+ containers: data.containers,
38
+ total: data.total || data.containers.length,
39
+ page: data.page || 1,
40
+ limit: data.limit || params.limit || 20,
41
+ hasMore: data.hasMore || false
42
+ };
43
+ }
44
+ catch (error) {
45
+ throw errorHandler_1.ErrorHandler.processError(error, 'ContainerService.listContainers');
46
+ }
47
+ }
48
+ /**
49
+ * Get container by ID
50
+ */
51
+ async getContainer(params) {
52
+ try {
53
+ if (!params.containerId) {
54
+ throw errorHandler_1.ErrorHandler.createValidationError('Container ID is required');
55
+ }
56
+ const response = await this.httpClient.get(`/v1/containers/${params.containerId}`);
57
+ if (!response.data) {
58
+ throw errorHandler_1.ErrorHandler.createNotFoundError(`Container ${params.containerId} not found`);
59
+ }
60
+ return response.data;
61
+ }
62
+ catch (error) {
63
+ if (error instanceof errorHandler_1.ApiError && error.status === 404) {
64
+ throw errorHandler_1.ErrorHandler.createNotFoundError(`Container ${params.containerId} not found`);
65
+ }
66
+ throw errorHandler_1.ErrorHandler.processError(error, 'ContainerService.getContainer');
67
+ }
68
+ }
69
+ /**
70
+ * Create a new container
71
+ */
72
+ async createContainer(params) {
73
+ try {
74
+ // Validate required fields
75
+ if (!params.name) {
76
+ throw errorHandler_1.ErrorHandler.createValidationError('Container name is required');
77
+ }
78
+ if (!params.description) {
79
+ throw errorHandler_1.ErrorHandler.createValidationError('Container description is required');
80
+ }
81
+ if (!params.dockerfile) {
82
+ throw errorHandler_1.ErrorHandler.createValidationError('Dockerfile content is required');
83
+ }
84
+ const containerData = {
85
+ name: params.name.trim(),
86
+ description: params.description.trim(),
87
+ dockerfile: params.dockerfile,
88
+ tags: params.tags || [],
89
+ isPrivate: params.isPrivate || false,
90
+ envVars: params.envVars || {}
91
+ };
92
+ const response = await this.httpClient.post('/v1/containers', containerData);
93
+ if (!response.data) {
94
+ throw errorHandler_1.ErrorHandler.createServerError('Invalid response from container creation API');
95
+ }
96
+ return response.data;
97
+ }
98
+ catch (error) {
99
+ throw errorHandler_1.ErrorHandler.processError(error, 'ContainerService.createContainer');
100
+ }
101
+ }
102
+ /**
103
+ * Update an existing container
104
+ */
105
+ async updateContainer(params) {
106
+ try {
107
+ if (!params.containerId) {
108
+ throw errorHandler_1.ErrorHandler.createValidationError('Container ID is required');
109
+ }
110
+ // Build update payload with only provided fields
111
+ const updateData = {};
112
+ if (params.name !== undefined)
113
+ updateData.name = params.name.trim();
114
+ if (params.description !== undefined)
115
+ updateData.description = params.description.trim();
116
+ if (params.dockerfile !== undefined)
117
+ updateData.dockerfile = params.dockerfile;
118
+ if (params.tags !== undefined)
119
+ updateData.tags = params.tags;
120
+ if (params.isPrivate !== undefined)
121
+ updateData.isPrivate = params.isPrivate;
122
+ if (params.envVars !== undefined)
123
+ updateData.envVars = params.envVars;
124
+ if (Object.keys(updateData).length === 0) {
125
+ throw errorHandler_1.ErrorHandler.createValidationError('At least one field must be provided for update');
126
+ }
127
+ const response = await this.httpClient.patch(`/v1/containers/${params.containerId}`, updateData);
128
+ if (!response.data) {
129
+ throw errorHandler_1.ErrorHandler.createServerError('Invalid response from container update API');
130
+ }
131
+ return response.data;
132
+ }
133
+ catch (error) {
134
+ if (error instanceof errorHandler_1.ApiError && error.status === 404) {
135
+ throw errorHandler_1.ErrorHandler.createNotFoundError(`Container ${params.containerId} not found`);
136
+ }
137
+ throw errorHandler_1.ErrorHandler.processError(error, 'ContainerService.updateContainer');
138
+ }
139
+ }
140
+ /**
141
+ * Delete a container
142
+ */
143
+ async deleteContainer(params) {
144
+ try {
145
+ if (!params.containerId) {
146
+ throw errorHandler_1.ErrorHandler.createValidationError('Container ID is required');
147
+ }
148
+ await this.httpClient.delete(`/v1/containers/${params.containerId}`);
149
+ return {
150
+ success: true,
151
+ message: `Container ${params.containerId} deleted successfully`
152
+ };
153
+ }
154
+ catch (error) {
155
+ if (error instanceof errorHandler_1.ApiError && error.status === 404) {
156
+ throw errorHandler_1.ErrorHandler.createNotFoundError(`Container ${params.containerId} not found`);
157
+ }
158
+ throw errorHandler_1.ErrorHandler.processError(error, 'ContainerService.deleteContainer');
159
+ }
160
+ }
161
+ /**
162
+ * Copy/duplicate a container
163
+ */
164
+ async copyContainer(params) {
165
+ try {
166
+ if (!params.containerId) {
167
+ throw errorHandler_1.ErrorHandler.createValidationError('Container ID is required');
168
+ }
169
+ if (!params.newName) {
170
+ throw errorHandler_1.ErrorHandler.createValidationError('New container name is required');
171
+ }
172
+ // First, get the original container
173
+ const originalContainer = await this.getContainer({ containerId: params.containerId });
174
+ // Create a copy with the new name
175
+ const copyData = {
176
+ name: params.newName.trim(),
177
+ description: `Copy of ${originalContainer.description}`,
178
+ dockerfile: originalContainer.dockerfile,
179
+ tags: [...(originalContainer.tags || []), 'copy'],
180
+ isPrivate: originalContainer.isPrivate,
181
+ envVars: { ...originalContainer.envVars }
182
+ };
183
+ return await this.createContainer(copyData);
184
+ }
185
+ catch (error) {
186
+ throw errorHandler_1.ErrorHandler.processError(error, 'ContainerService.copyContainer');
187
+ }
188
+ }
189
+ /**
190
+ * Search containers by name or description
191
+ */
192
+ async searchContainers(query, limit = 20) {
193
+ try {
194
+ if (!query || query.trim().length === 0) {
195
+ throw errorHandler_1.ErrorHandler.createValidationError('Search query is required');
196
+ }
197
+ const response = await this.listContainers({
198
+ query: query.trim(),
199
+ limit,
200
+ scope: 'all'
201
+ });
202
+ return response.containers;
203
+ }
204
+ catch (error) {
205
+ throw errorHandler_1.ErrorHandler.processError(error, 'ContainerService.searchContainers');
206
+ }
207
+ }
208
+ /**
209
+ * Get containers by tag
210
+ */
211
+ async getContainersByTag(tag, limit = 20) {
212
+ try {
213
+ if (!tag || tag.trim().length === 0) {
214
+ throw errorHandler_1.ErrorHandler.createValidationError('Tag is required');
215
+ }
216
+ const response = await this.httpClient.get(`/v1/containers/tags/${encodeURIComponent(tag)}`);
217
+ if (!response.data || !Array.isArray(response.data.containers)) {
218
+ return [];
219
+ }
220
+ return response.data.containers.slice(0, limit);
221
+ }
222
+ catch (error) {
223
+ if (error instanceof errorHandler_1.ApiError && error.status === 404) {
224
+ return [];
225
+ }
226
+ throw errorHandler_1.ErrorHandler.processError(error, 'ContainerService.getContainersByTag');
227
+ }
228
+ }
229
+ /**
230
+ * Get available tags
231
+ */
232
+ async getAvailableTags() {
233
+ try {
234
+ const response = await this.httpClient.get('/v1/containers/tags');
235
+ if (!response.data || !Array.isArray(response.data.tags)) {
236
+ return [];
237
+ }
238
+ return response.data.tags;
239
+ }
240
+ catch (error) {
241
+ if (error instanceof errorHandler_1.ApiError && error.status === 404) {
242
+ return [];
243
+ }
244
+ throw errorHandler_1.ErrorHandler.processError(error, 'ContainerService.getAvailableTags');
245
+ }
246
+ }
247
+ }
248
+ exports.ContainerService = ContainerService;
249
+ // Export singleton instance
250
+ exports.containerService = new ContainerService();
251
+ //# sourceMappingURL=containerService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerService.js","sourceRoot":"","sources":["../../src/services/containerService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { ContainerFile, FileListResponse, FileUploadResult, UploadFileParams, GetFileContentParams, ListContainerFilesParams } from '../types';
2
+ /**
3
+ * File management service
4
+ */
5
+ export declare class FileService {
6
+ private httpClient;
7
+ constructor();
8
+ /**
9
+ * List files in a container
10
+ */
11
+ listContainerFiles(params: ListContainerFilesParams): Promise<FileListResponse>;
12
+ /**
13
+ * Get file content
14
+ */
15
+ getFileContent(params: GetFileContentParams): Promise<ContainerFile>;
16
+ /**
17
+ * Upload a file to a container
18
+ */
19
+ uploadFile(params: UploadFileParams): Promise<FileUploadResult>;
20
+ /**
21
+ * Update file content
22
+ */
23
+ updateFile(params: UploadFileParams): Promise<ContainerFile>;
24
+ /**
25
+ * Delete a file from a container
26
+ */
27
+ deleteFile(containerId: string, filePath: string): Promise<{
28
+ success: boolean;
29
+ message: string;
30
+ }>;
31
+ /**
32
+ * Upload multiple files
33
+ */
34
+ uploadMultipleFiles(containerId: string, files: Array<{
35
+ filePath: string;
36
+ content: string;
37
+ mimeType?: string;
38
+ encoding?: string;
39
+ }>): Promise<FileUploadResult[]>;
40
+ /**
41
+ * Create a directory
42
+ */
43
+ createDirectory(containerId: string, dirPath: string): Promise<FileUploadResult>;
44
+ /**
45
+ * Copy files between containers
46
+ */
47
+ copyFiles(sourceContainerId: string, targetContainerId: string, filePaths: string[]): Promise<ContainerFile[]>;
48
+ /**
49
+ * Move files within a container
50
+ */
51
+ moveFiles(containerId: string, moves: Array<{
52
+ from: string;
53
+ to: string;
54
+ }>): Promise<ContainerFile[]>;
55
+ /**
56
+ * Get file metadata without content
57
+ */
58
+ getFileMetadata(containerId: string, filePath: string): Promise<Omit<ContainerFile, 'content'>>;
59
+ /**
60
+ * Search files by name pattern
61
+ */
62
+ searchFiles(containerId: string, pattern: string, path?: string): Promise<ContainerFile[]>;
63
+ }
64
+ export declare const fileService: FileService;
65
+ //# sourceMappingURL=fileService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileService.d.ts","sourceRoot":"","sources":["../../src/services/fileService.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,UAAU,CAAC;AAIlB;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAgB;;IAMlC;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqCrF;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC;IA2B1E;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqCrE;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAqClE;;OAEG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAwBvG;;OAEG;IACG,mBAAmB,CACvB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GACxF,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAyB9B;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0BtF;;OAEG;IACG,SAAS,CACb,iBAAiB,EAAE,MAAM,EACzB,iBAAiB,EAAE,MAAM,EACzB,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,aAAa,EAAE,CAAC;IA4B3B;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA0B1G;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAgCrG;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CA+BjG;AAGD,eAAO,MAAM,WAAW,aAAoB,CAAC"}