@openrouter/sdk 0.3.12 → 0.3.14

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.
Files changed (59) hide show
  1. package/esm/lib/anthropic-compat.test.js +3 -0
  2. package/esm/lib/chat-compat.test.js +3 -0
  3. package/esm/lib/config.d.ts +2 -2
  4. package/esm/lib/config.js +2 -2
  5. package/esm/lib/tool-types.d.ts +1 -1
  6. package/esm/models/chatgenerationparams.d.ts +93 -12
  7. package/esm/models/chatgenerationparams.js +75 -6
  8. package/esm/models/chatgenerationtokenusage.d.ts +1 -0
  9. package/esm/models/chatgenerationtokenusage.js +2 -0
  10. package/esm/models/chatmessagetokenlogprob.d.ts +4 -4
  11. package/esm/models/chatmessagetokenlogprob.js +4 -5
  12. package/esm/models/index.d.ts +7 -0
  13. package/esm/models/index.js +7 -0
  14. package/esm/models/openairesponsesinputunion.d.ts +15 -5
  15. package/esm/models/openairesponsesinputunion.js +5 -5
  16. package/esm/models/openresponseseasyinputmessage.d.ts +41 -16
  17. package/esm/models/openresponseseasyinputmessage.js +38 -13
  18. package/esm/models/openresponsesinputmessageitem.d.ts +37 -12
  19. package/esm/models/openresponsesinputmessageitem.js +33 -9
  20. package/esm/models/openresponsesnonstreamingresponse.d.ts +5 -2
  21. package/esm/models/openresponsesnonstreamingresponse.js +8 -2
  22. package/esm/models/openresponsesreasoning.d.ts +1 -0
  23. package/esm/models/openresponsesreasoning.js +1 -0
  24. package/esm/models/openresponsesrequest.d.ts +61 -24
  25. package/esm/models/openresponsesrequest.js +39 -6
  26. package/esm/models/operations/getgeneration.d.ts +4 -0
  27. package/esm/models/operations/getgeneration.js +1 -0
  28. package/esm/models/percentilelatencycutoffs.d.ts +33 -0
  29. package/esm/models/percentilelatencycutoffs.js +16 -0
  30. package/esm/models/percentilestats.d.ts +28 -0
  31. package/esm/models/percentilestats.js +17 -0
  32. package/esm/models/percentilethroughputcutoffs.d.ts +33 -0
  33. package/esm/models/percentilethroughputcutoffs.js +16 -0
  34. package/esm/models/preferredmaxlatency.d.ts +12 -0
  35. package/esm/models/preferredmaxlatency.js +12 -0
  36. package/esm/models/preferredminthroughput.d.ts +12 -0
  37. package/esm/models/preferredminthroughput.js +12 -0
  38. package/esm/models/providername.d.ts +3 -2
  39. package/esm/models/providername.js +3 -2
  40. package/esm/models/providerpreferences.d.ts +8 -20
  41. package/esm/models/providerpreferences.js +6 -6
  42. package/esm/models/publicendpoint.d.ts +6 -0
  43. package/esm/models/publicendpoint.js +5 -0
  44. package/esm/models/responseinputimage.d.ts +11 -3
  45. package/esm/models/responseinputimage.js +9 -2
  46. package/esm/models/responseinputvideo.d.ts +20 -0
  47. package/esm/models/responseinputvideo.js +19 -0
  48. package/esm/models/responseoutputtext.d.ts +38 -0
  49. package/esm/models/responseoutputtext.js +50 -0
  50. package/esm/models/responsesoutputitemreasoning.d.ts +30 -1
  51. package/esm/models/responsesoutputitemreasoning.js +22 -0
  52. package/esm/models/responsesoutputmodality.d.ts +10 -0
  53. package/esm/models/responsesoutputmodality.js +12 -0
  54. package/esm/models/schema0.d.ts +3 -2
  55. package/esm/models/schema0.js +3 -2
  56. package/esm/models/schema3.d.ts +1 -0
  57. package/esm/models/schema3.js +1 -0
  58. package/jsr.json +1 -1
  59. package/package.json +1 -1
@@ -2,18 +2,56 @@ import * as z from "zod/v4";
2
2
  import { Result as SafeParseResult } from "../types/fp.js";
