@ap3x/ai 0.1.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.
Files changed (182) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +28 -0
  3. package/dist/api-registry.d.ts +23 -0
  4. package/dist/api-registry.d.ts.map +1 -0
  5. package/dist/auth/config-dir.d.ts +25 -0
  6. package/dist/auth/config-dir.d.ts.map +1 -0
  7. package/dist/auth/github-copilot.d.ts +74 -0
  8. package/dist/auth/github-copilot.d.ts.map +1 -0
  9. package/dist/auth/index.d.ts +10 -0
  10. package/dist/auth/index.d.ts.map +1 -0
  11. package/dist/auth/jwt.d.ts +32 -0
  12. package/dist/auth/jwt.d.ts.map +1 -0
  13. package/dist/auth/oauth-flow.d.ts +84 -0
  14. package/dist/auth/oauth-flow.d.ts.map +1 -0
  15. package/dist/auth/pkce.d.ts +20 -0
  16. package/dist/auth/pkce.d.ts.map +1 -0
  17. package/dist/auth/providers.d.ts +33 -0
  18. package/dist/auth/providers.d.ts.map +1 -0
  19. package/dist/auth/storage.d.ts +55 -0
  20. package/dist/auth/storage.d.ts.map +1 -0
  21. package/dist/auth/types.d.ts +88 -0
  22. package/dist/auth/types.d.ts.map +1 -0
  23. package/dist/auth/unified.d.ts +29 -0
  24. package/dist/auth/unified.d.ts.map +1 -0
  25. package/dist/env-api-keys.d.ts +16 -0
  26. package/dist/env-api-keys.d.ts.map +1 -0
  27. package/dist/event-stream.d.ts +33 -0
  28. package/dist/event-stream.d.ts.map +1 -0
  29. package/dist/generate-object.d.ts +63 -0
  30. package/dist/generate-object.d.ts.map +1 -0
  31. package/dist/images-models.d.ts +114 -0
  32. package/dist/images-models.d.ts.map +1 -0
  33. package/dist/images-registry.d.ts +23 -0
  34. package/dist/images-registry.d.ts.map +1 -0
  35. package/dist/images-schema.d.ts +21 -0
  36. package/dist/images-schema.d.ts.map +1 -0
  37. package/dist/images.d.ts +13 -0
  38. package/dist/images.d.ts.map +1 -0
  39. package/dist/index.d.ts +59 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +15656 -0
  42. package/dist/models/amazon-bedrock.models.generated.d.ts +1858 -0
  43. package/dist/models/amazon-bedrock.models.generated.d.ts.map +1 -0
  44. package/dist/models/ant-ling.models.generated.d.ts +86 -0
  45. package/dist/models/ant-ling.models.generated.d.ts.map +1 -0
  46. package/dist/models/anthropic.models.generated.d.ts +450 -0
  47. package/dist/models/anthropic.models.generated.d.ts.map +1 -0
  48. package/dist/models/azure-openai-responses.models.generated.d.ts +804 -0
  49. package/dist/models/azure-openai-responses.models.generated.d.ts.map +1 -0
  50. package/dist/models/cerebras.models.generated.d.ts +66 -0
  51. package/dist/models/cerebras.models.generated.d.ts.map +1 -0
  52. package/dist/models/cloudflare-ai-gateway.models.generated.d.ts +786 -0
  53. package/dist/models/cloudflare-ai-gateway.models.generated.d.ts.map +1 -0
  54. package/dist/models/cloudflare-workers-ai.models.generated.d.ts +302 -0
  55. package/dist/models/cloudflare-workers-ai.models.generated.d.ts.map +1 -0
  56. package/dist/models/deepseek.models.generated.d.ts +63 -0
  57. package/dist/models/deepseek.models.generated.d.ts.map +1 -0
  58. package/dist/models/fireworks.models.generated.d.ts +381 -0
  59. package/dist/models/fireworks.models.generated.d.ts.map +1 -0
  60. package/dist/models/github-copilot.models.generated.d.ts +698 -0
  61. package/dist/models/github-copilot.models.generated.d.ts.map +1 -0
  62. package/dist/models/google-vertex.models.generated.d.ts +202 -0
  63. package/dist/models/google-vertex.models.generated.d.ts.map +1 -0
  64. package/dist/models/google.models.generated.d.ts +351 -0
  65. package/dist/models/google.models.generated.d.ts.map +1 -0
  66. package/dist/models/groq.models.generated.d.ts +128 -0
  67. package/dist/models/groq.models.generated.d.ts.map +1 -0
  68. package/dist/models/huggingface.models.generated.d.ts +63 -0
  69. package/dist/models/huggingface.models.generated.d.ts.map +1 -0
  70. package/dist/models/kimi-coding.models.generated.d.ts +63 -0
  71. package/dist/models/kimi-coding.models.generated.d.ts.map +1 -0
  72. package/dist/models/minimax-cn.models.generated.d.ts +54 -0
  73. package/dist/models/minimax-cn.models.generated.d.ts.map +1 -0
  74. package/dist/models/minimax.models.generated.d.ts +54 -0
  75. package/dist/models/minimax.models.generated.d.ts.map +1 -0
  76. package/dist/models/mistral.models.generated.d.ts +513 -0
  77. package/dist/models/mistral.models.generated.d.ts.map +1 -0
  78. package/dist/models/moonshotai-cn.models.generated.d.ts +234 -0
  79. package/dist/models/moonshotai-cn.models.generated.d.ts.map +1 -0
  80. package/dist/models/moonshotai.models.generated.d.ts +234 -0
  81. package/dist/models/moonshotai.models.generated.d.ts.map +1 -0
  82. package/dist/models/nvidia.models.generated.d.ts +563 -0
  83. package/dist/models/nvidia.models.generated.d.ts.map +1 -0
  84. package/dist/models/openai.models.generated.d.ts +827 -0
  85. package/dist/models/openai.models.generated.d.ts.map +1 -0
  86. package/dist/models/opencode.models.generated.d.ts +69 -0
  87. package/dist/models/opencode.models.generated.d.ts.map +1 -0
  88. package/dist/models/openrouter.models.generated.d.ts +87 -0
  89. package/dist/models/openrouter.models.generated.d.ts.map +1 -0
  90. package/dist/models/together.models.generated.d.ts +598 -0
  91. package/dist/models/together.models.generated.d.ts.map +1 -0
  92. package/dist/models/vercel-ai-gateway.models.generated.d.ts +63 -0
  93. package/dist/models/vercel-ai-gateway.models.generated.d.ts.map +1 -0
  94. package/dist/models/xai.models.generated.d.ts +157 -0
  95. package/dist/models/xai.models.generated.d.ts.map +1 -0
  96. package/dist/models/xiaomi-token-plan-ams.models.generated.d.ts +108 -0
  97. package/dist/models/xiaomi-token-plan-ams.models.generated.d.ts.map +1 -0
  98. package/dist/models/xiaomi-token-plan-cn.models.generated.d.ts +108 -0
  99. package/dist/models/xiaomi-token-plan-cn.models.generated.d.ts.map +1 -0
  100. package/dist/models/xiaomi-token-plan-sgp.models.generated.d.ts +108 -0
  101. package/dist/models/xiaomi-token-plan-sgp.models.generated.d.ts.map +1 -0
  102. package/dist/models/xiaomi.models.generated.d.ts +129 -0
  103. package/dist/models/xiaomi.models.generated.d.ts.map +1 -0
  104. package/dist/models/zai-coding-cn.models.generated.d.ts +153 -0
  105. package/dist/models/zai-coding-cn.models.generated.d.ts.map +1 -0
  106. package/dist/models/zai.models.generated.d.ts +153 -0
  107. package/dist/models/zai.models.generated.d.ts.map +1 -0
  108. package/dist/models.d.ts +10734 -0
  109. package/dist/models.d.ts.map +1 -0
  110. package/dist/providers/amazon-bedrock.d.ts +173 -0
  111. package/dist/providers/amazon-bedrock.d.ts.map +1 -0
  112. package/dist/providers/anthropic.d.ts +25 -0
  113. package/dist/providers/anthropic.d.ts.map +1 -0
  114. package/dist/providers/azure-openai-responses.d.ts +17 -0
  115. package/dist/providers/azure-openai-responses.d.ts.map +1 -0
  116. package/dist/providers/cloudflare.d.ts +13 -0
  117. package/dist/providers/cloudflare.d.ts.map +1 -0
  118. package/dist/providers/faux-images.d.ts +41 -0
  119. package/dist/providers/faux-images.d.ts.map +1 -0
  120. package/dist/providers/faux.d.ts +61 -0
  121. package/dist/providers/faux.d.ts.map +1 -0
  122. package/dist/providers/github-copilot-headers.d.ts +14 -0
  123. package/dist/providers/github-copilot-headers.d.ts.map +1 -0
  124. package/dist/providers/google-images.d.ts +14 -0
  125. package/dist/providers/google-images.d.ts.map +1 -0
  126. package/dist/providers/google-shared.d.ts +53 -0
  127. package/dist/providers/google-shared.d.ts.map +1 -0
  128. package/dist/providers/google-vertex.d.ts +48 -0
  129. package/dist/providers/google-vertex.d.ts.map +1 -0
  130. package/dist/providers/google.d.ts +47 -0
  131. package/dist/providers/google.d.ts.map +1 -0
  132. package/dist/providers/mistral.d.ts +67 -0
  133. package/dist/providers/mistral.d.ts.map +1 -0
  134. package/dist/providers/openai-codex-responses.d.ts +17 -0
  135. package/dist/providers/openai-codex-responses.d.ts.map +1 -0
  136. package/dist/providers/openai-completions.d.ts +69 -0
  137. package/dist/providers/openai-completions.d.ts.map +1 -0
  138. package/dist/providers/openai-images.d.ts +17 -0
  139. package/dist/providers/openai-images.d.ts.map +1 -0
  140. package/dist/providers/openai-prompt-cache.d.ts +8 -0
  141. package/dist/providers/openai-prompt-cache.d.ts.map +1 -0
  142. package/dist/providers/openai-responses-shared.d.ts +128 -0
  143. package/dist/providers/openai-responses-shared.d.ts.map +1 -0
  144. package/dist/providers/openai-responses.d.ts +63 -0
  145. package/dist/providers/openai-responses.d.ts.map +1 -0
  146. package/dist/providers/provider-runtime.d.ts +34 -0
  147. package/dist/providers/provider-runtime.d.ts.map +1 -0
  148. package/dist/providers/register-builtins.d.ts +11 -0
  149. package/dist/providers/register-builtins.d.ts.map +1 -0
  150. package/dist/providers/register-images.d.ts +8 -0
  151. package/dist/providers/register-images.d.ts.map +1 -0
  152. package/dist/providers/request-dispatch.d.ts +52 -0
  153. package/dist/providers/request-dispatch.d.ts.map +1 -0
  154. package/dist/providers/simple-options.d.ts +42 -0
  155. package/dist/providers/simple-options.d.ts.map +1 -0
  156. package/dist/providers/tool-call-id.d.ts +46 -0
  157. package/dist/providers/tool-call-id.d.ts.map +1 -0
  158. package/dist/providers/transform-messages.d.ts +22 -0
  159. package/dist/providers/transform-messages.d.ts.map +1 -0
  160. package/dist/stream.d.ts +18 -0
  161. package/dist/stream.d.ts.map +1 -0
  162. package/dist/types.d.ts +448 -0
  163. package/dist/types.d.ts.map +1 -0
  164. package/dist/utils/abort-signals.d.ts +16 -0
  165. package/dist/utils/abort-signals.d.ts.map +1 -0
  166. package/dist/utils/estimate.d.ts +35 -0
  167. package/dist/utils/estimate.d.ts.map +1 -0
  168. package/dist/utils/hash.d.ts +7 -0
  169. package/dist/utils/hash.d.ts.map +1 -0
  170. package/dist/utils/json-parse.d.ts +16 -0
  171. package/dist/utils/json-parse.d.ts.map +1 -0
  172. package/dist/utils/node-http-proxy.d.ts +34 -0
  173. package/dist/utils/node-http-proxy.d.ts.map +1 -0
  174. package/dist/utils/overflow.d.ts +25 -0
  175. package/dist/utils/overflow.d.ts.map +1 -0
  176. package/dist/utils/sanitize-unicode.d.ts +9 -0
  177. package/dist/utils/sanitize-unicode.d.ts.map +1 -0
  178. package/dist/utils/sse.d.ts +21 -0
  179. package/dist/utils/sse.d.ts.map +1 -0
  180. package/dist/validation.d.ts +31 -0
  181. package/dist/validation.d.ts.map +1 -0
  182. package/package.json +35 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-http-proxy.d.ts","sourceRoot":"","sources":["../../src/utils/node-http-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,oFAAoF;AACpF,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAY1D,yEAAyE;AACzE,eAAO,MAAM,kCAAkC,gHACgE,CAAC;AA8DhH;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,GAAG,GAAG,EACvB,GAAG,GAAE,QAAsB,GAC1B,GAAG,GAAG,SAAS,CAiBjB"}
