@avrm/svi 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/bin/cli.js +6 -0
  2. package/dist/bin/cli.js.map +1 -0
  3. package/dist/package.json +39 -0
  4. package/dist/src/commands/cliOptions.js +58 -0
  5. package/dist/src/commands/cliOptions.js.map +1 -0
  6. package/dist/src/commands/entryPoint.js +90 -0
  7. package/dist/src/commands/entryPoint.js.map +1 -0
  8. package/dist/src/commands/env.js +141 -0
  9. package/dist/src/commands/env.js.map +1 -0
  10. package/dist/src/commands/init.js +108 -0
  11. package/dist/src/commands/init.js.map +1 -0
  12. package/dist/src/commands/run.js +58 -0
  13. package/dist/src/commands/run.js.map +1 -0
  14. package/dist/src/commands/runner/checkerForRunManager.js +49 -0
  15. package/dist/src/commands/runner/checkerForRunManager.js.map +1 -0
  16. package/dist/src/commands/runner/runManager.js +137 -0
  17. package/dist/src/commands/runner/runManager.js.map +1 -0
  18. package/dist/src/commands/runner/runStatistics.js +55 -0
  19. package/dist/src/commands/runner/runStatistics.js.map +1 -0
  20. package/dist/src/config/config.js +135 -0
  21. package/dist/src/config/config.js.map +1 -0
  22. package/dist/src/config/configFinder.js +37 -0
  23. package/dist/src/config/configFinder.js.map +1 -0
  24. package/dist/src/llm/llm.js +117 -0
  25. package/dist/src/llm/llm.js.map +1 -0
  26. package/dist/src/llm/llmServiceByModel.js +43 -0
  27. package/dist/src/llm/llmServiceByModel.js.map +1 -0
  28. package/dist/src/llm/llmUtils.js +23 -0
  29. package/dist/src/llm/llmUtils.js.map +1 -0
  30. package/dist/src/llm/theMaximalistLlmJs/LlmJsFactories.js +27 -0
  31. package/dist/src/llm/theMaximalistLlmJs/LlmJsFactories.js.map +1 -0
  32. package/dist/src/llm/theMaximalistLlmJs/ModelUsageWrapper.js +55 -0
  33. package/dist/src/llm/theMaximalistLlmJs/ModelUsageWrapper.js.map +1 -0
  34. package/dist/src/svi/cacheManager.js +187 -0
  35. package/dist/src/svi/cacheManager.js.map +1 -0
  36. package/dist/src/svi/promptBuilder.js +59 -0
  37. package/dist/src/svi/promptBuilder.js.map +1 -0
  38. package/dist/src/svi/prompts/extractDeclarations.js +25 -0
  39. package/dist/src/svi/prompts/extractDeclarations.js.map +1 -0
  40. package/dist/src/svi/prompts/generate.js +36 -0
  41. package/dist/src/svi/prompts/generate.js.map +1 -0
  42. package/dist/src/svi/sviChecks.js +131 -0
  43. package/dist/src/svi/sviChecks.js.map +1 -0
  44. package/dist/src/svi/sviDependencies.js +139 -0
  45. package/dist/src/svi/sviDependencies.js.map +1 -0
  46. package/dist/src/svi/sviFileClass.js +105 -0
  47. package/dist/src/svi/sviFileClass.js.map +1 -0
  48. package/dist/src/svi/sviFileOrderOptimizer/sviDependencyCycleAnalyzer.js +154 -0
  49. package/dist/src/svi/sviFileOrderOptimizer/sviDependencyCycleAnalyzer.js.map +1 -0
  50. package/dist/src/svi/sviFileOrderOptimizer/sviDependencyFinder.js +57 -0
  51. package/dist/src/svi/sviFileOrderOptimizer/sviDependencyFinder.js.map +1 -0
  52. package/dist/src/svi/sviFileOrderOptimizer/sviFileOrderOptimizer.js +93 -0
  53. package/dist/src/svi/sviFileOrderOptimizer/sviFileOrderOptimizer.js.map +1 -0
  54. package/dist/src/svi/sviFileOrderOptimizer/types.js +3 -0
  55. package/dist/src/svi/sviFileOrderOptimizer/types.js.map +1 -0
  56. package/dist/src/svi/sviImportPrompts.js +138 -0
  57. package/dist/src/svi/sviImportPrompts.js.map +1 -0
  58. package/dist/src/svi/sviLoader.js +138 -0
  59. package/dist/src/svi/sviLoader.js.map +1 -0
  60. package/dist/src/svi/sviParser/parsedSviDirectory.js +34 -0
  61. package/dist/src/svi/sviParser/parsedSviDirectory.js.map +1 -0
  62. package/dist/src/svi/sviParser/sviParser.js +205 -0
  63. package/dist/src/svi/sviParser/sviParser.js.map +1 -0
  64. package/dist/src/svi/sviProcessor.js +138 -0
  65. package/dist/src/svi/sviProcessor.js.map +1 -0
  66. package/dist/src/svi/types.js +3 -0
  67. package/dist/src/svi/types.js.map +1 -0
  68. package/dist/src/utils/codeClear.js +29 -0
  69. package/dist/src/utils/codeClear.js.map +1 -0
  70. package/dist/src/utils/constants.js +6 -0
  71. package/dist/src/utils/constants.js.map +1 -0
  72. package/dist/src/utils/fastGlobWrapper.js +34 -0
  73. package/dist/src/utils/fastGlobWrapper.js.map +1 -0
  74. package/dist/src/utils/file.js +137 -0
  75. package/dist/src/utils/file.js.map +1 -0
  76. package/dist/src/utils/file2.js +26 -0
  77. package/dist/src/utils/file2.js.map +1 -0
  78. package/dist/src/utils/logger.js +105 -0
  79. package/dist/src/utils/logger.js.map +1 -0
  80. package/dist/src/utils/utils.js +34 -0
  81. package/dist/src/utils/utils.js.map +1 -0
  82. package/package.json +38 -0
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RunManager = void 0;
7
+ const sviLoader_1 = require("../../svi/sviLoader");
8
+ //import { SVIParser } from "../../svi/sviParser/sviParser";
9
+ const sviProcessor_1 = require("../../svi/sviProcessor");
10
+ const llm_1 = require("../../llm/llm");
11
+ const logger_1 = __importDefault(require("../../utils/logger"));
12
+ const checkerForRunManager_1 = __importDefault(require("./checkerForRunManager"));
13
+ const runStatistics_1 = __importDefault(require("./runStatistics"));
14
+ const sviChecks_1 = __importDefault(require("../../svi/sviChecks"));
15
+ /**
16
+ * RunManager
17
+ * Orchestriert:
18
+ * - Laden der Konfiguration
19
+ * - Auffinden aller .svi Dateien nach SearchPaths / IgnorePaths
20
+ * - Prüfen von Active + Cache
21
+ * - Prompt-Building -> LLM.ask -> Schreiben der erzeugten Datei
22
+ * - Cache-Aktualisierung (.svicache)
23
+ *
24
+ * Hinweis: Diese Implementierung trifft konservative Annahmen bzgl. Signaturen der Hilfs-Module.
25
+ */
26
+ class RunManager {
27
+ constructor(config, opts) {
28
+ this.onlyLoadFiles = [];
29
+ this.config = config;
30
+ this.llmBaseUrl = opts?.llmBaseUrl;
31
+ this.model = opts?.model;
32
+ this.service = opts?.service;
33
+ this.apiKey = opts?.apiKey;
34
+ this.envPath = opts?.envPath;
35
+ this.sviJsonPath = opts?.sviJsonPath;
36
+ }
37
+ setOnlyLoadFiles(files) {
38
+ this.onlyLoadFiles = files;
39
+ }
40
+ /**
41
+ * Main method to run the process
42
+ */
43
+ async run() {
44
+ try {
45
+ logger_1.default.info("RunManager: Search for .svi files...");
46
+ let sviFiles = [];
47
+ if (this.onlyLoadFiles.length > 0) {
48
+ logger_1.default.info(`RunManager: Loading specific .svi files: ${this.onlyLoadFiles.join(", ")}`);
49
+ sviFiles = await new sviLoader_1.SviLoader(this.config, undefined, this.sviJsonPath !== undefined).loadSpecificFiles(this.onlyLoadFiles);
50
+ logger_1.default.trace(`Number of specified .svi files to process: ${sviFiles.length}`);
51
+ }
52
+ else {
53
+ logger_1.default.info("RunManager: Loading all .svi files...");
54
+ sviFiles = await new sviLoader_1.SviLoader(this.config).loadAll();
55
+ }
56
+ if (!sviFiles || sviFiles.length === 0) {
57
+ logger_1.default.info("No .svi files found. Nothing to do.");
58
+ return true;
59
+ }
60
+ logger_1.default.info(`Number of found .svi files: ${sviFiles.length}`);
61
+ logger_1.default.trace("RunManager: Additional checks before run...");
62
+ if (!this.additionalChecksBeforeRun(sviFiles)) {
63
+ logger_1.default.error("Finishing due to pre-run check errors.");
64
+ return false;
65
+ }
66
+ // Init LLM
67
+ const llm = new llm_1.LLMProcessor({
68
+ modelName: this.model || "",
69
+ apiKey: this.apiKey,
70
+ service: this.service,
71
+ llmBaseUrl: this.llmBaseUrl,
72
+ envFile: this.envPath,
73
+ });
74
+ let result = true;
75
+ if (sviFiles.length > 0) {
76
+ if (!(await checkerForRunManager_1.default.checkOptions({
77
+ modelName: this.model || "",
78
+ service: this.service,
79
+ apiKey: this.apiKey,
80
+ }))) {
81
+ logger_1.default.error("Finishing due to LLM parameter errors.");
82
+ return false;
83
+ }
84
+ }
85
+ for (const sviPath of sviFiles) {
86
+ try {
87
+ logger_1.default.info(`Processing: ${sviPath.filePath}`);
88
+ if (!(await (0, sviProcessor_1.processSVIFile)(sviPath, llm, this.config))) {
89
+ result = false;
90
+ }
91
+ }
92
+ catch (innerErr) {
93
+ logger_1.default.error(`Error processing ${sviPath}: ${innerErr.message}`);
94
+ result = false;
95
+ }
96
+ }
97
+ if (result) {
98
+ logger_1.default.info("RunManager: Done.");
99
+ }
100
+ else {
101
+ logger_1.default.repeatErrorMessages();
102
+ logger_1.default.error("RunManager: Some files failed to process.");
103
+ }
104
+ logger_1.default.info("Number of found .svi files: " + sviFiles.length);
105
+ logger_1.default.info("Number of processed .svi files: " +
106
+ runStatistics_1.default.getInstance().getTotalFilesProcessed());
107
+ if (runStatistics_1.default.getInstance().getTotalFilesFailed() > 0) {
108
+ logger_1.default.warn("Number of .svi files that failed to process: " +
109
+ runStatistics_1.default.getInstance().getTotalFilesFailed());
110
+ }
111
+ runStatistics_1.default.getInstance().logWrittenFiles();
112
+ if (runStatistics_1.default.getInstance().getTotalFilesFailed() > 0) {
113
+ runStatistics_1.default.getInstance().logErrorFiles();
114
+ }
115
+ return result;
116
+ }
117
+ catch (err) {
118
+ logger_1.default.error("RunManager: Severe error: " +
119
+ err.message +
120
+ "\n" +
121
+ err.stack);
122
+ throw err;
123
+ }
124
+ }
125
+ additionalChecksBeforeRun(sviFiles) {
126
+ //const sviParser = new SVIParser();
127
+ const sviChecks = new sviChecks_1.default();
128
+ const result = sviChecks.check(sviFiles);
129
+ if (!result) {
130
+ sviChecks.logErrors();
131
+ }
132
+ return result;
133
+ }
134
+ }
135
+ exports.RunManager = RunManager;
136
+ exports.default = RunManager;
137
+ //# sourceMappingURL=runManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runManager.js","sourceRoot":"","sources":["../../../../src/commands/runner/runManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const logger_1 = __importDefault(require("../../utils/logger"));
7
+ class RunStatistics {
8
+ constructor() {
9
+ this.writtenFiles = [];
10
+ this.errorFiles = [];
11
+ }
12
+ static getInstance() {
13
+ if (!RunStatistics.instance) {
14
+ RunStatistics.instance = new RunStatistics();
15
+ }
16
+ return RunStatistics.instance;
17
+ }
18
+ addFileCreated(filePath) {
19
+ this.writtenFiles.push({ filePath, isUpdate: false });
20
+ }
21
+ addFileUpdated(filePath) {
22
+ this.writtenFiles.push({ filePath, isUpdate: true });
23
+ }
24
+ addFileFailed(filePath) {
25
+ this.errorFiles.push(filePath);
26
+ }
27
+ getTotalFilesProcessed() {
28
+ return this.writtenFiles.length;
29
+ }
30
+ getTotalFilesFailed() {
31
+ return this.errorFiles.length;
32
+ }
33
+ logWrittenFiles() {
34
+ if (this.writtenFiles.length === 0) {
35
+ logger_1.default.info("No files were created or updated.");
36
+ return;
37
+ }
38
+ logger_1.default.info("Processed files:");
39
+ for (const file of this.writtenFiles) {
40
+ const action = file.isUpdate ? "Updated" : "Created";
41
+ logger_1.default.info(`- ${action}: ${file.filePath}`);
42
+ }
43
+ }
44
+ logErrorFiles() {
45
+ if (this.errorFiles.length === 0) {
46
+ return;
47
+ }
48
+ logger_1.default.warn("Failed files:");
49
+ for (const file of this.errorFiles) {
50
+ logger_1.default.warn(`- Failed: ${file}`);
51
+ }
52
+ }
53
+ }
54
+ exports.default = RunStatistics;
55
+ //# sourceMappingURL=runStatistics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runStatistics.js","sourceRoot":"","sources":["../../../../src/commands/runner/runStatistics.ts"],"names":[],"mappings":";;;;;AAAA,gEAAwC;AAOxC,MAAqB,aAAa;IAMhC;QAHQ,iBAAY,GAAkB,EAAE,CAAC;QACjC,eAAU,GAAa,EAAE,CAAC;IAEX,CAAC;IAEjB,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC5B,aAAa,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QAC/C,CAAC;QACD,OAAO,aAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IAEM,cAAc,CAAC,QAAgB;QACpC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IAEM,cAAc,CAAC,QAAgB;QACpC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IAEM,aAAa,CAAC,QAAgB;QACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAEM,sBAAsB;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IAClC,CAAC;IAEM,mBAAmB;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAChC,CAAC;IAEM,eAAe;QACpB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,gBAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,gBAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YACrD,gBAAM,CAAC,IAAI,CAAC,KAAK,MAAM,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAEM,aAAa;QAClB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QACD,gBAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACnC,gBAAM,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF;AAzDD,gCAyDC"}
@@ -0,0 +1,135 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.Config = void 0;
40
+ const fs_1 = __importDefault(require("fs"));
41
+ const path_1 = __importDefault(require("path"));
42
+ const fileUtils = __importStar(require("../utils/file.js"));
43
+ const logger_js_1 = __importDefault(require("../utils/logger.js"));
44
+ const configFinder_1 = __importDefault(require("./configFinder"));
45
+ /**
46
+ * Singleton class for loading and storing configuration data
47
+ * (Read-only, no write operations)
48
+ */
49
+ class Config {
50
+ /**
51
+ * Private constructor – use getInstance()
52
+ */
53
+ constructor(fileName = "svi.json", tryToFindConfigInParentDirs = false) {
54
+ logger_js_1.default.trace(`Searching configuration file (svi.json) with name: ${fileName}`);
55
+ let resolvedPath;
56
+ if (path_1.default.isAbsolute(fileName)) {
57
+ logger_js_1.default.debug(`Absolute path provided for configuration file: ${fileName}`);
58
+ if (fileUtils.isFile(fileName)) {
59
+ resolvedPath = fileName;
60
+ }
61
+ else {
62
+ resolvedPath = path_1.default.join(fileName, "svi.json");
63
+ }
64
+ }
65
+ else {
66
+ resolvedPath = path_1.default.resolve(process.cwd(), fileName);
67
+ }
68
+ if (!fs_1.default.existsSync(resolvedPath) && tryToFindConfigInParentDirs) {
69
+ logger_js_1.default.debug(`Configuration file not found at provided path: ${resolvedPath}. Trying to find in parent directories...`);
70
+ const foundInParents = this.tryToFindConfigInParentDirs(process.cwd());
71
+ if (foundInParents) {
72
+ logger_js_1.default.debug(`Configuration file found in parent directory: ${foundInParents}`);
73
+ resolvedPath = foundInParents;
74
+ }
75
+ else {
76
+ logger_js_1.default.debug(`Configuration file not found in any parent directories.`);
77
+ }
78
+ }
79
+ if (!fs_1.default.existsSync(resolvedPath)) {
80
+ logger_js_1.default.error(`Configuration file not found at path: ${resolvedPath}.
81
+ Please run the command in a directory containing svi.json file; usually it should be your project root.
82
+ Or you can use parameter --configPath/-p to set the path to the configuration file explicitly.
83
+ If you haven't created svi.json yet, you can run 'svi init' command.`);
84
+ throw new Error(`Configuration file not found: ${resolvedPath}`);
85
+ }
86
+ this.configPath = resolvedPath;
87
+ this.configDir = path_1.default.dirname(this.configPath);
88
+ logger_js_1.default.trace(`Loading configuration from: ${this.configPath}`);
89
+ const raw = fs_1.default.readFileSync(this.configPath, "utf-8");
90
+ try {
91
+ this.configData = JSON.parse(raw);
92
+ }
93
+ catch (e) {
94
+ throw new Error(`Invalid JSON in file ${this.configPath}: ${e.message}`);
95
+ }
96
+ this.configData.configDir = this.configDir;
97
+ logger_js_1.default.trace(`Configuration loaded. Programming Language: ${this.configData.programmingLanguage}, Search Paths: ${this.configData.searchPaths.join(", ")}, Ignore Paths: ${this.configData.ignorePaths.join(", ")}`);
98
+ }
99
+ /**
100
+ * Returns the singleton instance
101
+ */
102
+ static getInstance(fileName, tryToFindConfigInParentDirs) {
103
+ if (!Config.instance) {
104
+ Config.instance = new Config(fileName, tryToFindConfigInParentDirs);
105
+ }
106
+ return Config.instance;
107
+ }
108
+ // ---------- getters ----------
109
+ get path() {
110
+ return this.configPath;
111
+ }
112
+ get dir() {
113
+ return this.configDir;
114
+ }
115
+ get data() {
116
+ return this.configData;
117
+ }
118
+ get programmingLanguage() {
119
+ return this.configData.programmingLanguage;
120
+ }
121
+ get searchPaths() {
122
+ return this.configData.searchPaths;
123
+ }
124
+ get ignorePaths() {
125
+ return this.configData.ignorePaths;
126
+ }
127
+ tryToFindConfigInParentDirs(startingFolder) {
128
+ const finder = new configFinder_1.default();
129
+ const foundPath = finder.findConfigFile(startingFolder);
130
+ return foundPath;
131
+ }
132
+ }
133
+ exports.Config = Config;
134
+ Config.instance = null;
135
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fs_1 = __importDefault(require("fs"));
7
+ const path_1 = __importDefault(require("path"));
8
+ class ConfigFinder {
9
+ /**
10
+ * Finds the 'svi.json' configuration file starting from the given folder
11
+ * and moving up through parent directories until the file is found or the root is reached.
12
+ *
13
+ * @param startingFolder The folder from which to start the search.
14
+ * @returns The absolute path to the found 'svi.json' file, or null if not found.
15
+ */
16
+ findConfigFile(startingFolder) {
17
+ const configFileName = "svi.json";
18
+ let currentFolder = path_1.default.resolve(startingFolder); // Ensure an absolute starting path
19
+ // To detect when we've reached the root directory, we compare the current folder
20
+ // with the result of path.dirname() for the same folder.
21
+ // If they are identical (e.g., path.dirname('/') is '/'), we're at the root.
22
+ let previousFolder = null;
23
+ while (currentFolder !== previousFolder) {
24
+ const configFilePath = path_1.default.join(currentFolder, configFileName);
25
+ if (fs_1.default.existsSync(configFilePath)) {
26
+ return configFilePath;
27
+ }
28
+ previousFolder = currentFolder; // Store current folder before moving up
29
+ currentFolder = path_1.default.dirname(currentFolder); // Move one level up
30
+ }
31
+ // If the loop finishes, it means we have reached the root directory
32
+ // and the file was not found in any of the checked folders.
33
+ return null;
34
+ }
35
+ }
36
+ exports.default = ConfigFinder;
37
+ //# sourceMappingURL=configFinder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configFinder.js","sourceRoot":"","sources":["../../../src/config/configFinder.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAExB,MAAqB,YAAY;IAC7B;;;;;;OAMG;IACH,cAAc,CAAC,cAAsB;QACjC,MAAM,cAAc,GAAG,UAAU,CAAC;QAClC,IAAI,aAAa,GAAG,cAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,mCAAmC;QAErF,iFAAiF;QACjF,yDAAyD;QACzD,6EAA6E;QAC7E,IAAI,cAAc,GAAkB,IAAI,CAAC;QAEzC,OAAO,aAAa,KAAK,cAAc,EAAE,CAAC;YACtC,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;YAEhE,IAAI,YAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;gBAChC,OAAO,cAAc,CAAC;YAC1B,CAAC;YAED,cAAc,GAAG,aAAa,CAAC,CAAC,wCAAwC;YACxE,aAAa,GAAG,cAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB;QACrE,CAAC;QAED,oEAAoE;QACpE,4DAA4D;QAC5D,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAhCD,+BAgCC"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.LLMProcessor = void 0;
7
+ //import logger from "@src/utils/logger";
8
+ const logger_1 = __importDefault(require("../utils/logger"));
9
+ const llmServiceByModel_1 = require("./llmServiceByModel");
10
+ const llmUtils_1 = require("./llmUtils");
11
+ const constants_1 = require("../utils/constants");
12
+ const LlmJsFactories_1 = __importDefault(require("./theMaximalistLlmJs/LlmJsFactories"));
13
+ class LLMProcessor {
14
+ constructor(optionsIn) {
15
+ this.options = optionsIn;
16
+ }
17
+ async ask(prompt, systemPrompt, promptDescription) {
18
+ let options = {};
19
+ /*logger.debug(
20
+ "Planning to ask LLM, prompt: " + preparePromptForLogs(prompt),
21
+ );*/
22
+ logger_1.default.prompt(`Start of prompt ${promptDescription}:\n\n ${prompt}\n\nEnd of prompt ${promptDescription}`);
23
+ if (this.options.modelName) {
24
+ options.model = this.options.modelName;
25
+ }
26
+ if (!this.options.modelName) {
27
+ logger_1.default.error("LLM model name is not specified.");
28
+ logger_1.default.error("Please specify the model name in svi.env file, or specify another .env file via the -e parameter.");
29
+ logger_1.default.error("Also, you can specify the model name via the -m parameter.");
30
+ throw new Error("LLM model name is required.");
31
+ }
32
+ logger_1.default.debug("Using LLM model:" + this.options.modelName);
33
+ if (this.options.apiKey) {
34
+ options.apiKey = this.options.apiKey;
35
+ }
36
+ logger_1.default.debug("Using LLM API key: " + (0, llmUtils_1.prepareApiKeyForLogs)(this.options.apiKey));
37
+ options.service = this.options.service;
38
+ logger_1.default.trace("Using LLM service: " + options.service);
39
+ if (!options.service) {
40
+ logger_1.default.debug("Service not specified, trying to determine from model name.");
41
+ const service = await LLMProcessor.getServiceForModel(this.options.modelName);
42
+ //const service = await LLMServiceByModel.getServiceForModel(
43
+ // this.options.modelName,
44
+ //);
45
+ logger_1.default.debug("Determined service: " + service);
46
+ if (service) {
47
+ options.service = this.options.service = service;
48
+ }
49
+ if (!this.options.service) {
50
+ logger_1.default.error(`Could not determine service for model ${this.options.modelName}.`);
51
+ throw new Error(`Service provider is required for model ${this.options.modelName}. Please specify it explicitly or check model name.`);
52
+ }
53
+ }
54
+ if (this.options.llmBaseUrl) {
55
+ options.baseUrl = this.options.llmBaseUrl;
56
+ logger_1.default.debug("Using LLM base URL: " + options.baseUrl);
57
+ }
58
+ if (!options.max_tokens && options.service === "google") {
59
+ options.max_tokens = constants_1.UNLIMITED_TOKENS;
60
+ }
61
+ let response;
62
+ try {
63
+ logger_1.default.trace("Before calling LLM");
64
+ const llm = LlmJsFactories_1.default.createLlm(options);
65
+ if (systemPrompt) {
66
+ llm.system(systemPrompt);
67
+ }
68
+ llm.addMessage("user", prompt);
69
+ logger_1.default.trace("Before calling llm.send()");
70
+ response = await llm.send();
71
+ }
72
+ catch (error) {
73
+ //console.error("Error initializing LLM:", (error as Error).message);
74
+ //console.error("Stack trace:", (error as Error).stack);
75
+ logger_1.default.error("Error initializing LLM:", error.message);
76
+ logger_1.default.error("Stack trace:", error.stack);
77
+ return "";
78
+ }
79
+ // Handle all possible types
80
+ if (typeof response === "string") {
81
+ logger_1.default.debug("LLM returned a string response.");
82
+ return this.traceResultIfNeeded(response);
83
+ }
84
+ // If it's an async generator (stream)
85
+ if (Symbol.asyncIterator in Object(response)) {
86
+ logger_1.default.debug("LLM returned a streaming response (iterator).");
87
+ let result = "";
88
+ for await (const chunk of response) {
89
+ result += chunk;
90
+ }
91
+ return this.traceResultIfNeeded(result);
92
+ }
93
+ // If it's a Response-like object
94
+ if ("text" in response && typeof response.text === "function") {
95
+ logger_1.default.debug("LLM returned a Response-like object (we can use it as response.text()).");
96
+ return this.traceResultIfNeeded(await response.text());
97
+ }
98
+ // Fallback
99
+ logger_1.default.debug("No specific response type matched, returning JSON string.");
100
+ return this.traceResultIfNeeded(JSON.stringify(response));
101
+ }
102
+ getOptions() {
103
+ return this.options;
104
+ }
105
+ traceResultIfNeeded(result) {
106
+ logger_1.default.llmResponse(result);
107
+ /*logger.trace(
108
+ `LLM response, length ${result.length}: ${preparePromptForLogs(result)}`,
109
+ );*/
110
+ return result;
111
+ }
112
+ static async getServiceForModel(modelName) {
113
+ return await llmServiceByModel_1.LLMServiceByModel.getServiceForModel(modelName);
114
+ }
115
+ }
116
+ exports.LLMProcessor = LLMProcessor;
117
+ //# sourceMappingURL=llm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.js","sourceRoot":"","sources":["../../../src/llm/llm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.LLMServiceByModel = void 0;
7
+ //import { ModelUsage } from "@themaximalist/llm.js";
8
+ //import { createModelUsage } from "./theMaximalistLlmJs/LlmJsFactories";
9
+ const ModelUsageWrapper_1 = __importDefault(require("./theMaximalistLlmJs/ModelUsageWrapper"));
10
+ const logger_1 = __importDefault(require("../utils/logger"));
11
+ class LLMServiceByModel {
12
+ static async getServiceForModel(model) {
13
+ // Get all cached models
14
+ //const allModels = ModelUsageWrapper.getAll();
15
+ const allModels = ModelUsageWrapper_1.default.getAll();
16
+ // Try to find model in cached data
17
+ const foundModel = allModels.find((m) => m.model === model);
18
+ let result;
19
+ if (foundModel) {
20
+ result = this.adjustServiceName(foundModel.service);
21
+ return result;
22
+ }
23
+ // If not found, refresh from latest sources
24
+ const refreshedModels = await ModelUsageWrapper_1.default.refresh();
25
+ //console.log("Refreshed models:", refreshedModels.length);
26
+ logger_1.default.info(`Refreshed models: ${refreshedModels.length}`);
27
+ // Try to find again in refreshed list
28
+ const updatedModel = refreshedModels.find((m) => m.model === model);
29
+ result = updatedModel ? updatedModel.service : null;
30
+ result = this.adjustServiceName(result);
31
+ return result;
32
+ }
33
+ static adjustServiceName(service) {
34
+ switch (service) {
35
+ case "gemini":
36
+ return "google";
37
+ default:
38
+ return service;
39
+ }
40
+ }
41
+ }
42
+ exports.LLMServiceByModel = LLMServiceByModel;
43
+ //# sourceMappingURL=llmServiceByModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llmServiceByModel.js","sourceRoot":"","sources":["../../../src/llm/llmServiceByModel.ts"],"names":[],"mappings":";;;;;;AAAA,qDAAqD;AACrD,yEAAyE;AACzE,+FAAuE;AACvE,6DAAqC;AAErC,MAAa,iBAAiB;IAC5B,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAa;QAC3C,wBAAwB;QACxB,+CAA+C;QAC/C,MAAM,SAAS,GAAG,2BAAiB,CAAC,MAAM,EAAE,CAAC;QAE7C,mCAAmC;QACnC,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QAE5D,IAAI,MAAM,CAAC;QAEX,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACpD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,4CAA4C;QAC5C,MAAM,eAAe,GAAG,MAAM,2BAAiB,CAAC,OAAO,EAAE,CAAC;QAC1D,2DAA2D;QAC3D,gBAAM,CAAC,IAAI,CAAC,qBAAqB,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;QAE3D,sCAAsC;QACtC,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QAEpE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACpD,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,OAAsB;QACrD,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,QAAQ;gBACX,OAAO,QAAQ,CAAC;YAClB;gBACE,OAAO,OAAO,CAAC;QACnB,CAAC;IACH,CAAC;CACF;AArCD,8CAqCC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.prepareApiKeyForLogs = prepareApiKeyForLogs;
4
+ exports.preparePromptForLogs = preparePromptForLogs;
5
+ function prepareApiKeyForLogs(apiKey) {
6
+ if (!apiKey) {
7
+ return "null";
8
+ }
9
+ else if (apiKey.length < 8) {
10
+ return "****";
11
+ }
12
+ return apiKey.substring(0, 4) + "****" + apiKey.substring(apiKey.length - 4);
13
+ }
14
+ function preparePromptForLogs(prompt) {
15
+ if (!prompt) {
16
+ return "null";
17
+ }
18
+ else if (prompt.length <= 20) {
19
+ return prompt;
20
+ }
21
+ return (prompt.substring(0, 10) + "...." + prompt.substring(prompt.length - 10));
22
+ }
23
+ //# sourceMappingURL=llmUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llmUtils.js","sourceRoot":"","sources":["../../../src/llm/llmUtils.ts"],"names":[],"mappings":";;AAAA,oDASC;AAED,oDASC;AApBD,SAAgB,oBAAoB,CAClC,MAAiC;IAEjC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,MAAM,CAAC;IAChB,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,SAAgB,oBAAoB,CAAC,MAAc;IACjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,MAAM,CAAC;IAChB,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,CACL,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,CACxE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const llm_js_1 = __importDefault(require("@themaximalist/llm.js"));
7
+ class LlmJsFactories {
8
+ static createLlm(input, options = {}) {
9
+ let llm;
10
+ if (input && typeof input === "object" && !Array.isArray(input)) {
11
+ llm = new llm_js_1.default(input);
12
+ }
13
+ else if (input) {
14
+ llm = new llm_js_1.default(input, options);
15
+ }
16
+ else {
17
+ llm = new llm_js_1.default();
18
+ }
19
+ return llm;
20
+ }
21
+ }
22
+ exports.default = LlmJsFactories;
23
+ /*export function createModelUsage(service?: string) {
24
+ const modelUsage = new ModelUsage(service as any);
25
+ return modelUsage;
26
+ }*/
27
+ //# sourceMappingURL=LlmJsFactories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LlmJsFactories.js","sourceRoot":"","sources":["../../../../src/llm/theMaximalistLlmJs/LlmJsFactories.ts"],"names":[],"mappings":";;;;;AAAA,mEAAwC;AAIxC,MAAqB,cAAc;IACjC,MAAM,CAAC,SAAS,CAAC,KAAuB,EAAE,UAAmB,EAAE;QAC7D,IAAI,GAA6B,CAAC;QAElC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,GAAG,GAAG,IAAI,gBAAG,CAAC,KAAgB,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,KAAK,EAAE,CAAC;YACjB,GAAG,GAAG,IAAI,gBAAG,CAAC,KAAc,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,IAAI,gBAAG,EAAE,CAAC;QAClB,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAdD,iCAcC;AAED;;;GAGG"}