oh-my-claude-sisyphus 1.11.1 → 2.0.1
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/README.md +37 -12
- package/dist/__tests__/example.test.d.ts +2 -0
- package/dist/__tests__/example.test.d.ts.map +1 -0
- package/dist/__tests__/example.test.js +20 -0
- package/dist/__tests__/example.test.js.map +1 -0
- package/dist/__tests__/hooks.test.d.ts +2 -0
- package/dist/__tests__/hooks.test.d.ts.map +1 -0
- package/dist/__tests__/hooks.test.js +644 -0
- package/dist/__tests__/hooks.test.js.map +1 -0
- package/dist/__tests__/installer.test.d.ts +2 -0
- package/dist/__tests__/installer.test.d.ts.map +1 -0
- package/dist/__tests__/installer.test.js +369 -0
- package/dist/__tests__/installer.test.js.map +1 -0
- package/dist/__tests__/model-routing.test.d.ts +2 -0
- package/dist/__tests__/model-routing.test.d.ts.map +1 -0
- package/dist/__tests__/model-routing.test.js +814 -0
- package/dist/__tests__/model-routing.test.js.map +1 -0
- package/dist/__tests__/skills.test.d.ts +2 -0
- package/dist/__tests__/skills.test.d.ts.map +1 -0
- package/dist/__tests__/skills.test.js +126 -0
- package/dist/__tests__/skills.test.js.map +1 -0
- package/dist/__tests__/types.test.d.ts +2 -0
- package/dist/__tests__/types.test.d.ts.map +1 -0
- package/dist/__tests__/types.test.js +77 -0
- package/dist/__tests__/types.test.js.map +1 -0
- package/dist/agents/definitions.d.ts +1 -1
- package/dist/agents/definitions.d.ts.map +1 -1
- package/dist/agents/definitions.js +35 -3
- package/dist/agents/definitions.js.map +1 -1
- package/dist/agents/index.d.ts +1 -1
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +3 -1
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/oracle.d.ts.map +1 -1
- package/dist/agents/oracle.js +43 -1
- package/dist/agents/oracle.js.map +1 -1
- package/dist/agents/orchestrator-sisyphus.js +2 -2
- package/dist/agents/orchestrator-sisyphus.js.map +1 -1
- package/dist/cli/index.js +22 -11
- package/dist/cli/index.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +49 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/features/auto-update.d.ts.map +1 -1
- package/dist/features/auto-update.js +14 -3
- package/dist/features/auto-update.js.map +1 -1
- package/dist/features/builtin-skills/skills.d.ts.map +1 -1
- package/dist/features/builtin-skills/skills.js +0 -1351
- package/dist/features/builtin-skills/skills.js.map +1 -1
- package/dist/features/index.d.ts +1 -0
- package/dist/features/index.d.ts.map +1 -1
- package/dist/features/index.js +14 -0
- package/dist/features/index.js.map +1 -1
- package/dist/features/model-routing/index.d.ts +34 -0
- package/dist/features/model-routing/index.d.ts.map +1 -0
- package/dist/features/model-routing/index.js +48 -0
- package/dist/features/model-routing/index.js.map +1 -0
- package/dist/features/model-routing/prompts/haiku.d.ts +54 -0
- package/dist/features/model-routing/prompts/haiku.d.ts.map +1 -0
- package/dist/features/model-routing/prompts/haiku.js +141 -0
- package/dist/features/model-routing/prompts/haiku.js.map +1 -0
- package/dist/features/model-routing/prompts/index.d.ts +45 -0
- package/dist/features/model-routing/prompts/index.d.ts.map +1 -0
- package/dist/features/model-routing/prompts/index.js +116 -0
- package/dist/features/model-routing/prompts/index.js.map +1 -0
- package/dist/features/model-routing/prompts/opus.d.ts +34 -0
- package/dist/features/model-routing/prompts/opus.d.ts.map +1 -0
- package/dist/features/model-routing/prompts/opus.js +153 -0
- package/dist/features/model-routing/prompts/opus.js.map +1 -0
- package/dist/features/model-routing/prompts/sonnet.d.ts +38 -0
- package/dist/features/model-routing/prompts/sonnet.d.ts.map +1 -0
- package/dist/features/model-routing/prompts/sonnet.js +149 -0
- package/dist/features/model-routing/prompts/sonnet.js.map +1 -0
- package/dist/features/model-routing/router.d.ts +92 -0
- package/dist/features/model-routing/router.d.ts.map +1 -0
- package/dist/features/model-routing/router.js +267 -0
- package/dist/features/model-routing/router.js.map +1 -0
- package/dist/features/model-routing/rules.d.ts +32 -0
- package/dist/features/model-routing/rules.d.ts.map +1 -0
- package/dist/features/model-routing/rules.js +224 -0
- package/dist/features/model-routing/rules.js.map +1 -0
- package/dist/features/model-routing/scorer.d.ts +35 -0
- package/dist/features/model-routing/scorer.d.ts.map +1 -0
- package/dist/features/model-routing/scorer.js +241 -0
- package/dist/features/model-routing/scorer.js.map +1 -0
- package/dist/features/model-routing/signals.d.ts +26 -0
- package/dist/features/model-routing/signals.d.ts.map +1 -0
- package/dist/features/model-routing/signals.js +283 -0
- package/dist/features/model-routing/signals.js.map +1 -0
- package/dist/features/model-routing/types.d.ts +195 -0
- package/dist/features/model-routing/types.d.ts.map +1 -0
- package/dist/features/model-routing/types.js +86 -0
- package/dist/features/model-routing/types.js.map +1 -0
- package/dist/hooks/agent-usage-reminder/index.d.ts +1 -1
- package/dist/hooks/agent-usage-reminder/index.d.ts.map +1 -1
- package/dist/hooks/agent-usage-reminder/index.js +1 -1
- package/dist/hooks/agent-usage-reminder/index.js.map +1 -1
- package/dist/hooks/auto-slash-command/executor.js.map +1 -1
- package/dist/hooks/auto-slash-command/index.d.ts +3 -3
- package/dist/hooks/auto-slash-command/index.d.ts.map +1 -1
- package/dist/hooks/auto-slash-command/index.js.map +1 -1
- package/dist/hooks/background-notification/index.js +1 -1
- package/dist/hooks/background-notification/index.js.map +1 -1
- package/dist/hooks/bridge.d.ts.map +1 -1
- package/dist/hooks/bridge.js.map +1 -1
- package/dist/hooks/comment-checker/filters.d.ts +1 -1
- package/dist/hooks/comment-checker/filters.d.ts.map +1 -1
- package/dist/hooks/comment-checker/filters.js +1 -1
- package/dist/hooks/comment-checker/filters.js.map +1 -1
- package/dist/hooks/comment-checker/index.js +1 -1
- package/dist/hooks/comment-checker/index.js.map +1 -1
- package/dist/hooks/context-window-limit-recovery/index.d.ts.map +1 -1
- package/dist/hooks/context-window-limit-recovery/index.js.map +1 -1
- package/dist/hooks/index.d.ts +3 -3
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +3 -3
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/keyword-detector/index.d.ts +1 -1
- package/dist/hooks/keyword-detector/index.d.ts.map +1 -1
- package/dist/hooks/keyword-detector/index.js +1 -1
- package/dist/hooks/keyword-detector/index.js.map +1 -1
- package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
- package/dist/hooks/persistent-mode/index.js.map +1 -1
- package/dist/hooks/plugin-patterns/index.d.ts.map +1 -1
- package/dist/hooks/plugin-patterns/index.js +12 -9
- package/dist/hooks/plugin-patterns/index.js.map +1 -1
- package/dist/hooks/preemptive-compaction/index.d.ts +2 -2
- package/dist/hooks/preemptive-compaction/index.d.ts.map +1 -1
- package/dist/hooks/preemptive-compaction/index.js +1 -11
- package/dist/hooks/preemptive-compaction/index.js.map +1 -1
- package/dist/hooks/ralph-loop/index.js.map +1 -1
- package/dist/hooks/rules-injector/matcher.js +1 -1
- package/dist/hooks/rules-injector/matcher.js.map +1 -1
- package/dist/hooks/session-recovery/index.d.ts +1 -1
- package/dist/hooks/session-recovery/index.d.ts.map +1 -1
- package/dist/hooks/session-recovery/index.js +1 -1
- package/dist/hooks/session-recovery/index.js.map +1 -1
- package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +1 -1
- package/dist/hooks/sisyphus-orchestrator/index.js.map +1 -1
- package/dist/hooks/ultrawork-state/index.js +1 -1
- package/dist/hooks/ultrawork-state/index.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/installer/hooks.d.ts +1 -1
- package/dist/installer/hooks.js +1 -1
- package/dist/installer/index.d.ts +8 -7
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +648 -2141
- package/dist/installer/index.js.map +1 -1
- package/dist/shared/types.d.ts +25 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/tools/lsp/servers.d.ts.map +1 -1
- package/dist/tools/lsp/servers.js +2 -1
- package/dist/tools/lsp/servers.js.map +1 -1
- package/package.json +18 -10
- package/scripts/install.sh +236 -260
- package/scripts/keyword-detector.mjs +209 -0
- package/scripts/persistent-mode.mjs +241 -0
- package/scripts/post-tool-verifier.mjs +217 -0
- package/scripts/pre-tool-enforcer.mjs +99 -0
- package/scripts/test-pr25.sh +525 -0
- package/dist/agents/model-lists.d.ts +0 -26
- package/dist/agents/model-lists.d.ts.map +0 -1
- package/dist/agents/model-lists.js +0 -62
- package/dist/agents/model-lists.js.map +0 -1
- package/dist/auth/index.d.ts +0 -10
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/auth/index.js +0 -13
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/manager.d.ts +0 -54
- package/dist/auth/manager.d.ts.map +0 -1
- package/dist/auth/manager.js +0 -248
- package/dist/auth/manager.js.map +0 -1
- package/dist/auth/oauth-google.d.ts +0 -47
- package/dist/auth/oauth-google.d.ts.map +0 -1
- package/dist/auth/oauth-google.js +0 -280
- package/dist/auth/oauth-google.js.map +0 -1
- package/dist/auth/oauth-openai.d.ts +0 -46
- package/dist/auth/oauth-openai.d.ts.map +0 -1
- package/dist/auth/oauth-openai.js +0 -264
- package/dist/auth/oauth-openai.js.map +0 -1
- package/dist/auth/pkce.d.ts +0 -14
- package/dist/auth/pkce.d.ts.map +0 -1
- package/dist/auth/pkce.js +0 -35
- package/dist/auth/pkce.js.map +0 -1
- package/dist/auth/storage.d.ts +0 -52
- package/dist/auth/storage.d.ts.map +0 -1
- package/dist/auth/storage.js +0 -230
- package/dist/auth/storage.js.map +0 -1
- package/dist/auth/types.d.ts +0 -76
- package/dist/auth/types.d.ts.map +0 -1
- package/dist/auth/types.js +0 -5
- package/dist/auth/types.js.map +0 -1
- package/dist/providers/index.d.ts +0 -8
- package/dist/providers/index.d.ts.map +0 -1
- package/dist/providers/index.js +0 -10
- package/dist/providers/index.js.map +0 -1
- package/dist/providers/registry.d.ts +0 -29
- package/dist/providers/registry.d.ts.map +0 -1
- package/dist/providers/registry.js +0 -162
- package/dist/providers/registry.js.map +0 -1
- package/dist/providers/router.d.ts +0 -40
- package/dist/providers/router.d.ts.map +0 -1
- package/dist/providers/router.js +0 -88
- package/dist/providers/router.js.map +0 -1
- package/dist/providers/types.d.ts +0 -92
- package/dist/providers/types.d.ts.map +0 -1
- package/dist/providers/types.js +0 -27
- package/dist/providers/types.js.map +0 -1
package/dist/auth/pkce.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PKCE (Proof Key for Code Exchange) utilities for OAuth 2.0
|
|
3
|
-
*/
|
|
4
|
-
import * as crypto from 'crypto';
|
|
5
|
-
/**
|
|
6
|
-
* Generate PKCE code verifier and challenge
|
|
7
|
-
* RFC 7636: https://datatracker.ietf.org/doc/html/rfc7636
|
|
8
|
-
*/
|
|
9
|
-
export function generatePKCE() {
|
|
10
|
-
// Generate random code verifier (43-128 characters, URL-safe)
|
|
11
|
-
const codeVerifier = crypto.randomBytes(32).toString('base64url');
|
|
12
|
-
// Generate code challenge using S256 method
|
|
13
|
-
const codeChallenge = crypto
|
|
14
|
-
.createHash('sha256')
|
|
15
|
-
.update(codeVerifier)
|
|
16
|
-
.digest('base64url');
|
|
17
|
-
// Generate state for CSRF protection
|
|
18
|
-
const state = crypto.randomBytes(16).toString('hex');
|
|
19
|
-
return {
|
|
20
|
-
codeVerifier,
|
|
21
|
-
codeChallenge,
|
|
22
|
-
state,
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Verify that a state matches the expected state
|
|
27
|
-
*/
|
|
28
|
-
export function verifyState(expected, received) {
|
|
29
|
-
// Use timing-safe comparison to prevent timing attacks
|
|
30
|
-
if (expected.length !== received.length) {
|
|
31
|
-
return false;
|
|
32
|
-
}
|
|
33
|
-
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(received));
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=pkce.js.map
|
package/dist/auth/pkce.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pkce.js","sourceRoot":"","sources":["../../src/auth/pkce.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAGjC;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,8DAA8D;IAC9D,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAElE,4CAA4C;IAC5C,MAAM,aAAa,GAAG,MAAM;SACzB,UAAU,CAAC,QAAQ,CAAC;SACpB,MAAM,CAAC,YAAY,CAAC;SACpB,MAAM,CAAC,WAAW,CAAC,CAAC;IAEvB,qCAAqC;IACrC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAErD,OAAO;QACL,YAAY;QACZ,aAAa;QACb,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,QAAgB;IAC5D,uDAAuD;IACvD,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,MAAM,CAAC,eAAe,CAC3B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EACrB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CACtB,CAAC;AACJ,CAAC"}
|
package/dist/auth/storage.d.ts
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Secure credential storage for OAuth tokens and API keys
|
|
3
|
-
*
|
|
4
|
-
* Storage locations:
|
|
5
|
-
* - ~/.config/claude-sisyphus/auth/openai.json - OpenAI OAuth tokens
|
|
6
|
-
* - ~/.config/claude-sisyphus/auth/google.json - Google OAuth tokens
|
|
7
|
-
* - ~/.config/claude-sisyphus/auth/api-keys.enc - Encrypted API keys
|
|
8
|
-
*/
|
|
9
|
-
import type { ProviderType, OAuthTokens } from '../providers/types.js';
|
|
10
|
-
import type { StoredCredential } from './types.js';
|
|
11
|
-
/**
|
|
12
|
-
* Credential storage class
|
|
13
|
-
*/
|
|
14
|
-
export declare class CredentialStorage {
|
|
15
|
-
/**
|
|
16
|
-
* Store OAuth tokens for a provider
|
|
17
|
-
*/
|
|
18
|
-
storeOAuthTokens(provider: 'openai' | 'google', tokens: OAuthTokens, email?: string): Promise<void>;
|
|
19
|
-
/**
|
|
20
|
-
* Get OAuth tokens for a provider
|
|
21
|
-
*/
|
|
22
|
-
getOAuthTokens(provider: 'openai' | 'google'): Promise<StoredCredential | null>;
|
|
23
|
-
/**
|
|
24
|
-
* Store an API key for a provider (encrypted)
|
|
25
|
-
*/
|
|
26
|
-
storeApiKey(provider: 'anthropic' | 'openrouter', apiKey: string): Promise<void>;
|
|
27
|
-
/**
|
|
28
|
-
* Get an API key for a provider
|
|
29
|
-
*/
|
|
30
|
-
getApiKey(provider: 'anthropic' | 'openrouter'): Promise<StoredCredential | null>;
|
|
31
|
-
/**
|
|
32
|
-
* Get stored credential for any provider
|
|
33
|
-
*/
|
|
34
|
-
getCredential(provider: ProviderType): Promise<StoredCredential | null>;
|
|
35
|
-
/**
|
|
36
|
-
* Delete credentials for a provider
|
|
37
|
-
*/
|
|
38
|
-
delete(provider: ProviderType): Promise<void>;
|
|
39
|
-
/**
|
|
40
|
-
* Check if credentials exist for a provider
|
|
41
|
-
*/
|
|
42
|
-
hasCredentials(provider: ProviderType): Promise<boolean>;
|
|
43
|
-
/**
|
|
44
|
-
* Get all stored provider credentials (for auth-status)
|
|
45
|
-
*/
|
|
46
|
-
getAllCredentials(): Promise<StoredCredential[]>;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Get the credential storage instance
|
|
50
|
-
*/
|
|
51
|
-
export declare function getCredentialStorage(): CredentialStorage;
|
|
52
|
-
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/auth/storage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA6EnD;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;OAEG;IACG,gBAAgB,CACpB,QAAQ,EAAE,QAAQ,GAAG,QAAQ,EAC7B,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IAoBhB;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAUrF;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBtF;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,WAAW,GAAG,YAAY,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAUvF;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAQ7E;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BnD;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAK9D;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAqBvD;AAOD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CAKxD"}
|
package/dist/auth/storage.js
DELETED
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Secure credential storage for OAuth tokens and API keys
|
|
3
|
-
*
|
|
4
|
-
* Storage locations:
|
|
5
|
-
* - ~/.config/claude-sisyphus/auth/openai.json - OpenAI OAuth tokens
|
|
6
|
-
* - ~/.config/claude-sisyphus/auth/google.json - Google OAuth tokens
|
|
7
|
-
* - ~/.config/claude-sisyphus/auth/api-keys.enc - Encrypted API keys
|
|
8
|
-
*/
|
|
9
|
-
import { promises as fs } from 'fs';
|
|
10
|
-
import * as path from 'path';
|
|
11
|
-
import * as os from 'os';
|
|
12
|
-
import * as crypto from 'crypto';
|
|
13
|
-
/**
|
|
14
|
-
* Base directory for auth storage
|
|
15
|
-
*/
|
|
16
|
-
const AUTH_DIR = path.join(os.homedir(), '.config', 'claude-sisyphus', 'auth');
|
|
17
|
-
/**
|
|
18
|
-
* Get the path for OAuth token storage
|
|
19
|
-
*/
|
|
20
|
-
function getOAuthPath(provider) {
|
|
21
|
-
return path.join(AUTH_DIR, `${provider}.json`);
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Get the path for encrypted API keys
|
|
25
|
-
*/
|
|
26
|
-
function getApiKeysPath() {
|
|
27
|
-
return path.join(AUTH_DIR, 'api-keys.enc');
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Derive encryption key from machine-specific data
|
|
31
|
-
* This provides basic protection for stored API keys
|
|
32
|
-
*/
|
|
33
|
-
function deriveEncryptionKey() {
|
|
34
|
-
const machineId = `${os.hostname()}-${os.userInfo().username}-${os.homedir()}`;
|
|
35
|
-
return crypto.scryptSync(machineId, 'claude-sisyphus-salt', 32);
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Encrypt data with AES-256-GCM
|
|
39
|
-
*/
|
|
40
|
-
function encrypt(data) {
|
|
41
|
-
const key = deriveEncryptionKey();
|
|
42
|
-
const iv = crypto.randomBytes(16);
|
|
43
|
-
const cipher = crypto.createCipheriv('aes-256-gcm', key, iv);
|
|
44
|
-
let encrypted = cipher.update(data, 'utf8', 'hex');
|
|
45
|
-
encrypted += cipher.final('hex');
|
|
46
|
-
const authTag = cipher.getAuthTag();
|
|
47
|
-
return JSON.stringify({
|
|
48
|
-
iv: iv.toString('hex'),
|
|
49
|
-
data: encrypted,
|
|
50
|
-
tag: authTag.toString('hex'),
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Decrypt data with AES-256-GCM
|
|
55
|
-
*/
|
|
56
|
-
function decrypt(encryptedData) {
|
|
57
|
-
const key = deriveEncryptionKey();
|
|
58
|
-
const { iv, data, tag } = JSON.parse(encryptedData);
|
|
59
|
-
const decipher = crypto.createDecipheriv('aes-256-gcm', key, Buffer.from(iv, 'hex'));
|
|
60
|
-
decipher.setAuthTag(Buffer.from(tag, 'hex'));
|
|
61
|
-
let decrypted = decipher.update(data, 'hex', 'utf8');
|
|
62
|
-
decrypted += decipher.final('utf8');
|
|
63
|
-
return decrypted;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Ensure the auth directory exists with proper permissions
|
|
67
|
-
*/
|
|
68
|
-
async function ensureAuthDir() {
|
|
69
|
-
await fs.mkdir(AUTH_DIR, { recursive: true, mode: 0o700 });
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Credential storage class
|
|
73
|
-
*/
|
|
74
|
-
export class CredentialStorage {
|
|
75
|
-
/**
|
|
76
|
-
* Store OAuth tokens for a provider
|
|
77
|
-
*/
|
|
78
|
-
async storeOAuthTokens(provider, tokens, email) {
|
|
79
|
-
await ensureAuthDir();
|
|
80
|
-
const credential = {
|
|
81
|
-
provider,
|
|
82
|
-
type: 'oauth',
|
|
83
|
-
accessToken: tokens.accessToken,
|
|
84
|
-
refreshToken: tokens.refreshToken,
|
|
85
|
-
idToken: tokens.idToken,
|
|
86
|
-
expiresAt: tokens.expiresAt,
|
|
87
|
-
createdAt: Date.now(),
|
|
88
|
-
email,
|
|
89
|
-
};
|
|
90
|
-
const filePath = getOAuthPath(provider);
|
|
91
|
-
await fs.writeFile(filePath, JSON.stringify(credential, null, 2), {
|
|
92
|
-
mode: 0o600,
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Get OAuth tokens for a provider
|
|
97
|
-
*/
|
|
98
|
-
async getOAuthTokens(provider) {
|
|
99
|
-
try {
|
|
100
|
-
const filePath = getOAuthPath(provider);
|
|
101
|
-
const content = await fs.readFile(filePath, 'utf-8');
|
|
102
|
-
return JSON.parse(content);
|
|
103
|
-
}
|
|
104
|
-
catch {
|
|
105
|
-
return null;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Store an API key for a provider (encrypted)
|
|
110
|
-
*/
|
|
111
|
-
async storeApiKey(provider, apiKey) {
|
|
112
|
-
await ensureAuthDir();
|
|
113
|
-
// Load existing keys
|
|
114
|
-
let keys = {};
|
|
115
|
-
try {
|
|
116
|
-
const content = await fs.readFile(getApiKeysPath(), 'utf-8');
|
|
117
|
-
keys = JSON.parse(decrypt(content));
|
|
118
|
-
}
|
|
119
|
-
catch {
|
|
120
|
-
// No existing keys file
|
|
121
|
-
}
|
|
122
|
-
// Add/update the key
|
|
123
|
-
keys[provider] = {
|
|
124
|
-
provider,
|
|
125
|
-
type: 'api_key',
|
|
126
|
-
accessToken: apiKey,
|
|
127
|
-
createdAt: Date.now(),
|
|
128
|
-
};
|
|
129
|
-
// Write encrypted
|
|
130
|
-
const encrypted = encrypt(JSON.stringify(keys));
|
|
131
|
-
await fs.writeFile(getApiKeysPath(), encrypted, { mode: 0o600 });
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Get an API key for a provider
|
|
135
|
-
*/
|
|
136
|
-
async getApiKey(provider) {
|
|
137
|
-
try {
|
|
138
|
-
const content = await fs.readFile(getApiKeysPath(), 'utf-8');
|
|
139
|
-
const keys = JSON.parse(decrypt(content));
|
|
140
|
-
return keys[provider] || null;
|
|
141
|
-
}
|
|
142
|
-
catch {
|
|
143
|
-
return null;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Get stored credential for any provider
|
|
148
|
-
*/
|
|
149
|
-
async getCredential(provider) {
|
|
150
|
-
if (provider === 'openai' || provider === 'google') {
|
|
151
|
-
return this.getOAuthTokens(provider);
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
return this.getApiKey(provider);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Delete credentials for a provider
|
|
159
|
-
*/
|
|
160
|
-
async delete(provider) {
|
|
161
|
-
if (provider === 'openai' || provider === 'google') {
|
|
162
|
-
try {
|
|
163
|
-
await fs.unlink(getOAuthPath(provider));
|
|
164
|
-
}
|
|
165
|
-
catch {
|
|
166
|
-
// File might not exist
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
// Remove from encrypted API keys
|
|
171
|
-
try {
|
|
172
|
-
const content = await fs.readFile(getApiKeysPath(), 'utf-8');
|
|
173
|
-
const keys = JSON.parse(decrypt(content));
|
|
174
|
-
delete keys[provider];
|
|
175
|
-
if (Object.keys(keys).length === 0) {
|
|
176
|
-
await fs.unlink(getApiKeysPath());
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
const encrypted = encrypt(JSON.stringify(keys));
|
|
180
|
-
await fs.writeFile(getApiKeysPath(), encrypted, { mode: 0o600 });
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
catch {
|
|
184
|
-
// File might not exist
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Check if credentials exist for a provider
|
|
190
|
-
*/
|
|
191
|
-
async hasCredentials(provider) {
|
|
192
|
-
const credential = await this.getCredential(provider);
|
|
193
|
-
return credential !== null;
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Get all stored provider credentials (for auth-status)
|
|
197
|
-
*/
|
|
198
|
-
async getAllCredentials() {
|
|
199
|
-
const credentials = [];
|
|
200
|
-
// Check OAuth providers
|
|
201
|
-
for (const provider of ['openai', 'google']) {
|
|
202
|
-
const cred = await this.getOAuthTokens(provider);
|
|
203
|
-
if (cred) {
|
|
204
|
-
credentials.push(cred);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
// Check API key providers
|
|
208
|
-
for (const provider of ['anthropic', 'openrouter']) {
|
|
209
|
-
const cred = await this.getApiKey(provider);
|
|
210
|
-
if (cred) {
|
|
211
|
-
credentials.push(cred);
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
return credentials;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Singleton storage instance
|
|
219
|
-
*/
|
|
220
|
-
let storageInstance = null;
|
|
221
|
-
/**
|
|
222
|
-
* Get the credential storage instance
|
|
223
|
-
*/
|
|
224
|
-
export function getCredentialStorage() {
|
|
225
|
-
if (!storageInstance) {
|
|
226
|
-
storageInstance = new CredentialStorage();
|
|
227
|
-
}
|
|
228
|
-
return storageInstance;
|
|
229
|
-
}
|
|
230
|
-
//# sourceMappingURL=storage.js.map
|
package/dist/auth/storage.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/auth/storage.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/types.d.ts
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Authentication type definitions
|
|
3
|
-
*/
|
|
4
|
-
import type { ProviderType, AuthType, OAuthTokens } from '../providers/types.js';
|
|
5
|
-
/**
|
|
6
|
-
* Stored credential for a provider
|
|
7
|
-
*/
|
|
8
|
-
export interface StoredCredential {
|
|
9
|
-
/** Provider this credential is for */
|
|
10
|
-
provider: ProviderType;
|
|
11
|
-
/** Type of authentication */
|
|
12
|
-
type: AuthType;
|
|
13
|
-
/** Access token (API key for api_key type, OAuth token for oauth type) */
|
|
14
|
-
accessToken: string;
|
|
15
|
-
/** OAuth refresh token (only for oauth type) */
|
|
16
|
-
refreshToken?: string;
|
|
17
|
-
/** OAuth ID token (only for OpenAI oauth) */
|
|
18
|
-
idToken?: string;
|
|
19
|
-
/** Token expiration timestamp in milliseconds (only for oauth type) */
|
|
20
|
-
expiresAt?: number;
|
|
21
|
-
/** When this credential was created/stored */
|
|
22
|
-
createdAt: number;
|
|
23
|
-
/** Email associated with the credential (for OAuth) */
|
|
24
|
-
email?: string;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Authentication status for a provider
|
|
28
|
-
*/
|
|
29
|
-
export interface AuthStatus {
|
|
30
|
-
/** Provider this status is for */
|
|
31
|
-
provider: ProviderType;
|
|
32
|
-
/** Whether the provider is authenticated */
|
|
33
|
-
authenticated: boolean;
|
|
34
|
-
/** Type of authentication used */
|
|
35
|
-
authType?: AuthType;
|
|
36
|
-
/** Token expiration timestamp (for OAuth) */
|
|
37
|
-
expiresAt?: number;
|
|
38
|
-
/** Email associated with the account (for OAuth) */
|
|
39
|
-
email?: string;
|
|
40
|
-
/** Error message if authentication failed */
|
|
41
|
-
error?: string;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Options for connecting to a provider
|
|
45
|
-
*/
|
|
46
|
-
export interface ConnectOptions {
|
|
47
|
-
/** Force re-authentication even if already authenticated */
|
|
48
|
-
force?: boolean;
|
|
49
|
-
/** API key for direct API key authentication */
|
|
50
|
-
apiKey?: string;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Result of an OAuth authentication flow
|
|
54
|
-
*/
|
|
55
|
-
export interface OAuthResult {
|
|
56
|
-
/** Whether authentication was successful */
|
|
57
|
-
success: boolean;
|
|
58
|
-
/** OAuth tokens if successful */
|
|
59
|
-
tokens?: OAuthTokens;
|
|
60
|
-
/** Error message if failed */
|
|
61
|
-
error?: string;
|
|
62
|
-
/** Email from the OAuth profile */
|
|
63
|
-
email?: string;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* PKCE (Proof Key for Code Exchange) data
|
|
67
|
-
*/
|
|
68
|
-
export interface PKCEData {
|
|
69
|
-
/** Code verifier (random string) */
|
|
70
|
-
codeVerifier: string;
|
|
71
|
-
/** Code challenge (SHA-256 hash of verifier, base64url encoded) */
|
|
72
|
-
codeChallenge: string;
|
|
73
|
-
/** State parameter for CSRF protection */
|
|
74
|
-
state: string;
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/auth/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,QAAQ,EAAE,YAAY,CAAC;IACvB,6BAA6B;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,kCAAkC;IAClC,QAAQ,EAAE,YAAY,CAAC;IACvB,4CAA4C;IAC5C,aAAa,EAAE,OAAO,CAAC;IACvB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,4CAA4C;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,iCAAiC;IACjC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,aAAa,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;CACf"}
|
package/dist/auth/types.js
DELETED
package/dist/auth/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Provider module exports
|
|
3
|
-
*/
|
|
4
|
-
export type { ProviderType, ModelId, AuthType, ProviderConfig, ResolvedModel, ModelInfo, OAuthTokens, OAuthConfig, } from './types.js';
|
|
5
|
-
export { getProviderFromModelId, getModelNameFromId, createModelId, } from './types.js';
|
|
6
|
-
export { MODEL_REGISTRY, getModelInfo, getModelsForProvider, isKnownModel, getAllModelIds, DEFAULT_MODELS, } from './registry.js';
|
|
7
|
-
export { ModelRouter, createModelRouter } from './router.js';
|
|
8
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,cAAc,EACd,aAAa,EACb,SAAS,EACT,WAAW,EACX,WAAW,GACZ,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,cAAc,GACf,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/providers/index.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Provider module exports
|
|
3
|
-
*/
|
|
4
|
-
// Type utilities
|
|
5
|
-
export { getProviderFromModelId, getModelNameFromId, createModelId, } from './types.js';
|
|
6
|
-
// Registry
|
|
7
|
-
export { MODEL_REGISTRY, getModelInfo, getModelsForProvider, isKnownModel, getAllModelIds, DEFAULT_MODELS, } from './registry.js';
|
|
8
|
-
// Router
|
|
9
|
-
export { ModelRouter, createModelRouter } from './router.js';
|
|
10
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH,iBAAiB;AACjB,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,WAAW;AACX,OAAO,EACL,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,SAAS;AACT,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Model registry with known models and their capabilities
|
|
3
|
-
*/
|
|
4
|
-
import type { ModelId, ModelInfo, ProviderType } from './types.js';
|
|
5
|
-
/**
|
|
6
|
-
* Registry of known models with their capabilities
|
|
7
|
-
*/
|
|
8
|
-
export declare const MODEL_REGISTRY: Record<string, ModelInfo>;
|
|
9
|
-
/**
|
|
10
|
-
* Get model info from the registry
|
|
11
|
-
*/
|
|
12
|
-
export declare function getModelInfo(modelId: ModelId): ModelInfo | undefined;
|
|
13
|
-
/**
|
|
14
|
-
* Get all models for a specific provider
|
|
15
|
-
*/
|
|
16
|
-
export declare function getModelsForProvider(provider: ProviderType): ModelInfo[];
|
|
17
|
-
/**
|
|
18
|
-
* Check if a model is known in the registry
|
|
19
|
-
*/
|
|
20
|
-
export declare function isKnownModel(modelId: ModelId): boolean;
|
|
21
|
-
/**
|
|
22
|
-
* Get all known model IDs
|
|
23
|
-
*/
|
|
24
|
-
export declare function getAllModelIds(): ModelId[];
|
|
25
|
-
/**
|
|
26
|
-
* Get default models for each provider
|
|
27
|
-
*/
|
|
28
|
-
export declare const DEFAULT_MODELS: Record<ProviderType, ModelId>;
|
|
29
|
-
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEnE;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CA2HpD,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAEpE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,EAAE,CAExE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,EAAE,CAE1C;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,CAKxD,CAAC"}
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Model registry with known models and their capabilities
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Registry of known models with their capabilities
|
|
6
|
-
*/
|
|
7
|
-
export const MODEL_REGISTRY = {
|
|
8
|
-
// OpenAI Models (OAuth - ChatGPT Plus/Pro)
|
|
9
|
-
'openai/gpt-4o': {
|
|
10
|
-
id: 'openai/gpt-4o',
|
|
11
|
-
provider: 'openai',
|
|
12
|
-
displayName: 'GPT-4o',
|
|
13
|
-
contextWindow: 128000,
|
|
14
|
-
supportsVision: true,
|
|
15
|
-
supportsTools: true,
|
|
16
|
-
supportsStreaming: true,
|
|
17
|
-
},
|
|
18
|
-
'openai/gpt-4o-mini': {
|
|
19
|
-
id: 'openai/gpt-4o-mini',
|
|
20
|
-
provider: 'openai',
|
|
21
|
-
displayName: 'GPT-4o Mini',
|
|
22
|
-
contextWindow: 128000,
|
|
23
|
-
supportsVision: true,
|
|
24
|
-
supportsTools: true,
|
|
25
|
-
supportsStreaming: true,
|
|
26
|
-
},
|
|
27
|
-
'openai/o1': {
|
|
28
|
-
id: 'openai/o1',
|
|
29
|
-
provider: 'openai',
|
|
30
|
-
displayName: 'o1',
|
|
31
|
-
contextWindow: 200000,
|
|
32
|
-
supportsVision: true,
|
|
33
|
-
supportsTools: false,
|
|
34
|
-
supportsStreaming: false,
|
|
35
|
-
},
|
|
36
|
-
'openai/o1-mini': {
|
|
37
|
-
id: 'openai/o1-mini',
|
|
38
|
-
provider: 'openai',
|
|
39
|
-
displayName: 'o1-mini',
|
|
40
|
-
contextWindow: 128000,
|
|
41
|
-
supportsVision: false,
|
|
42
|
-
supportsTools: false,
|
|
43
|
-
supportsStreaming: false,
|
|
44
|
-
},
|
|
45
|
-
'openai/o1-pro': {
|
|
46
|
-
id: 'openai/o1-pro',
|
|
47
|
-
provider: 'openai',
|
|
48
|
-
displayName: 'o1-pro',
|
|
49
|
-
contextWindow: 200000,
|
|
50
|
-
supportsVision: true,
|
|
51
|
-
supportsTools: false,
|
|
52
|
-
supportsStreaming: false,
|
|
53
|
-
},
|
|
54
|
-
'openai/o3-mini': {
|
|
55
|
-
id: 'openai/o3-mini',
|
|
56
|
-
provider: 'openai',
|
|
57
|
-
displayName: 'o3-mini',
|
|
58
|
-
contextWindow: 200000,
|
|
59
|
-
supportsVision: true,
|
|
60
|
-
supportsTools: true,
|
|
61
|
-
supportsStreaming: true,
|
|
62
|
-
},
|
|
63
|
-
// Google Models (OAuth - Consumer Account)
|
|
64
|
-
'google/gemini-2.0-flash': {
|
|
65
|
-
id: 'google/gemini-2.0-flash',
|
|
66
|
-
provider: 'google',
|
|
67
|
-
displayName: 'Gemini 2.0 Flash',
|
|
68
|
-
contextWindow: 1000000,
|
|
69
|
-
supportsVision: true,
|
|
70
|
-
supportsTools: true,
|
|
71
|
-
supportsStreaming: true,
|
|
72
|
-
},
|
|
73
|
-
'google/gemini-2.0-flash-lite': {
|
|
74
|
-
id: 'google/gemini-2.0-flash-lite',
|
|
75
|
-
provider: 'google',
|
|
76
|
-
displayName: 'Gemini 2.0 Flash Lite',
|
|
77
|
-
contextWindow: 1000000,
|
|
78
|
-
supportsVision: true,
|
|
79
|
-
supportsTools: true,
|
|
80
|
-
supportsStreaming: true,
|
|
81
|
-
},
|
|
82
|
-
'google/gemini-1.5-pro': {
|
|
83
|
-
id: 'google/gemini-1.5-pro',
|
|
84
|
-
provider: 'google',
|
|
85
|
-
displayName: 'Gemini 1.5 Pro',
|
|
86
|
-
contextWindow: 2000000,
|
|
87
|
-
supportsVision: true,
|
|
88
|
-
supportsTools: true,
|
|
89
|
-
supportsStreaming: true,
|
|
90
|
-
},
|
|
91
|
-
'google/gemini-1.5-flash': {
|
|
92
|
-
id: 'google/gemini-1.5-flash',
|
|
93
|
-
provider: 'google',
|
|
94
|
-
displayName: 'Gemini 1.5 Flash',
|
|
95
|
-
contextWindow: 1000000,
|
|
96
|
-
supportsVision: true,
|
|
97
|
-
supportsTools: true,
|
|
98
|
-
supportsStreaming: true,
|
|
99
|
-
},
|
|
100
|
-
// Anthropic Models (API Key)
|
|
101
|
-
'anthropic/claude-opus-4-5': {
|
|
102
|
-
id: 'anthropic/claude-opus-4-5',
|
|
103
|
-
provider: 'anthropic',
|
|
104
|
-
displayName: 'Claude Opus 4.5',
|
|
105
|
-
contextWindow: 200000,
|
|
106
|
-
supportsVision: true,
|
|
107
|
-
supportsTools: true,
|
|
108
|
-
supportsStreaming: true,
|
|
109
|
-
},
|
|
110
|
-
'anthropic/claude-sonnet-4-5': {
|
|
111
|
-
id: 'anthropic/claude-sonnet-4-5',
|
|
112
|
-
provider: 'anthropic',
|
|
113
|
-
displayName: 'Claude Sonnet 4.5',
|
|
114
|
-
contextWindow: 200000,
|
|
115
|
-
supportsVision: true,
|
|
116
|
-
supportsTools: true,
|
|
117
|
-
supportsStreaming: true,
|
|
118
|
-
},
|
|
119
|
-
'anthropic/claude-haiku-4-5': {
|
|
120
|
-
id: 'anthropic/claude-haiku-4-5',
|
|
121
|
-
provider: 'anthropic',
|
|
122
|
-
displayName: 'Claude Haiku 4.5',
|
|
123
|
-
contextWindow: 200000,
|
|
124
|
-
supportsVision: true,
|
|
125
|
-
supportsTools: true,
|
|
126
|
-
supportsStreaming: true,
|
|
127
|
-
},
|
|
128
|
-
};
|
|
129
|
-
/**
|
|
130
|
-
* Get model info from the registry
|
|
131
|
-
*/
|
|
132
|
-
export function getModelInfo(modelId) {
|
|
133
|
-
return MODEL_REGISTRY[modelId];
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Get all models for a specific provider
|
|
137
|
-
*/
|
|
138
|
-
export function getModelsForProvider(provider) {
|
|
139
|
-
return Object.values(MODEL_REGISTRY).filter(m => m.provider === provider);
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Check if a model is known in the registry
|
|
143
|
-
*/
|
|
144
|
-
export function isKnownModel(modelId) {
|
|
145
|
-
return modelId in MODEL_REGISTRY;
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Get all known model IDs
|
|
149
|
-
*/
|
|
150
|
-
export function getAllModelIds() {
|
|
151
|
-
return Object.keys(MODEL_REGISTRY);
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Get default models for each provider
|
|
155
|
-
*/
|
|
156
|
-
export const DEFAULT_MODELS = {
|
|
157
|
-
anthropic: 'anthropic/claude-sonnet-4-5',
|
|
158
|
-
openai: 'openai/gpt-4o',
|
|
159
|
-
google: 'google/gemini-2.0-flash',
|
|
160
|
-
openrouter: 'openrouter/anthropic/claude-3.5-sonnet', // OpenRouter uses passthrough
|
|
161
|
-
};
|
|
162
|
-
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"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"}
|