@@ -0,0 +1,25 @@
1
+ import type { AssistantMessage } from "../types";
2
+ /**
3
+ * Decide whether an assistant message represents a context-window overflow.
4
+ *
5
+ * Three signals are considered:
6
+ *
7
+ * 1. Error text: an `error` message whose `errorMessage` matches a known
8
+ * overflow signature (and is not excluded as a throttling/rate-limit error).
9
+ * 2. Silent overflow: a successful `stop` message whose reported input tokens
10
+ * exceed the supplied context window (e.g. z.ai accepts the request anyway).
11
+ * 3. Length-stop overflow: a `length` stop with zero output where the input
12
+ * nearly fills the context window, i.e. the server truncated an oversized
13
+ * prompt leaving no room to generate (e.g. Xiaomi MiMo).
14
+ *
15
+ * Cases 2 and 3 require the optional `contextWindow` argument. The function is
16
+ * total: it never throws for any message shape.
17
+ *
18
+ * @param message - The assistant message to classify.
19
+ * @param contextWindow - Optional context-window size enabling silent-overflow
20
+ * and length-stop detection.
21
+ */
22
+ export declare function isContextOverflow(message: AssistantMessage, contextWindow?: number): boolean;
23
+ /** Return a copy of the overflow error signatures (primarily for tests). */
24
+ export declare function getOverflowPatterns(): RegExp[];
25
+ //# sourceMappingURL=overflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overflow.d.ts","sourceRoot":"","sources":["../../src/utils/overflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAuEjD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAuB5F;AAED,4EAA4E;AAC5E,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Strip unpaired UTF-16 surrogate code units from a string. Unpaired
3
+ * surrogates break JSON serialization at many providers; correctly paired
4
+ * surrogates (valid emoji and other astral-plane characters) are preserved.
5
+ *
6
+ * @example sanitizeSurrogates("Hello \u{1F648} World") // => "Hello \u{1F648} World"
7
+ */
8
+ export declare function sanitizeSurrogates(text: string): string;
9
+ //# sourceMappingURL=sanitize-unicode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize-unicode.d.ts","sourceRoot":"","sources":["../../src/utils/sanitize-unicode.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * A decoded Server-Sent Event: the `event:` type (or null), the joined `data:`
3
+ * payload, and the raw source lines (for diagnostics on a parse failure).
4
+ */
5
+ export interface ServerSentEvent {
6
+ event: string | null;
7
+ data: string;
8
+ raw: string[];
9
+ }
10
+ /**
11
+ * Parse a `ReadableStream` of bytes into Server-Sent Events. Handles `\n`,
12
+ * `\r`, and `\r\n` line breaks and flushes a trailing event at end-of-stream.
13
+ * Throws `Request was aborted` if `signal` aborts mid-read.
14
+ */
15
+ export declare function iterateServerSentEvents(body: ReadableStream<Uint8Array>, signal?: AbortSignal): AsyncGenerator<ServerSentEvent>;
16
+ /**
17
+ * Parse SSE events from an in-memory string. Convenience wrapper used by tests
18
+ * to feed canned SSE through the same decoder the network path uses.
19
+ */
20
+ export declare function parseServerSentEventsFromString(text: string): Generator<ServerSentEvent>;
21
+ //# sourceMappingURL=sse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/utils/sse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,EAAE,CAAC;CACf;AAmED;;;;GAIG;AACH,wBAAuB,uBAAuB,CAC5C,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,EAChC,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,eAAe,CAAC,CAyCjC;AAED;;;GAGG;AACH,wBAAiB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,eAAe,CAAC,CAgBzF"}
@@ -0,0 +1,31 @@
1
+ import { type TUnsafe } from "@sinclair/typebox";
2
+ import type { Tool, ToolCall } from "./types";
3
+ export type { Static, TSchema } from "@sinclair/typebox";
4
+ export { Type } from "@sinclair/typebox";
5
+ /**
6
+ * Build a JSON-Schema string-enum (`{ type: "string", enum: [...] }`). This is
7
+ * compatible with providers (e.g. Google) that reject `anyOf`/`const` unions.
8
+ *
9
+ * @example const Op = StringEnum(["add", "sub"], { description: "operation" });
10
+ */
11
+ export declare function StringEnum<T extends readonly string[]>(values: T, options?: {
12
+ description?: string;
13
+ default?: T[number];
14
+ }): TUnsafe<T[number]>;
15
+ /**
16
+ * Find a tool by name and validate the call's arguments against its schema.
17
+ * @throws if the tool is missing or validation fails.
18
+ */
19
+ export declare function validateToolCall(tools: Tool[], toolCall: ToolCall): Record<string, any>;
20
+ /**
21
+ * Validate (and coerce) a tool call's arguments against the tool schema.
22
+ *
23
+ * The args are cloned, then validated by the appropriate engine: TypeBox
24
+ * schemas (carrying the `Kind` metadata symbol) go through `Value.Convert` +
25
+ * a compiled `TypeCheck`; plain JSON schemas go through AJV (which compiles to
26
+ * a guard and performs permissive in-place type coercion). On failure a
27
+ * multi-line error listing each failing path plus the received arguments is
28
+ * thrown.
29
+ */
30
+ export declare function validateToolArguments(tool: Tool, toolCall: ToolCall): Record<string, any>;
31
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,KAAK,OAAO,EAAQ,MAAM,mBAAmB,CAAC;AAIxF,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE9C,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,SAAS,MAAM,EAAE,EACpD,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;CAAE,GACtD,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAOpB;AAqHD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAMvF;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CASzF"}
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@ap3x/ai",
3
+ "version": "0.1.0",
4
+ "description": "Unified multi-provider LLM API (OpenAI, Anthropic, Google, Bedrock, Mistral, …)",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/AP3X-Dev/AP3X.git",
8
+ "directory": "packages/ai"
9
+ },
10
+ "license": "MIT",
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "type": "module",
15
+ "main": "./dist/index.js",
16
+ "types": "./dist/index.d.ts",
17
+ "exports": {
18
+ ".": {
19
+ "types": "./dist/index.d.ts",
20
+ "default": "./dist/index.js"
21
+ }
22
+ },
23
+ "files": ["dist"],
24
+ "scripts": {
25
+ "build": "tsup src/index.ts --format esm --clean --tsconfig tsconfig.build.json && tsc -p tsconfig.build.json",
26
+ "prepublishOnly": "node ../../scripts/publish-gate.mjs",
27
+ "test": "vitest run"
28
+ },
29
+ "dependencies": {
30
+ "@sinclair/typebox": "^0.34.49",
31
+ "ajv": "^8.20.0",
32
+ "partial-json": "^0.1.7",
33
+ "undici": "^6.21.3"
34
+ }
35
+ }