@kapeta/local-cluster-service 0.47.3 → 0.48.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ # [0.48.0](https://github.com/kapetacom/local-cluster-service/compare/v0.47.4...v0.48.0) (2024-06-03)
2
+
3
+
4
+ ### Features
5
+
6
+ * write files to disk ([8cb2d28](https://github.com/kapetacom/local-cluster-service/commit/8cb2d28a3bc41fd8dc81f52f77054ccc7a9ac294))
7
+
8
+ ## [0.47.4](https://github.com/kapetacom/local-cluster-service/compare/v0.47.3...v0.47.4) (2024-05-31)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * end request on prompt error ([#153](https://github.com/kapetacom/local-cluster-service/issues/153)) ([1edc6eb](https://github.com/kapetacom/local-cluster-service/commit/1edc6eb436a92583c0c03836c56d12bf0dc64dce))
14
+
1
15
  ## [0.47.3](https://github.com/kapetacom/local-cluster-service/compare/v0.47.2...v0.47.3) (2024-05-31)
2
16
 
3
17
 
@@ -3,12 +3,41 @@
3
3
  * Copyright 2023 Kapeta Inc.
4
4
  * SPDX-License-Identifier: BUSL-1.1
5
5
  */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || function (mod) {
23
+ if (mod && mod.__esModule) return mod;
24
+ var result = {};
25
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
26
+ __setModuleDefault(result, mod);
27
+ return result;
28
+ };
29
+ var __importDefault = (this && this.__importDefault) || function (mod) {
30
+ return (mod && mod.__esModule) ? mod : { "default": mod };
31
+ };
6
32
  Object.defineProperty(exports, "__esModule", { value: true });
7
33
  exports.StormCodegen = void 0;
8
34
  const codegen_1 = require("@kapeta/codegen");
9
35
  const codeGeneratorManager_1 = require("../codeGeneratorManager");
10
36
  const stormClient_1 = require("./stormClient");
11
37
  const stream_1 = require("./stream");
38
+ const promises_1 = require("fs/promises");
39
+ const path_1 = __importStar(require("path"));
40
+ const node_os_1 = __importDefault(require("node:os"));
12
41
  class StormCodegen {
13
42
  userPrompt;
14
43
  blocks;
@@ -100,6 +129,19 @@ class StormCodegen {
100
129
  if (serviceFiles.length > 0) {
101
130
  await this.processTemplates(block.uri, block.aiName, stormClient_1.stormClient.createServiceImplementation.bind(stormClient_1.stormClient), serviceFiles, contextFiles);
102
131
  }
132
+ const basePath = path_1.default.join(node_os_1.default.tmpdir(), block.content.metadata.name);
133
+ for (const serviceFile of serviceFiles) {
134
+ const filePath = (0, path_1.join)(basePath, serviceFile.filename);
135
+ await (0, promises_1.writeFile)(filePath, serviceFile.content);
136
+ }
137
+ for (const serviceFile of contextFiles) {
138
+ const filePath = (0, path_1.join)(basePath, serviceFile.filename);
139
+ await (0, promises_1.writeFile)(filePath, serviceFile.content);
140
+ }
141
+ for (const uiFile of uiTemplates) {
142
+ const filePath = (0, path_1.join)(basePath, uiFile.filename);
143
+ await (0, promises_1.writeFile)(filePath, uiFile.content);
144
+ }
103
145
  }
104
146
  /**
105
147
  * Emits the text-based files to the stream
@@ -203,9 +245,12 @@ class StormCodegen {
203
245
  if (!(await codeGeneratorManager_1.codeGeneratorManager.ensureTarget(yamlContent.spec.target?.kind))) {
204
246
  return;
205
247
  }
248
+ const basePath = path_1.default.join(node_os_1.default.tmpdir(), yamlContent.metadata.name);
206
249
  const codeGenerator = new codegen_1.BlockCodeGenerator(yamlContent);
207
250
  codeGenerator.withOption('AIContext', stormClient_1.STORM_ID);
208
- return codeGenerator.generate();
251
+ const generatedResult = await codeGenerator.generate();
252
+ new codegen_1.CodeWriter(basePath).write(generatedResult);
253
+ return generatedResult;
209
254
  }
210
255
  }
211
256
  exports.StormCodegen = StormCodegen;
@@ -56,6 +56,7 @@ router.post('/:handle/all', async (req, res) => {
56
56
  }
57
57
  catch (err) {
58
58
  sendError(err, res);
59
+ res.end();
59
60
  }
60
61
  });
61
62
  function sendDefinitions(res, result) {
@@ -3,12 +3,41 @@
3
3
  * Copyright 2023 Kapeta Inc.
4
4
  * SPDX-License-Identifier: BUSL-1.1
5
5
  */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || function (mod) {
23
+ if (mod && mod.__esModule) return mod;
24
+ var result = {};
25
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
26
+ __setModuleDefault(result, mod);
27
+ return result;
28
+ };
29
+ var __importDefault = (this && this.__importDefault) || function (mod) {
30
+ return (mod && mod.__esModule) ? mod : { "default": mod };
31
+ };
6
32
  Object.defineProperty(exports, "__esModule", { value: true });
7
33
  exports.StormCodegen = void 0;
8
34
  const codegen_1 = require("@kapeta/codegen");
9
35
  const codeGeneratorManager_1 = require("../codeGeneratorManager");
10
36
  const stormClient_1 = require("./stormClient");
11
37
  const stream_1 = require("./stream");
38
+ const promises_1 = require("fs/promises");
39
+ const path_1 = __importStar(require("path"));
40
+ const node_os_1 = __importDefault(require("node:os"));
12
41
  class StormCodegen {
13
42
  userPrompt;
14
43
  blocks;
@@ -100,6 +129,19 @@ class StormCodegen {
100
129
  if (serviceFiles.length > 0) {
101
130
  await this.processTemplates(block.uri, block.aiName, stormClient_1.stormClient.createServiceImplementation.bind(stormClient_1.stormClient), serviceFiles, contextFiles);
102
131
  }
132
+ const basePath = path_1.default.join(node_os_1.default.tmpdir(), block.content.metadata.name);
133
+ for (const serviceFile of serviceFiles) {
134
+ const filePath = (0, path_1.join)(basePath, serviceFile.filename);
135
+ await (0, promises_1.writeFile)(filePath, serviceFile.content);
136
+ }
137
+ for (const serviceFile of contextFiles) {
138
+ const filePath = (0, path_1.join)(basePath, serviceFile.filename);
139
+ await (0, promises_1.writeFile)(filePath, serviceFile.content);
140
+ }
141
+ for (const uiFile of uiTemplates) {
142
+ const filePath = (0, path_1.join)(basePath, uiFile.filename);
143
+ await (0, promises_1.writeFile)(filePath, uiFile.content);
144
+ }
103
145
  }
104
146
  /**
105
147
  * Emits the text-based files to the stream
@@ -203,9 +245,12 @@ class StormCodegen {
203
245
  if (!(await codeGeneratorManager_1.codeGeneratorManager.ensureTarget(yamlContent.spec.target?.kind))) {
204
246
  return;
205
247
  }
248
+ const basePath = path_1.default.join(node_os_1.default.tmpdir(), yamlContent.metadata.name);
206
249
  const codeGenerator = new codegen_1.BlockCodeGenerator(yamlContent);
207
250
  codeGenerator.withOption('AIContext', stormClient_1.STORM_ID);
208
- return codeGenerator.generate();
251
+ const generatedResult = await codeGenerator.generate();
252
+ new codegen_1.CodeWriter(basePath).write(generatedResult);
253
+ return generatedResult;
209
254
  }
210
255
  }
211
256
  exports.StormCodegen = StormCodegen;
@@ -56,6 +56,7 @@ router.post('/:handle/all', async (req, res) => {
56
56
  }
57
57
  catch (err) {
58
58
  sendError(err, res);
59
+ res.end();
59
60
  }
60
61
  });
61
62
  function sendDefinitions(res, result) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kapeta/local-cluster-service",
3
- "version": "0.47.3",
3
+ "version": "0.48.0",
4
4
  "description": "Manages configuration, ports and service discovery for locally running Kapeta systems",
5
5
  "type": "commonjs",
6
6
  "exports": {
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import { Definition } from '@kapeta/local-cluster-config';
7
- import { AIFileTypes, BlockCodeGenerator, GeneratedFile, GeneratedResult } from '@kapeta/codegen';
7
+ import { AIFileTypes, BlockCodeGenerator, CodeWriter, GeneratedFile, GeneratedResult } from '@kapeta/codegen';
8
8
  import { BlockDefinition } from '@kapeta/schemas';
9
9
  import { codeGeneratorManager } from '../codeGeneratorManager';
10
10
  import { STORM_ID, stormClient } from './stormClient';
@@ -12,6 +12,9 @@ import { StormEvent, StormEventFile } from './events';
12
12
  import { BlockDefinitionInfo } from './event-parser';
13
13
  import { ConversationItem, StormFileImplementationPrompt, StormFileInfo, StormStream } from './stream';
14
14
  import { KapetaURI } from '@kapeta/nodejs-utils';
15
+ import { writeFile } from 'fs/promises';
16
+ import path, { join } from 'path';
17
+ import os from 'node:os';
15
18
 
16
19
  type ImplementationGenerator = (prompt: StormFileImplementationPrompt, conversationId?: string) => Promise<StormStream>;
17
20
 
@@ -131,6 +134,23 @@ export class StormCodegen {
131
134
  contextFiles
132
135
  );
133
136
  }
137
+
138
+ const basePath = path.join(os.tmpdir(), block.content.metadata.name);
139
+
140
+ for (const serviceFile of serviceFiles) {
141
+ const filePath = join(basePath, serviceFile.filename);
142
+ await writeFile(filePath, serviceFile.content);
143
+ }
144
+
145
+ for (const serviceFile of contextFiles) {
146
+ const filePath = join(basePath, serviceFile.filename);
147
+ await writeFile(filePath, serviceFile.content);
148
+ }
149
+
150
+ for(const uiFile of uiTemplates){
151
+ const filePath = join(basePath, uiFile.filename);
152
+ await writeFile(filePath, uiFile.content);
153
+ }
134
154
  }
135
155
 
136
156
  /**
@@ -263,10 +283,12 @@ export class StormCodegen {
263
283
  if (!(await codeGeneratorManager.ensureTarget(yamlContent.spec.target?.kind))) {
264
284
  return;
265
285
  }
286
+ const basePath = path.join(os.tmpdir(), yamlContent.metadata.name);
266
287
 
267
288
  const codeGenerator = new BlockCodeGenerator(yamlContent as BlockDefinition);
268
289
  codeGenerator.withOption('AIContext', STORM_ID);
269
-
270
- return codeGenerator.generate();
290
+ const generatedResult = await codeGenerator.generate();
291
+ new CodeWriter(basePath).write(generatedResult);
292
+ return generatedResult;
271
293
  }
272
294
  }
@@ -74,6 +74,7 @@ router.post('/:handle/all', async (req: KapetaBodyRequest, res: Response) => {
74
74
  sendDone(res);
75
75
  } catch (err: any) {
76
76
  sendError(err, res);
77
+ res.end();
77
78
  }
78
79
  });
79
80