gencode-ai 0.2.0 → 0.3.0
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/dist/agent/agent.d.ts +9 -2
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +37 -8
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/types.d.ts +5 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/cli/components/App.d.ts.map +1 -1
- package/dist/cli/components/App.js +15 -9
- package/dist/cli/components/App.js.map +1 -1
- package/dist/cli/components/Messages.js +1 -1
- package/dist/cli/components/Messages.js.map +1 -1
- package/dist/cli/components/ModelSelector.d.ts +4 -3
- package/dist/cli/components/ModelSelector.d.ts.map +1 -1
- package/dist/cli/components/ModelSelector.js +54 -37
- package/dist/cli/components/ModelSelector.js.map +1 -1
- package/dist/cli/components/ProviderManager.d.ts +2 -2
- package/dist/cli/components/ProviderManager.d.ts.map +1 -1
- package/dist/cli/components/ProviderManager.js +137 -156
- package/dist/cli/components/ProviderManager.js.map +1 -1
- package/dist/cli/index.js +30 -13
- package/dist/cli/index.js.map +1 -1
- package/dist/config/index.d.ts +2 -2
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/levels.d.ts +5 -5
- package/dist/config/levels.d.ts.map +1 -1
- package/dist/config/levels.js +20 -20
- package/dist/config/levels.js.map +1 -1
- package/dist/config/merger.js +1 -1
- package/dist/config/merger.js.map +1 -1
- package/dist/config/providers-config.d.ts +8 -5
- package/dist/config/providers-config.d.ts.map +1 -1
- package/dist/config/providers-config.js +19 -22
- package/dist/config/providers-config.js.map +1 -1
- package/dist/config/test-utils.d.ts +2 -2
- package/dist/config/test-utils.d.ts.map +1 -1
- package/dist/config/test-utils.js +4 -4
- package/dist/config/test-utils.js.map +1 -1
- package/dist/config/types.d.ts +23 -17
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +14 -14
- package/dist/config/types.js.map +1 -1
- package/dist/memory/memory-manager.d.ts +25 -12
- package/dist/memory/memory-manager.d.ts.map +1 -1
- package/dist/memory/memory-manager.js +241 -112
- package/dist/memory/memory-manager.js.map +1 -1
- package/dist/memory/test-utils.d.ts +1 -1
- package/dist/memory/test-utils.d.ts.map +1 -1
- package/dist/memory/test-utils.js +3 -3
- package/dist/memory/test-utils.js.map +1 -1
- package/dist/memory/types.d.ts +20 -10
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +13 -13
- package/dist/memory/types.js.map +1 -1
- package/dist/migration/migrate.d.ts +24 -0
- package/dist/migration/migrate.d.ts.map +1 -0
- package/dist/migration/migrate.js +164 -0
- package/dist/migration/migrate.js.map +1 -0
- package/dist/permissions/persistence.d.ts +2 -2
- package/dist/permissions/persistence.js +4 -4
- package/dist/permissions/persistence.js.map +1 -1
- package/dist/planning/plan-file.d.ts +1 -1
- package/dist/planning/plan-file.js +2 -2
- package/dist/planning/plan-file.js.map +1 -1
- package/dist/prompts/index.d.ts +5 -4
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +11 -8
- package/dist/prompts/index.js.map +1 -1
- package/dist/providers/anthropic.d.ts +2 -1
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +7 -0
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/gemini.d.ts +2 -1
- package/dist/providers/gemini.d.ts.map +1 -1
- package/dist/providers/gemini.js +7 -0
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/index.d.ts +20 -10
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +48 -24
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/openai.d.ts +2 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +7 -0
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/registry.d.ts +48 -34
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +72 -88
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/store.d.ts +43 -17
- package/dist/providers/store.d.ts.map +1 -1
- package/dist/providers/store.js +112 -19
- package/dist/providers/store.js.map +1 -1
- package/dist/providers/types.d.ts +23 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/vertex-ai.d.ts +15 -7
- package/dist/providers/vertex-ai.d.ts.map +1 -1
- package/dist/providers/vertex-ai.js +46 -13
- package/dist/providers/vertex-ai.js.map +1 -1
- package/dist/session/types.js +1 -1
- package/dist/session/types.js.map +1 -1
- package/docs/config-system-comparison.md +50 -50
- package/docs/cost-tracking-comparison.md +2 -2
- package/docs/memory-system.md +124 -31
- package/docs/permissions.md +2 -2
- package/docs/proposals/0006-memory-system.md +4 -4
- package/docs/proposals/0008-checkpointing.md +109 -2
- package/docs/proposals/0011-custom-commands.md +2 -1
- package/docs/proposals/0021-skills-system.md +2 -1
- package/docs/proposals/0023-permission-enhancements.md +2 -2
- package/docs/proposals/0033-enterprise-deployment.md +1 -1
- package/docs/proposals/0041-configuration-system.md +17 -19
- package/docs/proposals/0042-prompt-optimization.md +17 -9
- package/docs/proposals/README.md +5 -5
- package/docs/providers.md +94 -9
- package/package.json +3 -2
- package/scripts/migrate.ts +449 -0
- package/src/agent/agent.ts +51 -9
- package/src/agent/types.ts +5 -1
- package/src/cli/components/App.tsx +17 -8
- package/src/cli/components/Messages.tsx +1 -1
- package/src/cli/components/ModelSelector.tsx +62 -43
- package/src/cli/components/ProviderManager.tsx +278 -323
- package/src/cli/index.tsx +36 -17
- package/src/config/index.ts +5 -3
- package/src/config/levels.test.ts +22 -22
- package/src/config/levels.ts +22 -22
- package/src/config/loader.test.ts +14 -14
- package/src/config/manager.test.ts +19 -19
- package/src/config/merger.test.ts +23 -23
- package/src/config/merger.ts +1 -1
- package/src/config/providers-config.ts +23 -21
- package/src/config/test-utils.ts +6 -6
- package/src/config/types.ts +30 -20
- package/src/memory/memory-manager.test.ts +242 -24
- package/src/memory/memory-manager.ts +270 -141
- package/src/memory/test-utils.ts +4 -4
- package/src/memory/types.ts +28 -17
- package/src/permissions/persistence.ts +4 -4
- package/src/planning/plan-file.ts +2 -2
- package/src/prompts/index.ts +13 -9
- package/src/providers/anthropic.ts +9 -0
- package/src/providers/gemini.ts +9 -0
- package/src/providers/index.ts +76 -33
- package/src/providers/openai.ts +9 -0
- package/src/providers/registry.ts +116 -111
- package/src/providers/store.ts +130 -28
- package/src/providers/types.ts +33 -1
- package/src/providers/vertex-ai.ts +49 -13
- package/src/session/types.ts +1 -1
|
@@ -1,20 +1,58 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provider Registry - Provider
|
|
2
|
+
* Provider Registry - Provider class registry with metadata
|
|
3
3
|
*/
|
|
4
|
-
import type {
|
|
4
|
+
import type { Provider, AuthMethod, ProviderClassMeta, LLMProvider } from './types.js';
|
|
5
5
|
import type { SearchProviderName } from './search/types.js';
|
|
6
|
+
export type ProviderClass = {
|
|
7
|
+
new (config?: any): LLMProvider;
|
|
8
|
+
meta: ProviderClassMeta;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* All registered provider classes
|
|
12
|
+
* Each class has static metadata describing which provider and auth method it implements
|
|
13
|
+
*/
|
|
14
|
+
export declare const PROVIDER_CLASSES: ProviderClass[];
|
|
15
|
+
/**
|
|
16
|
+
* Provider metadata (for UI display)
|
|
17
|
+
*/
|
|
18
|
+
export interface ProviderMeta {
|
|
19
|
+
id: Provider;
|
|
20
|
+
name: string;
|
|
21
|
+
popularity: number;
|
|
22
|
+
}
|
|
23
|
+
export declare const PROVIDER_METADATA: ProviderMeta[];
|
|
24
|
+
/**
|
|
25
|
+
* Get a specific provider class by provider and auth method
|
|
26
|
+
*/
|
|
27
|
+
export declare function getProviderClass(provider: Provider, authMethod: AuthMethod): ProviderClass | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Get all provider classes for a given provider
|
|
30
|
+
*/
|
|
31
|
+
export declare function getProviderClasses(provider: Provider): ProviderClass[];
|
|
32
|
+
/**
|
|
33
|
+
* Check if a provider class is ready (has required env vars)
|
|
34
|
+
*/
|
|
35
|
+
export declare function isProviderReady(providerClass: ProviderClass): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Get provider metadata by ID
|
|
38
|
+
*/
|
|
39
|
+
export declare function getProviderMeta(id: Provider): ProviderMeta | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Get all providers sorted by popularity
|
|
42
|
+
*/
|
|
43
|
+
export declare function getProvidersSorted(): ProviderMeta[];
|
|
44
|
+
/**
|
|
45
|
+
* Get the first available (ready) provider class for a provider
|
|
46
|
+
*/
|
|
47
|
+
export declare function getAvailableProviderClass(provider: Provider): ProviderClass | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Get all available (ready) provider classes for a provider
|
|
50
|
+
*/
|
|
51
|
+
export declare function getAvailableProviderClasses(provider: Provider): ProviderClass[];
|
|
6
52
|
export interface ConnectionOption {
|
|
7
|
-
method: string;
|
|
8
53
|
name: string;
|
|
9
54
|
envVars: string[];
|
|
10
55
|
description?: string;
|
|
11
|
-
providerImpl?: ProviderName;
|
|
12
|
-
}
|
|
13
|
-
export interface ProviderDefinition {
|
|
14
|
-
id: ProviderName;
|
|
15
|
-
name: string;
|
|
16
|
-
popularity: number;
|
|
17
|
-
connections: ConnectionOption[];
|
|
18
56
|
}
|
|
19
57
|
export interface SearchProviderDefinition {
|
|
20
58
|
id: SearchProviderName;
|
|
@@ -23,18 +61,10 @@ export interface SearchProviderDefinition {
|
|
|
23
61
|
connections: ConnectionOption[];
|
|
24
62
|
requiresKey: boolean;
|
|
25
63
|
}
|
|
26
|
-
/**
|
|
27
|
-
* All supported providers with their connection options
|
|
28
|
-
*/
|
|
29
|
-
export declare const PROVIDERS: ProviderDefinition[];
|
|
30
64
|
/**
|
|
31
65
|
* All supported search providers
|
|
32
66
|
*/
|
|
33
67
|
export declare const SEARCH_PROVIDERS: SearchProviderDefinition[];
|
|
34
|
-
/**
|
|
35
|
-
* Get provider definition by ID
|
|
36
|
-
*/
|
|
37
|
-
export declare function getProvider(id: ProviderName): ProviderDefinition | undefined;
|
|
38
68
|
/**
|
|
39
69
|
* Get search provider definition by ID
|
|
40
70
|
*/
|
|
@@ -43,24 +73,8 @@ export declare function getSearchProvider(id: SearchProviderName): SearchProvide
|
|
|
43
73
|
* Get all search providers sorted by popularity
|
|
44
74
|
*/
|
|
45
75
|
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
76
|
/**
|
|
59
77
|
* Check if a specific connection option has its env vars set
|
|
60
78
|
*/
|
|
61
79
|
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
80
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAU5D,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,MAAM,CAAC,EAAE,GAAG,GAAG,WAAW,CAAC;IAChC,IAAI,EAAE,iBAAiB,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAAa,EAK3C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,QAAQ,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,iBAAiB,EAAE,YAAY,EAI3C,CAAC;AAMF;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,GACrB,aAAa,GAAG,SAAS,CAI3B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa,EAAE,CAEtE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAcrE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,GAAG,YAAY,GAAG,SAAS,CAEtE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,EAAE,CAEnD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS,CAGvF;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa,EAAE,CAE/E;AAMD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;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,gBAAgB,EAAE,wBAAwB,EAwCtD,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,kBAAkB,GAAG,wBAAwB,GAAG,SAAS,CAE9F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,wBAAwB,EAAE,CAErE;AAKD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAEjE"}
|
|
@@ -1,63 +1,80 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provider Registry - Provider
|
|
2
|
+
* Provider Registry - Provider class registry with metadata
|
|
3
3
|
*/
|
|
4
|
+
import { AnthropicProvider } from './anthropic.js';
|
|
5
|
+
import { AnthropicVertexProvider } from './vertex-ai.js';
|
|
6
|
+
import { OpenAIProvider } from './openai.js';
|
|
7
|
+
import { GeminiProvider } from './gemini.js';
|
|
4
8
|
/**
|
|
5
|
-
* All
|
|
9
|
+
* All registered provider classes
|
|
10
|
+
* Each class has static metadata describing which provider and auth method it implements
|
|
6
11
|
*/
|
|
7
|
-
export const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
description: 'Direct API access',
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
method: 'vertex',
|
|
21
|
-
name: 'Google Vertex AI',
|
|
22
|
-
envVars: ['ANTHROPIC_VERTEX_PROJECT_ID', 'GOOGLE_CLOUD_PROJECT'],
|
|
23
|
-
description: 'Claude via GCP',
|
|
24
|
-
providerImpl: 'vertex-ai',
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
method: 'bedrock',
|
|
28
|
-
name: 'Amazon Bedrock',
|
|
29
|
-
envVars: ['AWS_ACCESS_KEY_ID', 'AWS_PROFILE'],
|
|
30
|
-
description: 'Claude via AWS (coming soon)',
|
|
31
|
-
},
|
|
32
|
-
],
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
id: 'openai',
|
|
36
|
-
name: 'OpenAI',
|
|
37
|
-
popularity: 2,
|
|
38
|
-
connections: [
|
|
39
|
-
{
|
|
40
|
-
method: 'api_key',
|
|
41
|
-
name: 'API Key',
|
|
42
|
-
envVars: ['OPENAI_API_KEY'],
|
|
43
|
-
description: 'Direct API access',
|
|
44
|
-
},
|
|
45
|
-
],
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
id: 'gemini',
|
|
49
|
-
name: 'Google Gemini',
|
|
50
|
-
popularity: 3,
|
|
51
|
-
connections: [
|
|
52
|
-
{
|
|
53
|
-
method: 'api_key',
|
|
54
|
-
name: 'API Key',
|
|
55
|
-
envVars: ['GOOGLE_API_KEY', 'GEMINI_API_KEY'],
|
|
56
|
-
description: 'Direct API access',
|
|
57
|
-
},
|
|
58
|
-
],
|
|
59
|
-
},
|
|
12
|
+
export const PROVIDER_CLASSES = [
|
|
13
|
+
AnthropicProvider,
|
|
14
|
+
AnthropicVertexProvider,
|
|
15
|
+
OpenAIProvider,
|
|
16
|
+
GeminiProvider,
|
|
17
|
+
];
|
|
18
|
+
export const PROVIDER_METADATA = [
|
|
19
|
+
{ id: 'anthropic', name: 'Anthropic', popularity: 1 },
|
|
20
|
+
{ id: 'openai', name: 'OpenAI', popularity: 2 },
|
|
21
|
+
{ id: 'gemini', name: 'Google Gemini', popularity: 3 },
|
|
60
22
|
];
|
|
23
|
+
// ============================================================================
|
|
24
|
+
// Helper Functions
|
|
25
|
+
// ============================================================================
|
|
26
|
+
/**
|
|
27
|
+
* Get a specific provider class by provider and auth method
|
|
28
|
+
*/
|
|
29
|
+
export function getProviderClass(provider, authMethod) {
|
|
30
|
+
return PROVIDER_CLASSES.find((cls) => cls.meta.provider === provider && cls.meta.authMethod === authMethod);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get all provider classes for a given provider
|
|
34
|
+
*/
|
|
35
|
+
export function getProviderClasses(provider) {
|
|
36
|
+
return PROVIDER_CLASSES.filter((cls) => cls.meta.provider === provider);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Check if a provider class is ready (has required env vars)
|
|
40
|
+
*/
|
|
41
|
+
export function isProviderReady(providerClass) {
|
|
42
|
+
// Special case for Vertex AI: requires explicit opt-in
|
|
43
|
+
if (providerClass.meta.authMethod === 'vertex') {
|
|
44
|
+
const useVertex = process.env.CLAUDE_CODE_USE_VERTEX === '1' || process.env.CLAUDE_CODE_USE_VERTEX === 'true';
|
|
45
|
+
const hasProject = !!(process.env.ANTHROPIC_VERTEX_PROJECT_ID ||
|
|
46
|
+
process.env.GCLOUD_PROJECT ||
|
|
47
|
+
process.env.GOOGLE_CLOUD_PROJECT);
|
|
48
|
+
return useVertex && hasProject;
|
|
49
|
+
}
|
|
50
|
+
// For other providers: check if any required env var is set
|
|
51
|
+
return providerClass.meta.envVars.some((v) => !!process.env[v]);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get provider metadata by ID
|
|
55
|
+
*/
|
|
56
|
+
export function getProviderMeta(id) {
|
|
57
|
+
return PROVIDER_METADATA.find((p) => p.id === id);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get all providers sorted by popularity
|
|
61
|
+
*/
|
|
62
|
+
export function getProvidersSorted() {
|
|
63
|
+
return [...PROVIDER_METADATA].sort((a, b) => a.popularity - b.popularity);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get the first available (ready) provider class for a provider
|
|
67
|
+
*/
|
|
68
|
+
export function getAvailableProviderClass(provider) {
|
|
69
|
+
const classes = getProviderClasses(provider);
|
|
70
|
+
return classes.find((cls) => isProviderReady(cls));
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get all available (ready) provider classes for a provider
|
|
74
|
+
*/
|
|
75
|
+
export function getAvailableProviderClasses(provider) {
|
|
76
|
+
return getProviderClasses(provider).filter((cls) => isProviderReady(cls));
|
|
77
|
+
}
|
|
61
78
|
/**
|
|
62
79
|
* All supported search providers
|
|
63
80
|
*/
|
|
@@ -68,7 +85,6 @@ export const SEARCH_PROVIDERS = [
|
|
|
68
85
|
popularity: 1,
|
|
69
86
|
connections: [
|
|
70
87
|
{
|
|
71
|
-
method: 'public',
|
|
72
88
|
name: 'Public API',
|
|
73
89
|
envVars: [],
|
|
74
90
|
description: 'No API key required',
|
|
@@ -82,7 +98,6 @@ export const SEARCH_PROVIDERS = [
|
|
|
82
98
|
popularity: 2,
|
|
83
99
|
connections: [
|
|
84
100
|
{
|
|
85
|
-
method: 'api_key',
|
|
86
101
|
name: 'API Key',
|
|
87
102
|
envVars: ['SERPER_API_KEY'],
|
|
88
103
|
description: 'Google Search via Serper',
|
|
@@ -96,7 +111,6 @@ export const SEARCH_PROVIDERS = [
|
|
|
96
111
|
popularity: 3,
|
|
97
112
|
connections: [
|
|
98
113
|
{
|
|
99
|
-
method: 'api_key',
|
|
100
114
|
name: 'API Key',
|
|
101
115
|
envVars: ['BRAVE_API_KEY'],
|
|
102
116
|
description: 'Privacy-focused search',
|
|
@@ -105,12 +119,6 @@ export const SEARCH_PROVIDERS = [
|
|
|
105
119
|
requiresKey: true,
|
|
106
120
|
},
|
|
107
121
|
];
|
|
108
|
-
/**
|
|
109
|
-
* Get provider definition by ID
|
|
110
|
-
*/
|
|
111
|
-
export function getProvider(id) {
|
|
112
|
-
return PROVIDERS.find((p) => p.id === id);
|
|
113
|
-
}
|
|
114
122
|
/**
|
|
115
123
|
* Get search provider definition by ID
|
|
116
124
|
*/
|
|
@@ -123,36 +131,12 @@ export function getSearchProvider(id) {
|
|
|
123
131
|
export function getSearchProvidersSorted() {
|
|
124
132
|
return [...SEARCH_PROVIDERS].sort((a, b) => a.popularity - b.popularity);
|
|
125
133
|
}
|
|
126
|
-
/**
|
|
127
|
-
* Get all providers sorted by popularity
|
|
128
|
-
*/
|
|
129
|
-
export function getProvidersSorted() {
|
|
130
|
-
return [...PROVIDERS].sort((a, b) => a.popularity - b.popularity);
|
|
131
|
-
}
|
|
132
134
|
// Helper: check if any env var in the list is set
|
|
133
135
|
const hasAnyEnvVar = (envVars) => envVars.some((v) => !!process.env[v]);
|
|
134
|
-
/**
|
|
135
|
-
* Check if any of the provider's env vars are set
|
|
136
|
-
*/
|
|
137
|
-
export function hasEnvVars(provider) {
|
|
138
|
-
return provider.connections.some((conn) => hasAnyEnvVar(conn.envVars));
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Get the first available connection method (where env vars are set)
|
|
142
|
-
*/
|
|
143
|
-
export function getAvailableConnection(provider) {
|
|
144
|
-
return provider.connections.find((conn) => hasAnyEnvVar(conn.envVars));
|
|
145
|
-
}
|
|
146
136
|
/**
|
|
147
137
|
* Check if a specific connection option has its env vars set
|
|
148
138
|
*/
|
|
149
139
|
export function isConnectionReady(conn) {
|
|
150
140
|
return hasAnyEnvVar(conn.envVars);
|
|
151
141
|
}
|
|
152
|
-
/**
|
|
153
|
-
* Get all available (ready) connections for a provider
|
|
154
|
-
*/
|
|
155
|
-
export function getAvailableConnections(provider) {
|
|
156
|
-
return provider.connections.filter((conn) => hasAnyEnvVar(conn.envVars));
|
|
157
|
-
}
|
|
158
142
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Provider Store - Manages provider connections and model cache
|
|
3
3
|
*
|
|
4
|
-
* Storage location: ~/.
|
|
4
|
+
* Storage location: ~/.gen/providers.json
|
|
5
5
|
*/
|
|
6
|
-
import type {
|
|
6
|
+
import type { Provider, AuthMethod } from './types.js';
|
|
7
7
|
import type { SearchProviderName } from './search/types.js';
|
|
8
8
|
export interface ModelInfo {
|
|
9
9
|
id: string;
|
|
10
10
|
name: string;
|
|
11
11
|
}
|
|
12
12
|
export interface ProviderConnection {
|
|
13
|
-
|
|
13
|
+
authMethod: AuthMethod;
|
|
14
|
+
method?: string;
|
|
14
15
|
connectedAt: string;
|
|
15
16
|
}
|
|
16
17
|
export interface ModelCache {
|
|
@@ -22,6 +23,17 @@ export interface ProvidersConfig {
|
|
|
22
23
|
models: Record<string, ModelCache>;
|
|
23
24
|
searchProvider?: SearchProviderName;
|
|
24
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Generate model cache key from provider and authMethod
|
|
28
|
+
*/
|
|
29
|
+
export declare function getModelCacheKey(provider: Provider, authMethod: AuthMethod): string;
|
|
30
|
+
/**
|
|
31
|
+
* Parse model cache key to extract provider and authMethod
|
|
32
|
+
*/
|
|
33
|
+
export declare function parseModelCacheKey(key: string): {
|
|
34
|
+
provider: Provider;
|
|
35
|
+
authMethod: AuthMethod;
|
|
36
|
+
} | null;
|
|
25
37
|
/**
|
|
26
38
|
* Provider Store - manages connection state and model cache
|
|
27
39
|
*/
|
|
@@ -39,51 +51,65 @@ export declare class ProviderStore {
|
|
|
39
51
|
/**
|
|
40
52
|
* Check if a provider is connected
|
|
41
53
|
*/
|
|
42
|
-
isConnected(providerId:
|
|
54
|
+
isConnected(providerId: Provider): boolean;
|
|
43
55
|
/**
|
|
44
56
|
* Get connection info for a provider
|
|
45
57
|
*/
|
|
46
|
-
getConnection(providerId:
|
|
58
|
+
getConnection(providerId: Provider): ProviderConnection | undefined;
|
|
47
59
|
/**
|
|
48
60
|
* Get all connected provider IDs
|
|
49
61
|
*/
|
|
50
|
-
getConnectedProviders():
|
|
62
|
+
getConnectedProviders(): Provider[];
|
|
51
63
|
/**
|
|
52
|
-
* Connect a provider
|
|
64
|
+
* Connect a provider with auth method
|
|
53
65
|
*/
|
|
54
|
-
connect(providerId:
|
|
66
|
+
connect(providerId: Provider, authMethod: AuthMethod, displayName?: string): void;
|
|
55
67
|
/**
|
|
56
|
-
* Disconnect a provider
|
|
68
|
+
* Disconnect a provider and clear all its model caches
|
|
57
69
|
*/
|
|
58
|
-
disconnect(providerId:
|
|
70
|
+
disconnect(providerId: Provider): void;
|
|
59
71
|
/**
|
|
60
72
|
* Get cached models for a provider
|
|
73
|
+
* @param providerId Provider ID
|
|
74
|
+
* @param authMethod Optional: specific auth method. If not provided, returns all models for the provider
|
|
61
75
|
*/
|
|
62
|
-
getModels(providerId:
|
|
76
|
+
getModels(providerId: Provider, authMethod?: AuthMethod): ModelInfo[];
|
|
63
77
|
/**
|
|
64
78
|
* Get all cached models grouped by provider
|
|
65
79
|
*/
|
|
66
|
-
getAllModels(): Record<
|
|
80
|
+
getAllModels(): Record<Provider, ModelInfo[]>;
|
|
67
81
|
/**
|
|
68
|
-
* Cache models for a provider
|
|
82
|
+
* Cache models for a provider with auth method
|
|
69
83
|
*/
|
|
70
|
-
cacheModels(providerId:
|
|
84
|
+
cacheModels(providerId: Provider, authMethod: AuthMethod, models: ModelInfo[]): void;
|
|
71
85
|
/**
|
|
72
86
|
* Get cache timestamp for a provider
|
|
87
|
+
* @param providerId Provider ID
|
|
88
|
+
* @param authMethod Optional: specific auth method. If not provided, returns latest cache time
|
|
73
89
|
*/
|
|
74
|
-
getCacheTime(providerId:
|
|
90
|
+
getCacheTime(providerId: Provider, authMethod?: AuthMethod): Date | undefined;
|
|
75
91
|
/**
|
|
76
92
|
* Check if model cache is stale (older than 24 hours)
|
|
93
|
+
* @param providerId Provider ID
|
|
94
|
+
* @param authMethod Optional: specific auth method. If not provided, checks if any cache is fresh
|
|
77
95
|
*/
|
|
78
|
-
isCacheStale(providerId:
|
|
96
|
+
isCacheStale(providerId: Provider, authMethod?: AuthMethod): boolean;
|
|
79
97
|
/**
|
|
80
98
|
* Get total model count across all connected providers
|
|
81
99
|
*/
|
|
82
100
|
getTotalModelCount(): number;
|
|
83
101
|
/**
|
|
84
102
|
* Get model count for a specific provider
|
|
103
|
+
* @param providerId Provider ID
|
|
104
|
+
* @param authMethod Optional: specific auth method. If not provided, counts all models for the provider
|
|
105
|
+
*/
|
|
106
|
+
getModelCount(providerId: Provider, authMethod?: AuthMethod): number;
|
|
107
|
+
/**
|
|
108
|
+
* Get the model cache info
|
|
109
|
+
* @param providerId Provider ID
|
|
110
|
+
* @param authMethod Optional: specific auth method
|
|
85
111
|
*/
|
|
86
|
-
|
|
112
|
+
getModelCache(providerId: Provider, authMethod?: AuthMethod): ModelCache | undefined;
|
|
87
113
|
/**
|
|
88
114
|
* Get the configured search provider
|
|
89
115
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/providers/store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/providers/store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAChD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACrC;AAKD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CAEnF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GAAG,IAAI,CAOrG;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAkB;;IAMhC;;OAEG;IACH,OAAO,CAAC,IAAI;IAYZ;;OAEG;IACH,OAAO,CAAC,IAAI;IAWZ;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,QAAQ,GAAG,OAAO;IAI1C;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,QAAQ,GAAG,kBAAkB,GAAG,SAAS;IAInE;;OAEG;IACH,qBAAqB,IAAI,QAAQ,EAAE;IAInC;;OAEG;IACH,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IASjF;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,QAAQ,GAAG,IAAI;IActC;;;;OAIG;IACH,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,EAAE;IAkBrE;;OAEG;IACH,YAAY,IAAI,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;IAQ7C;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI;IASpF;;;;OAIG;IACH,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS;IAqB7E;;;;OAIG;IACH,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO;IAOpE;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAO5B;;;;OAIG;IACH,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM;IAiBpE;;;;OAIG;IACH,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS;IAgBpF;;OAEG;IACH,iBAAiB,IAAI,kBAAkB,GAAG,SAAS;IAInD;;OAEG;IACH,iBAAiB,CAAC,EAAE,EAAE,kBAAkB,GAAG,IAAI;IAK/C;;OAEG;IACH,mBAAmB,IAAI,IAAI;CAI5B;AAKD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD"}
|