@marinoscar/platform-api 0.1.0-next.4 → 0.1.0-next.6

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 (241) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/ai/core/ai-error.d.ts +15 -158
  3. package/dist/ai/core/ai-error.d.ts.map +1 -1
  4. package/dist/ai/core/ai-error.js +58 -221
  5. package/dist/ai/core/ai-error.js.map +1 -1
  6. package/dist/ai/core/capabilities.d.ts +3 -126
  7. package/dist/ai/core/capabilities.d.ts.map +1 -1
  8. package/dist/ai/core/capabilities.js +13 -109
  9. package/dist/ai/core/capabilities.js.map +1 -1
  10. package/dist/ai/core/conversation.d.ts +2 -15
  11. package/dist/ai/core/conversation.d.ts.map +1 -1
  12. package/dist/ai/core/conversation.js +9 -54
  13. package/dist/ai/core/conversation.js.map +1 -1
  14. package/dist/ai/core/hosted-tools.d.ts +3 -172
  15. package/dist/ai/core/hosted-tools.d.ts.map +1 -1
  16. package/dist/ai/core/hosted-tools.js +20 -286
  17. package/dist/ai/core/hosted-tools.js.map +1 -1
  18. package/dist/ai/core/provider-adapter.interface.d.ts +3 -260
  19. package/dist/ai/core/provider-adapter.interface.d.ts.map +1 -1
  20. package/dist/ai/core/provider-adapter.interface.js +7 -29
  21. package/dist/ai/core/provider-adapter.interface.js.map +1 -1
  22. package/dist/ai/core/structured-output.d.ts +3 -49
  23. package/dist/ai/core/structured-output.d.ts.map +1 -1
  24. package/dist/ai/core/structured-output.js +9 -80
  25. package/dist/ai/core/structured-output.js.map +1 -1
  26. package/dist/ai/core/tools.d.ts +3 -93
  27. package/dist/ai/core/tools.d.ts.map +1 -1
  28. package/dist/ai/core/tools.js +9 -73
  29. package/dist/ai/core/tools.js.map +1 -1
  30. package/dist/ai/core/types/file-inputs.types.d.ts +3 -102
  31. package/dist/ai/core/types/file-inputs.types.d.ts.map +1 -1
  32. package/dist/ai/core/types/file-inputs.types.js +14 -78
  33. package/dist/ai/core/types/file-inputs.types.js.map +1 -1
  34. package/dist/ai/core/types/media.types.d.ts +3 -616
  35. package/dist/ai/core/types/media.types.d.ts.map +1 -1
  36. package/dist/ai/core/types/media.types.js +33 -203
  37. package/dist/ai/core/types/media.types.js.map +1 -1
  38. package/dist/ai/core/types/responses.types.d.ts +3 -619
  39. package/dist/ai/core/types/responses.types.d.ts.map +1 -1
  40. package/dist/ai/core/types/responses.types.js +9 -57
  41. package/dist/ai/core/types/responses.types.js.map +1 -1
  42. package/dist/ai/http/dto/ai-images.dto.d.ts +4 -4
  43. package/dist/ai/index.d.ts +1 -1
  44. package/dist/ai/index.d.ts.map +1 -1
  45. package/dist/ai/index.js +3 -3
  46. package/dist/ai/index.js.map +1 -1
  47. package/dist/ai/providers/anthropic/anthropic-client.factory.d.ts +13 -15
  48. package/dist/ai/providers/anthropic/anthropic-client.factory.d.ts.map +1 -1
  49. package/dist/ai/providers/anthropic/anthropic-client.factory.js +23 -52
  50. package/dist/ai/providers/anthropic/anthropic-client.factory.js.map +1 -1
  51. package/dist/ai/providers/anthropic/anthropic.adapter.d.ts +15 -51
  52. package/dist/ai/providers/anthropic/anthropic.adapter.d.ts.map +1 -1
  53. package/dist/ai/providers/anthropic/anthropic.adapter.js +29 -293
  54. package/dist/ai/providers/anthropic/anthropic.adapter.js.map +1 -1
  55. package/dist/ai/providers/azure-openai/azure-openai-client.factory.d.ts +10 -14
  56. package/dist/ai/providers/azure-openai/azure-openai-client.factory.d.ts.map +1 -1
  57. package/dist/ai/providers/azure-openai/azure-openai-client.factory.js +20 -53
  58. package/dist/ai/providers/azure-openai/azure-openai-client.factory.js.map +1 -1
  59. package/dist/ai/providers/azure-openai/azure-openai.adapter.d.ts +14 -31
  60. package/dist/ai/providers/azure-openai/azure-openai.adapter.d.ts.map +1 -1
  61. package/dist/ai/providers/azure-openai/azure-openai.adapter.js +25 -170
  62. package/dist/ai/providers/azure-openai/azure-openai.adapter.js.map +1 -1
  63. package/dist/ai/providers/gemini/gemini-client.factory.d.ts +13 -18
  64. package/dist/ai/providers/gemini/gemini-client.factory.d.ts.map +1 -1
  65. package/dist/ai/providers/gemini/gemini-client.factory.js +24 -68
  66. package/dist/ai/providers/gemini/gemini-client.factory.js.map +1 -1
  67. package/dist/ai/providers/gemini/gemini.adapter.d.ts +15 -58
  68. package/dist/ai/providers/gemini/gemini.adapter.d.ts.map +1 -1
  69. package/dist/ai/providers/gemini/gemini.adapter.js +29 -348
  70. package/dist/ai/providers/gemini/gemini.adapter.js.map +1 -1
  71. package/dist/ai/providers/openai/openai-client.factory.d.ts +13 -35
  72. package/dist/ai/providers/openai/openai-client.factory.d.ts.map +1 -1
  73. package/dist/ai/providers/openai/openai-client.factory.js +25 -64
  74. package/dist/ai/providers/openai/openai-client.factory.js.map +1 -1
  75. package/dist/ai/providers/openai/openai.adapter.d.ts +15 -48
  76. package/dist/ai/providers/openai/openai.adapter.d.ts.map +1 -1
  77. package/dist/ai/providers/openai/openai.adapter.js +27 -206
  78. package/dist/ai/providers/openai/openai.adapter.js.map +1 -1
  79. package/dist/ai/providers/openai-compatible/openai-compatible-client.factory.d.ts +11 -11
  80. package/dist/ai/providers/openai-compatible/openai-compatible-client.factory.d.ts.map +1 -1
  81. package/dist/ai/providers/openai-compatible/openai-compatible-client.factory.js +18 -41
  82. package/dist/ai/providers/openai-compatible/openai-compatible-client.factory.js.map +1 -1
  83. package/dist/ai/providers/openai-compatible/openai-compatible.adapter.d.ts +14 -32
  84. package/dist/ai/providers/openai-compatible/openai-compatible.adapter.d.ts.map +1 -1
  85. package/dist/ai/providers/openai-compatible/openai-compatible.adapter.js +25 -149
  86. package/dist/ai/providers/openai-compatible/openai-compatible.adapter.js.map +1 -1
  87. package/dist/ai/providers/platform-ai-tracer.d.ts +4 -0
  88. package/dist/ai/providers/platform-ai-tracer.d.ts.map +1 -0
  89. package/dist/ai/providers/platform-ai-tracer.js +20 -0
  90. package/dist/ai/providers/platform-ai-tracer.js.map +1 -0
  91. package/dist/ai/runtime/ai-image-run-request.d.ts +1 -1
  92. package/dist/ai/testing/conformance/ai-no-sdk-leak.suite.d.ts +28 -5
  93. package/dist/ai/testing/conformance/ai-no-sdk-leak.suite.d.ts.map +1 -1
  94. package/dist/ai/testing/conformance/ai-no-sdk-leak.suite.js +54 -9
  95. package/dist/ai/testing/conformance/ai-no-sdk-leak.suite.js.map +1 -1
  96. package/dist/ai/testing/index.d.ts +1 -1
  97. package/dist/ai/testing/index.d.ts.map +1 -1
  98. package/dist/ai/testing/index.js +2 -1
  99. package/dist/ai/testing/index.js.map +1 -1
  100. package/dist/jobs/rate-limit.error.d.ts +2 -26
  101. package/dist/jobs/rate-limit.error.d.ts.map +1 -1
  102. package/dist/jobs/rate-limit.error.js +4 -52
  103. package/dist/jobs/rate-limit.error.js.map +1 -1
  104. package/dist/storage/config/storage-config.controller.d.ts +1 -1
  105. package/package.json +3 -2
  106. package/dist/ai/providers/anthropic/anthropic-errors.d.ts +0 -16
  107. package/dist/ai/providers/anthropic/anthropic-errors.d.ts.map +0 -1
  108. package/dist/ai/providers/anthropic/anthropic-errors.js +0 -156
  109. package/dist/ai/providers/anthropic/anthropic-errors.js.map +0 -1
  110. package/dist/ai/providers/anthropic/anthropic-messages.mapper.d.ts +0 -80
  111. package/dist/ai/providers/anthropic/anthropic-messages.mapper.d.ts.map +0 -1
  112. package/dist/ai/providers/anthropic/anthropic-messages.mapper.js +0 -536
  113. package/dist/ai/providers/anthropic/anthropic-messages.mapper.js.map +0 -1
  114. package/dist/ai/providers/anthropic/anthropic-model-catalog.d.ts +0 -49
  115. package/dist/ai/providers/anthropic/anthropic-model-catalog.d.ts.map +0 -1
  116. package/dist/ai/providers/anthropic/anthropic-model-catalog.js +0 -198
  117. package/dist/ai/providers/anthropic/anthropic-model-catalog.js.map +0 -1
  118. package/dist/ai/providers/anthropic/anthropic-stream.mapper.d.ts +0 -35
  119. package/dist/ai/providers/anthropic/anthropic-stream.mapper.d.ts.map +0 -1
  120. package/dist/ai/providers/anthropic/anthropic-stream.mapper.js +0 -203
  121. package/dist/ai/providers/anthropic/anthropic-stream.mapper.js.map +0 -1
  122. package/dist/ai/providers/anthropic/testing/anthropic-fixtures.d.ts +0 -18
  123. package/dist/ai/providers/anthropic/testing/anthropic-fixtures.d.ts.map +0 -1
  124. package/dist/ai/providers/anthropic/testing/anthropic-fixtures.js +0 -120
  125. package/dist/ai/providers/anthropic/testing/anthropic-fixtures.js.map +0 -1
  126. package/dist/ai/providers/anthropic/testing/anthropic-mock-transport.d.ts +0 -59
  127. package/dist/ai/providers/anthropic/testing/anthropic-mock-transport.d.ts.map +0 -1
  128. package/dist/ai/providers/anthropic/testing/anthropic-mock-transport.js +0 -206
  129. package/dist/ai/providers/anthropic/testing/anthropic-mock-transport.js.map +0 -1
  130. package/dist/ai/providers/azure-openai/azure-openai-settings.d.ts +0 -23
  131. package/dist/ai/providers/azure-openai/azure-openai-settings.d.ts.map +0 -1
  132. package/dist/ai/providers/azure-openai/azure-openai-settings.js +0 -54
  133. package/dist/ai/providers/azure-openai/azure-openai-settings.js.map +0 -1
  134. package/dist/ai/providers/gemini/gemini-content.mapper.d.ts +0 -98
  135. package/dist/ai/providers/gemini/gemini-content.mapper.d.ts.map +0 -1
  136. package/dist/ai/providers/gemini/gemini-content.mapper.js +0 -665
  137. package/dist/ai/providers/gemini/gemini-content.mapper.js.map +0 -1
  138. package/dist/ai/providers/gemini/gemini-embeddings.mapper.d.ts +0 -13
  139. package/dist/ai/providers/gemini/gemini-embeddings.mapper.d.ts.map +0 -1
  140. package/dist/ai/providers/gemini/gemini-embeddings.mapper.js +0 -78
  141. package/dist/ai/providers/gemini/gemini-embeddings.mapper.js.map +0 -1
  142. package/dist/ai/providers/gemini/gemini-errors.d.ts +0 -32
  143. package/dist/ai/providers/gemini/gemini-errors.d.ts.map +0 -1
  144. package/dist/ai/providers/gemini/gemini-errors.js +0 -191
  145. package/dist/ai/providers/gemini/gemini-errors.js.map +0 -1
  146. package/dist/ai/providers/gemini/gemini-model-catalog.d.ts +0 -45
  147. package/dist/ai/providers/gemini/gemini-model-catalog.d.ts.map +0 -1
  148. package/dist/ai/providers/gemini/gemini-model-catalog.js +0 -264
  149. package/dist/ai/providers/gemini/gemini-model-catalog.js.map +0 -1
  150. package/dist/ai/providers/gemini/gemini-stream.mapper.d.ts +0 -31
  151. package/dist/ai/providers/gemini/gemini-stream.mapper.d.ts.map +0 -1
  152. package/dist/ai/providers/gemini/gemini-stream.mapper.js +0 -118
  153. package/dist/ai/providers/gemini/gemini-stream.mapper.js.map +0 -1
  154. package/dist/ai/providers/gemini/testing/gemini-fixtures.d.ts +0 -80
  155. package/dist/ai/providers/gemini/testing/gemini-fixtures.d.ts.map +0 -1
  156. package/dist/ai/providers/gemini/testing/gemini-fixtures.js +0 -118
  157. package/dist/ai/providers/gemini/testing/gemini-fixtures.js.map +0 -1
  158. package/dist/ai/providers/gemini/testing/gemini-mock-transport.d.ts +0 -82
  159. package/dist/ai/providers/gemini/testing/gemini-mock-transport.d.ts.map +0 -1
  160. package/dist/ai/providers/gemini/testing/gemini-mock-transport.js +0 -342
  161. package/dist/ai/providers/gemini/testing/gemini-mock-transport.js.map +0 -1
  162. package/dist/ai/providers/openai/openai-audio.mapper.d.ts +0 -42
  163. package/dist/ai/providers/openai/openai-audio.mapper.d.ts.map +0 -1
  164. package/dist/ai/providers/openai/openai-audio.mapper.js +0 -266
  165. package/dist/ai/providers/openai/openai-audio.mapper.js.map +0 -1
  166. package/dist/ai/providers/openai/openai-call-telemetry.d.ts +0 -25
  167. package/dist/ai/providers/openai/openai-call-telemetry.d.ts.map +0 -1
  168. package/dist/ai/providers/openai/openai-call-telemetry.js +0 -93
  169. package/dist/ai/providers/openai/openai-call-telemetry.js.map +0 -1
  170. package/dist/ai/providers/openai/openai-chat-completions-stream.mapper.d.ts +0 -41
  171. package/dist/ai/providers/openai/openai-chat-completions-stream.mapper.d.ts.map +0 -1
  172. package/dist/ai/providers/openai/openai-chat-completions-stream.mapper.js +0 -173
  173. package/dist/ai/providers/openai/openai-chat-completions-stream.mapper.js.map +0 -1
  174. package/dist/ai/providers/openai/openai-chat-completions.engine.d.ts +0 -33
  175. package/dist/ai/providers/openai/openai-chat-completions.engine.d.ts.map +0 -1
  176. package/dist/ai/providers/openai/openai-chat-completions.engine.js +0 -165
  177. package/dist/ai/providers/openai/openai-chat-completions.engine.js.map +0 -1
  178. package/dist/ai/providers/openai/openai-chat-completions.mapper.d.ts +0 -42
  179. package/dist/ai/providers/openai/openai-chat-completions.mapper.d.ts.map +0 -1
  180. package/dist/ai/providers/openai/openai-chat-completions.mapper.js +0 -304
  181. package/dist/ai/providers/openai/openai-chat-completions.mapper.js.map +0 -1
  182. package/dist/ai/providers/openai/openai-embeddings.mapper.d.ts +0 -25
  183. package/dist/ai/providers/openai/openai-embeddings.mapper.d.ts.map +0 -1
  184. package/dist/ai/providers/openai/openai-embeddings.mapper.js +0 -81
  185. package/dist/ai/providers/openai/openai-embeddings.mapper.js.map +0 -1
  186. package/dist/ai/providers/openai/openai-errors.d.ts +0 -45
  187. package/dist/ai/providers/openai/openai-errors.d.ts.map +0 -1
  188. package/dist/ai/providers/openai/openai-errors.js +0 -247
  189. package/dist/ai/providers/openai/openai-errors.js.map +0 -1
  190. package/dist/ai/providers/openai/openai-family-guards.d.ts +0 -4
  191. package/dist/ai/providers/openai/openai-family-guards.d.ts.map +0 -1
  192. package/dist/ai/providers/openai/openai-family-guards.js +0 -19
  193. package/dist/ai/providers/openai/openai-family-guards.js.map +0 -1
  194. package/dist/ai/providers/openai/openai-images.mapper.d.ts +0 -23
  195. package/dist/ai/providers/openai/openai-images.mapper.d.ts.map +0 -1
  196. package/dist/ai/providers/openai/openai-images.mapper.js +0 -164
  197. package/dist/ai/providers/openai/openai-images.mapper.js.map +0 -1
  198. package/dist/ai/providers/openai/openai-model-catalog.d.ts +0 -36
  199. package/dist/ai/providers/openai/openai-model-catalog.d.ts.map +0 -1
  200. package/dist/ai/providers/openai/openai-model-catalog.js +0 -209
  201. package/dist/ai/providers/openai/openai-model-catalog.js.map +0 -1
  202. package/dist/ai/providers/openai/openai-realtime.mapper.d.ts +0 -18
  203. package/dist/ai/providers/openai/openai-realtime.mapper.d.ts.map +0 -1
  204. package/dist/ai/providers/openai/openai-realtime.mapper.js +0 -159
  205. package/dist/ai/providers/openai/openai-realtime.mapper.js.map +0 -1
  206. package/dist/ai/providers/openai/openai-redirect-guard.d.ts +0 -9
  207. package/dist/ai/providers/openai/openai-redirect-guard.d.ts.map +0 -1
  208. package/dist/ai/providers/openai/openai-redirect-guard.js +0 -61
  209. package/dist/ai/providers/openai/openai-redirect-guard.js.map +0 -1
  210. package/dist/ai/providers/openai/openai-responses.engine.d.ts +0 -50
  211. package/dist/ai/providers/openai/openai-responses.engine.d.ts.map +0 -1
  212. package/dist/ai/providers/openai/openai-responses.engine.js +0 -206
  213. package/dist/ai/providers/openai/openai-responses.engine.js.map +0 -1
  214. package/dist/ai/providers/openai/openai-responses.mapper.d.ts +0 -64
  215. package/dist/ai/providers/openai/openai-responses.mapper.d.ts.map +0 -1
  216. package/dist/ai/providers/openai/openai-responses.mapper.js +0 -580
  217. package/dist/ai/providers/openai/openai-responses.mapper.js.map +0 -1
  218. package/dist/ai/providers/openai/openai-stream.mapper.d.ts +0 -28
  219. package/dist/ai/providers/openai/openai-stream.mapper.d.ts.map +0 -1
  220. package/dist/ai/providers/openai/openai-stream.mapper.js +0 -139
  221. package/dist/ai/providers/openai/openai-stream.mapper.js.map +0 -1
  222. package/dist/ai/providers/openai/testing/chat-completions-fixtures.d.ts +0 -24
  223. package/dist/ai/providers/openai/testing/chat-completions-fixtures.d.ts.map +0 -1
  224. package/dist/ai/providers/openai/testing/chat-completions-fixtures.js +0 -72
  225. package/dist/ai/providers/openai/testing/chat-completions-fixtures.js.map +0 -1
  226. package/dist/ai/providers/openai/testing/conformance-responders.d.ts +0 -7
  227. package/dist/ai/providers/openai/testing/conformance-responders.d.ts.map +0 -1
  228. package/dist/ai/providers/openai/testing/conformance-responders.js +0 -64
  229. package/dist/ai/providers/openai/testing/conformance-responders.js.map +0 -1
  230. package/dist/ai/providers/openai/testing/openai-fixtures.d.ts +0 -52
  231. package/dist/ai/providers/openai/testing/openai-fixtures.d.ts.map +0 -1
  232. package/dist/ai/providers/openai/testing/openai-fixtures.js +0 -208
  233. package/dist/ai/providers/openai/testing/openai-fixtures.js.map +0 -1
  234. package/dist/ai/providers/openai/testing/openai-mock-transport.d.ts +0 -242
  235. package/dist/ai/providers/openai/testing/openai-mock-transport.d.ts.map +0 -1
  236. package/dist/ai/providers/openai/testing/openai-mock-transport.js +0 -523
  237. package/dist/ai/providers/openai/testing/openai-mock-transport.js.map +0 -1
  238. package/dist/ai/providers/openai-compatible/openai-compatible-settings.d.ts +0 -13
  239. package/dist/ai/providers/openai-compatible/openai-compatible-settings.d.ts.map +0 -1
  240. package/dist/ai/providers/openai-compatible/openai-compatible-settings.js +0 -29
  241. package/dist/ai/providers/openai-compatible/openai-compatible-settings.js.map +0 -1
