codebuff 1.0.99

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 (153) hide show
  1. package/README.md +70 -0
  2. package/dist/chat-storage.d.ts +29 -0
  3. package/dist/chat-storage.js +125 -0
  4. package/dist/chat-storage.js.map +1 -0
  5. package/dist/cli.d.ts +37 -0
  6. package/dist/cli.js +416 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/client.d.ts +41 -0
  9. package/dist/client.js +443 -0
  10. package/dist/client.js.map +1 -0
  11. package/dist/code-map/languages.d.ts +12 -0
  12. package/dist/code-map/languages.js +129 -0
  13. package/dist/code-map/languages.js.map +1 -0
  14. package/dist/code-map/parse.d.ts +11 -0
  15. package/dist/code-map/parse.js +127 -0
  16. package/dist/code-map/parse.js.map +1 -0
  17. package/dist/code-map/test-langs/test.d.ts +11 -0
  18. package/dist/code-map/test-langs/test.js +23 -0
  19. package/dist/code-map/test-langs/test.js.map +1 -0
  20. package/dist/code-map/tree-sitter-queries/readme.md +23 -0
  21. package/dist/code-map/tree-sitter-queries/tree-sitter-c-tags.scm +11 -0
  22. package/dist/code-map/tree-sitter-queries/tree-sitter-c_sharp-tags.scm +13 -0
  23. package/dist/code-map/tree-sitter-queries/tree-sitter-cpp-tags.scm +17 -0
  24. package/dist/code-map/tree-sitter-queries/tree-sitter-go-tags.scm +26 -0
  25. package/dist/code-map/tree-sitter-queries/tree-sitter-java-tags.scm +19 -0
  26. package/dist/code-map/tree-sitter-queries/tree-sitter-javascript-tags.scm +15 -0
  27. package/dist/code-map/tree-sitter-queries/tree-sitter-php-tags.scm +26 -0
  28. package/dist/code-map/tree-sitter-queries/tree-sitter-python-tags.scm +9 -0
  29. package/dist/code-map/tree-sitter-queries/tree-sitter-ruby-tags.scm +58 -0
  30. package/dist/code-map/tree-sitter-queries/tree-sitter-rust-tags.scm +26 -0
  31. package/dist/code-map/tree-sitter-queries/tree-sitter-typescript-tags.scm +15 -0
  32. package/dist/code-map/tsconfig.tsbuildinfo +1 -0
  33. package/dist/common/actions.d.ts +1062 -0
  34. package/dist/common/actions.js +180 -0
  35. package/dist/common/actions.js.map +1 -0
  36. package/dist/common/billing/quota-manager.d.ts +59 -0
  37. package/dist/common/billing/quota-manager.js +200 -0
  38. package/dist/common/billing/quota-manager.js.map +1 -0
  39. package/dist/common/constants.d.ts +24 -0
  40. package/dist/common/constants.js +73 -0
  41. package/dist/common/constants.js.map +1 -0
  42. package/dist/common/db/drizzle.config.d.ts +2 -0
  43. package/dist/common/db/drizzle.config.js +17 -0
  44. package/dist/common/db/drizzle.config.js.map +1 -0
  45. package/dist/common/db/env.d.mts +1 -0
  46. package/dist/common/db/env.mjs +26 -0
  47. package/dist/common/db/env.mjs.map +1 -0
  48. package/dist/common/db/index.d.ts +6 -0
  49. package/dist/common/db/index.js +35 -0
  50. package/dist/common/db/index.js.map +1 -0
  51. package/dist/common/db/schema.d.ts +994 -0
  52. package/dist/common/db/schema.js +113 -0
  53. package/dist/common/db/schema.js.map +1 -0
  54. package/dist/common/env.d.mts +1 -0
  55. package/dist/common/env.mjs +34 -0
  56. package/dist/common/env.mjs.map +1 -0
  57. package/dist/common/project-file-tree.d.ts +9 -0
  58. package/dist/common/project-file-tree.js +157 -0
  59. package/dist/common/project-file-tree.js.map +1 -0
  60. package/dist/common/types/referral.d.ts +2 -0
  61. package/dist/common/types/referral.js +5 -0
  62. package/dist/common/types/referral.js.map +1 -0
  63. package/dist/common/types/usage.d.ts +21 -0
  64. package/dist/common/types/usage.js +12 -0
  65. package/dist/common/types/usage.js.map +1 -0
  66. package/dist/common/util/__tests__/string.test.d.ts +1 -0
  67. package/dist/common/util/__tests__/string.test.js +83 -0
  68. package/dist/common/util/__tests__/string.test.js.map +1 -0
  69. package/dist/common/util/array.d.ts +6 -0
  70. package/dist/common/util/array.js +32 -0
  71. package/dist/common/util/array.js.map +1 -0
  72. package/dist/common/util/changes.d.ts +6 -0
  73. package/dist/common/util/changes.js +72 -0
  74. package/dist/common/util/changes.js.map +1 -0
  75. package/dist/common/util/credentials.d.ts +25 -0
  76. package/dist/common/util/credentials.js +24 -0
  77. package/dist/common/util/credentials.js.map +1 -0
  78. package/dist/common/util/dates.d.ts +1 -0
  79. package/dist/common/util/dates.js +13 -0
  80. package/dist/common/util/dates.js.map +1 -0
  81. package/dist/common/util/file.d.ts +106 -0
  82. package/dist/common/util/file.js +138 -0
  83. package/dist/common/util/file.js.map +1 -0
  84. package/dist/common/util/git.d.ts +4 -0
  85. package/dist/common/util/git.js +40 -0
  86. package/dist/common/util/git.js.map +1 -0
  87. package/dist/common/util/helpers.d.ts +1 -0
  88. package/dist/common/util/helpers.js +6 -0
  89. package/dist/common/util/helpers.js.map +1 -0
  90. package/dist/common/util/object.d.ts +18 -0
  91. package/dist/common/util/object.js +91 -0
  92. package/dist/common/util/object.js.map +1 -0
  93. package/dist/common/util/patch.d.ts +1 -0
  94. package/dist/common/util/patch.js +215 -0
  95. package/dist/common/util/patch.js.map +1 -0
  96. package/dist/common/util/promise.d.ts +1 -0
  97. package/dist/common/util/promise.js +33 -0
  98. package/dist/common/util/promise.js.map +1 -0
  99. package/dist/common/util/referral.d.ts +1 -0
  100. package/dist/common/util/referral.js +6 -0
  101. package/dist/common/util/referral.js.map +1 -0
  102. package/dist/common/util/server/referral.d.ts +14 -0
  103. package/dist/common/util/server/referral.js +85 -0
  104. package/dist/common/util/server/referral.js.map +1 -0
  105. package/dist/common/util/string.d.ts +3 -0
  106. package/dist/common/util/string.js +60 -0
  107. package/dist/common/util/string.js.map +1 -0
  108. package/dist/common/util/stripe.d.ts +2 -0
  109. package/dist/common/util/stripe.js +19 -0
  110. package/dist/common/util/stripe.js.map +1 -0
  111. package/dist/common/util/tools.d.ts +2 -0
  112. package/dist/common/util/tools.js +13 -0
  113. package/dist/common/util/tools.js.map +1 -0
  114. package/dist/common/websockets/websocket-client.d.ts +40 -0
  115. package/dist/common/websockets/websocket-client.js +187 -0
  116. package/dist/common/websockets/websocket-client.js.map +1 -0
  117. package/dist/common/websockets/websocket-schema.d.ts +2530 -0
  118. package/dist/common/websockets/websocket-schema.js +55 -0
  119. package/dist/common/websockets/websocket-schema.js.map +1 -0
  120. package/dist/config.d.ts +2 -0
  121. package/dist/config.js +8 -0
  122. package/dist/config.js.map +1 -0
  123. package/dist/credentials.d.ts +3 -0
  124. package/dist/credentials.js +33 -0
  125. package/dist/credentials.js.map +1 -0
  126. package/dist/fingerprint.d.ts +1 -0
  127. package/dist/fingerprint.js +43 -0
  128. package/dist/fingerprint.js.map +1 -0
  129. package/dist/index.d.ts +2 -0
  130. package/dist/index.js +50 -0
  131. package/dist/index.js.map +1 -0
  132. package/dist/manifold-api.d.ts +8 -0
  133. package/dist/manifold-api.js +32 -0
  134. package/dist/manifold-api.js.map +1 -0
  135. package/dist/menu.d.ts +1 -0
  136. package/dist/menu.js +92 -0
  137. package/dist/menu.js.map +1 -0
  138. package/dist/project-files.d.ts +48 -0
  139. package/dist/project-files.js +324 -0
  140. package/dist/project-files.js.map +1 -0
  141. package/dist/tool-handlers.d.ts +11 -0
  142. package/dist/tool-handlers.js +131 -0
  143. package/dist/tool-handlers.js.map +1 -0
  144. package/dist/update-manicode.d.ts +1 -0
  145. package/dist/update-manicode.js +151 -0
  146. package/dist/update-manicode.js.map +1 -0
  147. package/dist/web-scraper.d.ts +3 -0
  148. package/dist/web-scraper.js +79 -0
  149. package/dist/web-scraper.js.map +1 -0
  150. package/dist/worker-script-project-context.d.ts +1 -0
  151. package/dist/worker-script-project-context.js +13 -0
  152. package/dist/worker-script-project-context.js.map +1 -0
  153. package/package.json +62 -0