3
3
  import { SDKValidationError } from "./errors/sdkvalidationerror.js";
4
4
  import { OpenAIResponsesAnnotation, OpenAIResponsesAnnotation$Outbound } from "./openairesponsesannotation.js";
5
+ export type ResponseOutputTextTopLogprob = {
6
+ token: string;
7
+ bytes: Array<number>;
8
+ logprob: number;
9
+ };
10
+ export type Logprob = {
11
+ token: string;
12
+ bytes: Array<number>;
13
+ logprob: number;
14
+ topLogprobs: Array<ResponseOutputTextTopLogprob>;
15
+ };
5
16
  export type ResponseOutputText = {
6
17
  type: "output_text";
7
18
  text: string;
8
19
  annotations?: Array<OpenAIResponsesAnnotation> | undefined;
20
+ logprobs?: Array<Logprob> | undefined;
21
+ };
22
+ /** @internal */
23
+ export declare const ResponseOutputTextTopLogprob$inboundSchema: z.ZodType<ResponseOutputTextTopLogprob, unknown>;
24
+ /** @internal */
25
+ export type ResponseOutputTextTopLogprob$Outbound = {
26
+ token: string;
27
+ bytes: Array<number>;
28
+ logprob: number;
9
29
  };
10
30
  /** @internal */
31
+ export declare const ResponseOutputTextTopLogprob$outboundSchema: z.ZodType<ResponseOutputTextTopLogprob$Outbound, ResponseOutputTextTopLogprob>;
32
+ export declare function responseOutputTextTopLogprobToJSON(responseOutputTextTopLogprob: ResponseOutputTextTopLogprob): string;
33
+ export declare function responseOutputTextTopLogprobFromJSON(jsonString: string): SafeParseResult<ResponseOutputTextTopLogprob, SDKValidationError>;
34
+ /** @internal */
35
+ export declare const Logprob$inboundSchema: z.ZodType<Logprob, unknown>;
36
+ /** @internal */
37
+ export type Logprob$Outbound = {
38
+ token: string;
39
+ bytes: Array<number>;
40
+ logprob: number;
41
+ top_logprobs: Array<ResponseOutputTextTopLogprob$Outbound>;
42
+ };
43
+ /** @internal */
44
+ export declare const Logprob$outboundSchema: z.ZodType<Logprob$Outbound, Logprob>;
45
+ export declare function logprobToJSON(logprob: Logprob): string;
46
+ export declare function logprobFromJSON(jsonString: string): SafeParseResult<Logprob, SDKValidationError>;
47
+ /** @internal */
11
48
  export declare const ResponseOutputText$inboundSchema: z.ZodType<ResponseOutputText, unknown>;
12
49
  /** @internal */
13
50
  export type ResponseOutputText$Outbound = {
14
51
  type: "output_text";
15
52
  text: string;
16
53
  annotations?: Array<OpenAIResponsesAnnotation$Outbound> | undefined;
54
+ logprobs?: Array<Logprob$Outbound> | undefined;
17
55
  };
18
56
  /** @internal */
19
57
  export declare const ResponseOutputText$outboundSchema: z.ZodType<ResponseOutputText$Outbound, ResponseOutputText>;
@@ -3,19 +3,69 @@
3
3
  * @generated-id: 2d5e61e53c46
4
4
  */
5
5
  import * as z from "zod/v4";
6
+ import { remap as remap$ } from "../lib/primitives.js";
6
7
  import { safeParse } from "../lib/schemas.js";
7
8
  import { OpenAIResponsesAnnotation$inboundSchema, OpenAIResponsesAnnotation$outboundSchema, } from "./openairesponsesannotation.js";
8
9
  /** @internal */