@@ -1,50 +1,4 @@
1
- import { z } from 'zod';
2
- /**
3
- * A JSON Schema document, as plain data.
4
- *
5
- * @stability experimental
6
- */
7
- export type AiJsonSchema = Record<string, unknown>;
8
- /**
9
- * Converts a Zod schema to the JSON Schema a provider is sent.
10
- *
11
- * Uses zod's OUTPUT view — the shape the model must PRODUCE: every
12
- * non-optional key is `required` and objects are closed
13
- * (`additionalProperties: false`), which is what strict structured-output
14
- * and strict function-calling modes require. The `$schema` marker is dropped
15
- * because it describes the document, not the value, and some providers
16
- * reject unknown top-level keywords.
17
- *
18
- * A schema JSON Schema cannot express (a `Date`, a `transform`, a function) is
19
- * a programming error in the caller; it surfaces as
20
- * `AiError('AI_INVALID_REQUEST')` so it follows the same error path as every
21
- * other AI failure instead of escaping as a raw zod error.
22
- *
23
- * @stability experimental
24
- */
25
- export declare function toJsonSchema(schema: z.ZodTypeAny): AiJsonSchema;
26
- /**
27
- * One validation problem, safe to return to a client (no model output echoed).
28
- *
29
- * @stability experimental
30
- */
31
- export interface AiStructuredOutputIssue {
32
- /** Where in the output the problem is. */
33
- path: Array<string | number>;
34
- /** Zod's issue code. */
35
- code: string;
36
- /** What is wrong, in words. */
37
- message: string;
38
- }
39
- /**
40
- * Parses a model's text output and validates it against `schema`.
41
- *
42
- * Throws `AiError('AI_STRUCTURED_OUTPUT_INVALID')` (502 — the PROVIDER
43
- * returned something unusable, not the caller) with the issues in
44
- * `details.issues`. The raw text is deliberately NOT included: it is model
45
- * output derived from the user's prompt, and error bodies get logged.
46
- *
47
- * @stability experimental
48
- */
49
- export declare function parseStructured<S extends z.ZodTypeAny>(schema: S, text: string): z.output<S>;
1
+ import './ai-error';
2
+ export { parseStructured, toJsonSchema, } from '@marinoscar/platform-ai-providers';
3
+ export type { AiJsonSchema, AiStructuredOutputIssue, } from '@marinoscar/platform-ai-providers';
50
4
  //# sourceMappingURL=structured-output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"structured-output.d.ts","sourceRoot":"","sources":["../../../src/ai/core/structured-output.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,YAAY,CAgB/D;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,0CAA0C;IAC1C,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC7B,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAsC5F"}
