gencode-ai 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gencode/settings.local.json +7 -0
- package/README.md +20 -102
- package/dist/agent/agent.d.ts +43 -2
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +90 -17
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/types.d.ts +9 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/cli/components/AllModelsSelector.d.ts +11 -0
- package/dist/cli/components/AllModelsSelector.d.ts.map +1 -0
- package/dist/cli/components/AllModelsSelector.js +153 -0
- package/dist/cli/components/AllModelsSelector.js.map +1 -0
- package/dist/cli/components/App.d.ts +8 -1
- package/dist/cli/components/App.d.ts.map +1 -1
- package/dist/cli/components/App.js +276 -40
- package/dist/cli/components/App.js.map +1 -1
- package/dist/cli/components/CommandSuggestions.d.ts.map +1 -1
- package/dist/cli/components/CommandSuggestions.js +3 -0
- package/dist/cli/components/CommandSuggestions.js.map +1 -1
- package/dist/cli/components/Header.d.ts +1 -1
- package/dist/cli/components/Header.d.ts.map +1 -1
- package/dist/cli/components/Header.js +4 -6
- package/dist/cli/components/Header.js.map +1 -1
- package/dist/cli/components/Logo.d.ts +1 -0
- package/dist/cli/components/Logo.d.ts.map +1 -1
- package/dist/cli/components/Logo.js +16 -3
- package/dist/cli/components/Logo.js.map +1 -1
- package/dist/cli/components/Messages.d.ts +17 -3
- package/dist/cli/components/Messages.d.ts.map +1 -1
- package/dist/cli/components/Messages.js +70 -18
- package/dist/cli/components/Messages.js.map +1 -1
- package/dist/cli/components/ModelSelector.d.ts +7 -7
- package/dist/cli/components/ModelSelector.d.ts.map +1 -1
- package/dist/cli/components/ModelSelector.js +116 -33
- package/dist/cli/components/ModelSelector.js.map +1 -1
- package/dist/cli/components/PermissionPrompt.d.ts +60 -0
- package/dist/cli/components/PermissionPrompt.d.ts.map +1 -0
- package/dist/cli/components/PermissionPrompt.js +192 -0
- package/dist/cli/components/PermissionPrompt.js.map +1 -0
- package/dist/cli/components/ProviderManager.d.ts +8 -0
- package/dist/cli/components/ProviderManager.d.ts.map +1 -0
- package/dist/cli/components/ProviderManager.js +280 -0
- package/dist/cli/components/ProviderManager.js.map +1 -0
- package/dist/cli/components/Spinner.d.ts +7 -2
- package/dist/cli/components/Spinner.d.ts.map +1 -1
- package/dist/cli/components/Spinner.js +116 -25
- package/dist/cli/components/Spinner.js.map +1 -1
- package/dist/cli/components/TodoList.d.ts +7 -0
- package/dist/cli/components/TodoList.d.ts.map +1 -0
- package/dist/cli/components/TodoList.js +34 -0
- package/dist/cli/components/TodoList.js.map +1 -0
- package/dist/cli/components/index.d.ts +1 -0
- package/dist/cli/components/index.d.ts.map +1 -1
- package/dist/cli/components/index.js +1 -0
- package/dist/cli/components/index.js.map +1 -1
- package/dist/cli/components/markdown.d.ts +9 -0
- package/dist/cli/components/markdown.d.ts.map +1 -0
- package/dist/cli/components/markdown.js +129 -0
- package/dist/cli/components/markdown.js.map +1 -0
- package/dist/cli/components/theme.d.ts +5 -0
- package/dist/cli/components/theme.d.ts.map +1 -1
- package/dist/cli/components/theme.js +7 -0
- package/dist/cli/components/theme.js.map +1 -1
- package/dist/cli/index.js +66 -12
- package/dist/cli/index.js.map +1 -1
- package/dist/config/index.d.ts +14 -4
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +19 -3
- package/dist/config/index.js.map +1 -1
- package/dist/config/levels.d.ts +49 -0
- package/dist/config/levels.d.ts.map +1 -0
- package/dist/config/levels.js +222 -0
- package/dist/config/levels.js.map +1 -0
- package/dist/config/loader.d.ts +46 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +153 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/manager.d.ts +115 -15
- package/dist/config/manager.d.ts.map +1 -1
- package/dist/config/manager.js +260 -34
- package/dist/config/manager.js.map +1 -1
- package/dist/config/manager.test.d.ts +5 -0
- package/dist/config/manager.test.d.ts.map +1 -0
- package/dist/config/manager.test.js +192 -0
- package/dist/config/manager.test.js.map +1 -0
- package/dist/config/merger.d.ts +56 -0
- package/dist/config/merger.d.ts.map +1 -0
- package/dist/config/merger.js +177 -0
- package/dist/config/merger.js.map +1 -0
- package/dist/config/providers-config.d.ts +28 -0
- package/dist/config/providers-config.d.ts.map +1 -0
- package/dist/config/providers-config.js +79 -0
- package/dist/config/providers-config.js.map +1 -0
- package/dist/config/test-utils.d.ts +24 -0
- package/dist/config/test-utils.d.ts.map +1 -0
- package/dist/config/test-utils.js +55 -0
- package/dist/config/test-utils.js.map +1 -0
- package/dist/config/types.d.ts +108 -9
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +53 -2
- package/dist/config/types.js.map +1 -1
- package/dist/memory/import-resolver.d.ts +46 -0
- package/dist/memory/import-resolver.d.ts.map +1 -0
- package/dist/memory/import-resolver.js +117 -0
- package/dist/memory/import-resolver.js.map +1 -0
- package/dist/memory/index.d.ts +7 -6
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +7 -5
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/init-prompt.d.ts +22 -0
- package/dist/memory/init-prompt.d.ts.map +1 -0
- package/dist/memory/init-prompt.js +103 -0
- package/dist/memory/init-prompt.js.map +1 -0
- package/dist/memory/memory-manager.d.ts +119 -0
- package/dist/memory/memory-manager.d.ts.map +1 -0
- package/dist/memory/memory-manager.js +587 -0
- package/dist/memory/memory-manager.js.map +1 -0
- package/dist/memory/rules-parser.d.ts +38 -0
- package/dist/memory/rules-parser.d.ts.map +1 -0
- package/dist/memory/rules-parser.js +69 -0
- package/dist/memory/rules-parser.js.map +1 -0
- package/dist/memory/test-utils.d.ts +20 -0
- package/dist/memory/test-utils.d.ts.map +1 -0
- package/dist/memory/test-utils.js +44 -0
- package/dist/memory/test-utils.js.map +1 -0
- package/dist/memory/types.d.ts +70 -63
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +42 -2
- package/dist/memory/types.js.map +1 -1
- package/dist/permissions/audit.d.ts +82 -0
- package/dist/permissions/audit.d.ts.map +1 -0
- package/dist/permissions/audit.js +229 -0
- package/dist/permissions/audit.js.map +1 -0
- package/dist/permissions/index.d.ts +11 -1
- package/dist/permissions/index.d.ts.map +1 -1
- package/dist/permissions/index.js +15 -0
- package/dist/permissions/index.js.map +1 -1
- package/dist/permissions/manager.d.ts +149 -13
- package/dist/permissions/manager.d.ts.map +1 -1
- package/dist/permissions/manager.js +480 -35
- package/dist/permissions/manager.js.map +1 -1
- package/dist/permissions/manager.test.d.ts +5 -0
- package/dist/permissions/manager.test.d.ts.map +1 -0
- package/dist/permissions/manager.test.js +213 -0
- package/dist/permissions/manager.test.js.map +1 -0
- package/dist/permissions/persistence.d.ts +74 -0
- package/dist/permissions/persistence.d.ts.map +1 -0
- package/dist/permissions/persistence.js +248 -0
- package/dist/permissions/persistence.js.map +1 -0
- package/dist/permissions/persistence.test.d.ts +5 -0
- package/dist/permissions/persistence.test.d.ts.map +1 -0
- package/dist/permissions/persistence.test.js +171 -0
- package/dist/permissions/persistence.test.js.map +1 -0
- package/dist/permissions/prompt-matcher.d.ts +64 -0
- package/dist/permissions/prompt-matcher.d.ts.map +1 -0
- package/dist/permissions/prompt-matcher.js +415 -0
- package/dist/permissions/prompt-matcher.js.map +1 -0
- package/dist/permissions/prompt-matcher.test.d.ts +5 -0
- package/dist/permissions/prompt-matcher.test.d.ts.map +1 -0
- package/dist/permissions/prompt-matcher.test.js +107 -0
- package/dist/permissions/prompt-matcher.test.js.map +1 -0
- package/dist/permissions/types.d.ts +157 -0
- package/dist/permissions/types.d.ts.map +1 -1
- package/dist/permissions/types.js +43 -8
- package/dist/permissions/types.js.map +1 -1
- package/dist/prompts/index.d.ts +92 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +241 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/providers/gemini.d.ts.map +1 -1
- package/dist/providers/gemini.js +14 -3
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/index.d.ts +5 -3
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +13 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/registry.d.ts +66 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +158 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/providers/search/brave.d.ts +14 -0
- package/dist/providers/search/brave.d.ts.map +1 -0
- package/dist/providers/search/brave.js +87 -0
- package/dist/providers/search/brave.js.map +1 -0
- package/dist/providers/search/exa.d.ts +12 -0
- package/dist/providers/search/exa.d.ts.map +1 -0
- package/dist/providers/search/exa.js +158 -0
- package/dist/providers/search/exa.js.map +1 -0
- package/dist/providers/search/index.d.ts +31 -0
- package/dist/providers/search/index.d.ts.map +1 -0
- package/dist/providers/search/index.js +75 -0
- package/dist/providers/search/index.js.map +1 -0
- package/dist/providers/search/serper.d.ts +14 -0
- package/dist/providers/search/serper.d.ts.map +1 -0
- package/dist/providers/search/serper.js +87 -0
- package/dist/providers/search/serper.js.map +1 -0
- package/dist/providers/search/types.d.ts +21 -0
- package/dist/providers/search/types.d.ts.map +1 -0
- package/dist/providers/search/types.js +5 -0
- package/dist/providers/search/types.js.map +1 -0
- package/dist/providers/store.d.ts +104 -0
- package/dist/providers/store.d.ts.map +1 -0
- package/dist/providers/store.js +171 -0
- package/dist/providers/store.js.map +1 -0
- package/dist/providers/types.d.ts +7 -1
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/vertex-ai.d.ts +33 -0
- package/dist/providers/vertex-ai.d.ts.map +1 -0
- package/dist/providers/vertex-ai.js +407 -0
- package/dist/providers/vertex-ai.js.map +1 -0
- package/dist/tools/builtin/bash.d.ts.map +1 -1
- package/dist/tools/builtin/bash.js +2 -1
- package/dist/tools/builtin/bash.js.map +1 -1
- package/dist/tools/builtin/edit.d.ts.map +1 -1
- package/dist/tools/builtin/edit.js +2 -1
- package/dist/tools/builtin/edit.js.map +1 -1
- package/dist/tools/builtin/glob.d.ts.map +1 -1
- package/dist/tools/builtin/glob.js +2 -1
- package/dist/tools/builtin/glob.js.map +1 -1
- package/dist/tools/builtin/grep.d.ts.map +1 -1
- package/dist/tools/builtin/grep.js +2 -1
- package/dist/tools/builtin/grep.js.map +1 -1
- package/dist/tools/builtin/read.d.ts.map +1 -1
- package/dist/tools/builtin/read.js +2 -1
- package/dist/tools/builtin/read.js.map +1 -1
- package/dist/tools/builtin/todowrite.d.ts +15 -0
- package/dist/tools/builtin/todowrite.d.ts.map +1 -0
- package/dist/tools/builtin/todowrite.js +88 -0
- package/dist/tools/builtin/todowrite.js.map +1 -0
- package/dist/tools/builtin/webfetch.d.ts +20 -0
- package/dist/tools/builtin/webfetch.d.ts.map +1 -0
- package/dist/tools/builtin/webfetch.js +228 -0
- package/dist/tools/builtin/webfetch.js.map +1 -0
- package/dist/tools/builtin/websearch.d.ts +17 -0
- package/dist/tools/builtin/websearch.d.ts.map +1 -0
- package/dist/tools/builtin/websearch.js +87 -0
- package/dist/tools/builtin/websearch.js.map +1 -0
- package/dist/tools/builtin/write.d.ts.map +1 -1
- package/dist/tools/builtin/write.js +2 -1
- package/dist/tools/builtin/write.js.map +1 -1
- package/dist/tools/index.d.ts +18 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +28 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/types.d.ts +41 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js +16 -0
- package/dist/tools/types.js.map +1 -1
- package/dist/tools/utils/ssrf.d.ts +18 -0
- package/dist/tools/utils/ssrf.d.ts.map +1 -0
- package/dist/tools/utils/ssrf.js +70 -0
- package/dist/tools/utils/ssrf.js.map +1 -0
- package/docs/README.md +5 -4
- package/docs/config-system-comparison.md +707 -0
- package/docs/memory-system.md +238 -0
- package/docs/permissions.md +368 -0
- package/docs/proposals/0001-web-fetch-tool.md +32 -2
- package/docs/proposals/0002-web-search-tool.md +59 -2
- package/docs/proposals/0005-todo-system.md +350 -85
- package/docs/proposals/0006-memory-system.md +11 -10
- package/docs/proposals/0012-ask-user-question.md +941 -206
- package/docs/proposals/0023-permission-enhancements.md +61 -2
- package/docs/proposals/0041-configuration-system.md +587 -0
- package/docs/proposals/0042-prompt-optimization.md +866 -0
- package/docs/proposals/README.md +8 -6
- package/docs/providers.md +220 -0
- package/jest.config.js +26 -0
- package/package.json +14 -3
- package/src/agent/agent.ts +120 -18
- package/src/agent/types.ts +9 -1
- package/src/cli/components/App.tsx +369 -47
- package/src/cli/components/CommandSuggestions.tsx +3 -0
- package/src/cli/components/Header.tsx +11 -17
- package/src/cli/components/Logo.tsx +76 -9
- package/src/cli/components/Messages.tsx +146 -38
- package/src/cli/components/ModelSelector.tsx +169 -52
- package/src/cli/components/PermissionPrompt.tsx +388 -0
- package/src/cli/components/ProviderManager.tsx +534 -0
- package/src/cli/components/Spinner.tsx +138 -25
- package/src/cli/components/TodoList.tsx +54 -0
- package/src/cli/components/index.ts +6 -0
- package/src/cli/components/markdown.ts +157 -0
- package/src/cli/components/theme.ts +7 -0
- package/src/cli/index.tsx +76 -13
- package/src/config/index.ts +79 -4
- package/src/config/levels.test.ts +163 -0
- package/src/config/levels.ts +285 -0
- package/src/config/loader.test.ts +120 -0
- package/src/config/loader.ts +178 -0
- package/src/config/manager.test.ts +215 -0
- package/src/config/manager.ts +328 -40
- package/src/config/merger.test.ts +360 -0
- package/src/config/merger.ts +221 -0
- package/src/config/providers-config.ts +85 -0
- package/src/config/test-utils.ts +79 -0
- package/src/config/types.ts +186 -9
- package/src/memory/import-resolver.test.ts +117 -0
- package/src/memory/import-resolver.ts +149 -0
- package/src/memory/index.ts +11 -0
- package/src/memory/init-prompt.ts +113 -0
- package/src/memory/memory-manager.test.ts +198 -0
- package/src/memory/memory-manager.ts +716 -0
- package/src/memory/rules-parser.test.ts +182 -0
- package/src/memory/rules-parser.ts +82 -0
- package/src/memory/test-utils.ts +60 -0
- package/src/memory/types.ts +119 -0
- package/src/permissions/audit.ts +284 -0
- package/src/permissions/index.ts +20 -1
- package/src/permissions/manager.test.ts +260 -0
- package/src/permissions/manager.ts +592 -40
- package/src/permissions/persistence.test.ts +220 -0
- package/src/permissions/persistence.ts +301 -0
- package/src/permissions/prompt-matcher.test.ts +213 -0
- package/src/permissions/prompt-matcher.ts +472 -0
- package/src/permissions/types.ts +236 -8
- package/src/prompts/index.test.ts +279 -0
- package/src/prompts/index.ts +306 -0
- package/src/prompts/system/anthropic.txt +29 -0
- package/src/prompts/system/base.txt +124 -0
- package/src/prompts/system/gemini.txt +35 -0
- package/src/prompts/system/generic.txt +128 -0
- package/src/prompts/system/openai.txt +29 -0
- package/src/prompts/tools/bash.txt +60 -0
- package/src/prompts/tools/edit.txt +29 -0
- package/src/prompts/tools/glob.txt +35 -0
- package/src/prompts/tools/grep.txt +43 -0
- package/src/prompts/tools/read.txt +22 -0
- package/src/prompts/tools/todowrite.txt +71 -0
- package/src/prompts/tools/webfetch.txt +34 -0
- package/src/prompts/tools/websearch.txt +41 -0
- package/src/prompts/tools/write.txt +23 -0
- package/src/providers/gemini.ts +20 -4
- package/src/providers/index.ts +18 -3
- package/src/providers/registry.ts +198 -0
- package/src/providers/search/brave.ts +132 -0
- package/src/providers/search/exa.ts +217 -0
- package/src/providers/search/index.ts +79 -0
- package/src/providers/search/serper.ts +133 -0
- package/src/providers/search/types.ts +24 -0
- package/src/providers/store.ts +216 -0
- package/src/providers/types.ts +9 -1
- package/src/providers/vertex-ai.ts +594 -0
- package/src/tools/builtin/bash.ts +2 -1
- package/src/tools/builtin/edit.ts +2 -1
- package/src/tools/builtin/glob.ts +2 -1
- package/src/tools/builtin/grep.ts +2 -1
- package/src/tools/builtin/read.ts +2 -1
- package/src/tools/builtin/todowrite.ts +102 -0
- package/src/tools/builtin/webfetch.ts +261 -0
- package/src/tools/builtin/websearch.ts +103 -0
- package/src/tools/builtin/write.ts +2 -1
- package/src/tools/index.ts +28 -2
- package/src/tools/types.ts +32 -0
- package/src/tools/utils/ssrf.ts +79 -0
- package/tsconfig.json +1 -1
- package/CLAUDE.md +0 -70
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt Loader - Load prompts from .txt files
|
|
3
|
+
*
|
|
4
|
+
* This module provides utilities for loading system prompts and tool descriptions
|
|
5
|
+
* from separate .txt files, enabling easier maintenance and prompt engineering.
|
|
6
|
+
*/
|
|
7
|
+
import { readFileSync, existsSync } from 'fs';
|
|
8
|
+
import { join, dirname } from 'path';
|
|
9
|
+
import { fileURLToPath } from 'url';
|
|
10
|
+
import { homedir } from 'os';
|
|
11
|
+
import * as os from 'os';
|
|
12
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
13
|
+
// Path to providers.json config
|
|
14
|
+
const PROVIDERS_CONFIG_PATH = join(homedir(), '.gencode', 'providers.json');
|
|
15
|
+
// Resolve prompts directory - check both src and dist locations
|
|
16
|
+
function getPromptsDir() {
|
|
17
|
+
// If running from dist, look for prompts in src
|
|
18
|
+
if (__dirname.includes('/dist/')) {
|
|
19
|
+
const srcPath = __dirname.replace('/dist/', '/src/');
|
|
20
|
+
if (existsSync(srcPath)) {
|
|
21
|
+
return srcPath;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return __dirname;
|
|
25
|
+
}
|
|
26
|
+
const promptsDir = getPromptsDir();
|
|
27
|
+
/**
|
|
28
|
+
* Load providers config from ~/.gencode/providers.json
|
|
29
|
+
*/
|
|
30
|
+
function loadProvidersConfig() {
|
|
31
|
+
try {
|
|
32
|
+
if (existsSync(PROVIDERS_CONFIG_PATH)) {
|
|
33
|
+
const data = readFileSync(PROVIDERS_CONFIG_PATH, 'utf-8');
|
|
34
|
+
return JSON.parse(data);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// Ignore parse errors
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Look up which provider owns a given model ID
|
|
44
|
+
* Searches through ~/.gencode/providers.json to find the provider
|
|
45
|
+
*
|
|
46
|
+
* @param model - The model ID (e.g., "claude-sonnet-4-5@20250929")
|
|
47
|
+
* @returns The provider name (e.g., "anthropic") or null if not found
|
|
48
|
+
*/
|
|
49
|
+
export function getProviderForModel(model) {
|
|
50
|
+
const config = loadProvidersConfig();
|
|
51
|
+
if (!config?.models) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
for (const [provider, cache] of Object.entries(config.models)) {
|
|
55
|
+
if (cache.list?.some((m) => m.id === model)) {
|
|
56
|
+
return provider;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Map provider names to prompt types
|
|
63
|
+
* Falls back to 'generic' for unknown providers
|
|
64
|
+
*/
|
|
65
|
+
export function mapProviderToPromptType(provider) {
|
|
66
|
+
switch (provider) {
|
|
67
|
+
case 'anthropic':
|
|
68
|
+
return 'anthropic';
|
|
69
|
+
case 'openai':
|
|
70
|
+
return 'openai';
|
|
71
|
+
case 'gemini':
|
|
72
|
+
return 'gemini';
|
|
73
|
+
default:
|
|
74
|
+
return 'generic';
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get prompt type for a model
|
|
79
|
+
* Flow: model → provider (from providers.json) → prompt type
|
|
80
|
+
*
|
|
81
|
+
* @param model - The model ID
|
|
82
|
+
* @param fallbackProvider - Provider to use if model lookup fails
|
|
83
|
+
* @returns The prompt type to use
|
|
84
|
+
*/
|
|
85
|
+
export function getPromptTypeForModel(model, fallbackProvider) {
|
|
86
|
+
// First, try to look up the provider for this model
|
|
87
|
+
const provider = getProviderForModel(model);
|
|
88
|
+
if (provider) {
|
|
89
|
+
return mapProviderToPromptType(provider);
|
|
90
|
+
}
|
|
91
|
+
// Fall back to the provided provider if model lookup fails
|
|
92
|
+
if (fallbackProvider) {
|
|
93
|
+
return mapProviderToPromptType(fallbackProvider);
|
|
94
|
+
}
|
|
95
|
+
// Default to generic
|
|
96
|
+
return 'generic';
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Load a prompt file from a category subdirectory
|
|
100
|
+
*/
|
|
101
|
+
export function loadPrompt(category, name) {
|
|
102
|
+
const path = join(promptsDir, category, `${name}.txt`);
|
|
103
|
+
return readFileSync(path, 'utf-8');
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Load the complete system prompt for a specific provider
|
|
107
|
+
*/
|
|
108
|
+
export function loadSystemPrompt(provider) {
|
|
109
|
+
const base = loadPrompt('system', 'base');
|
|
110
|
+
const providerSpecific = loadPrompt('system', provider);
|
|
111
|
+
return `${base}\n\n${providerSpecific}`;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Load a tool description from the tools directory
|
|
115
|
+
*/
|
|
116
|
+
export function loadToolDescription(toolName) {
|
|
117
|
+
try {
|
|
118
|
+
return loadPrompt('tools', toolName.toLowerCase());
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
// Fallback if file doesn't exist (for tools without description files)
|
|
122
|
+
return `Tool: ${toolName}`;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get current environment info
|
|
127
|
+
*/
|
|
128
|
+
export function getEnvironmentInfo(cwd, isGitRepo = false) {
|
|
129
|
+
return {
|
|
130
|
+
cwd,
|
|
131
|
+
platform: process.platform,
|
|
132
|
+
osVersion: `${os.type()} ${os.release()}`,
|
|
133
|
+
date: new Date().toISOString().split('T')[0],
|
|
134
|
+
isGitRepo,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Format environment info for injection into system prompt
|
|
139
|
+
*/
|
|
140
|
+
export function formatEnvironmentInfo(env) {
|
|
141
|
+
return `<env>
|
|
142
|
+
Working directory: ${env.cwd}
|
|
143
|
+
Is directory a git repo: ${env.isGitRepo ? 'Yes' : 'No'}
|
|
144
|
+
Platform: ${env.platform}
|
|
145
|
+
OS Version: ${env.osVersion}
|
|
146
|
+
Today's date: ${env.date}
|
|
147
|
+
</env>`;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Build the complete system prompt with environment info
|
|
151
|
+
*/
|
|
152
|
+
export function buildSystemPrompt(provider, cwd, isGitRepo = false) {
|
|
153
|
+
const prompt = loadSystemPrompt(provider);
|
|
154
|
+
const envInfo = formatEnvironmentInfo(getEnvironmentInfo(cwd, isGitRepo));
|
|
155
|
+
return prompt.replace('{{ENVIRONMENT}}', envInfo);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Format memory context for injection into system prompt
|
|
159
|
+
* Uses <claudeMd> tag for Claude Code compatibility
|
|
160
|
+
*/
|
|
161
|
+
export function formatMemoryContext(memoryContext) {
|
|
162
|
+
if (!memoryContext) {
|
|
163
|
+
return '';
|
|
164
|
+
}
|
|
165
|
+
return `
|
|
166
|
+
<claudeMd>
|
|
167
|
+
Codebase and user instructions are shown below. Be sure to adhere to these instructions. IMPORTANT: These instructions OVERRIDE any default behavior and you MUST follow them exactly as written.
|
|
168
|
+
|
|
169
|
+
${memoryContext}
|
|
170
|
+
|
|
171
|
+
IMPORTANT: this context may or may not be relevant to your tasks. You should not respond to this context unless it is highly relevant to your task.
|
|
172
|
+
</claudeMd>`;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Build the complete system prompt with environment info and memory context
|
|
176
|
+
*/
|
|
177
|
+
export function buildSystemPromptWithMemory(provider, cwd, isGitRepo = false, memoryContext) {
|
|
178
|
+
let prompt = buildSystemPrompt(provider, cwd, isGitRepo);
|
|
179
|
+
if (memoryContext) {
|
|
180
|
+
prompt += formatMemoryContext(memoryContext);
|
|
181
|
+
}
|
|
182
|
+
return prompt;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Build system prompt for a model
|
|
186
|
+
* Flow: model → provider (from providers.json) → prompt
|
|
187
|
+
*
|
|
188
|
+
* This is the recommended way to build system prompts as it automatically
|
|
189
|
+
* looks up the provider for the given model from ~/.gencode/providers.json
|
|
190
|
+
*
|
|
191
|
+
* @param model - The model ID (e.g., "claude-sonnet-4-5@20250929")
|
|
192
|
+
* @param cwd - Current working directory
|
|
193
|
+
* @param isGitRepo - Whether the cwd is a git repository
|
|
194
|
+
* @param memoryContext - Optional memory context to include
|
|
195
|
+
* @param fallbackProvider - Provider to use if model lookup fails
|
|
196
|
+
*/
|
|
197
|
+
export function buildSystemPromptForModel(model, cwd, isGitRepo = false, memoryContext, fallbackProvider) {
|
|
198
|
+
const promptType = getPromptTypeForModel(model, fallbackProvider);
|
|
199
|
+
return buildSystemPromptWithMemory(promptType, cwd, isGitRepo, memoryContext);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Debug utility to verify prompt loading at runtime
|
|
203
|
+
* Set GENCODE_DEBUG_PROMPTS=1 for summary, GENCODE_DEBUG_PROMPTS=2 for full content
|
|
204
|
+
*/
|
|
205
|
+
export function debugPromptLoading(model, fallbackProvider) {
|
|
206
|
+
const debugLevel = process.env.GENCODE_DEBUG_PROMPTS;
|
|
207
|
+
if (!debugLevel || debugLevel === '0') {
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
const promptType = getPromptTypeForModel(model, fallbackProvider);
|
|
211
|
+
const basePrompt = loadPrompt('system', 'base');
|
|
212
|
+
const providerPrompt = loadPrompt('system', promptType);
|
|
213
|
+
console.error('[PROMPT DEBUG] ================================');
|
|
214
|
+
console.error(`[PROMPT DEBUG] Model: ${model}`);
|
|
215
|
+
console.error(`[PROMPT DEBUG] Fallback Provider: ${fallbackProvider || 'none'}`);
|
|
216
|
+
console.error(`[PROMPT DEBUG] Resolved Prompt Type: ${promptType}`);
|
|
217
|
+
console.error(`[PROMPT DEBUG] base.txt lines: ${basePrompt.split('\n').length}`);
|
|
218
|
+
console.error(`[PROMPT DEBUG] ${promptType}.txt lines: ${providerPrompt.split('\n').length}`);
|
|
219
|
+
console.error(`[PROMPT DEBUG] Total chars: ${basePrompt.length + providerPrompt.length}`);
|
|
220
|
+
// Verify key content
|
|
221
|
+
const checks = [
|
|
222
|
+
{ name: 'Token minimization', pattern: /minimize output tokens/i },
|
|
223
|
+
{ name: 'CommonMark', pattern: /CommonMark/i },
|
|
224
|
+
{ name: 'Examples', pattern: /<example>/ },
|
|
225
|
+
{ name: 'Environment placeholder', pattern: /\{\{ENVIRONMENT\}\}/ },
|
|
226
|
+
];
|
|
227
|
+
for (const check of checks) {
|
|
228
|
+
const found = check.pattern.test(basePrompt);
|
|
229
|
+
console.error(`[PROMPT DEBUG] ✓ ${check.name}: ${found ? 'OK' : 'MISSING'}`);
|
|
230
|
+
}
|
|
231
|
+
console.error('[PROMPT DEBUG] ================================');
|
|
232
|
+
// Print full content if level >= 2
|
|
233
|
+
if (debugLevel === '2') {
|
|
234
|
+
console.error('\n[PROMPT DEBUG] === base.txt ===\n');
|
|
235
|
+
console.error(basePrompt);
|
|
236
|
+
console.error(`\n[PROMPT DEBUG] === ${promptType}.txt ===\n`);
|
|
237
|
+
console.error(providerPrompt);
|
|
238
|
+
console.error('\n[PROMPT DEBUG] === END ===\n');
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EAKX,YAAY,EAEZ,SAAS,EACV,MAAM,YAAY,CAAC;AAEpB,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,GAAE,YAAiB;IAS/B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAiBhE,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EAKX,YAAY,EAEZ,SAAS,EACV,MAAM,YAAY,CAAC;AAEpB,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,GAAE,YAAiB;IAS/B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAiBhE,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC;IAgFrF,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,cAAc;IAoCtB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,aAAa;IAsCrB,OAAO,CAAC,eAAe;IAoCvB,OAAO,CAAC,aAAa;IAef,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;CAoBzC"}
|
package/dist/providers/gemini.js
CHANGED
|
@@ -54,10 +54,13 @@ export class GeminiProvider {
|
|
|
54
54
|
else if ('functionCall' in part && part.functionCall) {
|
|
55
55
|
const fc = part.functionCall;
|
|
56
56
|
const id = `call_${callIndex++}`;
|
|
57
|
+
// Capture thoughtSignature for Gemini 3+ models
|
|
58
|
+
const partAny = part;
|
|
57
59
|
functionCalls.push({
|
|
58
60
|
id,
|
|
59
61
|
name: fc.name,
|
|
60
62
|
args: fc.args ?? {},
|
|
63
|
+
thoughtSignature: partAny.thoughtSignature,
|
|
61
64
|
});
|
|
62
65
|
yield { type: 'tool_start', id, name: fc.name };
|
|
63
66
|
yield { type: 'tool_input', id, input: JSON.stringify(fc.args) };
|
|
@@ -75,6 +78,7 @@ export class GeminiProvider {
|
|
|
75
78
|
id: fc.id,
|
|
76
79
|
name: fc.name,
|
|
77
80
|
input: fc.args,
|
|
81
|
+
thoughtSignature: fc.thoughtSignature,
|
|
78
82
|
});
|
|
79
83
|
}
|
|
80
84
|
const finalResponse = await result.response;
|
|
@@ -118,13 +122,17 @@ export class GeminiProvider {
|
|
|
118
122
|
parts.push({ text: item.text });
|
|
119
123
|
}
|
|
120
124
|
else if (item.type === 'tool_use' && role === 'model') {
|
|
121
|
-
// Function call from model
|
|
122
|
-
|
|
125
|
+
// Function call from model - include thoughtSignature for Gemini 3+
|
|
126
|
+
const fcPart = {
|
|
123
127
|
functionCall: {
|
|
124
128
|
name: item.name,
|
|
125
129
|
args: item.input,
|
|
126
130
|
},
|
|
127
|
-
}
|
|
131
|
+
};
|
|
132
|
+
if (item.thoughtSignature) {
|
|
133
|
+
fcPart.thoughtSignature = item.thoughtSignature;
|
|
134
|
+
}
|
|
135
|
+
parts.push(fcPart);
|
|
128
136
|
}
|
|
129
137
|
else if (item.type === 'tool_result' && role === 'user') {
|
|
130
138
|
// Function response
|
|
@@ -193,11 +201,14 @@ export class GeminiProvider {
|
|
|
193
201
|
content.push({ type: 'text', text: part.text });
|
|
194
202
|
}
|
|
195
203
|
else if ('functionCall' in part && part.functionCall) {
|
|
204
|
+
// Capture thoughtSignature for Gemini 3+ models
|
|
205
|
+
const partAny = part;
|
|
196
206
|
content.push({
|
|
197
207
|
type: 'tool_use',
|
|
198
208
|
id: `call_${callIndex++}`,
|
|
199
209
|
name: part.functionCall.name,
|
|
200
210
|
input: part.functionCall.args ?? {},
|
|
211
|
+
thoughtSignature: partAny.thoughtSignature,
|
|
201
212
|
});
|
|
202
213
|
}
|
|
203
214
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAgBvE,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,QAAQ,CAAC;IACjB,MAAM,CAAqB;IAC3B,MAAM,CAAS;IAEvB,YAAY,SAAuB,EAAE;QACnC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACzF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAA0B;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAC3C,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,iBAAiB,EAAE,OAAO,CAAC,YAAY;YACvC,gBAAgB,EAAE;gBAChB,eAAe,EAAE,OAAO,CAAC,SAAS;gBAClC,WAAW,EAAE,OAAO,CAAC,WAAW;aACjC;YACD,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;SACpE,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEzD,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,OAA0B;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAC3C,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,iBAAiB,EAAE,OAAO,CAAC,YAAY;YACvC,gBAAgB,EAAE;gBAChB,eAAe,EAAE,OAAO,CAAC,SAAS;gBAClC,WAAW,EAAE,OAAO,CAAC,WAAW;aACjC;YACD,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;SACpE,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,qBAAqB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE/D,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* LLM Providers - Unified interface for OpenAI, Anthropic, and
|
|
2
|
+
* LLM Providers - Unified interface for OpenAI, Anthropic, Gemini, and Vertex AI
|
|
3
3
|
*/
|
|
4
4
|
export * from './types.js';
|
|
5
5
|
export { OpenAIProvider } from './openai.js';
|
|
6
6
|
export { AnthropicProvider } from './anthropic.js';
|
|
7
7
|
export { GeminiProvider } from './gemini.js';
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
export { VertexAIProvider } from './vertex-ai.js';
|
|
9
|
+
import type { LLMProvider, OpenAIConfig, AnthropicConfig, GeminiConfig, VertexAIConfig } from './types.js';
|
|
10
|
+
export type ProviderName = 'openai' | 'anthropic' | 'gemini' | 'vertex-ai';
|
|
10
11
|
export type ProviderConfigMap = {
|
|
11
12
|
openai: OpenAIConfig;
|
|
12
13
|
anthropic: AnthropicConfig;
|
|
13
14
|
gemini: GeminiConfig;
|
|
15
|
+
'vertex-ai': VertexAIConfig;
|
|
14
16
|
};
|
|
15
17
|
export interface CreateProviderOptions<T extends ProviderName = ProviderName> {
|
|
16
18
|
provider: T;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAM3G,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAC3E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,eAAe,CAAC;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,cAAc,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IAC1E,QAAQ,EAAE,CAAC,CAAC;IACZ,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,WAAW,CAa1E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAgCzD;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAwBlF,CAAC"}
|
package/dist/providers/index.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* LLM Providers - Unified interface for OpenAI, Anthropic, and
|
|
2
|
+
* LLM Providers - Unified interface for OpenAI, Anthropic, Gemini, and Vertex AI
|
|
3
3
|
*/
|
|
4
4
|
export * from './types.js';
|
|
5
5
|
export { OpenAIProvider } from './openai.js';
|
|
6
6
|
export { AnthropicProvider } from './anthropic.js';
|
|
7
7
|
export { GeminiProvider } from './gemini.js';
|
|
8
|
+
export { VertexAIProvider } from './vertex-ai.js';
|
|
8
9
|
import { OpenAIProvider } from './openai.js';
|
|
9
10
|
import { AnthropicProvider } from './anthropic.js';
|
|
10
11
|
import { GeminiProvider } from './gemini.js';
|
|
12
|
+
import { VertexAIProvider } from './vertex-ai.js';
|
|
11
13
|
/**
|
|
12
14
|
* Create a provider instance by name
|
|
13
15
|
*/
|
|
@@ -19,6 +21,8 @@ export function createProvider(options) {
|
|
|
19
21
|
return new AnthropicProvider(options.config);
|
|
20
22
|
case 'gemini':
|
|
21
23
|
return new GeminiProvider(options.config);
|
|
24
|
+
case 'vertex-ai':
|
|
25
|
+
return new VertexAIProvider(options.config);
|
|
22
26
|
default:
|
|
23
27
|
throw new Error(`Unknown provider: ${options.provider}`);
|
|
24
28
|
}
|
|
@@ -28,6 +32,10 @@ export function createProvider(options) {
|
|
|
28
32
|
*/
|
|
29
33
|
export function inferProvider(model) {
|
|
30
34
|
const modelLower = model.toLowerCase();
|
|
35
|
+
// Vertex AI models (Claude models with @ version suffix like claude-sonnet-4-5@20250929)
|
|
36
|
+
if (modelLower.includes('claude') && modelLower.includes('@')) {
|
|
37
|
+
return 'vertex-ai';
|
|
38
|
+
}
|
|
31
39
|
// OpenAI models
|
|
32
40
|
if (modelLower.includes('gpt') ||
|
|
33
41
|
modelLower.includes('o1') ||
|
|
@@ -68,5 +76,9 @@ export const ModelAliases = {
|
|
|
68
76
|
'gemini-2.0-flash': { provider: 'gemini', model: 'gemini-2.0-flash' },
|
|
69
77
|
'gemini-1.5-pro': { provider: 'gemini', model: 'gemini-1.5-pro' },
|
|
70
78
|
'gemini-1.5-flash': { provider: 'gemini', model: 'gemini-1.5-flash' },
|
|
79
|
+
// Vertex AI (Claude on GCP)
|
|
80
|
+
'vertex-sonnet': { provider: 'vertex-ai', model: 'claude-sonnet-4-5@20250929' },
|
|
81
|
+
'vertex-haiku': { provider: 'vertex-ai', model: 'claude-haiku-4-5@20251001' },
|
|
82
|
+
'vertex-opus': { provider: 'vertex-ai', model: 'claude-opus-4-1@20250805' },
|
|
71
83
|
};
|
|
72
84
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Registry - Provider definitions with connection options
|
|
3
|
+
*/
|
|
4
|
+
import type { ProviderName } from './index.js';
|
|
5
|
+
import type { SearchProviderName } from './search/types.js';
|
|
6
|
+
export interface ConnectionOption {
|
|
7
|
+
method: string;
|
|
8
|
+
name: string;
|
|
9
|
+
envVars: string[];
|
|
10
|
+
description?: string;
|
|
11
|
+
providerImpl?: ProviderName;
|
|
12
|
+
}
|
|
13
|
+
export interface ProviderDefinition {
|
|
14
|
+
id: ProviderName;
|
|
15
|
+
name: string;
|
|
16
|
+
popularity: number;
|
|
17
|
+
connections: ConnectionOption[];
|
|
18
|
+
}
|
|
19
|
+
export interface SearchProviderDefinition {
|
|
20
|
+
id: SearchProviderName;
|
|
21
|
+
name: string;
|
|
22
|
+
popularity: number;
|
|
23
|
+
connections: ConnectionOption[];
|
|
24
|
+
requiresKey: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* All supported providers with their connection options
|
|
28
|
+
*/
|
|
29
|
+
export declare const PROVIDERS: ProviderDefinition[];
|
|
30
|
+
/**
|
|
31
|
+
* All supported search providers
|
|
32
|
+
*/
|
|
33
|
+
export declare const SEARCH_PROVIDERS: SearchProviderDefinition[];
|
|
34
|
+
/**
|
|
35
|
+
* Get provider definition by ID
|
|
36
|
+
*/
|
|
37
|
+
export declare function getProvider(id: ProviderName): ProviderDefinition | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Get search provider definition by ID
|
|
40
|
+
*/
|
|
41
|
+
export declare function getSearchProvider(id: SearchProviderName): SearchProviderDefinition | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* Get all search providers sorted by popularity
|
|
44
|
+
*/
|
|
45
|
+
export declare function getSearchProvidersSorted(): SearchProviderDefinition[];
|
|
46
|
+
/**
|
|
47
|
+
* Get all providers sorted by popularity
|
|
48
|
+
*/
|
|
49
|
+
export declare function getProvidersSorted(): ProviderDefinition[];
|
|
50
|
+
/**
|
|
51
|
+
* Check if any of the provider's env vars are set
|
|
52
|
+
*/
|
|
53
|
+
export declare function hasEnvVars(provider: ProviderDefinition): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Get the first available connection method (where env vars are set)
|
|
56
|
+
*/
|
|
57
|
+
export declare function getAvailableConnection(provider: ProviderDefinition): ConnectionOption | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Check if a specific connection option has its env vars set
|
|
60
|
+
*/
|
|
61
|
+
export declare function isConnectionReady(conn: ConnectionOption): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Get all available (ready) connections for a provider
|
|
64
|
+
*/
|
|
65
|
+
export declare function getAvailableConnections(provider: ProviderDefinition): ConnectionOption[];
|
|
66
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,YAAY,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,gBAAgB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,kBAAkB,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,kBAAkB,EAqDzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,wBAAwB,EA2CtD,CAAC;AAEF;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,YAAY,GAAG,kBAAkB,GAAG,SAAS,CAE5E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,kBAAkB,GAAG,wBAAwB,GAAG,SAAS,CAE9F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,wBAAwB,EAAE,CAErE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,kBAAkB,EAAE,CAEzD;AAKD;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAEhE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,kBAAkB,GAC3B,gBAAgB,GAAG,SAAS,CAE9B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAEjE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,kBAAkB,GAC3B,gBAAgB,EAAE,CAEpB"}
|