@@ -0,0 +1,324 @@
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.deleteFile = exports.getProjectFileContext = void 0;
7
+ exports.setProjectRoot = setProjectRoot;
8
+ exports.getProjectRoot = getProjectRoot;
9
+ exports.initProjectFileContextWithWorker = initProjectFileContextWithWorker;
10
+ exports.getChangesSinceLastFileVersion = getChangesSinceLastFileVersion;
11
+ exports.getFiles = getFiles;
12
+ exports.getExistingFiles = getExistingFiles;
13
+ exports.getFilesAbsolutePath = getFilesAbsolutePath;
14
+ exports.setFiles = setFiles;
15
+ exports.getFileBlocks = getFileBlocks;
16
+ const fs_1 = __importDefault(require("fs"));
17
+ const os_1 = __importDefault(require("os"));
18
+ const path_1 = __importDefault(require("path"));
19
+ const child_process_1 = require("child_process");
20
+ const util_1 = require("util");
21
+ const diff_1 = require("diff");
22
+ const picocolors_1 = require("picocolors");
23
+ const worker_threads_1 = require("worker_threads");
24
+ const file_1 = require("./common/util/file");
25
+ const object_1 = require("./common/util/object");
26
+ const project_file_tree_1 = require("./common/project-file-tree");
27
+ const parse_1 = require("./code-map/parse");
28
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
29
+ let projectRoot;
30
+ function setProjectRoot(dir) {
31
+ const newDir = path_1.default.resolve(dir || getCurrentDirectory());
32
+ if (fs_1.default.existsSync(newDir)) {
33
+ if (projectRoot) {
34
+ console.log((0, picocolors_1.green)('\nDirectory change:'), `Manicode will read and write files in "${newDir}".\n`);
35
+ }
36
+ projectRoot = newDir;
37
+ return newDir;
38
+ }
39
+ return projectRoot;
40
+ }
41
+ function getProjectRoot() {
42
+ return projectRoot;
43
+ }
44
+ function getCurrentDirectory() {
45
+ try {
46
+ return process.cwd();
47
+ }
48
+ catch (error) {
49
+ throw new Error('Failed to get current working directory. Is this directory deleted?', { cause: error });
50
+ }
51
+ }
52
+ let cachedProjectFileContext;
53
+ function initProjectFileContextWithWorker(dir) {
54
+ // NOTE: Uses the built worker-script-project-context.js within dist.
55
+ // So you need to run `bun run build` before running locally.
56
+ const workerPath = __filename.endsWith('.ts')
57
+ ? path_1.default.join(__dirname, '..', 'dist', 'worker-script-project-context.js')
58
+ : path_1.default.join(__dirname, 'worker-script-project-context.js');
59
+ const worker = new worker_threads_1.Worker(workerPath);
60
+ worker.postMessage({ dir });
61
+ return new Promise((resolve, reject) => {
62
+ worker.on('message', (initFileContext) => {
63
+ worker.terminate();
64
+ cachedProjectFileContext = initFileContext;
65
+ resolve(initFileContext);
66
+ });
67
+ });
68
+ }
69
+ const getProjectFileContext = async (projectRoot, lastFileVersion, fileVersions) => {
70
+ const gitChanges = await getGitChanges();
71
+ const changesSinceLastChat = getChangesSinceLastFileVersion(lastFileVersion);
72
+ const updatedProps = {
73
+ gitChanges,
74
+ changesSinceLastChat,
75
+ fileVersions,
76
+ };
77
+ if (!cachedProjectFileContext ||
78
+ cachedProjectFileContext.currentWorkingDirectory !== projectRoot) {
79
+ const fileTree = (0, project_file_tree_1.getProjectFileTree)(projectRoot);
80
+ const flattenedNodes = (0, project_file_tree_1.flattenTree)(fileTree);
81
+ const allFilePaths = flattenedNodes
82
+ .filter((node) => node.type === 'file')
83
+ .map((node) => node.filePath);
84
+ const knowledgeFilePaths = allFilePaths.filter((filePath) => filePath.endsWith('knowledge.md'));
85
+ const knowledgeFiles = getExistingFiles(knowledgeFilePaths);
86
+ const shellConfigFiles = loadShellConfigFiles();
87
+ const fileTokenScores = await (0, parse_1.getFileTokenScores)(projectRoot, allFilePaths);
88
+ cachedProjectFileContext = {
89
+ currentWorkingDirectory: projectRoot,
90
+ fileTree,
91
+ fileTokenScores,
92
+ knowledgeFiles,
93
+ shellConfigFiles,
94
+ ...updatedProps,
95
+ };
96
+ }
97
+ else {
98
+ cachedProjectFileContext = {
99
+ ...cachedProjectFileContext,
100
+ ...updatedProps,
101
+ };
102
+ }
103
+ return cachedProjectFileContext;
104
+ };
105
+ exports.getProjectFileContext = getProjectFileContext;
106
+ async function getGitChanges() {
107
+ try {
108
+ const { stdout: status } = await execAsync('git status', {
109
+ cwd: projectRoot,
110
+ });
111
+ const { stdout: diff } = await execAsync('git diff', { cwd: projectRoot });
112
+ const { stdout: diffCached } = await execAsync('git diff --cached', {
113
+ cwd: projectRoot,
114
+ });
115
+ const { stdout: shortLogOutput } = await execAsync('git shortlog HEAD~10..HEAD', {
116
+ cwd: projectRoot,
117
+ });
118
+ const shortLogLines = shortLogOutput.trim().split('\n');
119
+ const lastCommitMessages = shortLogLines
120
+ .slice(1)
121
+ .reverse()
122
+ .map((line) => line.trim())
123
+ .join('\n');
124
+ return { status, diff, diffCached, lastCommitMessages };
125
+ }
126
+ catch (error) {
127
+ return { status: '', diff: '', diffCached: '', lastCommitMessages: '' };
128
+ }
129
+ }
130
+ function getChangesSinceLastFileVersion(lastFileVersion) {
131
+ const changes = Object.entries(lastFileVersion)
132
+ .map(([filePath, file]) => {
133
+ const fullFilePath = path_1.default.join(getProjectRoot(), filePath);
134
+ try {
135
+ const currentContent = fs_1.default.readFileSync(fullFilePath, 'utf8');
136
+ if (currentContent === file) {
137
+ return [filePath, null];
138
+ }
139
+ return [filePath, (0, diff_1.createPatch)(filePath, file, currentContent)];
140
+ }
141
+ catch (error) {
142
+ // console.error(`Error reading file ${fullFilePath}:`, error)
143
+ return [filePath, null];
144
+ }
145
+ })
146
+ .filter(([_, diff]) => diff !== null);
147
+ return Object.fromEntries(changes);
148
+ }
149
+ function getFiles(filePaths) {
150
+ const result = {};
151
+ const MAX_FILE_SIZE = 1024 * 1024; // 1MB in bytes
152
+ const ig = (0, project_file_tree_1.parseGitignore)(projectRoot);
153
+ for (const filePath of filePaths) {
154
+ const fullPath = path_1.default.join(projectRoot, filePath);
155
+ if (!fullPath.startsWith(projectRoot)) {
156
+ result[filePath] = '[FILE_OUTSIDE_PROJECT]';
157
+ continue;
158
+ }
159
+ if (ig.ignores(filePath)) {
160
+ result[filePath] = '[FILE_IGNORED]';
161
+ continue;
162
+ }
163
+ try {
164
+ const stats = fs_1.default.statSync(fullPath);
165
+ if (stats.size > MAX_FILE_SIZE) {
166
+ result[filePath] =
167
+ `[FILE_TOO_LARGE: ${(stats.size / (1024 * 1024)).toFixed(2)}MB]`;
168
+ }
169
+ else {
170
+ const content = fs_1.default.readFileSync(fullPath, 'utf8');
171
+ result[filePath] = content;
172
+ }
173
+ }
174
+ catch (error) {
175
+ result[filePath] = null;
176
+ }
177
+ }
178
+ return result;
179
+ }
180
+ function getExistingFiles(filePaths) {
181
+ return (0, object_1.filterObject)(getFiles(filePaths), (value) => value !== null);
182
+ }
183
+ function getFilesAbsolutePath(filePaths) {
184
+ const result = {};
185
+ for (const filePath of filePaths) {
186
+ try {
187
+ const content = fs_1.default.readFileSync(filePath, 'utf8');
188
+ result[filePath] = content;
189
+ }
190
+ catch (error) {
191
+ result[filePath] = null;
192
+ }
193
+ }
194
+ return result;
195
+ }
196
+ function setFiles(files) {
197
+ for (const [filePath, content] of Object.entries(files)) {
198
+ const fullPath = path_1.default.join(projectRoot, filePath);
199
+ fs_1.default.writeFileSync(fullPath, content, 'utf8');
200
+ }
201
+ }
202
+ function getFileBlocks(filePaths) {
203
+ const result = {};
204
+ for (const filePath of filePaths) {
205
+ const fullPath = path_1.default.join(projectRoot, filePath);
206
+ try {
207
+ const content = fs_1.default.readFileSync(fullPath, 'utf8');
208
+ result[filePath] = content;
209
+ }
210
+ catch (error) {
211
+ const fileDoesNotExist = error instanceof Error &&
212
+ error.message.includes('no such file or directory');
213
+ result[filePath] = fileDoesNotExist
214
+ ? '[FILE_DOES_NOT_EXIST]'
215
+ : '[FILE_READ_ERROR]';
216
+ if (!fileDoesNotExist) {
217
+ console.error(`Error reading file ${fullPath}:`, error instanceof Error ? error.message : error);
218
+ }
219
+ }
220
+ }
221
+ const fileBlocks = filePaths.map((filePath) => (0, file_1.createFileBlock)(filePath, result[filePath]));
222
+ return fileBlocks.join('\n');
223
+ }
224
+ const loadShellConfigFiles = () => {
225
+ const homeDir = os_1.default.homedir();
226
+ const configFiles = [
227
+ path_1.default.join(homeDir, '.bashrc'),
228
+ path_1.default.join(homeDir, '.bash_profile'),
229
+ path_1.default.join(homeDir, '.bash_login'),
230
+ path_1.default.join(homeDir, '.profile'),
231
+ path_1.default.join(homeDir, '.zshrc'),
232
+ path_1.default.join(homeDir, '.kshrc'),
233
+ ];
234
+ const files = getFilesAbsolutePath(configFiles);
235
+ return (0, object_1.filterObject)(files, (value) => value !== null);
236
+ };
237
+ /*
238
+ function getExportedTokensForFiles(
239
+ filePaths: string[]
240
+ ): Record<string, string[]> {
241
+ const result: Record<string, string[]> = {}
242
+ const fullFilePaths = filePaths.map((filePath) =>
243
+ path.join(projectRoot, filePath)
244
+ )
245
+ const program = ts.createProgram(fullFilePaths, {})
246
+
247
+ for (let i = 0; i < filePaths.length; i++) {
248
+ const filePath = filePaths[i]
249
+ const fullFilePath = fullFilePaths[i]
250
+ const sourceFile = program.getSourceFile(fullFilePath)
251
+ if (sourceFile) {
252
+ try {
253
+ const exportedTokens = getExportedTokens(sourceFile)
254
+ result[filePath] = exportedTokens
255
+ } catch (error) {
256
+ console.error(`Error processing file ${fullFilePath}:`, error)
257
+ result[filePath] = []
258
+ }
259
+ } else {
260
+ // console.error(`Could not find source file: ${fullFilePath}`)
261
+ result[filePath] = []
262
+ }
263
+ }
264
+
265
+ return result
266
+ }
267
+
268
+ function getExportedTokens(sourceFile: ts.SourceFile): string[] {
269
+ const exportedTokens: string[] = []
270
+
271
+ function visit(node: ts.Node) {
272
+ if (ts.isExportDeclaration(node)) {
273
+ if (node.exportClause && ts.isNamedExports(node.exportClause)) {
274
+ node.exportClause.elements.forEach((element) => {
275
+ exportedTokens.push(element.name.text)
276
+ })
277
+ }
278
+ } else if (
279
+ ts.isFunctionDeclaration(node) ||
280
+ ts.isClassDeclaration(node) ||
281
+ ts.isVariableStatement(node)
282
+ ) {
283
+ if (
284
+ node.modifiers?.some(
285
+ (modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword
286
+ )
287
+ ) {
288
+ if (ts.isFunctionDeclaration(node) || ts.isClassDeclaration(node)) {
289
+ if (node.name) {
290
+ exportedTokens.push(node.name.text)
291
+ }
292
+ } else if (ts.isVariableStatement(node)) {
293
+ node.declarationList.declarations.forEach((declaration) => {
294
+ if (ts.isIdentifier(declaration.name)) {
295
+ exportedTokens.push(declaration.name.text)
296
+ }
297
+ })
298
+ }
299
+ }
300
+ }
301
+
302
+ ts.forEachChild(node, visit)
303
+ }
304
+
305
+ visit(sourceFile)
306
+
307
+ return exportedTokens
308
+ }
309
+ */
310
+ const deleteFile = (fullPath) => {
311
+ try {
312
+ if (fs_1.default.existsSync(fullPath)) {
313
+ fs_1.default.unlinkSync(fullPath);
314
+ return true;
315
+ }
316
+ return false;
317
+ }
318
+ catch (error) {
319
+ console.error(`Error deleting file ${fullPath}:`, error);
320
+ return false;
321
+ }
322
+ };
323
+ exports.deleteFile = deleteFile;
324
+ //# sourceMappingURL=project-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-files.js","sourceRoot":"","sources":["../src/project-files.ts"],"names":[],"mappings":";;;;;;AA0BA,wCAaC;AAED,wCAEC;AAeD,4EAiBC;AA8ED,wEAmBC;AAED,4BA6BC;AAED,4CAKC;AACD,oDAWC;AAED,4BAKC;AAED,sCA+BC;AAtQD,4CAAmB;AACnB,4CAAmB;AACnB,gDAAuB;AACvB,iDAAoC;AACpC,+BAAgC;AAChC,+BAAkC;AAClC,2CAAkC;AAClC,mDAAuC;AAEvC,2CAIyB;AACzB,+CAAiD;AACjD,gEAIiC;AACjC,0CAAmD;AAEnD,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAA;AAEjC,IAAI,WAAmB,CAAA;AAEvB,SAAgB,cAAc,CAAC,GAAuB;IACpD,MAAM,MAAM,GAAG,cAAI,CAAC,OAAO,CAAC,GAAG,IAAI,mBAAmB,EAAE,CAAC,CAAA;IACzD,IAAI,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CACT,IAAA,kBAAK,EAAC,qBAAqB,CAAC,EAC5B,0CAA0C,MAAM,MAAM,CACvD,CAAA;QACH,CAAC;QACD,WAAW,GAAG,MAAM,CAAA;QACpB,OAAO,MAAM,CAAA;IACf,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,SAAgB,cAAc;IAC5B,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,GAAG,EAAE,CAAA;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,qEAAqE,EACrE,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAA;IACH,CAAC;AACH,CAAC;AAED,IAAI,wBAAwD,CAAA;AAE5D,SAAgB,gCAAgC,CAAC,GAAW;IAC1D,qEAAqE;IACrE,6DAA6D;IAC7D,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC3C,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,kCAAkC,CAAC;QACxE,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kCAAkC,CAAC,CAAA;IAC5D,MAAM,MAAM,GAAG,IAAI,uBAAM,CAAC,UAAiB,CAAC,CAAA;IAE5C,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;IAE3B,OAAO,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACzD,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,eAAe,EAAE,EAAE;YACvC,MAAM,CAAC,SAAS,EAAE,CAAA;YAClB,wBAAwB,GAAG,eAAe,CAAA;YAC1C,OAAO,CAAC,eAAe,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAEM,MAAM,qBAAqB,GAAG,KAAK,EACxC,WAAmB,EACnB,eAAuC,EACvC,YAA6B,EAC7B,EAAE;IACF,MAAM,UAAU,GAAG,MAAM,aAAa,EAAE,CAAA;IACxC,MAAM,oBAAoB,GAAG,8BAA8B,CAAC,eAAe,CAAC,CAAA;IAC5E,MAAM,YAAY,GAAG;QACnB,UAAU;QACV,oBAAoB;QACpB,YAAY;KACb,CAAA;IAED,IACE,CAAC,wBAAwB;QACzB,wBAAwB,CAAC,uBAAuB,KAAK,WAAW,EAChE,CAAC;QACD,MAAM,QAAQ,GAAG,IAAA,sCAAkB,EAAC,WAAW,CAAC,CAAA;QAChD,MAAM,cAAc,GAAG,IAAA,+BAAW,EAAC,QAAQ,CAAC,CAAA;QAC5C,MAAM,YAAY,GAAG,cAAc;aAChC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;aACtC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC/B,MAAM,kBAAkB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC1D,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAClC,CAAA;QACD,MAAM,cAAc,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAA;QAC3D,MAAM,gBAAgB,GAAG,oBAAoB,EAAE,CAAA;QAE/C,MAAM,eAAe,GAAG,MAAM,IAAA,0BAAkB,EAAC,WAAW,EAAE,YAAY,CAAC,CAAA;QAE3E,wBAAwB,GAAG;YACzB,uBAAuB,EAAE,WAAW;YACpC,QAAQ;YACR,eAAe;YACf,cAAc;YACd,gBAAgB;YAChB,GAAG,YAAY;SAChB,CAAA;IACH,CAAC;SAAM,CAAC;QACN,wBAAwB,GAAG;YACzB,GAAG,wBAAwB;YAC3B,GAAG,YAAY;SAChB,CAAA;IACH,CAAC;IAED,OAAO,wBAAwB,CAAA;AACjC,CAAC,CAAA;AA9CY,QAAA,qBAAqB,yBA8CjC;AAED,KAAK,UAAU,aAAa;IAC1B,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE;YACvD,GAAG,EAAE,WAAW;SACjB,CAAC,CAAA;QACF,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAA;QAC1E,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,mBAAmB,EAAE;YAClE,GAAG,EAAE,WAAW;SACjB,CAAC,CAAA;QACF,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,SAAS,CAChD,4BAA4B,EAC5B;YACE,GAAG,EAAE,WAAW;SACjB,CACF,CAAA;QACD,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACvD,MAAM,kBAAkB,GAAG,aAAa;aACrC,KAAK,CAAC,CAAC,CAAC;aACR,OAAO,EAAE;aACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B,IAAI,CAAC,IAAI,CAAC,CAAA;QAEb,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAA;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAA;IACzE,CAAC;AACH,CAAC;AAED,SAAgB,8BAA8B,CAC5C,eAAuC;IAEvC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;SAC5C,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;QACxB,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,CAAA;QAC1D,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,YAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YAC5D,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;gBAC5B,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAU,CAAA;YAClC,CAAC;YACD,OAAO,CAAC,QAAQ,EAAE,IAAA,kBAAW,EAAC,QAAQ,EAAE,IAAI,EAAE,cAAc,CAAC,CAAU,CAAA;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,8DAA8D;YAC9D,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAU,CAAA;QAClC,CAAC;IACH,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAuB,CAAA;IAC7D,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;AACpC,CAAC;AAED,SAAgB,QAAQ,CAAC,SAAmB;IAC1C,MAAM,MAAM,GAAkC,EAAE,CAAA;IAChD,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,CAAA,CAAC,eAAe;IACjD,MAAM,EAAE,GAAG,IAAA,kCAAc,EAAC,WAAW,CAAC,CAAA;IAEtC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QACjD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,QAAQ,CAAC,GAAG,wBAAwB,CAAA;YAC3C,SAAQ;QACV,CAAC;QACD,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,QAAQ,CAAC,GAAG,gBAAgB,CAAA;YACnC,SAAQ;QACV,CAAC;QACD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YACnC,IAAI,KAAK,CAAC,IAAI,GAAG,aAAa,EAAE,CAAC;gBAC/B,MAAM,CAAC,QAAQ,CAAC;oBACd,oBAAoB,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAA;YACpE,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;gBACjD,MAAM,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAA;YAC5B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAA;QACzB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAgB,gBAAgB,CAAC,SAAmB;IAClD,OAAO,IAAA,qBAAY,EAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAGjE,CAAA;AACH,CAAC;AACD,SAAgB,oBAAoB,CAAC,SAAmB;IACtD,MAAM,MAAM,GAAkC,EAAE,CAAA;IAChD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YACjD,MAAM,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAA;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAA;QACzB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAgB,QAAQ,CAAC,KAA6B;IACpD,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QACjD,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAC7C,CAAC;AACH,CAAC;AAED,SAAgB,aAAa,CAAC,SAAmB;IAC/C,MAAM,MAAM,GAA2B,EAAE,CAAA;IAEzC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QACjD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YACjD,MAAM,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAA;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,gBAAgB,GACpB,KAAK,YAAY,KAAK;gBACtB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAA;YAErD,MAAM,CAAC,QAAQ,CAAC,GAAG,gBAAgB;gBACjC,CAAC,CAAC,uBAAuB;gBACzB,CAAC,CAAC,mBAAmB,CAAA;YAEvB,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CACX,sBAAsB,QAAQ,GAAG,EACjC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC/C,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC5C,IAAA,sBAAe,EAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAC5C,CAAA;IAED,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,oBAAoB,GAAG,GAAG,EAAE;IAChC,MAAM,OAAO,GAAG,YAAE,CAAC,OAAO,EAAE,CAAA;IAC5B,MAAM,WAAW,GAAG;QAClB,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;QAC7B,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;QACnC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC;QACjC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;QAC9B,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC5B,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC7B,CAAA;IACD,MAAM,KAAK,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAA;IAC/C,OAAO,IAAA,qBAAY,EAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAGnD,CAAA;AACH,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwEE;AAEK,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAW,EAAE;IACtD,IAAI,CAAC;QACH,IAAI,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;YACvB,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAA;QACxD,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAXY,QAAA,UAAU,cAWtB"}
@@ -0,0 +1,11 @@
1
+ export type ToolHandler = (input: any, id: string) => Promise<string>;
2
+ export declare const handleScrapeWebPage: ToolHandler;
3
+ export declare const handleSearchManifoldMarkets: ToolHandler;
4
+ export declare const handleRunTerminalCommand: (input: {
5
+ command: string;
6
+ }, id: string, mode: "user" | "assistant") => Promise<{
7
+ result: string;
8
+ stdout: string;
9
+ stderr: string;
10
+ }>;
11
+ export declare const toolHandlers: Record<string, ToolHandler>;
@@ -0,0 +1,131 @@
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.toolHandlers = exports.handleRunTerminalCommand = exports.handleSearchManifoldMarkets = exports.handleScrapeWebPage = void 0;
7
+ const child_process_1 = require("child_process");
8
+ const path_1 = __importDefault(require("path"));
9
+ const picocolors_1 = require("picocolors");
10
+ const web_scraper_1 = require("./web-scraper");
11
+ const manifold_api_1 = require("./manifold-api");
12
+ const project_files_1 = require("./project-files");
13
+ const handleScrapeWebPage = async (input, id) => {
14
+ const { url } = input;
15
+ const content = await (0, web_scraper_1.scrapeWebPage)(url);
16
+ if (!content) {
17
+ return `<web_scraping_error url="${url}">Failed to scrape the web page.</web_scraping_error>`;
18
+ }
19
+ return `<web_scraped_content url="${url}">${content}</web_scraped_content>`;
20
+ };
21
+ exports.handleScrapeWebPage = handleScrapeWebPage;
22
+ const handleSearchManifoldMarkets = async (input, id) => {
23
+ const { query, limit = 5 } = input;
24
+ try {
25
+ const markets = await (0, manifold_api_1.searchManifoldMarkets)(query, limit);
26
+ return JSON.stringify(markets);
27
+ }
28
+ catch (error) {
29
+ const message = error instanceof Error ? error.message : error;
30
+ return `<manifold_search_error>Failed to search Manifold markets: ${message}</manifold_search_error>`;
31
+ }
32
+ };
33
+ exports.handleSearchManifoldMarkets = handleSearchManifoldMarkets;
34
+ const handleRunTerminalCommand = async (input, id, mode) => {
35
+ const { command } = input;
36
+ return new Promise((resolve) => {
37
+ let stdout = '';
38
+ let stderr = '';
39
+ const MAX_EXECUTION_TIME = 10_000;
40
+ if (mode === 'assistant') {
41
+ console.log();
42
+ console.log((0, picocolors_1.green)(`> ${command}`));
43
+ }
44
+ const childProcess = (0, child_process_1.spawn)(command, {
45
+ shell: true,
46
+ cwd: (0, project_files_1.getProjectRoot)(),
47
+ });
48
+ const timer = setTimeout(() => {
49
+ if (mode === 'assistant') {
50
+ childProcess.kill();
51
+ resolve({
52
+ result: formatResult(stdout, stderr, `Command timed out after ${MAX_EXECUTION_TIME / 1000} seconds. Partial results shown.`),
53
+ stdout,
54
+ stderr,
55
+ });
56
+ }
57
+ }, MAX_EXECUTION_TIME);
58
+ childProcess.stdout.on('data', (data) => {
59
+ process.stdout.write(data.toString());
60
+ stdout += data.toString();
61
+ });
62
+ childProcess.stderr.on('data', (data) => {
63
+ const dataStr = data.toString();
64
+ stderr += data.toString();
65
+ if (mode === 'user' &&
66
+ (
67
+ // Mac
68
+ dataStr.includes('command not found') ||
69
+ // Linux
70
+ dataStr.includes(': not found') ||
71
+ // Common
72
+ dataStr.includes('syntax error:') ||
73
+ // Linux
74
+ dataStr.includes('Syntax error:') ||
75
+ // Windows
76
+ dataStr.includes('is not recognized as an internal or external command'))) {
77
+ resolve({
78
+ result: 'command not found',
79
+ stdout,
80
+ stderr,
81
+ });
82
+ }
83
+ else {
84
+ process.stderr.write(data.toString());
85
+ }
86
+ });
87
+ childProcess.on('close', (code) => {
88
+ if (command.startsWith('cd ') && code === 0 && mode === 'user') {
89
+ const newWorkingDirectory = command.split(' ')[1];
90
+ (0, project_files_1.setProjectRoot)(path_1.default.join((0, project_files_1.getProjectRoot)(), newWorkingDirectory));
91
+ }
92
+ clearTimeout(timer);
93
+ resolve({
94
+ result: formatResult(stdout, stderr, 'Command completed', code),
95
+ stdout,
96
+ stderr,
97
+ });
98
+ if (mode === 'assistant') {
99
+ console.log((0, picocolors_1.green)(`Command finished with exit code: ${code}\n`));
100
+ }
101
+ });
102
+ childProcess.on('error', (error) => {
103
+ clearTimeout(timer);
104
+ resolve({
105
+ result: `<terminal_command_error>Failed to execute command: ${error.message}</terminal_command_error>`,
106
+ stdout,
107
+ stderr,
108
+ });
109
+ });
110
+ });
111
+ };
112
+ exports.handleRunTerminalCommand = handleRunTerminalCommand;
113
+ function formatResult(stdout, stderr, status, exitCode) {
114
+ let result = '<terminal_command_result>\n';
115
+ result += `<stdout>${stdout}</stdout>\n`;
116
+ result += `<stderr>${stderr}</stderr>\n`;
117
+ if (status !== undefined) {
118
+ result += `<status>${status}</status>\n`;
119
+ }
120
+ if (exitCode !== undefined && exitCode !== null) {
121
+ result += `<exit_code>${exitCode}</exit_code>\n`;
122
+ }
123
+ result += '</terminal_command_result>';
124
+ return result;
125
+ }
126
+ exports.toolHandlers = {
127
+ scrape_web_page: exports.handleScrapeWebPage,
128
+ search_manifold_markets: exports.handleSearchManifoldMarkets,
129
+ run_terminal_command: ((input, id) => (0, exports.handleRunTerminalCommand)(input, id, 'assistant').then((result) => result.result)),
130
+ };
131
+ //# sourceMappingURL=tool-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-handlers.js","sourceRoot":"","sources":["../src/tool-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function updateManicode(): Promise<void>;
@@ -0,0 +1,151 @@
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.updateManicode = updateManicode;
7
+ const child_process_1 = require("child_process");
8
+ const picocolors_1 = require("picocolors");
9
+ const web_scraper_1 = require("./web-scraper");
10
+ const package_json_1 = __importDefault(require("../package.json"));
11
+ const config_1 = require("./config");
12
+ async function updateManicode() {
13
+ if (!config_1.isProduction)
14
+ return;
15
+ const latestVersion = await getManicodeNpmVersion();
16
+ const isUpToDate = isNpmUpToDate(package_json_1.default.version, latestVersion);
17
+ if (!isUpToDate) {
18
+ const installerInfo = detectInstaller();
19
+ if (!installerInfo) {
20
+ console.log((0, picocolors_1.yellow)("There's a new version available! Please update manicode to prevent errors"));
21
+ return;
22
+ }
23
+ console.log((0, picocolors_1.green)(`Updating Manicode using ${installerInfo.installer}...`));
24
+ try {
25
+ runUpdateManicode(installerInfo);
26
+ console.log((0, picocolors_1.green)('Manicode updated successfully.'));
27
+ console.log((0, picocolors_1.green)('Manicode out! Please restart Manicode to use the new version.'));
28
+ process.exit(0);
29
+ }
30
+ catch (error) {
31
+ console.error('Failed to update Manicode.');
32
+ }
33
+ }
34
+ }
35
+ async function getManicodeNpmVersion() {
36
+ try {
37
+ const result = (0, child_process_1.execSync)('npm view manicode version', {
38
+ encoding: 'utf-8',
39
+ stdio: 'pipe', // Suppress all output
40
+ });
41
+ const versionMatch = result.match(/(\d+\.\d+\.\d+)/);
42
+ if (versionMatch) {
43
+ return versionMatch[1];
44
+ }
45
+ }
46
+ catch (error) { }
47
+ // Fallback to web scraping if npm command fails
48
+ const url = 'https://www.npmjs.com/package/manicode';
49
+ const content = await (0, web_scraper_1.scrapeWebPage)(url);
50
+ const latestVersionRegex = /"latest":"(\d+\.\d+\.\d+)"/;
51
+ const match = content.match(latestVersionRegex);
52
+ return match ? match[1] : '';
53
+ }
54
+ function isNpmUpToDate(currentVersion, latestVersion) {
55
+ const current = currentVersion.split('.').map(Number);
56
+ const latest = latestVersion.split('.').map(Number);
57
+ for (let i = 0; i < 3; i++) {
58
+ if (current[i] < latest[i])
59
+ return false;
60
+ if (current[i] > latest[i])
61
+ return true;
62
+ }
63
+ return true;
64
+ }
65
+ function detectInstaller() {
66
+ let manicodeLocation = '';
67
+ try {
68
+ if (process.platform === 'win32') {
69
+ manicodeLocation = (0, child_process_1.execSync)('where manicode').toString().trim();
70
+ }
71
+ else {
72
+ manicodeLocation = (0, child_process_1.execSync)('which manicode').toString().trim();
73
+ }
74
+ }
75
+ catch (error) {
76
+ // Continue with empty location - could be a local installation
77
+ }
78
+ const path = manicodeLocation.split('\n')[0] ?? '';
79
+ const pathIncludesNodeModules = path.includes('node_modules');
80
+ const npmUserAgent = process.env.npm_config_user_agent ?? '';
81
+ // Check for package manager script environments
82
+ const isYarnScript = process.env.npm_lifecycle_script?.includes('yarn');
83
+ const isPnpmScript = process.env.npm_lifecycle_script?.includes('pnpm');
84
+ const isBunScript = process.env.npm_lifecycle_script?.includes('bun');
85
+ const isNpmScript = process.env.npm_execpath?.endsWith('npm-cli.js') ||
86
+ npmUserAgent.includes('npm');
87
+ // Mac: /Users/jahooma/.yarn/bin/manicode
88
+ if (isYarnScript || path.includes('.yarn')) {
89
+ return {
90
+ installer: 'yarn',
91
+ scope: path.includes('.yarn') ? 'global' : 'local',
92
+ };
93
+ }
94
+ // Windows: ~/AppData/Local/pnpm/store
95
+ // macOS: ~/Library/pnpm/store
96
+ // Linux: ~/.local/share/pnpm/store
97
+ if (isPnpmScript || path.includes('pnpm')) {
98
+ return {
99
+ installer: 'pnpm',
100
+ scope: path.includes('pnpm') ? 'global' : 'local',
101
+ };
102
+ }
103
+ // Mac: /Users/jahooma/.bun/install/cache
104
+ if (isBunScript || path.includes('.bun')) {
105
+ return {
106
+ installer: 'bun',
107
+ scope: path.includes('.bun') ? 'global' : 'local',
108
+ };
109
+ }
110
+ // /usr/local/lib/node_modules on macOS/Linux or %AppData%\npm/node_modules on Windows
111
+ // OR: .nvm/versions/node/v18.17.0/bin/manicode on mac
112
+ const isGlobalNpmPath = path.includes('npm') || path.startsWith('/usr/') || path.includes('.nvm');
113
+ if (isNpmScript || isGlobalNpmPath) {
114
+ return {
115
+ installer: 'npm',
116
+ scope: isGlobalNpmPath ? 'global' : 'local',
117
+ };
118
+ }
119
+ return undefined;
120
+ }
121
+ function runUpdateManicode(installerInfo) {
122
+ let command;
123
+ const isGlobal = installerInfo.scope === 'global';
124
+ switch (installerInfo.installer) {
125
+ case 'npm':
126
+ command = `npm ${isGlobal ? 'install -g' : 'install'} manicode@latest`;
127
+ break;
128
+ case 'yarn':
129
+ command = `yarn ${isGlobal ? 'global add' : 'add'} manicode@latest`;
130
+ break;
131
+ case 'pnpm':
132
+ command = `pnpm add ${isGlobal ? '-g' : ''} manicode@latest`;
133
+ break;
134
+ case 'bun':
135
+ command = `bun add ${isGlobal ? '-g' : ''} manicode@latest`;
136
+ break;
137
+ default:
138
+ throw new Error(`Unsupported installer: ${installerInfo.installer} ${installerInfo.scope}`);
139
+ }
140
+ (0, child_process_1.execSync)(command, { stdio: 'inherit' });
141
+ }
142
+ function restartManicode() {
143
+ const child = (0, child_process_1.spawn)('manicode', [...process.argv.slice(2), '--post-update'], {
144
+ detached: false,
145
+ stdio: 'inherit',
146
+ });
147
+ child.on('exit', (code) => {
148
+ process.exit(code ?? 0);
149
+ });
150
+ }
151
+ //# sourceMappingURL=update-manicode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-manicode.js","sourceRoot":"","sources":["../src/update-manicode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function scrapeWebPage(url: string): Promise<string>;
2
+ export declare function parseUrlsFromContent(content: string): string[];
3
+ export declare function getScrapedContentBlocks(urls: string[]): Promise<string[]>;