1
+ {"version":3,"file":"structured-output.d.ts","sourceRoot":"","sources":["../../../src/ai/core/structured-output.ts"],"names":[],"mappings":"AAKA,OAAO,YAAY,CAAC;AAEpB,OAAO,EACL,eAAe,EACf,YAAY,GACb,MAAM,mCAAmC,CAAC;AAE3C,YAAY,EACV,YAAY,EACZ,uBAAuB,GACxB,MAAM,mCAAmC,CAAC"}
@@ -1,83 +1,12 @@
1
1
  "use strict";
2
- // =============================================================================
3
- // Structured output helpers (issue #424, epic #419)
4
- // =============================================================================
5
- //
6
- // A caller hands the AI layer a ZOD schema; a provider wants a JSON SCHEMA,
7
- // and hands back TEXT. These two functions are the whole round trip, and the
8
- // only place either conversion happens, so every adapter describes and
9
- // validates schemas identically.
10
- //
11
- // The repository is on zod v4, which converts natively (`z.toJSONSchema`), so
12
- // no extra dependency is needed.
13
- // =============================================================================
2
+ // Moved to `@marinoscar/platform-ai-providers` (#991) so the AI provider
3
+ // adapters and their core types run without Nest. This path re-exports the
4
+ // names it always exported, unchanged, so platform imports keep working.
5
+ // The side-effect import runs the `AiError` integration (ai-error.ts) first.
14
6
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.toJsonSchema = toJsonSchema;
16
- exports.parseStructured = parseStructured;
17
- const zod_1 = require("zod");
18
- const ai_error_1 = require("./ai-error");
19
- /**
20
- * Converts a Zod schema to the JSON Schema a provider is sent.
21
- *
22
- * Uses zod's OUTPUT view — the shape the model must PRODUCE: every
23
- * non-optional key is `required` and objects are closed
24
- * (`additionalProperties: false`), which is what strict structured-output
25
- * and strict function-calling modes require. The `$schema` marker is dropped
26
- * because it describes the document, not the value, and some providers
27
- * reject unknown top-level keywords.
28
- *
29
- * A schema JSON Schema cannot express (a `Date`, a `transform`, a function) is
30
- * a programming error in the caller; it surfaces as
31
- * `AiError('AI_INVALID_REQUEST')` so it follows the same error path as every
32
- * other AI failure instead of escaping as a raw zod error.
33
- *
34
- * @stability experimental
35
- */
36
- function toJsonSchema(schema) {
37
- let json;
38
- try {
39
- json = zod_1.z.toJSONSchema(schema, { unrepresentable: 'throw' });
40
- }
41
- catch (err) {
42
- throw new ai_error_1.AiError('AI_INVALID_REQUEST', 'The schema cannot be represented as JSON Schema.', { cause: err, details: { detail: err instanceof Error ? err.message : String(err) } });
43
- }
44
- const { $schema: _ignored, ...rest } = json;
45
- return rest;
46
- }
47
- /**
48
- * Parses a model's text output and validates it against `schema`.
49
- *
50
- * Throws `AiError('AI_STRUCTURED_OUTPUT_INVALID')` (502 — the PROVIDER
51
- * returned something unusable, not the caller) with the issues in
52
- * `details.issues`. The raw text is deliberately NOT included: it is model
53
- * output derived from the user's prompt, and error bodies get logged.
54
- *
55
- * @stability experimental
56
- */
57
- function parseStructured(schema, text) {
58
- let value;
59
- try {
60
- value = JSON.parse(text);
61
- }
62
- catch (err) {
63
- const issues = [
64
- {
65
- path: [],
66
- code: 'invalid_json',
67
- message: err instanceof Error ? err.message : 'Output is not valid JSON',
68
- },
69
- ];
70
- throw new ai_error_1.AiError('AI_STRUCTURED_OUTPUT_INVALID', 'The model output is not valid JSON.', { cause: err, details: { issues } });
71
- }
72
- const result = schema.safeParse(value);
73
- if (!result.success) {
74
- const issues = result.error.issues.map((issue) => ({
75
- path: issue.path.map((segment) => (typeof segment === 'symbol' ? String(segment) : segment)),
76
- code: issue.code,
77
- message: issue.message,
78
- }));
79
- throw new ai_error_1.AiError('AI_STRUCTURED_OUTPUT_INVALID', 'The model output does not match the requested schema.', { cause: result.error, details: { issues } });
80
- }
81
- return result.data;
82
- }
7
+ exports.toJsonSchema = exports.parseStructured = void 0;
8
+ require("./ai-error");
9
+ var platform_ai_providers_1 = require("@marinoscar/platform-ai-providers");
10
+ Object.defineProperty(exports, "parseStructured", { enumerable: true, get: function () { return platform_ai_providers_1.parseStructured; } });
11
+ Object.defineProperty(exports, "toJsonSchema", { enumerable: true, get: function () { return platform_ai_providers_1.toJsonSchema; } });
83
12
  //# sourceMappingURL=structured-output.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"structured-output.js","sourceRoot":"","sources":["../../../src/ai/core/structured-output.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,gFAAgF;AAChF,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,uEAAuE;AACvE,iCAAiC;AACjC,EAAE;AACF,8EAA8E;AAC9E,iCAAiC;AACjC,gFAAgF;;AA8BhF,oCAgBC;AA0BD,0CAsCC;AA5GD,6BAAwB;AAExB,yCAAqC;AASrC;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,YAAY,CAAC,MAAoB;IAC/C,IAAI,IAAkB,CAAC;IAEvB,IAAI,CAAC;QACH,IAAI,GAAG,OAAC,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,CAAiB,CAAC;IAC9E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,kBAAO,CACf,oBAAoB,EACpB,kDAAkD,EAClD,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CACtF,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAE5C,OAAO,IAAI,CAAC;AACd,CAAC;AAgBD;;;;;;;;;GASG;AACH,SAAgB,eAAe,CAAyB,MAAS,EAAE,IAAY;IAC7E,IAAI,KAAc,CAAC;IAEnB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAA8B;YACxC;gBACE,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B;aACzE;SACF,CAAC;QAEF,MAAM,IAAI,kBAAO,CACf,8BAA8B,EAC9B,qCAAqC,EACrC,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,CACpC,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAEvC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAA8B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC5E,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC5F,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC,CAAC;QAEJ,MAAM,IAAI,kBAAO,CACf,8BAA8B,EAC9B,uDAAuD,EACvD,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,CAC7C,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,IAAmB,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"structured-output.js","sourceRoot":"","sources":["../../../src/ai/core/structured-output.ts"],"names":[],"mappings":";AAAA,yEAAyE;AACzE,2EAA2E;AAC3E,yEAAyE;AACzE,6EAA6E;;;AAE7E,sBAAoB;AAEpB,2EAG2C;AAFzC,wHAAA,eAAe,OAAA;AACf,qHAAA,YAAY,OAAA"}
