chore(vendor): import pi 1.3.0
Imported as a linear vendor commit so forge rebases do not replay the upstream root tree. git-subtree-dir: third_party/pi git-subtree-split: 71023aec1546d6d677a65669c5665c0927ce0dd0
This commit is contained in:
1 parent
719370c8f7
commit
6081e3e325
1743 files changed
+205459
-131704
No files matched your search
+14
-15
@@ -1,10 +1,8 @@
|
||||
import { afterEach, describe, expect, it, vi } from "vitest";
|
||||
import { InMemoryCredentialStore } from "../src/auth/credential-store.ts";
|
||||
import { openRouterOAuth } from "../src/auth/oauth/openrouter.ts";
|
||||
import { createImagesModels } from "../src/images-models.ts";
|
||||
import { createModels } from "../src/models.ts";
|
||||
import { openrouterProvider } from "../src/providers/openrouter.ts";
|
||||
import { openrouterImagesProvider } from "../src/providers/openrouter-images.ts";
|
||||
|
||||
const TOKEN_URL = "https://openrouter.ai/api/v1/auth/keys";
|
||||
const nativeFetch = globalThis.fetch;
|
||||
@@ -26,15 +24,14 @@ describe.sequential("OpenRouter OAuth", () => {
|
||||
vi.unstubAllEnvs();
|
||||
});
|
||||
|
||||
it("is exposed by both OpenRouter providers alongside API-key auth", () => {
|
||||
for (const provider of [openrouterProvider(), openrouterImagesProvider()]) {
|
||||
expect(provider.auth.apiKey).toBeDefined();
|
||||
expect(provider.auth.oauth).toBeDefined();
|
||||
expect(provider.auth.oauth?.loginLabel).toBe("Sign in with OpenRouter");
|
||||
}
|
||||
it("is exposed alongside API-key auth", () => {
|
||||
const provider = openrouterProvider();
|
||||
expect(provider.auth.apiKey).toBeDefined();
|
||||
expect(provider.auth.oauth).toBeDefined();
|
||||
expect(provider.auth.oauth?.loginLabel).toBe("Sign in with OpenRouter");
|
||||
});
|
||||
|
||||
it("resolves the same stored OAuth key for text and image providers", async () => {
|
||||
it("resolves the same stored OAuth key for chat and image models", async () => {
|
||||
const credentials = new InMemoryCredentialStore();
|
||||
await credentials.modify("openrouter", async () => ({
|
||||
type: "oauth",
|
||||
@@ -43,13 +40,15 @@ describe.sequential("OpenRouter OAuth", () => {
|
||||
expires: Number.MAX_SAFE_INTEGER,
|
||||
}));
|
||||
|
||||
const textModels = createModels({ credentials });
|
||||
textModels.setProvider(openrouterProvider());
|
||||
const imageModels = createImagesModels({ credentials });
|
||||
imageModels.setProvider(openrouterImagesProvider());
|
||||
const models = createModels({ credentials });
|
||||
models.setProvider(openrouterProvider());
|
||||
const chatModel = models.getModels("openrouter")[0];
|
||||
const imageModel = models.getModelsOfType("image", "openrouter")[0];
|
||||
expect(chatModel).toBeDefined();
|
||||
expect(imageModel).toBeDefined();
|
||||
|
||||
expect((await textModels.getAuth("openrouter"))?.auth.apiKey).toBe("sk-or-stored");
|
||||
expect((await imageModels.getAuth("openrouter"))?.auth.apiKey).toBe("sk-or-stored");
|
||||
expect((await models.getAuth(chatModel))?.auth.apiKey).toBe("sk-or-stored");
|
||||
expect((await models.getAuth(imageModel))?.auth.apiKey).toBe("sk-or-stored");
|
||||
});
|
||||
|
||||
it("runs PKCE on a one-shot loopback callback and exchanges the code for a permanent API key", async () => {
|
||||
|
||||
Reference in new issue
Block a user