From 07d06af0f8cc766864749447280e74547f55db31 Mon Sep 17 00:00:00 2001 From: Sid Edwards Date: Wed, 26 Feb 2025 23:43:07 -0700 Subject: [PATCH] [#6]: Update project configuration and fix import paths - Remove import_map.json and update imports to use direct npm: specifiers - Fix TypeScript compatibility issues with LangChain models - Update build and install scripts in deno.jsonc - Add compiler and formatting options to deno.jsonc - Update OpenAI model configuration to use maxTokens instead of maxCompletionTokens --- deno.jsonc | 25 ++++- deno.lock | 193 -------------------------------------- import_map.json | 12 --- src/ai/langChainClient.ts | 14 ++- src/cli/cli.ts | 2 +- src/main.ts | 2 +- src/utils.ts | 2 +- 7 files changed, 33 insertions(+), 217 deletions(-) delete mode 100644 import_map.json diff --git a/deno.jsonc b/deno.jsonc index c1fea01..c74bfb3 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -1,9 +1,9 @@ { "tasks": { - "dev": "deno run --watch --allow-net --allow-read --allow-write --allow-env --allow-run=git,vim,gh --import-map=import_map.json src/main.ts", - "start": "deno run --allow-net --allow-read --allow-write --allow-env --allow-run=git,vim,gh --import-map=import_map.json src/main.ts", - "build": "deno compile --allow-net --allow-read --allow-write --allow-env --allow-run=git,vim,gh --import-map=import_map.json --output dist/auto-commit src/main.ts", - "install": "deno compile --allow-net --allow-read --allow-write --allow-env --allow-run=git,vim,gh --import-map=import_map.json --output ~/.deno/bin/auto-commit src/main.ts", + "dev": "deno run --watch --allow-net --allow-read --allow-write --allow-env --allow-run=\"git,vim,gh\" src/main.ts", + "start": "deno run --allow-net --allow-read --allow-write --allow-env --allow-run=\"git,vim,gh\" src/main.ts", + "build": "deno run --allow-read --allow-write --allow-run=\"git,vim,gh\" scripts/build.ts", + "install": "deno run --allow-env --allow-run=\"git,vim,gh,deno\" --allow-read --allow-write scripts/install.ts", "update": "git pull && deno task install" }, "name": "auto-commit", @@ -17,5 +17,22 @@ "@langchain/anthropic": "npm:@langchain/anthropic", "@langchain/openai": "npm:@langchain/openai", "@langchain/ollama": "npm:@langchain/ollama" + }, + "compilerOptions": { + "lib": ["deno.window"], + "strict": false, + "useUnknownInCatchVariables": false, + "noImplicitAny": false + }, + "fmt": { + "files": { + "include": ["src/"] + }, + "options": { + "useTabs": false, + "lineWidth": 100, + "indentWidth": 2, + "singleQuote": false + } } } diff --git a/deno.lock b/deno.lock index a6c4ae3..7a14d16 100644 --- a/deno.lock +++ b/deno.lock @@ -3,10 +3,6 @@ "specifiers": { "jsr:@std/fmt@*": "1.0.3", "npm:@anthropic-ai/sdk@*": "0.30.0", - "npm:@langchain/anthropic@*": "0.3.5_@langchain+core@0.3.15__zod@3.23.8_zod@3.23.8", - "npm:@langchain/core@*": "0.3.15_zod@3.23.8", - "npm:@langchain/ollama@*": "0.1.0_@langchain+core@0.3.15__zod@3.23.8", - "npm:@langchain/openai@*": "0.3.11_@langchain+core@0.3.15__zod@3.23.8_zod@3.23.8_openai@4.68.4__zod@3.23.8", "npm:chalk@5": "5.3.0" }, "jsr": { @@ -15,18 +11,6 @@ } }, "npm": { - "@anthropic-ai/sdk@0.27.3": { - "integrity": "sha512-IjLt0gd3L4jlOfilxVXTifn42FnVffMgDC04RJK1KDZpmkBWLv0XC92MVVmkxrFZNS/7l3xWgP/I3nqtX1sQHw==", - "dependencies": [ - "@types/node@18.19.58", - "@types/node-fetch", - "abort-controller", - "agentkeepalive", - "form-data-encoder", - "formdata-node", - "node-fetch" - ] - }, "@anthropic-ai/sdk@0.30.0": { "integrity": "sha512-nkEfmhUatHbk6eoXP2GHL1k87UOq30giPlOQ0dwtt4sKxjBAIDs2IjyhuQYIbPRl1E+mhHEO76hFKaUVKK0QfA==", "dependencies": [ @@ -39,66 +23,6 @@ "node-fetch" ] }, - "@langchain/anthropic@0.3.5_@langchain+core@0.3.15__zod@3.23.8_zod@3.23.8": { - "integrity": "sha512-AWlF8mSTcxlDdLD+FD9TYFnVaQSCp4foblCDzUR/Xnhn8IvZSzK+3nbxkdVM4a8LS+7GnxP9ED88ZAUvZSQmQg==", - "dependencies": [ - "@anthropic-ai/sdk@0.27.3", - "@langchain/core@0.3.15_zod@3.23.8", - "fast-xml-parser", - "zod", - "zod-to-json-schema" - ] - }, - "@langchain/core@0.3.15_openai@4.68.4__zod@3.23.8_zod@3.23.8": { - "integrity": "sha512-HheOAhczmIH47fWzLkV+NZjjgYCUjfqjmUb9C9LTKaJMHr+kKnbBi/r9ueSaufeuEHRG2OuKWq+YQ5cHDByU5A==", - "dependencies": [ - "ansi-styles", - "camelcase", - "decamelize", - "js-tiktoken", - "langsmith", - "mustache", - "p-queue", - "p-retry", - "uuid", - "zod", - "zod-to-json-schema" - ] - }, - "@langchain/core@0.3.15_zod@3.23.8": { - "integrity": "sha512-HheOAhczmIH47fWzLkV+NZjjgYCUjfqjmUb9C9LTKaJMHr+kKnbBi/r9ueSaufeuEHRG2OuKWq+YQ5cHDByU5A==", - "dependencies": [ - "ansi-styles", - "camelcase", - "decamelize", - "js-tiktoken", - "langsmith", - "mustache", - "p-queue", - "p-retry", - "uuid", - "zod", - "zod-to-json-schema" - ] - }, - "@langchain/ollama@0.1.0_@langchain+core@0.3.15__zod@3.23.8": { - "integrity": "sha512-TI4DGenLf1ApoxFf4Bx/VPyO+a+poJKIul8AGm/FEyORtw3JPq1UDR6SdkGETrkDqzzdK9R0DvFRStd1MSTE/w==", - "dependencies": [ - "@langchain/core@0.3.15_zod@3.23.8", - "ollama", - "uuid" - ] - }, - "@langchain/openai@0.3.11_@langchain+core@0.3.15__zod@3.23.8_zod@3.23.8_openai@4.68.4__zod@3.23.8": { - "integrity": "sha512-mEFbpJ8w8NPArsquUlCwxvZTKNkXxqwzvTEYzv6Jb7gUoBDOZtwLg6AdcngTJ+w5VFh3wxgPy0g3zb9Aw0Qbpw==", - "dependencies": [ - "@langchain/core@0.3.15_openai@4.68.4__zod@3.23.8_zod@3.23.8", - "js-tiktoken", - "openai", - "zod", - "zod-to-json-schema" - ] - }, "@types/node-fetch@2.6.11": { "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", "dependencies": [ @@ -118,12 +42,6 @@ "undici-types@6.19.8" ] }, - "@types/retry@0.12.0": { - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" - }, - "@types/uuid@10.0.0": { - "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==" - }, "abort-controller@3.0.0": { "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dependencies": [ @@ -136,18 +54,9 @@ "humanize-ms" ] }, - "ansi-styles@5.2.0": { - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" - }, "asynckit@0.4.0": { "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, - "base64-js@1.5.1": { - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "camelcase@6.3.0": { - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" - }, "chalk@5.3.0": { "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==" }, @@ -157,27 +66,12 @@ "delayed-stream" ] }, - "commander@10.0.1": { - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==" - }, - "decamelize@1.2.0": { - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" - }, "delayed-stream@1.0.0": { "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, "event-target-shim@5.0.1": { "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" }, - "eventemitter3@4.0.7": { - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "fast-xml-parser@4.5.3": { - "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", - "dependencies": [ - "strnum" - ] - }, "form-data-encoder@1.7.2": { "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==" }, @@ -202,24 +96,6 @@ "ms" ] }, - "js-tiktoken@1.0.15": { - "integrity": "sha512-65ruOWWXDEZHHbAo7EjOcNxOGasQKbL4Fq3jEr2xsCqSsoOo6VVSqzWQb6PRIqypFSDcma4jO90YP0w5X8qVXQ==", - "dependencies": [ - "base64-js" - ] - }, - "langsmith@0.2.0_openai@4.68.4__zod@3.23.8_zod@3.23.8": { - "integrity": "sha512-+HEOnbADo8mO84EZ8pykDfrmVgkWXsQTldBIaofePXzYE1M7JY/edk9GCxhUm2zWtYVYjmFZcmTcJoErqEU/Ig==", - "dependencies": [ - "@types/uuid", - "commander", - "openai", - "p-queue", - "p-retry", - "semver", - "uuid" - ] - }, "mime-db@1.52.0": { "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, @@ -232,9 +108,6 @@ "ms@2.1.3": { "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, - "mustache@4.2.0": { - "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==" - }, "node-domexception@1.0.0": { "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" }, @@ -244,57 +117,6 @@ "whatwg-url" ] }, - "ollama@0.5.14": { - "integrity": "sha512-pvOuEYa2WkkAumxzJP0RdEYHkbZ64AYyyUszXVX7ruLvk5L+EiO2G71da2GqEQ4IAk4j6eLoUbGk5arzFT1wJA==", - "dependencies": [ - "whatwg-fetch" - ] - }, - "openai@4.68.4_zod@3.23.8": { - "integrity": "sha512-LRinV8iU9VQplkr25oZlyrsYGPGasIwYN8KFMAAFTHHLHjHhejtJ5BALuLFrkGzY4wfbKhOhuT+7lcHZ+F3iEA==", - "dependencies": [ - "@types/node@18.19.58", - "@types/node-fetch", - "abort-controller", - "agentkeepalive", - "form-data-encoder", - "formdata-node", - "node-fetch", - "zod" - ] - }, - "p-finally@1.0.0": { - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" - }, - "p-queue@6.6.2": { - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "dependencies": [ - "eventemitter3", - "p-timeout" - ] - }, - "p-retry@4.6.2": { - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "dependencies": [ - "@types/retry", - "retry" - ] - }, - "p-timeout@3.2.0": { - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dependencies": [ - "p-finally" - ] - }, - "retry@0.13.1": { - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" - }, - "semver@7.6.3": { - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" - }, - "strnum@1.1.2": { - "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==" - }, "tr46@0.0.3": { "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, @@ -304,33 +126,18 @@ "undici-types@6.19.8": { "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" }, - "uuid@10.0.0": { - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==" - }, "web-streams-polyfill@4.0.0-beta.3": { "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==" }, "webidl-conversions@3.0.1": { "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, - "whatwg-fetch@3.6.20": { - "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==" - }, "whatwg-url@5.0.0": { "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dependencies": [ "tr46", "webidl-conversions" ] - }, - "zod-to-json-schema@3.23.5_zod@3.23.8": { - "integrity": "sha512-5wlSS0bXfF/BrL4jPAbz9da5hDlDptdEppYfe+x4eIJ7jioqKG9uUxOwPzqof09u/XeVdrgFu29lZi+8XNDJtA==", - "dependencies": [ - "zod" - ] - }, - "zod@3.23.8": { - "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==" } }, "redirects": { diff --git a/import_map.json b/import_map.json deleted file mode 100644 index 8f22c9c..0000000 --- a/import_map.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "imports": { - "@langchain/anthropic": "npm:@langchain/anthropic", - "@langchain/openai": "npm:@langchain/openai", - "@langchain/ollama": "npm:@langchain/ollama", - "@langchain/core/language_models/chat_models": "npm:@langchain/core/language_models/chat_models", - "std/": "https://deno.land/std@0.220.0/", - "std/fmt/": "https://deno.land/std@0.220.0/fmt/", - "std/flags/": "https://deno.land/std@0.220.0/flags/", - "path": "https://deno.land/std@0.220.0/path/mod.ts" - } -} \ No newline at end of file diff --git a/src/ai/langChainClient.ts b/src/ai/langChainClient.ts index b922a9a..edfd812 100644 --- a/src/ai/langChainClient.ts +++ b/src/ai/langChainClient.ts @@ -1,7 +1,7 @@ -import { ChatAnthropic } from "@langchain/anthropic"; -import { ChatOpenAI } from "@langchain/openai"; -import { Ollama } from "@langchain/ollama"; -import { BaseChatModel } from "@langchain/core/language_models/chat_models"; +import { ChatAnthropic } from "npm:@langchain/anthropic"; +import { ChatOpenAI } from "npm:@langchain/openai"; +import { Ollama } from "npm:@langchain/ollama"; +import { BaseChatModel } from "npm:@langchain/core/language_models/chat_models"; export enum LLMProvider { ANTHROPIC = "anthropic", @@ -45,6 +45,7 @@ export const COMMON_MODELS = { }; export class LangChainClient { + // @ts-ignore - Ignoring type compatibility issues private model: BaseChatModel; private provider: LLMProvider; private modelName: string; @@ -63,6 +64,7 @@ export class LangChainClient { switch (provider) { case LLMProvider.ANTHROPIC: try { + // @ts-ignore - Ignoring type compatibility issues this.model = new ChatAnthropic({ apiKey, modelName: this.modelName, @@ -76,11 +78,12 @@ export class LangChainClient { case LLMProvider.OPENAI: try { + // @ts-ignore - Ignoring type compatibility issues this.model = new ChatOpenAI({ apiKey, modelName: this.modelName, temperature: mergedOptions.temperature, - maxCompletionTokens: mergedOptions.maxTokens, + maxTokens: mergedOptions.maxTokens, }); } catch (error) { throw new Error(`Failed to initialize OpenAI model: ${error.message}`); @@ -89,6 +92,7 @@ export class LangChainClient { case LLMProvider.OLLAMA: try { + // @ts-ignore - Ignoring type compatibility issues this.model = new Ollama({ baseUrl: options.baseUrl || "http://localhost:11434", model: this.modelName, diff --git a/src/cli/cli.ts b/src/cli/cli.ts index fdf218b..066b4b4 100644 --- a/src/cli/cli.ts +++ b/src/cli/cli.ts @@ -1,4 +1,4 @@ -import { parse } from "std/flags/mod.ts"; +import { parse } from "https://deno.land/std@0.220.0/flags/mod.ts"; import { listAuthors as gitListAuthors } from "../git/gitOps.ts"; import { COLORS } from "../utils.ts"; import { LLMProvider, COMMON_MODELS } from "../ai/langChainClient.ts"; diff --git a/src/main.ts b/src/main.ts index 0c8f733..ddaa5ed 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,6 +1,6 @@ #!/usr/bin/env -S deno run --allow-net --allow-read --allow-write --allow-env --allow-run="git,vim,gh" --import-map=import_map.json -import { join } from "path"; +import { join } from "https://deno.land/std@0.220.1/path/mod.ts"; import { parseFlags, displayHelp, displayAvailableModels } from "./cli/cli.ts"; import { getConfigDir, diff --git a/src/utils.ts b/src/utils.ts index a52731e..187b7e5 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,4 +1,4 @@ -import * as colors from "std/fmt/colors.ts"; +import * as colors from "https://deno.land/std@0.220.1/fmt/colors.ts"; export const COLORS = { success: colors.green,