@@ -1,94 +1,4 @@
1
- import type { z } from 'zod';
2
- import type { AiFunctionTool, AiTool } from './types/responses.types';
3
- /**
4
- * What a tool's `execute` is called with besides its arguments.
5
- *
6
- * @stability experimental
7
- */
8
- export interface AiToolExecutionContext {
9
- /** The user on whose behalf the model is acting — scope every data access to it. */
10
- userId: string;
11
- /** Aborted when the request is. */
12
- signal?: AbortSignal;
13
- /** The request id, for logs. */
14
- requestId?: string;
15
- }
16
- /**
17
- * What {@link defineTool} takes: a function tool and its implementation.
18
- *
19
- * @typeParam P - the parameters' Zod schema.
20
- * @typeParam R - what the implementation returns.
21
- *
22
- * @stability experimental
23
- */
24
- export interface AiToolDefinition<P extends z.ZodTypeAny, R> {
25
- /** The name the model calls it by (`[a-zA-Z0-9_-]`, at most 64). */
26
- name: string;
27
- /** What it does, for the model. */
28
- description: string;
29
- /** The parameters' schema. */
30
- parameters: P;
31
- /** Ask the provider to enforce the schema exactly. Defaults to true. */
32
- strict?: boolean;
33
- /**
34
- * The implementation.
35
- *
36
- * @param args - the validated arguments.
37
- * @param ctx - the user and the signal.
38
- */
39
- execute(args: z.output<P>, ctx: AiToolExecutionContext): Promise<R> | R;
40
- }
41
- /**
42
- * The outcome of parsing a model's raw arguments.
43
- *
44
- * @typeParam P - the parameters' Zod schema.
45
- *
46
- * @stability experimental
47
- */
48
- export type AiToolArgumentsResult<P extends z.ZodTypeAny> = {
49
- /** Parsed. */
50
- success: true;
51
- /** The validated arguments. */
52
- data: z.output<P>;
53
- } | {
54
- /** Refused. */
55
- success: false;
56
- /** Why, suitable for a `function_call_output`. */
57
- error: string;
58
- };
59
- /**
60
- * A defined function tool: the request half and the implementation half.
61
- *
62
- * @typeParam P - the parameters' Zod schema.
63
- * @typeParam R - what the implementation returns.
64
- *
65
- * @stability experimental
66
- */
67
- export interface AiDefinedTool<P extends z.ZodTypeAny = z.ZodTypeAny, R = unknown> {
68
- /** Goes into `AiResponseRequest.tools`. */
69
- tool: AiFunctionTool<P>;
70
- /** Runs the implementation. Always async, whatever the definition returned. */
71
- execute(args: z.output<P>, ctx: AiToolExecutionContext): Promise<R>;
72
- /**
73
- * Parses and validates a model's raw `arguments` string. Never throws: a
74
- * failure is a message suitable for a `function_call_output`.
75
- */
76
- parseArguments(raw: string): AiToolArgumentsResult<P>;
77
- }
78
- /**
79
- * Defines a function tool.
80
- *
81
- * Throws (a plain `TypeError` — this is a programming error, found at
82
- * definition time rather than on the first model call) when the name is not
83
- * provider-safe or `parameters` does not describe a JSON object.
84
- *
85
- * @stability experimental
86
- */
87
- export declare function defineTool<P extends z.ZodTypeAny, R>(def: AiToolDefinition<P, R>): AiDefinedTool<P, R>;
88
- /**
89
- * Narrows a request tool to a function tool (as opposed to a hosted one).
90
- *
91
- * @stability experimental
92
- */
93
- export declare function isFunctionTool(tool: AiTool): tool is AiFunctionTool;
1
+ import './ai-error';
2
+ export { defineTool, isFunctionTool, } from '@marinoscar/platform-ai-providers';
3
+ export type { AiDefinedTool, AiToolArgumentsResult, AiToolDefinition, AiToolExecutionContext, } from '@marinoscar/platform-ai-providers';
94
4
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/ai/core/tools.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAKtE;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,oFAAoF;IACpF,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;IACzD,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,UAAU,EAAE,CAAC,CAAC;IACd,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACzE;AAED;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,IACpD;IACE,cAAc;IACd,OAAO,EAAE,IAAI,CAAC;IACd,+BAA+B;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACnB,GACD;IACE,eAAe;IACf,OAAO,EAAE,KAAK,CAAC;IACf,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEN;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,OAAO;IAC/E,2CAA2C;IAC3C,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACxB,+EAA+E;IAC/E,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACpE;;;OAGG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;CACvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC,EAClD,GAAG,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAC1B,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CA+CrB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,cAAc,CAEnE"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/ai/core/tools.ts"],"names":[],"mappings":"AAKA,OAAO,YAAY,CAAC;AAEpB,OAAO,EACL,UAAU,EACV,cAAc,GACf,MAAM,mCAAmC,CAAC;AAE3C,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,mCAAmC,CAAC"}
@@ -1,76 +1,12 @@
1
1
  "use strict";
