moves keystore interface
This commit is contained in:
@@ -1,8 +1,9 @@
|
|||||||
import crypto from "crypto";
|
import crypto from "crypto";
|
||||||
import { Key, KeyProvider, KeyStore } from "..";
|
import { Key, KeyProvider } from "..";
|
||||||
import { config } from "../../../config";
|
import { config } from "../../../config";
|
||||||
import { logger } from "../../../logger";
|
import { logger } from "../../../logger";
|
||||||
import type { AnthropicModelFamily } from "../../models";
|
import type { AnthropicModelFamily } from "../../models";
|
||||||
|
import { KeyStore } from "../stores";
|
||||||
import { AnthropicKeyChecker } from "./checker";
|
import { AnthropicKeyChecker } from "./checker";
|
||||||
|
|
||||||
// https://docs.anthropic.com/claude/reference/selecting-a-model
|
// https://docs.anthropic.com/claude/reference/selecting-a-model
|
||||||
|
|||||||
@@ -65,12 +65,6 @@ export interface KeyProvider<T extends Key = Key> {
|
|||||||
recheck(): void;
|
recheck(): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface KeyStore<T extends Pick<Key, "key">> {
|
|
||||||
load(): Promise<T[]>;
|
|
||||||
add(key: T): void;
|
|
||||||
update(key: T): void;
|
|
||||||
}
|
|
||||||
|
|
||||||
export let keyPool: KeyPool;
|
export let keyPool: KeyPool;
|
||||||
export async function init() {
|
export async function init() {
|
||||||
keyPool = new KeyPool();
|
keyPool = new KeyPool();
|
||||||
|
|||||||
@@ -3,10 +3,11 @@ round-robin access to keys. Keys are stored in the OPENAI_KEY environment
|
|||||||
variable as a comma-separated list of keys. */
|
variable as a comma-separated list of keys. */
|
||||||
import crypto from "crypto";
|
import crypto from "crypto";
|
||||||
import http from "http";
|
import http from "http";
|
||||||
import { Key, KeyProvider, Model, KeyStore } from "../index";
|
import { Key, KeyProvider, Model } from "../index";
|
||||||
import { config } from "../../../config";
|
import { config } from "../../../config";
|
||||||
import { logger } from "../../../logger";
|
import { logger } from "../../../logger";
|
||||||
import { OpenAIKeyChecker } from "./checker";
|
import { OpenAIKeyChecker } from "./checker";
|
||||||
|
import { KeyStore } from "../stores";
|
||||||
import { getOpenAIModelFamily, OpenAIModelFamily } from "../../models";
|
import { getOpenAIModelFamily, OpenAIModelFamily } from "../../models";
|
||||||
|
|
||||||
export type OpenAIModel =
|
export type OpenAIModel =
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import type firebase from "firebase-admin";
|
import type firebase from "firebase-admin";
|
||||||
import { AIService, Key, KeyStore } from "..";
|
import { KeyStore } from ".";
|
||||||
|
import { AIService, Key } from "..";
|
||||||
import { getFirebaseApp } from "../../../config";
|
import { getFirebaseApp } from "../../../config";
|
||||||
|
|
||||||
export class FirebaseKeyStore<K extends Pick<Key, "key">>
|
export class FirebaseKeyStore<K extends Pick<Key, "key">>
|
||||||
|
|||||||
@@ -1,2 +1,10 @@
|
|||||||
|
import { Key } from "..";
|
||||||
|
|
||||||
export { FirebaseKeyStore } from "./firebase";
|
export { FirebaseKeyStore } from "./firebase";
|
||||||
export { MemoryKeyStore } from "./memory";
|
export { MemoryKeyStore } from "./memory";
|
||||||
|
|
||||||
|
export interface KeyStore<T extends Pick<Key, "key">> {
|
||||||
|
load(): Promise<T[]>;
|
||||||
|
add(key: T): void;
|
||||||
|
update(key: T): void;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { APIFormat, Key, KeyStore } from "..";
|
import { KeyStore } from ".";
|
||||||
|
import { APIFormat, Key } from "..";
|
||||||
|
|
||||||
export class MemoryKeyStore<K extends Pick<Key, "key">> implements KeyStore<K> {
|
export class MemoryKeyStore<K extends Pick<Key, "key">> implements KeyStore<K> {
|
||||||
private env: string;
|
private env: string;
|
||||||
@@ -26,7 +27,7 @@ export class MemoryKeyStore<K extends Pick<Key, "key">> implements KeyStore<K> {
|
|||||||
bareKeys = [
|
bareKeys = [
|
||||||
...new Set(process.env[this.env]?.split(",").map((k) => k.trim())),
|
...new Set(process.env[this.env]?.split(",").map((k) => k.trim())),
|
||||||
];
|
];
|
||||||
return bareKeys.map((key) => ({ key } as K));
|
return bareKeys.map((key) => ({ key } as K)); // TODO: remove assertion
|
||||||
}
|
}
|
||||||
|
|
||||||
public add(_key: K) {}
|
public add(_key: K) {}
|
||||||
|
|||||||
Reference in New Issue
Block a user