Dax Raad 1 год назад
Родитель
Сommit
4767276a0e
6 измененных файлов с 42 добавлено и 56 удалено
  1. 0 27
      js/CONTEXT.md
  2. 0 27
      js/OpenCode.md
  3. 2 1
      js/src/app/config.ts
  4. 4 1
      js/src/bun/index.ts
  5. 1 0
      js/src/index.ts
  6. 35 0
      js/src/llm/llm.ts

+ 0 - 27
js/CONTEXT.md

@@ -1,27 +0,0 @@
-# OpenCode Context
-
-## Build/Test Commands
-
-- `bun install` - Install dependencies
-- `bun run index.ts` - Run the application
-- `bun build src/index.ts --compile --outfile ./dist/opencode` - Build executable
-- `bun test` - Run all tests
-- `bun test <pattern>` - Run specific test files
-- `bun test --test-name-pattern <regex>` - Run tests matching pattern
-
-## Code Style & Conventions
-
-- TypeScript with Bun runtime
-- ES modules (`"type": "module"`)
-- Namespace-based organization (e.g., `Tool.define`, `App.provide`)
-- Zod for schema validation and type safety
-- Async/await patterns throughout
-- Structured logging with service-based loggers (`Log.create({ service: "name" })`)
-- Tool pattern: define tools with `Tool.define()` wrapper for metadata/timing
-- Context pattern: use `Context.create()` for dependency injection
-- Import style: Node.js built-ins with `node:` prefix, relative imports with explicit extensions
-- Error handling: try/catch with structured logging
-- File organization: group by feature in `src/` with index files for exports
-- Test files: co-located in `test/` directory, use Bun's built-in test runner
-- Naming: camelCase for variables/functions, PascalCase for namespaces/types
-

+ 0 - 27
js/OpenCode.md

@@ -1,27 +0,0 @@
-# OpenCode Context
-
-## Build/Test Commands
-
-- `bun install` - Install dependencies
-- `bun run index.ts` - Run the application
-- `bun build src/index.ts --compile --outfile ./dist/opencode` - Build executable
-- `bun test` - Run all tests
-- `bun test <pattern>` - Run specific test files
-- `bun test --test-name-pattern <regex>` - Run tests matching pattern
-
-## Code Style & Conventions
-
-- TypeScript with Bun runtime
-- ES modules (`"type": "module"`)
-- Namespace-based organization (e.g., `Tool.define`, `App.provide`)
-- Zod for schema validation and type safety
-- Async/await patterns throughout
-- Structured logging with service-based loggers (`Log.create({ service: "name" })`)
-- Tool pattern: define tools with `Tool.define()` wrapper for metadata/timing
-- Context pattern: use `Context.create()` for dependency injection
-- Import style: Node.js built-ins with `node:` prefix, relative imports with explicit extensions
-- Error handling: try/catch with structured logging
-- File organization: group by feature in `src/` with index files for exports
-- Test files: co-located in `test/` directory, use Bun's built-in test runner
-- Naming: camelCase for variables/functions, PascalCase for namespaces/types
-- **Variable declarations: Prefer `const` over `let` unless reassignment is necessary**

+ 2 - 1
js/src/app/config.ts

@@ -15,8 +15,9 @@ export namespace Config {
       outputCached: z.number(),
     }),
     contextWindow: z.number(),
-    maxTokens: z.number(),
+    maxTokens: z.number().optional(),
     attachment: z.boolean(),
+    reasoning: z.boolean().optional(),
   });
   export type Model = z.output<typeof Model>;
 

+ 4 - 1
js/src/bun/index.ts

@@ -7,7 +7,10 @@ export namespace BunProc {
     cmd: string[],
     options?: Bun.SpawnOptions.OptionsObject<any, any, any>,
   ) {
-    const root = path.resolve(process.cwd(), process.argv0);
+    const root =
+      process.argv0 !== "bun"
+        ? path.resolve(process.cwd(), process.argv0)
+        : process.argv0;
     log.info("running", {
       cmd: [root, ...cmd],
       options,

+ 1 - 0
js/src/index.ts

@@ -94,6 +94,7 @@ cli
       const providers = await LLM.providers();
       const providerID = Object.keys(providers)[0];
       const modelID = Object.keys(providers[providerID].info.models!)[0];
+      console.log("using", providerID, modelID);
       const result = await Session.chat({
         sessionID: session.id,
         providerID,

+ 35 - 0
js/src/llm/llm.ts

@@ -35,10 +35,45 @@ export namespace LLM {
         },
       },
     },
+    openai: {
+      models: {
+        "codex-mini-latest": {
+          name: "Codex Mini",
+          cost: {
+            input: 1.5 / 1_000_000,
+            inputCached: 0.375 / 1_000_000,
+            output: 6.0 / 1_000_000,
+            outputCached: 0.0 / 1_000_000,
+          },
+          contextWindow: 200000,
+          maxTokens: 100000,
+          attachment: true,
+          reasoning: true,
+        },
+      },
+    },
+    google: {
+      models: {
+        "gemini-2.5-pro-preview-03-25": {
+          name: "Gemini 2.5 Pro",
+          cost: {
+            input: 1.25 / 1_000_000,
+            inputCached: 0 / 1_000_000,
+            output: 10 / 1_000_000,
+            outputCached: 0 / 1_000_000,
+          },
+          contextWindow: 1000000,
+          maxTokens: 50000,
+          attachment: true,
+        },
+      },
+    },
   };
 
   const AUTODETECT: Record<string, string[]> = {
     anthropic: ["ANTHROPIC_API_KEY"],
+    openai: ["OPENAI_API_KEY"],
+    google: ["GOOGLE_GENERATIVE_AI_API_KEY"],
   };
 
   const state = App.state("llm", async (app) => {