2
- // =============================================================================
3
- // Function tool helper (issue #424, epic #419)
4
- // =============================================================================
5
- //
6
- // `defineTool()` binds a function tool's description (what the provider is
7
- // told) to its implementation (what runs when the model calls it) and to ONE
8
- // Zod schema used for both the provider-facing JSON Schema and the validation
9
- // of the model's arguments. The #432 agent loop consumes the result.
10
- //
11
- // Arguments from a model are untrusted input — they are validated before
12
- // `execute` ever sees them, and a validation failure is returned as a string
13
- // the loop can feed back to the model rather than thrown.
14
- // =============================================================================
2
+ // Moved to `@marinoscar/platform-ai-providers` (#991) so the AI provider
3
+ // adapters and their core types run without Nest. This path re-exports the
4
+ // names it always exported, unchanged, so platform imports keep working.
5
+ // The side-effect import runs the `AiError` integration (ai-error.ts) first.
15
6
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.defineTool = defineTool;
17
- exports.isFunctionTool = isFunctionTool;
18
- const structured_output_1 = require("./structured-output");
19
- /** Names providers accept for a function tool (the strictest common subset). */
20
- const TOOL_NAME = /^[a-zA-Z0-9_-]{1,64}$/;
21
- /**
22
- * Defines a function tool.
23
- *
24
- * Throws (a plain `TypeError` — this is a programming error, found at
25
- * definition time rather than on the first model call) when the name is not
26
- * provider-safe or `parameters` does not describe a JSON object.
27
- *
28
- * @stability experimental
29
- */
30
- function defineTool(def) {
31
- if (!TOOL_NAME.test(def.name)) {
32
- throw new TypeError(`Invalid AI tool name "${def.name}": use 1-64 characters from [a-zA-Z0-9_-].`);
33
- }
34
- const jsonSchema = (0, structured_output_1.toJsonSchema)(def.parameters);
35
- if (jsonSchema.type !== 'object') {
36
- throw new TypeError(`AI tool "${def.name}" parameters must be an object schema.`);
37
- }
38
- const tool = {
39
- type: 'function',
40
- name: def.name,
41
- description: def.description,
42
- parameters: def.parameters,
43
- strict: def.strict ?? true,
44
- };
45
- return {
46
- tool,
47
- execute: async (args, ctx) => def.execute(args, ctx),
48
- parseArguments: (raw) => {
49
- let value;
50
- try {
51
- // Some providers send an empty string for a no-argument call.
52
- value = JSON.parse(raw.trim() === '' ? '{}' : raw);
53
- }
54
- catch {
55
- return { success: false, error: `Arguments for "${def.name}" are not valid JSON.` };
56
- }
57
- const result = def.parameters.safeParse(value);
58
- if (!result.success) {
59
- const problems = result.error.issues
60
- .map((issue) => `${issue.path.length ? issue.path.join('.') : '(root)'}: ${issue.message}`)
61
- .join('; ');
62
- return { success: false, error: `Invalid arguments for "${def.name}": ${problems}` };
63
- }
64
- return { success: true, data: result.data };
65
- },
66
- };
67
- }
68
- /**
69
- * Narrows a request tool to a function tool (as opposed to a hosted one).
70
- *
71
- * @stability experimental
72
- */
73
- function isFunctionTool(tool) {
74
- return tool.type === 'function';
75
- }
7
+ exports.isFunctionTool = exports.defineTool = void 0;
8
+ require("./ai-error");
9
+ var platform_ai_providers_1 = require("@marinoscar/platform-ai-providers");
10
+ Object.defineProperty(exports, "defineTool", { enumerable: true, get: function () { return platform_ai_providers_1.defineTool; } });
11
+ Object.defineProperty(exports, "isFunctionTool", { enumerable: true, get: function () { return platform_ai_providers_1.isFunctionTool; } });
76
12
  //# sourceMappingURL=tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/ai/core/tools.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,gFAAgF;AAChF,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,8EAA8E;AAC9E,qEAAqE;AACrE,EAAE;AACF,yEAAyE;AACzE,6EAA6E;AAC7E,0DAA0D;AAC1D,gFAAgF;;AAoGhF,gCAiDC;AAOD,wCAEC;AA1JD,2DAAmD;AAGnD,gFAAgF;AAChF,MAAM,SAAS,GAAG,uBAAuB,CAAC;AAmF1C;;;;;;;;GAQG;AACH,SAAgB,UAAU,CACxB,GAA2B;IAE3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,SAAS,CACjB,yBAAyB,GAAG,CAAC,IAAI,4CAA4C,CAC9E,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,gCAAY,EAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAEhD,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,SAAS,CAAC,YAAY,GAAG,CAAC,IAAI,wCAAwC,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,IAAI,GAAsB;QAC9B,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI;KAC3B,CAAC;IAEF,OAAO;QACL,IAAI;QACJ,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;QACpD,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE;YACtB,IAAI,KAAc,CAAC;YAEnB,IAAI,CAAC;gBACH,8DAA8D;gBAC9D,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACrD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,GAAG,CAAC,IAAI,uBAAuB,EAAE,CAAC;YACtF,CAAC;YAED,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAE/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;qBACjC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;qBAC1F,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,GAAG,CAAC,IAAI,MAAM,QAAQ,EAAE,EAAE,CAAC;YACvF,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAmB,EAAE,CAAC;QAC7D,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/ai/core/tools.ts"],"names":[],"mappings":";AAAA,yEAAyE;AACzE,2EAA2E;AAC3E,yEAAyE;AACzE,6EAA6E;;;AAE7E,sBAAoB;AAEpB,2EAG2C;AAFzC,mHAAA,UAAU,OAAA;AACV,uHAAA,cAAc,OAAA"}