10
+ export const ResponseOutputTextTopLogprob$inboundSchema = z.object({
11
+ token: z.string(),
12
+ bytes: z.array(z.number()),
13
+ logprob: z.number(),
14
+ });
15
+ /** @internal */
16
+ export const ResponseOutputTextTopLogprob$outboundSchema = z.object({
17
+ token: z.string(),
18
+ bytes: z.array(z.number()),
19
+ logprob: z.number(),
20
+ });
21
+ export function responseOutputTextTopLogprobToJSON(responseOutputTextTopLogprob) {
22
+ return JSON.stringify(ResponseOutputTextTopLogprob$outboundSchema.parse(responseOutputTextTopLogprob));
23
+ }
24
+ export function responseOutputTextTopLogprobFromJSON(jsonString) {
25
+ return safeParse(jsonString, (x) => ResponseOutputTextTopLogprob$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'ResponseOutputTextTopLogprob' from JSON`);
26
+ }
27
+ /** @internal */
28
+ export const Logprob$inboundSchema = z.object({
29
+ token: z.string(),
30
+ bytes: z.array(z.number()),
31
+ logprob: z.number(),
32
+ top_logprobs: z.array(z.lazy(() => ResponseOutputTextTopLogprob$inboundSchema)),
33
+ }).transform((v) => {
34
+ return remap$(v, {
35
+ "top_logprobs": "topLogprobs",
36
+ });
37
+ });
38
+ /** @internal */
39
+ export const Logprob$outboundSchema = z
40
+ .object({
41
+ token: z.string(),
42
+ bytes: z.array(z.number()),
43
+ logprob: z.number(),
44
+ topLogprobs: z.array(z.lazy(() => ResponseOutputTextTopLogprob$outboundSchema)),
45
+ }).transform((v) => {
46
+ return remap$(v, {
47
+ topLogprobs: "top_logprobs",
48
+ });
49
+ });
50
+ export function logprobToJSON(logprob) {
51
+ return JSON.stringify(Logprob$outboundSchema.parse(logprob));
52
+ }
53
+ export function logprobFromJSON(jsonString) {
54
+ return safeParse(jsonString, (x) => Logprob$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'Logprob' from JSON`);
55
+ }
56
+ /** @internal */
9
57
  export const ResponseOutputText$inboundSchema = z.object({
10
58
  type: z.literal("output_text"),
11
59
  text: z.string(),
12
60
  annotations: z.array(OpenAIResponsesAnnotation$inboundSchema).optional(),
61
+ logprobs: z.array(z.lazy(() => Logprob$inboundSchema)).optional(),
13
62
  });
14
63
  /** @internal */
15
64
  export const ResponseOutputText$outboundSchema = z.object({
16
65
  type: z.literal("output_text"),
17
66
  text: z.string(),
18
67
  annotations: z.array(OpenAIResponsesAnnotation$outboundSchema).optional(),
68
+ logprobs: z.array(z.lazy(() => Logprob$outboundSchema)).optional(),
19
69
  });