@@ -1,103 +1,4 @@
1
- import type { AiBinaryPayload } from './media.types';
2
- /**
3
- * The largest image a Responses request may reference by storage object (20 MiB).
4
- *
5
- * @stability experimental
6
- */
7
- export declare const AI_STORAGE_INPUT_IMAGE_MAX_BYTES: number;
8
- /**
9
- * The largest non-image file a Responses request may reference by storage object (50 MiB).
10
- *
11
- * @stability experimental
12
- */
13
- export declare const AI_STORAGE_INPUT_FILE_MAX_BYTES: number;
14
- /**
15
- * The most storage-object parts one request may carry.
16
- *
17
- * @stability experimental
18
- */
19
- export declare const AI_STORAGE_INPUTS_MAX = 16;
20
- /**
21
- * How long a presigned input URL stays valid, in seconds (10 minutes).
22
- *
23
- * @stability experimental
24
- */
25
- export declare const AI_STORAGE_INPUT_URL_TTL_SECONDS = 600;
26
- /**
27
- * Stored objects of these MIME types are IMAGES (they need `vision_input`
28
- * and are capped at `AI_STORAGE_INPUT_IMAGE_MAX_BYTES`); every other type is
29
- * a FILE (`file_input`, `AI_STORAGE_INPUT_FILE_MAX_BYTES`).
30
- *
31
- * @stability experimental
32
- */
33
- export declare const AI_STORAGE_INPUT_IMAGE_MIME_TYPES: readonly ["image/png", "image/jpeg", "image/gif", "image/webp"];
34
- /**
35
- * What kind of input a stored object is, decided by its MIME type.
36
- *
37
- * @stability experimental
38
- */
39
- export type AiStorageInputModality = 'image' | 'file';
40
- /**
41
- * How an adapter wants a resolved storage input delivered (see the file header).
42
- *
43
- * @stability experimental
44
- */
45
- export type AiFileInputStrategy = 'presigned_url' | 'upload' | 'inline';
46
- /**
47
- * An adapter's delivery strategy per modality. Presence on the adapter IS the
48
- * declaration that it accepts storage-object inputs at all; an adapter
49
- * without one refuses them with `AI_CAPABILITY_UNSUPPORTED`.
50
- *
51
- * @stability experimental
52
- */
53
- export type AiFileInputStrategies = Readonly<Record<AiStorageInputModality, AiFileInputStrategy>>;
54
- /**
55
- * The modality of a stored object with `mimeType`.
56
- *
57
- * @stability experimental
58
- */
59
- export declare function storageInputModality(mimeType: string): AiStorageInputModality;
60
- /**
61
- * The size cap for a modality.
62
- *
63
- * @stability experimental
64
- */
65
- export declare function storageInputMaxBytes(modality: AiStorageInputModality): number;
66
- /**
67
- * One storage-object input, resolved and authorised by the runtime for one
68
- * provider call. Exactly what the adapter's declared strategy needs is set.
69
- *
70
- * @stability experimental
71
- */
72
- export interface AiResolvedStorageInput {
73
- /** The storage object. */
74
- storageObjectId: string;
75
- /** Whether it is an image or a file input. */
76
- modality: AiStorageInputModality;
77
- /** Normalised MIME type (lower case, no parameters). */
78
- mimeType: string;
79
- /** The object's display name — a provider-facing filename. */
80
- filename: string;
81
- /** The strategy this input was prepared for (the adapter's own declaration). */
82
- strategy: AiFileInputStrategy;
83
- /**
84
- * `presigned_url` only: a signed GET URL valid for
85
- * `AI_STORAGE_INPUT_URL_TTL_SECONDS`. ⚠ Never log, persist or return it.
86
- */
87
- url?: string;
88
- /**
89
- * `upload`/`inline`: the object's bytes as a stream (a Node `Readable` in
90
- * practice), failing with `AI_INVALID_REQUEST` once more than the
91
- * modality's cap has arrived.
92
- */
93
- open?(): Promise<AsyncIterable<Uint8Array>>;
94
- /** `upload`/`inline`: the bytes buffered, with the same cap. */
95
- read?(): Promise<AiBinaryPayload>;
96
- }
97
- /**
98
- * Every resolved storage input of one call, keyed by storage object id.
99
- *
100
- * @stability experimental
101
- */
102
- export type AiResolvedStorageInputs = ReadonlyMap<string, AiResolvedStorageInput>;
1
+ import '../ai-error';
2
+ export { AI_STORAGE_INPUT_FILE_MAX_BYTES, AI_STORAGE_INPUT_IMAGE_MAX_BYTES, AI_STORAGE_INPUT_IMAGE_MIME_TYPES, AI_STORAGE_INPUT_URL_TTL_SECONDS, AI_STORAGE_INPUTS_MAX, storageInputMaxBytes, storageInputModality, } from '@marinoscar/platform-ai-providers';
3
+ export type { AiFileInputStrategies, AiFileInputStrategy, AiResolvedStorageInput, AiResolvedStorageInputs, AiStorageInputModality, } from '@marinoscar/platform-ai-providers';
103
4
  //# sourceMappingURL=file-inputs.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-inputs.types.d.ts","sourceRoot":"","sources":["../../../../src/ai/core/types/file-inputs.types.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,QAAmB,CAAC;AAEjE;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,QAAmB,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,MAAM,CAAC;AAEpD;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,iEAAkE,CAAC;AAEjH;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEtD;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC,MAAM,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAElG;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,CAI7E;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,MAAM,CAE7E;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,0BAA0B;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,QAAQ,EAAE,sBAAsB,CAAC;IACjC,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,QAAQ,EAAE,mBAAmB,CAAC;IAC9B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5C,gEAAgE;IAChE,IAAI,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;CACnC;AAED;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG,WAAW,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC"}