20
70
  export function responseOutputTextToJSON(responseOutputText) {
21
71
  return JSON.stringify(ResponseOutputText$outboundSchema.parse(responseOutputText));
@@ -1,5 +1,5 @@
1
1
  import * as z from "zod/v4";
2
- import { ClosedEnum } from "../types/enums.js";
2
+ import { ClosedEnum, OpenEnum } from "../types/enums.js";
3
3
  import { Result as SafeParseResult } from "../types/fp.js";
4
4
  import { SDKValidationError } from "./errors/sdkvalidationerror.js";
5
5
  import { ReasoningSummaryText, ReasoningSummaryText$Outbound } from "./reasoningsummarytext.js";
@@ -21,6 +21,21 @@ export declare const ResponsesOutputItemReasoningStatusCompleted: {
21
21
  };
22
22
  export type ResponsesOutputItemReasoningStatusCompleted = ClosedEnum<typeof ResponsesOutputItemReasoningStatusCompleted>;
23
23
  export type ResponsesOutputItemReasoningStatusUnion = ResponsesOutputItemReasoningStatusCompleted | ResponsesOutputItemReasoningStatusIncomplete | ResponsesOutputItemReasoningStatusInProgress;
24
+ /**
25
+ * The format of the reasoning content
26
+ */
27
+ export declare const ResponsesOutputItemReasoningFormat: {
28
+ readonly Unknown: "unknown";
29
+ readonly OpenaiResponsesV1: "openai-responses-v1";
30
+ readonly AzureOpenaiResponsesV1: "azure-openai-responses-v1";
31
+ readonly XaiResponsesV1: "xai-responses-v1";
32
+ readonly AnthropicClaudeV1: "anthropic-claude-v1";
33
+ readonly GoogleGeminiV1: "google-gemini-v1";
34
+ };
35
+ /**
36
+ * The format of the reasoning content
37
+ */
38
+ export type ResponsesOutputItemReasoningFormat = OpenEnum<typeof ResponsesOutputItemReasoningFormat>;
24
39
  /**
25
40
  * An output item containing reasoning
26
41
  */
@@ -31,6 +46,14 @@ export type ResponsesOutputItemReasoning = {
31
46
  summary: Array<ReasoningSummaryText>;
32
47
  encryptedContent?: string | null | undefined;
33
48
  status?: ResponsesOutputItemReasoningStatusCompleted | ResponsesOutputItemReasoningStatusIncomplete | ResponsesOutputItemReasoningStatusInProgress | undefined;
49
+ /**
50
+ * A signature for the reasoning content, used for verification
51
+ */
52
+ signature?: string | null | undefined;
53
+ /**
54
+ * The format of the reasoning content
55
+ */
56
+ format?: ResponsesOutputItemReasoningFormat | null | undefined;
34
57
  };
35
58
  /** @internal */
36
59
  export declare const ResponsesOutputItemReasoningType$inboundSchema: z.ZodEnum<typeof ResponsesOutputItemReasoningType>;
@@ -57,6 +80,10 @@ export declare const ResponsesOutputItemReasoningStatusUnion$outboundSchema: z.Z
57
80
  export declare function responsesOutputItemReasoningStatusUnionToJSON(responsesOutputItemReasoningStatusUnion: ResponsesOutputItemReasoningStatusUnion): string;
58
81
  export declare function responsesOutputItemReasoningStatusUnionFromJSON(jsonString: string): SafeParseResult<ResponsesOutputItemReasoningStatusUnion, SDKValidationError>;
59
82
  /** @internal */
83
+ export declare const ResponsesOutputItemReasoningFormat$inboundSchema: z.ZodType<ResponsesOutputItemReasoningFormat, unknown>;
84
+ /** @internal */
85
+ export declare const ResponsesOutputItemReasoningFormat$outboundSchema: z.ZodType<string, ResponsesOutputItemReasoningFormat>;
86
+ /** @internal */
60
87
  export declare const ResponsesOutputItemReasoning$inboundSchema: z.ZodType<ResponsesOutputItemReasoning, unknown>;
61
88
  /** @internal */
62
89
  export type ResponsesOutputItemReasoning$Outbound = {
@@ -66,6 +93,8 @@ export type ResponsesOutputItemReasoning$Outbound = {
66
93
  summary: Array<ReasoningSummaryText$Outbound>;
67
94
  encrypted_content?: string | null | undefined;
68
95
  status?: string | string | string | undefined;
96
+ signature?: string | null | undefined;
97
+ format?: string | null | undefined;
69
98
  };
70
99
  /** @internal */
71
100
  export declare const ResponsesOutputItemReasoning$outboundSchema: z.ZodType<ResponsesOutputItemReasoning$Outbound, ResponsesOutputItemReasoning>;
@@ -5,6 +5,7 @@
5
5
  import * as z from "zod/v4";
6
6
  import { remap as remap$ } from "../lib/primitives.js";
7
7
  import { safeParse } from "../lib/schemas.js";
8
+ import * as openEnums from "../types/enums.js";
8
9
  import { ReasoningSummaryText$inboundSchema, ReasoningSummaryText$outboundSchema, } from "./reasoningsummarytext.js";
9
10
  import { ReasoningTextContent$inboundSchema, ReasoningTextContent$outboundSchema, } from "./reasoningtextcontent.js";
10
11
  export const ResponsesOutputItemReasoningType = {
@@ -19,6 +20,17 @@ export const ResponsesOutputItemReasoningStatusIncomplete = {
19
20
  export const ResponsesOutputItemReasoningStatusCompleted = {
20
21
  Completed: "completed",
21
22
  };
23
+ /**
24
+ * The format of the reasoning content
25
+ */
26
+ export const ResponsesOutputItemReasoningFormat = {
27
+ Unknown: "unknown",
28
+ OpenaiResponsesV1: "openai-responses-v1",
29
+ AzureOpenaiResponsesV1: "azure-openai-responses-v1",
30
+ XaiResponsesV1: "xai-responses-v1",
31
+ AnthropicClaudeV1: "anthropic-claude-v1",
32
+ GoogleGeminiV1: "google-gemini-v1",
33
+ };
22
34
  /** @internal */
23
35
  export const ResponsesOutputItemReasoningType$inboundSchema = z.enum(ResponsesOutputItemReasoningType);
24
36
  /** @internal */
@@ -54,6 +66,10 @@ export function responsesOutputItemReasoningStatusUnionFromJSON(jsonString) {
54
66
  return safeParse(jsonString, (x) => ResponsesOutputItemReasoningStatusUnion$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'ResponsesOutputItemReasoningStatusUnion' from JSON`);
55
67
  }
56
68
  /** @internal */
69
+ export const ResponsesOutputItemReasoningFormat$inboundSchema = openEnums.inboundSchema(ResponsesOutputItemReasoningFormat);
70
+ /** @internal */
71
+ export const ResponsesOutputItemReasoningFormat$outboundSchema = openEnums.outboundSchema(ResponsesOutputItemReasoningFormat);
72
+ /** @internal */
57
73
  export const ResponsesOutputItemReasoning$inboundSchema = z.object({
58
74
  type: ResponsesOutputItemReasoningType$inboundSchema,
59
75
  id: z.string(),
@@ -65,6 +81,9 @@ export const ResponsesOutputItemReasoning$inboundSchema = z.object({
65
81
  ResponsesOutputItemReasoningStatusIncomplete$inboundSchema,
66
82
  ResponsesOutputItemReasoningStatusInProgress$inboundSchema,
67
83
  ]).optional(),
84
+ signature: z.nullable(z.string()).optional(),
85
+ format: z.nullable(ResponsesOutputItemReasoningFormat$inboundSchema)
86
+ .optional(),
68
87
  }).transform((v) => {
69
88
  return remap$(v, {
70
89
  "encrypted_content": "encryptedContent",
@@ -82,6 +101,9 @@ export const ResponsesOutputItemReasoning$outboundSchema = z.object({
82
101
  ResponsesOutputItemReasoningStatusIncomplete$outboundSchema,
83
102
  ResponsesOutputItemReasoningStatusInProgress$outboundSchema,
84
103
  ]).optional(),
104
+ signature: z.nullable(z.string()).optional(),
105
+ format: z.nullable(ResponsesOutputItemReasoningFormat$outboundSchema)
106
+ .optional(),
85
107
  }).transform((v) => {
86
108
  return remap$(v, {
87
109
  encryptedContent: "encrypted_content",
@@ -0,0 +1,10 @@
1
+ import * as z from "zod/v4";
2
+ import { OpenEnum } from "../types/enums.js";
3
+ export declare const ResponsesOutputModality: {
4
+ readonly Text: "text";
5
+ readonly Image: "image";
6
+ };
7
+ export type ResponsesOutputModality = OpenEnum<typeof ResponsesOutputModality>;
8
+ /** @internal */
9
+ export declare const ResponsesOutputModality$outboundSchema: z.ZodType<string, ResponsesOutputModality>;
10
+ //# sourceMappingURL=responsesoutputmodality.d.ts.map
@@ -0,0 +1,12 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ * @generated-id: c42840bf36d8
4
+ */
5
+ import * as openEnums from "../types/enums.js";
6
+ export const ResponsesOutputModality = {
7
+ Text: "text",
8
+ Image: "image",
9
+ };
10
+ /** @internal */
11
+ export const ResponsesOutputModality$outboundSchema = openEnums.outboundSchema(ResponsesOutputModality);
12
+ //# sourceMappingURL=responsesoutputmodality.js.map
@@ -27,12 +27,12 @@ export declare const Schema0Enum: {
27
27
  readonly Fireworks: "Fireworks";
28
28
  readonly Friendli: "Friendli";
29
29
  readonly GMICloud: "GMICloud";
30
- readonly GoPomelo: "GoPomelo";
31
30
  readonly Google: "Google";
32
31
  readonly GoogleAIStudio: "Google AI Studio";
33
32
  readonly Groq: "Groq";
34
33
  readonly Hyperbolic: "Hyperbolic";
35
34
  readonly Inception: "Inception";
35
+ readonly Inceptron: "Inceptron";
36
36
  readonly InferenceNet: "InferenceNet";
37
37
  readonly Infermatic: "Infermatic";
38
38
  readonly Inflection: "Inflection";
@@ -57,13 +57,14 @@ export declare const Schema0Enum: {
57
57
  readonly Phala: "Phala";
58
58
  readonly Relace: "Relace";
59
59
  readonly SambaNova: "SambaNova";
60
+ readonly Seed: "Seed";
60
61
  readonly SiliconFlow: "SiliconFlow";
61
62
  readonly Sourceful: "Sourceful";
62
63
  readonly Stealth: "Stealth";
63
64
  readonly StreamLake: "StreamLake";
64
65
  readonly Switchpoint: "Switchpoint";
65
- readonly Targon: "Targon";
66
66
  readonly Together: "Together";
67
+ readonly Upstage: "Upstage";
67
68
  readonly Venice: "Venice";
68
69
  readonly WandB: "WandB";
69
70
  readonly Xiaomi: "Xiaomi";
@@ -31,12 +31,12 @@ export const Schema0Enum = {
31
31
  Fireworks: "Fireworks",
32
32
  Friendli: "Friendli",
33
33
  GMICloud: "GMICloud",
34
- GoPomelo: "GoPomelo",
35
34
  Google: "Google",
36
35
  GoogleAIStudio: "Google AI Studio",
37
36
  Groq: "Groq",
38
37
  Hyperbolic: "Hyperbolic",
39
38
  Inception: "Inception",
39
+ Inceptron: "Inceptron",
40
40
  InferenceNet: "InferenceNet",
41
41
  Infermatic: "Infermatic",
42
42
  Inflection: "Inflection",
@@ -61,13 +61,14 @@ export const Schema0Enum = {
61
61
  Phala: "Phala",
62
62
  Relace: "Relace",
63
63
  SambaNova: "SambaNova",
64
+ Seed: "Seed",
64
65
  SiliconFlow: "SiliconFlow",
65
66
  Sourceful: "Sourceful",
66
67
  Stealth: "Stealth",
67
68
  StreamLake: "StreamLake",
68
69
  Switchpoint: "Switchpoint",
69
- Targon: "Targon",
70
70
  Together: "Together",
71
+ Upstage: "Upstage",
71
72
  Venice: "Venice",
72
73
  WandB: "WandB",
73
74
  Xiaomi: "Xiaomi",
@@ -5,6 +5,7 @@ import { SDKValidationError } from "./errors/sdkvalidationerror.js";
5
5
  export declare const Schema5: {
6
6
  readonly Unknown: "unknown";
7
7
  readonly OpenaiResponsesV1: "openai-responses-v1";
8
+ readonly AzureOpenaiResponsesV1: "azure-openai-responses-v1";
8
9
  readonly XaiResponsesV1: "xai-responses-v1";
9
10
  readonly AnthropicClaudeV1: "anthropic-claude-v1";
10
11
  readonly GoogleGeminiV1: "google-gemini-v1";
@@ -8,6 +8,7 @@ import * as openEnums from "../types/enums.js";
8
8
  export const Schema5 = {
9
9
  Unknown: "unknown",
10
10
  OpenaiResponsesV1: "openai-responses-v1",
11
+ AzureOpenaiResponsesV1: "azure-openai-responses-v1",
11
12
  XaiResponsesV1: "xai-responses-v1",
12
13
  AnthropicClaudeV1: "anthropic-claude-v1",
13
14
  GoogleGeminiV1: "google-gemini-v1",
package/jsr.json CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  {
4
4
  "name": "@openrouter/sdk",
5
- "version": "0.3.12",
5
+ "version": "0.3.14",
6
6
  "exports": {
7
7
  ".": "./src/index.ts",
8
8
  "./models/errors": "./src/models/errors/index.ts",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openrouter/sdk",
3
- "version": "0.3.12",
3
+ "version": "0.3.14",
4
4
  "author": "OpenRouter",
5
5
  "description": "The OpenRouter TypeScript SDK is a type-safe toolkit for building AI applications with access to 300+ language models through a unified API.",
6
6
  "keywords": [