1
+ {"version":3,"file":"file-inputs.types.d.ts","sourceRoot":"","sources":["../../../../src/ai/core/types/file-inputs.types.ts"],"names":[],"mappings":"AAKA,OAAO,aAAa,CAAC;AAErB,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,gCAAgC,EAChC,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mCAAmC,CAAC;AAE3C,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,mCAAmC,CAAC"}
@@ -1,81 +1,17 @@
1
1
  "use strict";
2
- // =============================================================================
3
- // Storage-object inputs to a Responses request (issue #441, epic #420)
4
- // =============================================================================
5
- //
6
- // An `image`/`file` content part may name one of the caller's storage objects
7
- // (`{ type: 'file', storageObjectId }`) instead of a public URL. The RUNTIME
8
- // resolves it before the adapter is called — ownership, readiness, modality
9
- // against the model's capabilities, size — and hands the adapter what its
10
- // declared DELIVERY STRATEGY needs, through `AiCallContext.storageInputs`:
11
- //
12
- // presigned_url a short-lived signed GET URL the provider fetches itself
13
- // (`AI_STORAGE_INPUT_URL_TTL_SECONDS`); the bytes never pass
14
- // through this API.
15
- // upload the adapter streams the bytes to the provider's own file
16
- // store and deletes the provider-side copy afterwards.
17
- // inline the adapter embeds the bytes in the request (base64).
18
- //
19
- // The request itself is never rewritten: it keeps `storageObjectId`, so what
20
- // is logged (the opt-in prompt log), queued (`ai_runs.request`) or recorded
21
- // never carries a URL or bytes. A background run resolves again when it
22
- // executes, under the same checks, with a fresh URL.
23
- //
24
- // ⚠ A presigned URL is a bearer capability for the object: it lives only in
25
- // `AiCallContext.storageInputs`, for one call, and must never be logged,
26
- // persisted, put on a span, or returned — the same rule as `apiKey`.
27
- // =============================================================================
2
+ // Moved to `@marinoscar/platform-ai-providers` (#991) so the AI provider
3
+ // adapters and their core types run without Nest. This path re-exports the
4
+ // names it always exported, unchanged, so platform imports keep working.
5
+ // The side-effect import runs the `AiError` integration (ai-error.ts) first.
28
6
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.AI_STORAGE_INPUT_IMAGE_MIME_TYPES = exports.AI_STORAGE_INPUT_URL_TTL_SECONDS = exports.AI_STORAGE_INPUTS_MAX = exports.AI_STORAGE_INPUT_FILE_MAX_BYTES = exports.AI_STORAGE_INPUT_IMAGE_MAX_BYTES = void 0;
30
- exports.storageInputModality = storageInputModality;
31
- exports.storageInputMaxBytes = storageInputMaxBytes;
32
- /**
33
- * The largest image a Responses request may reference by storage object (20 MiB).
34
- *
35
- * @stability experimental
36
- */
37
- exports.AI_STORAGE_INPUT_IMAGE_MAX_BYTES = 20 * 1024 * 1024;
38
- /**
39
- * The largest non-image file a Responses request may reference by storage object (50 MiB).
40
- *
41
- * @stability experimental
42
- */
43
- exports.AI_STORAGE_INPUT_FILE_MAX_BYTES = 50 * 1024 * 1024;
44
- /**
45
- * The most storage-object parts one request may carry.
46
- *
47
- * @stability experimental
48
- */
49
- exports.AI_STORAGE_INPUTS_MAX = 16;
50
- /**
51
- * How long a presigned input URL stays valid, in seconds (10 minutes).
52
- *
53
- * @stability experimental
54
- */
55
- exports.AI_STORAGE_INPUT_URL_TTL_SECONDS = 600;
56
- /**
57
- * Stored objects of these MIME types are IMAGES (they need `vision_input`
58
- * and are capped at `AI_STORAGE_INPUT_IMAGE_MAX_BYTES`); every other type is
59
- * a FILE (`file_input`, `AI_STORAGE_INPUT_FILE_MAX_BYTES`).
60
- *
61
- * @stability experimental
62
- */
63
- exports.AI_STORAGE_INPUT_IMAGE_MIME_TYPES = ['image/png', 'image/jpeg', 'image/gif', 'image/webp'];
64
- /**
65
- * The modality of a stored object with `mimeType`.
66
- *
67
- * @stability experimental
68
- */
69
- function storageInputModality(mimeType) {
70
- const normalised = mimeType.split(';')[0].trim().toLowerCase();
71
- return exports.AI_STORAGE_INPUT_IMAGE_MIME_TYPES.includes(normalised) ? 'image' : 'file';
72
- }
73
- /**
74
- * The size cap for a modality.
75
- *
76
- * @stability experimental
77
- */
78
- function storageInputMaxBytes(modality) {
79
- return modality === 'image' ? exports.AI_STORAGE_INPUT_IMAGE_MAX_BYTES : exports.AI_STORAGE_INPUT_FILE_MAX_BYTES;
80
- }
7
+ exports.storageInputModality = exports.storageInputMaxBytes = exports.AI_STORAGE_INPUTS_MAX = exports.AI_STORAGE_INPUT_URL_TTL_SECONDS = exports.AI_STORAGE_INPUT_IMAGE_MIME_TYPES = exports.AI_STORAGE_INPUT_IMAGE_MAX_BYTES = exports.AI_STORAGE_INPUT_FILE_MAX_BYTES = void 0;
8
+ require("../ai-error");
9
+ var platform_ai_providers_1 = require("@marinoscar/platform-ai-providers");
10
+ Object.defineProperty(exports, "AI_STORAGE_INPUT_FILE_MAX_BYTES", { enumerable: true, get: function () { return platform_ai_providers_1.AI_STORAGE_INPUT_FILE_MAX_BYTES; } });
11
+ Object.defineProperty(exports, "AI_STORAGE_INPUT_IMAGE_MAX_BYTES", { enumerable: true, get: function () { return platform_ai_providers_1.AI_STORAGE_INPUT_IMAGE_MAX_BYTES; } });
12
+ Object.defineProperty(exports, "AI_STORAGE_INPUT_IMAGE_MIME_TYPES", { enumerable: true, get: function () { return platform_ai_providers_1.AI_STORAGE_INPUT_IMAGE_MIME_TYPES; } });
13
+ Object.defineProperty(exports, "AI_STORAGE_INPUT_URL_TTL_SECONDS", { enumerable: true, get: function () { return platform_ai_providers_1.AI_STORAGE_INPUT_URL_TTL_SECONDS; } });
14
+ Object.defineProperty(exports, "AI_STORAGE_INPUTS_MAX", { enumerable: true, get: function () { return platform_ai_providers_1.AI_STORAGE_INPUTS_MAX; } });
15
+ Object.defineProperty(exports, "storageInputMaxBytes", { enumerable: true, get: function () { return platform_ai_providers_1.storageInputMaxBytes; } });
16
+ Object.defineProperty(exports, "storageInputModality", { enumerable: true, get: function () { return platform_ai_providers_1.storageInputModality; } });
81
17
  //# sourceMappingURL=file-inputs.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-inputs.types.js","sourceRoot":"","sources":["../../../../src/ai/core/types/file-inputs.types.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,uEAAuE;AACvE,gFAAgF;AAChF,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,4EAA4E;AAC5E,0EAA0E;AAC1E,2EAA2E;AAC3E,EAAE;AACF,6EAA6E;AAC7E,+EAA+E;AAC/E,sCAAsC;AACtC,6EAA6E;AAC7E,yEAAyE;AACzE,0EAA0E;AAC1E,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,wEAAwE;AACxE,qDAAqD;AACrD,EAAE;AACF,4EAA4E;AAC5E,yEAAyE;AACzE,qEAAqE;AACrE,gFAAgF;;;AAqEhF,oDAIC;AAOD,oDAEC;AA9ED;;;;GAIG;AACU,QAAA,gCAAgC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjE;;;;GAIG;AACU,QAAA,+BAA+B,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEhE;;;;GAIG;AACU,QAAA,qBAAqB,GAAG,EAAE,CAAC;AAExC;;;;GAIG;AACU,QAAA,gCAAgC,GAAG,GAAG,CAAC;AAEpD;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,CAAU,CAAC;AAyBjH;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,QAAgB;IACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE/D,OAAQ,yCAAuD,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAC1G,CAAC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,QAAgC;IACnE,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,wCAAgC,CAAC,CAAC,CAAC,uCAA+B,CAAC;AACnG,CAAC"}
1
+ {"version":3,"file":"file-inputs.types.js","sourceRoot":"","sources":["../../../../src/ai/core/types/file-inputs.types.ts"],"names":[],"mappings":";AAAA,yEAAyE;AACzE,2EAA2E;AAC3E,yEAAyE;AACzE,6EAA6E;;;AAE7E,uBAAqB;AAErB,2EAQ2C;AAPzC,wIAAA,+BAA+B,OAAA;AAC/B,yIAAA,gCAAgC,OAAA;AAChC,0IAAA,iCAAiC,OAAA;AACjC,yIAAA,gCAAgC,OAAA;AAChC,8HAAA,qBAAqB,OAAA;AACrB,6HAAA,oBAAoB,OAAA;AACpB,6HAAA,oBAAoB,OAAA"}