@luanpoppe/ai 1.1.4 → 1.1.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 (151) hide show
  1. package/.env.example +13 -1
  2. package/README.md +795 -0
  3. package/dist/@types/embedding-model-names.d.ts +11 -0
  4. package/dist/@types/embedding-model-names.d.ts.map +1 -0
  5. package/dist/@types/embedding-model-names.js +3 -0
  6. package/dist/@types/embedding-model-names.js.map +1 -0
  7. package/dist/@types/model-names.d.ts +21 -5
  8. package/dist/@types/model-names.d.ts.map +1 -1
  9. package/dist/@types/openrouter-provider.d.ts +25 -0
  10. package/dist/@types/openrouter-provider.d.ts.map +1 -0
  11. package/dist/@types/openrouter-provider.js +3 -0
  12. package/dist/@types/openrouter-provider.js.map +1 -0
  13. package/dist/ai.d.ts +7 -0
  14. package/dist/ai.d.ts.map +1 -1
  15. package/dist/ai.js +56 -5
  16. package/dist/ai.js.map +1 -1
  17. package/dist/audio/gemini-transcription.d.ts +4 -0
  18. package/dist/audio/gemini-transcription.d.ts.map +1 -0
  19. package/dist/audio/gemini-transcription.js +37 -0
  20. package/dist/audio/gemini-transcription.js.map +1 -0
  21. package/dist/audio/index.d.ts +33 -0
  22. package/dist/audio/index.d.ts.map +1 -0
  23. package/dist/audio/index.js +43 -0
  24. package/dist/audio/index.js.map +1 -0
  25. package/dist/audio/openrouter-client.d.ts +2 -0
  26. package/dist/audio/openrouter-client.d.ts.map +1 -0
  27. package/dist/audio/openrouter-client.js +7 -0
  28. package/dist/audio/openrouter-client.js.map +1 -0
  29. package/dist/audio/speech-openai.d.ts +4 -0
  30. package/dist/audio/speech-openai.d.ts.map +1 -0
  31. package/dist/audio/speech-openai.js +65 -0
  32. package/dist/audio/speech-openai.js.map +1 -0
  33. package/dist/audio/speech-openrouter.d.ts +4 -0
  34. package/dist/audio/speech-openrouter.d.ts.map +1 -0
  35. package/dist/audio/speech-openrouter.js +89 -0
  36. package/dist/audio/speech-openrouter.js.map +1 -0
  37. package/dist/audio/transcription-openai.d.ts +11 -0
  38. package/dist/audio/transcription-openai.d.ts.map +1 -0
  39. package/dist/audio/transcription-openai.js +204 -0
  40. package/dist/audio/transcription-openai.js.map +1 -0
  41. package/dist/audio/transcription-openrouter.d.ts +4 -0
  42. package/dist/audio/transcription-openrouter.d.ts.map +1 -0
  43. package/dist/audio/transcription-openrouter.js +44 -0
  44. package/dist/audio/transcription-openrouter.js.map +1 -0
  45. package/dist/audio/types.d.ts +92 -0
  46. package/dist/audio/types.d.ts.map +1 -0
  47. package/dist/audio/types.js +6 -0
  48. package/dist/audio/types.js.map +1 -0
  49. package/dist/audio/utils.d.ts +5 -0
  50. package/dist/audio/utils.d.ts.map +1 -0
  51. package/dist/audio/utils.js +25 -0
  52. package/dist/audio/utils.js.map +1 -0
  53. package/dist/embeddings/embed-gemini.d.ts +3 -0
  54. package/dist/embeddings/embed-gemini.d.ts.map +1 -0
  55. package/dist/embeddings/embed-gemini.js +38 -0
  56. package/dist/embeddings/embed-gemini.js.map +1 -0
  57. package/dist/embeddings/embed-openai.d.ts +3 -0
  58. package/dist/embeddings/embed-openai.d.ts.map +1 -0
  59. package/dist/embeddings/embed-openai.js +44 -0
  60. package/dist/embeddings/embed-openai.js.map +1 -0
  61. package/dist/embeddings/embed-openrouter.d.ts +3 -0
  62. package/dist/embeddings/embed-openrouter.d.ts.map +1 -0
  63. package/dist/embeddings/embed-openrouter.js +47 -0
  64. package/dist/embeddings/embed-openrouter.js.map +1 -0
  65. package/dist/embeddings/index.d.ts +19 -0
  66. package/dist/embeddings/index.d.ts.map +1 -0
  67. package/dist/embeddings/index.js +36 -0
  68. package/dist/embeddings/index.js.map +1 -0
  69. package/dist/embeddings/route.d.ts +12 -0
  70. package/dist/embeddings/route.d.ts.map +1 -0
  71. package/dist/embeddings/route.js +42 -0
  72. package/dist/embeddings/route.js.map +1 -0
  73. package/dist/embeddings/types.d.ts +37 -0
  74. package/dist/embeddings/types.d.ts.map +1 -0
  75. package/dist/embeddings/types.js +6 -0
  76. package/dist/embeddings/types.js.map +1 -0
  77. package/dist/embeddings/utils.d.ts +6 -0
  78. package/dist/embeddings/utils.d.ts.map +1 -0
  79. package/dist/embeddings/utils.js +25 -0
  80. package/dist/embeddings/utils.js.map +1 -0
  81. package/dist/index.d.ts +12 -2
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +16 -3
  84. package/dist/index.js.map +1 -1
  85. package/dist/langchain/audio-transcription.d.ts +8 -13
  86. package/dist/langchain/audio-transcription.d.ts.map +1 -1
  87. package/dist/langchain/audio-transcription.js +8 -92
  88. package/dist/langchain/audio-transcription.js.map +1 -1
  89. package/dist/langchain/messages.d.ts +6 -1
  90. package/dist/langchain/messages.d.ts.map +1 -1
  91. package/dist/langchain/messages.js +35 -7
  92. package/dist/langchain/messages.js.map +1 -1
  93. package/dist/langchain/models.d.ts +38 -0
  94. package/dist/langchain/models.d.ts.map +1 -1
  95. package/dist/langchain/models.js +63 -4
  96. package/dist/langchain/models.js.map +1 -1
  97. package/dist/langchain/structured-output.d.ts +9 -0
  98. package/dist/langchain/structured-output.d.ts.map +1 -0
  99. package/dist/langchain/structured-output.js +70 -0
  100. package/dist/langchain/structured-output.js.map +1 -0
  101. package/dist/langchain/tools.d.ts +1 -1
  102. package/dist/utils/openrouter-client.d.ts +4 -0
  103. package/dist/utils/openrouter-client.d.ts.map +1 -0
  104. package/dist/utils/openrouter-client.js +16 -0
  105. package/dist/utils/openrouter-client.js.map +1 -0
  106. package/docs/LANGCHAIN_WHISPER_WINDOWS_BUG.md +2 -0
  107. package/package.json +4 -4
  108. package/src/@types/embedding-model-names.ts +36 -0
  109. package/src/@types/model-names.ts +104 -6
  110. package/src/@types/openrouter-provider.ts +27 -0
  111. package/src/ai.ts +89 -10
  112. package/src/audio/gemini-transcription.ts +47 -0
  113. package/src/audio/index.ts +101 -0
  114. package/src/audio/openrouter-client.ts +4 -0
  115. package/src/audio/speech-openai.ts +79 -0
  116. package/src/audio/speech-openrouter.ts +121 -0
  117. package/src/audio/transcription-openai.ts +259 -0
  118. package/src/audio/transcription-openrouter.ts +59 -0
  119. package/src/audio/types.ts +127 -0
  120. package/src/audio/utils.ts +20 -0
  121. package/src/embeddings/embed-gemini.ts +54 -0
  122. package/src/embeddings/embed-openai.ts +53 -0
  123. package/src/embeddings/embed-openrouter.ts +64 -0
  124. package/src/embeddings/index.ts +83 -0
  125. package/src/embeddings/route.ts +62 -0
  126. package/src/embeddings/types.ts +53 -0
  127. package/src/embeddings/utils.ts +21 -0
  128. package/src/index.ts +52 -5
  129. package/src/langchain/audio-transcription.ts +19 -90
  130. package/src/langchain/messages.ts +84 -12
  131. package/src/langchain/models.ts +130 -3
  132. package/src/langchain/structured-output.ts +77 -0
  133. package/src/utils/openrouter-client.ts +10 -0
  134. package/tests/e2e/README.md +53 -0
  135. package/tests/e2e/ai-audio-multiprovider.test.ts +118 -0
  136. package/tests/e2e/ai-deepseek-structured-output.test.ts +133 -0
  137. package/tests/e2e/ai-embeddings.test.ts +87 -0
  138. package/tests/e2e/ai-local-models.test.ts +65 -0
  139. package/tests/unit/audio/index.test.ts +17 -0
  140. package/tests/unit/audio/speech-openai.test.ts +74 -0
  141. package/tests/unit/audio/speech-openrouter.test.ts +88 -0
  142. package/tests/unit/audio/transcription-openai.test.ts +130 -0
  143. package/tests/unit/audio/transcription-openrouter.test.ts +82 -0
  144. package/tests/unit/embeddings/embed-gemini.test.ts +52 -0
  145. package/tests/unit/embeddings/embed-openai.test.ts +68 -0
  146. package/tests/unit/embeddings/embed-openrouter.test.ts +62 -0
  147. package/tests/unit/embeddings/index.test.ts +55 -0
  148. package/tests/unit/index.test.ts +209 -0
  149. package/tests/unit/langchain/messages.test.ts +37 -0
  150. package/tests/unit/langchain/models.test.ts +223 -1
  151. package/tests/unit/langchain/structured-output.test.ts +49 -0
@@ -0,0 +1,19 @@
1
+ import { embedOpenAI } from "./embed-openai";
2
+ import { embedOpenRouter } from "./embed-openrouter";
3
+ import { embedGemini } from "./embed-gemini";
4
+ import { embedWithModel, type EmbedOptions } from "./route";
5
+ import type { EmbedApiKeys, EmbeddingResult } from "./types";
6
+ export type { AIEmbeddingModelNames, OpenAIEmbeddingModel, GeminiEmbeddingModel, OpenRouterEmbeddingModel, OpenRouterPrefixedEmbeddingModel, } from "../@types/embedding-model-names";
7
+ export type { EmbeddingResult, EmbeddingUsage, OpenAIEmbeddingOptions, OpenRouterEmbeddingOptions, GeminiEmbeddingOptions, GeminiEmbeddingTaskType, EmbedApiKeys, } from "./types";
8
+ export type { EmbedOptions } from "./route";
9
+ export { ANTHROPIC_NO_NATIVE_EMBEDDINGS } from "./types";
10
+ export { embedWithModel };
11
+ export declare class AIEmbeddings {
12
+ static embedOpenAI: typeof embedOpenAI;
13
+ static embedOpenRouter: typeof embedOpenRouter;
14
+ static embedGemini: typeof embedGemini;
15
+ static embed(input: string | string[], options: EmbedOptions, keys: EmbedApiKeys): Promise<EmbeddingResult>;
16
+ static embedDocuments(texts: string[], options: EmbedOptions, keys: EmbedApiKeys): Promise<number[][]>;
17
+ static embedQuery(text: string, options: EmbedOptions, keys: EmbedApiKeys): Promise<number[]>;
18
+ }
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/embeddings/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACL,cAAc,EACd,KAAK,YAAY,EAClB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EAKhB,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,gCAAgC,GACjC,MAAM,iCAAiC,CAAC;AAEzC,YAAY,EACV,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,YAAY,GACb,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAE,8BAA8B,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,qBAAa,YAAY;IACvB,MAAM,CAAC,WAAW,qBAAe;IACjC,MAAM,CAAC,eAAe,yBAAmB;IACzC,MAAM,CAAC,WAAW,qBAAe;WAEpB,KAAK,CAChB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,eAAe,CAAC;WAId,cAAc,CACzB,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;WAWT,UAAU,CACrB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC;CAUrB"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AIEmbeddings = exports.embedWithModel = exports.ANTHROPIC_NO_NATIVE_EMBEDDINGS = void 0;
4
+ const embed_openai_1 = require("./embed-openai");
5
+ const embed_openrouter_1 = require("./embed-openrouter");
6
+ const embed_gemini_1 = require("./embed-gemini");
7
+ const route_1 = require("./route");
8
+ Object.defineProperty(exports, "embedWithModel", { enumerable: true, get: function () { return route_1.embedWithModel; } });
9
+ var types_1 = require("./types");
10
+ Object.defineProperty(exports, "ANTHROPIC_NO_NATIVE_EMBEDDINGS", { enumerable: true, get: function () { return types_1.ANTHROPIC_NO_NATIVE_EMBEDDINGS; } });
11
+ class AIEmbeddings {
12
+ static embedOpenAI = embed_openai_1.embedOpenAI;
13
+ static embedOpenRouter = embed_openrouter_1.embedOpenRouter;
14
+ static embedGemini = embed_gemini_1.embedGemini;
15
+ static async embed(input, options, keys) {
16
+ return (0, route_1.embedWithModel)(input, options, keys);
17
+ }
18
+ static async embedDocuments(texts, options, keys) {
19
+ const taskType = options.taskType ??
20
+ (options.model.startsWith("gemini-embedding-")
21
+ ? "RETRIEVAL_DOCUMENT"
22
+ : undefined);
23
+ const result = await (0, route_1.embedWithModel)(texts, { ...options, taskType }, keys);
24
+ return result.embeddings;
25
+ }
26
+ static async embedQuery(text, options, keys) {
27
+ const taskType = options.taskType ??
28
+ (options.model.startsWith("gemini-embedding-")
29
+ ? "RETRIEVAL_QUERY"
30
+ : undefined);
31
+ const result = await (0, route_1.embedWithModel)(text, { ...options, taskType }, keys);
32
+ return result.embeddings[0] ?? [];
33
+ }
34
+ }
35
+ exports.AIEmbeddings = AIEmbeddings;
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/embeddings/index.ts"],"names":[],"mappings":";;;AACA,iDAA6C;AAC7C,yDAAqD;AACrD,iDAA6C;AAC7C,mCAGiB;AA+BR,+FAjCP,sBAAc,OAiCO;AADvB,iCAAyD;AAAhD,uHAAA,8BAA8B,OAAA;AAGvC,MAAa,YAAY;IACvB,MAAM,CAAC,WAAW,GAAG,0BAAW,CAAC;IACjC,MAAM,CAAC,eAAe,GAAG,kCAAe,CAAC;IACzC,MAAM,CAAC,WAAW,GAAG,0BAAW,CAAC;IAEjC,MAAM,CAAC,KAAK,CAAC,KAAK,CAChB,KAAwB,EACxB,OAAqB,EACrB,IAAkB;QAElB,OAAO,IAAA,sBAAc,EAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CACzB,KAAe,EACf,OAAqB,EACrB,IAAkB;QAElB,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ;YAChB,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC;gBAC5C,CAAC,CAAE,oBAA8B;gBACjC,CAAC,CAAC,SAAS,CAAC,CAAC;QAEjB,MAAM,MAAM,GAAG,MAAM,IAAA,sBAAc,EAAC,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QAC3E,OAAO,MAAM,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,UAAU,CACrB,IAAY,EACZ,OAAqB,EACrB,IAAkB;QAElB,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ;YAChB,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC;gBAC5C,CAAC,CAAE,iBAA2B;gBAC9B,CAAC,CAAC,SAAS,CAAC,CAAC;QAEjB,MAAM,MAAM,GAAG,MAAM,IAAA,sBAAc,EAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;;AAzCH,oCA0CC"}
@@ -0,0 +1,12 @@
1
+ import type { EmbedApiKeys, EmbeddingResult, GeminiEmbeddingOptions, OpenRouterEmbeddingOptions } from "./types";
2
+ import type { AIEmbeddingModelNames } from "../@types/embedding-model-names";
3
+ export type EmbedOptions = {
4
+ model: AIEmbeddingModelNames;
5
+ dimensions?: number;
6
+ encodingFormat?: "float" | "base64";
7
+ taskType?: GeminiEmbeddingOptions["taskType"];
8
+ openRouterProvider?: OpenRouterEmbeddingOptions["openRouterProvider"];
9
+ openRouterAllowAllProviders?: boolean;
10
+ };
11
+ export declare function embedWithModel(input: string | string[], options: EmbedOptions, keys: EmbedApiKeys): Promise<EmbeddingResult>;
12
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/embeddings/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,sBAAsB,EAEtB,0BAA0B,EAC3B,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAU7E,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,qBAAqB,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACpC,QAAQ,CAAC,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAC9C,kBAAkB,CAAC,EAAE,0BAA0B,CAAC,oBAAoB,CAAC,CAAC;IACtE,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC,CAAC;AAEF,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,eAAe,CAAC,CA+B1B"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.embedWithModel = embedWithModel;
4
+ const embed_openai_1 = require("./embed-openai");
5
+ const embed_openrouter_1 = require("./embed-openrouter");
6
+ const embed_gemini_1 = require("./embed-gemini");
7
+ const utils_1 = require("./utils");
8
+ async function embedWithModel(input, options, keys) {
9
+ const { model } = options;
10
+ if ((0, utils_1.isOpenRouterEmbeddingModel)(model)) {
11
+ const orOptions = { model };
12
+ if (options.dimensions !== undefined)
13
+ orOptions.dimensions = options.dimensions;
14
+ if (options.encodingFormat)
15
+ orOptions.encodingFormat = options.encodingFormat;
16
+ if (options.openRouterProvider) {
17
+ orOptions.openRouterProvider = options.openRouterProvider;
18
+ }
19
+ if (options.openRouterAllowAllProviders !== undefined) {
20
+ orOptions.openRouterAllowAllProviders = options.openRouterAllowAllProviders;
21
+ }
22
+ return (0, embed_openrouter_1.embedOpenRouter)(input, orOptions, keys.openRouterApiKey);
23
+ }
24
+ if ((0, utils_1.isOpenAIEmbeddingModel)(model)) {
25
+ const oaiOptions = { model };
26
+ if (options.dimensions !== undefined)
27
+ oaiOptions.dimensions = options.dimensions;
28
+ if (options.encodingFormat)
29
+ oaiOptions.encodingFormat = options.encodingFormat;
30
+ return (0, embed_openai_1.embedOpenAI)(input, oaiOptions, keys.openAIApiKey);
31
+ }
32
+ if ((0, utils_1.isGeminiEmbeddingModel)(model)) {
33
+ const geminiOptions = { model };
34
+ if (options.dimensions !== undefined)
35
+ geminiOptions.dimensions = options.dimensions;
36
+ if (options.taskType)
37
+ geminiOptions.taskType = options.taskType;
38
+ return (0, embed_gemini_1.embedGemini)(input, geminiOptions, keys.googleGeminiToken);
39
+ }
40
+ throw new Error(`[@luanpoppe/ai] Modelo de embedding não suportado: ${model}`);
41
+ }
42
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/embeddings/route.ts"],"names":[],"mappings":";;AA0BA,wCAmCC;AArDD,iDAA6C;AAC7C,yDAAqD;AACrD,iDAA6C;AAC7C,mCAIiB;AAWV,KAAK,UAAU,cAAc,CAClC,KAAwB,EACxB,OAAqB,EACrB,IAAkB;IAElB,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAE1B,IAAI,IAAA,kCAA0B,EAAC,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,SAAS,GAA+B,EAAE,KAAK,EAAE,CAAC;QACxD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;YAAE,SAAS,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QAChF,IAAI,OAAO,CAAC,cAAc;YAAE,SAAS,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC9E,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC/B,SAAS,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;QAC5D,CAAC;QACD,IAAI,OAAO,CAAC,2BAA2B,KAAK,SAAS,EAAE,CAAC;YACtD,SAAS,CAAC,2BAA2B,GAAG,OAAO,CAAC,2BAA2B,CAAC;QAC9E,CAAC;QACD,OAAO,IAAA,kCAAe,EAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,IAAA,8BAAsB,EAAC,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,UAAU,GAA2B,EAAE,KAAK,EAAE,CAAC;QACrD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;YAAE,UAAU,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACjF,IAAI,OAAO,CAAC,cAAc;YAAE,UAAU,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC/E,OAAO,IAAA,0BAAW,EAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,IAAA,8BAAsB,EAAC,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,aAAa,GAA2B,EAAE,KAAK,EAAE,CAAC;QACxD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;YAAE,aAAa,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACpF,IAAI,OAAO,CAAC,QAAQ;YAAE,aAAa,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAChE,OAAO,IAAA,0BAAW,EAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,sDAAsD,KAAK,EAAE,CAAC,CAAC;AACjF,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { OpenRouterProviderPreferences } from "../@types/openrouter-provider";
2
+ import type { AIEmbeddingModelNames } from "../@types/embedding-model-names";
3
+ export type GeminiEmbeddingTaskType = "RETRIEVAL_DOCUMENT" | "RETRIEVAL_QUERY" | "SEMANTIC_SIMILARITY" | "CLASSIFICATION" | "CLUSTERING" | "QUESTION_ANSWERING" | "FACT_VERIFICATION" | "CODE_RETRIEVAL_QUERY";
4
+ export type EmbeddingUsage = {
5
+ prompt_tokens?: number;
6
+ total_tokens?: number;
7
+ };
8
+ export type EmbeddingResult = {
9
+ embeddings: number[][];
10
+ model: string;
11
+ usage?: EmbeddingUsage;
12
+ };
13
+ export type OpenAIEmbeddingOptions = {
14
+ model: AIEmbeddingModelNames;
15
+ dimensions?: number;
16
+ encodingFormat?: "float" | "base64";
17
+ };
18
+ export type OpenRouterEmbeddingOptions = {
19
+ model: AIEmbeddingModelNames;
20
+ dimensions?: number;
21
+ encodingFormat?: "float" | "base64";
22
+ openRouterProvider?: OpenRouterProviderPreferences;
23
+ openRouterAllowAllProviders?: boolean;
24
+ };
25
+ export type GeminiEmbeddingOptions = {
26
+ model: AIEmbeddingModelNames;
27
+ dimensions?: number;
28
+ taskType?: GeminiEmbeddingTaskType;
29
+ };
30
+ export type EmbedApiKeys = {
31
+ openAIApiKey?: string;
32
+ googleGeminiToken?: string;
33
+ openRouterApiKey?: string;
34
+ };
35
+ /** A API pública da Anthropic não oferece embeddings nativos (recomenda Voyage AI para RAG com Claude). */
36
+ export declare const ANTHROPIC_NO_NATIVE_EMBEDDINGS: "A API da Anthropic n\u00E3o suporta embeddings nativos. Use OpenAI, Gemini ou OpenRouter para vetorizar texto antes de AI.call com modelos anthropic.";
37
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/embeddings/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,MAAM,MAAM,uBAAuB,GAC/B,oBAAoB,GACpB,iBAAiB,GACjB,qBAAqB,GACrB,gBAAgB,GAChB,YAAY,GACZ,oBAAoB,GACpB,mBAAmB,GACnB,sBAAsB,CAAC;AAE3B,MAAM,MAAM,cAAc,GAAG;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,qBAAqB,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,qBAAqB,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACpC,kBAAkB,CAAC,EAAE,6BAA6B,CAAC;IACnD,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,qBAAqB,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,uBAAuB,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,2GAA2G;AAC3G,eAAO,MAAM,8BAA8B,EACzC,uJAA2J,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ANTHROPIC_NO_NATIVE_EMBEDDINGS = void 0;
4
+ /** A API pública da Anthropic não oferece embeddings nativos (recomenda Voyage AI para RAG com Claude). */
5
+ exports.ANTHROPIC_NO_NATIVE_EMBEDDINGS = "A API da Anthropic não suporta embeddings nativos. Use OpenAI, Gemini ou OpenRouter para vetorizar texto antes de AI.call com modelos anthropic.";
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/embeddings/types.ts"],"names":[],"mappings":";;;AAkDA,2GAA2G;AAC9F,QAAA,8BAA8B,GACzC,kJAA2J,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function normalizeInput(input: string | string[]): string[];
2
+ export declare function stripOpenRouterPrefix(model: string): string;
3
+ export declare function isOpenAIEmbeddingModel(model: string): boolean;
4
+ export declare function isGeminiEmbeddingModel(model: string): boolean;
5
+ export declare function isOpenRouterEmbeddingModel(model: string): boolean;
6
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/embeddings/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,CAEjE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI3D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEjE"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeInput = normalizeInput;
4
+ exports.stripOpenRouterPrefix = stripOpenRouterPrefix;
5
+ exports.isOpenAIEmbeddingModel = isOpenAIEmbeddingModel;
6
+ exports.isGeminiEmbeddingModel = isGeminiEmbeddingModel;
7
+ exports.isOpenRouterEmbeddingModel = isOpenRouterEmbeddingModel;
8
+ function normalizeInput(input) {
9
+ return Array.isArray(input) ? input : [input];
10
+ }
11
+ function stripOpenRouterPrefix(model) {
12
+ return model.startsWith("openrouter/")
13
+ ? model.slice("openrouter/".length)
14
+ : model;
15
+ }
16
+ function isOpenAIEmbeddingModel(model) {
17
+ return model.startsWith("text-embedding-");
18
+ }
19
+ function isGeminiEmbeddingModel(model) {
20
+ return model.startsWith("gemini-embedding-");
21
+ }
22
+ function isOpenRouterEmbeddingModel(model) {
23
+ return model.startsWith("openrouter/");
24
+ }
25
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/embeddings/utils.ts"],"names":[],"mappings":";;AAAA,wCAEC;AAED,sDAIC;AAED,wDAEC;AAED,wDAEC;AAED,gEAEC;AApBD,SAAgB,cAAc,CAAC,KAAwB;IACrD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,SAAgB,qBAAqB,CAAC,KAAa;IACjD,OAAO,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC;QACpC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC;QACnC,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC;AAED,SAAgB,sBAAsB,CAAC,KAAa;IAClD,OAAO,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,sBAAsB,CAAC,KAAa;IAClD,OAAO,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AAC/C,CAAC;AAED,SAAgB,0BAA0B,CAAC,KAAa;IACtD,OAAO,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AACzC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -4,19 +4,29 @@ import type { AICallParams, AICallReturn, AICallStructuredOutputParams, AICallSt
4
4
  export { AI };
5
5
  export type { AIAgent } from "./@types/agent";
6
6
  export type { AICallParams, AICallReturn, AICallStructuredOutputParams, AICallStructuredOutputReturn, } from "./@types/ai-call";
7
+ export type { AIModelNames } from "./@types/model-names";
7
8
  export { AIModels } from "./langchain/models";
8
- export type { LLMModelConfig, ReasoningEffort } from "./langchain/models";
9
+ export { DEFAULT_OLLAMA_BASE_URL, DEFAULT_LOCAL_API_KEY, } from "./langchain/models";
10
+ export type { LLMModelConfig, OllamaModelConfig, OpenAICompatibleModelConfig, ReasoningEffort, OpenRouterMaxPrice, OpenRouterProviderPreferences, OpenRouterProviderSort, } from "./langchain/models";
11
+ export { resolveOpenRouterProvider } from "./langchain/models";
9
12
  export { AIMessages } from "./langchain/messages";
10
13
  export { AITools } from "./langchain/tools";
11
14
  export { AIMemory } from "./langchain/memory";
12
15
  export type { MemoryConfig, BaseCheckpointSaver, MemoryCheckpointerConfig, SqliteCheckpointerConfig, PostgresCheckpointerConfig, RedisCheckpointerConfig, MongoDBCheckpointerConfig, GraphWithStateHistory, MessageRole, HistoryMessageItem, GetHistoryResult, } from "./langchain/memory";
16
+ export { AIAudio } from "./audio";
17
+ export type { WhisperModel, OpenAITranscriptionOptions, OpenAITranscriptionResponseFormat, OpenAITranscriptionDetailed, OpenRouterTranscriptionOptions, OpenRouterTranscriptionResult, OpenAISpeechOptions, OpenAISpeechModel, OpenRouterSpeechOptions, SpeechResult, TranscriptionWord, TranscriptionSegment, DiarizedSegment, GeminiTranscriptionOptions, } from "./audio";
18
+ export { ANTHROPIC_NO_NATIVE_AUDIO } from "./audio";
19
+ export { AIEmbeddings, ANTHROPIC_NO_NATIVE_EMBEDDINGS } from "./embeddings";
20
+ export type { AIEmbeddingModelNames, OpenAIEmbeddingModel, GeminiEmbeddingModel, OpenRouterEmbeddingModel, OpenRouterPrefixedEmbeddingModel, EmbeddingResult, EmbeddingUsage, OpenAIEmbeddingOptions, OpenRouterEmbeddingOptions, GeminiEmbeddingOptions, GeminiEmbeddingTaskType, EmbedApiKeys, EmbedOptions, } from "./embeddings";
21
+ /** @deprecated Use AIAudio instead */
13
22
  export { AIAudioTranscription } from "./langchain/audio-transcription";
14
23
  export { AudioUtils } from "./utils/audio-utils";
15
24
  export { ImageUtils } from "./utils/image-utils";
16
25
  export type { AudioBuffer, AudioMimeType } from "./@types/audio";
17
26
  export type { ImageBuffer, ImageMimeType } from "./@types/image";
18
27
  export type { AudioContentBlock, HumanMessageWithAudioOptions, ImageContentBlock, HumanMessageWithImageOptions, } from "./langchain/messages";
19
- export type { WhisperModel, WhisperTranscriptionOptions, } from "./langchain/audio-transcription";
28
+ /** @deprecated Use OpenAITranscriptionOptions from AIAudio */
29
+ export type { WhisperTranscriptionOptions } from "./langchain/audio-transcription";
20
30
  /** @deprecated Use AI instead. Will be removed in 2.0.0 */
21
31
  export { AI as Langchain };
22
32
  /** @deprecated Use AICallParams instead. Will be removed in 2.0.0 */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,EAAE,EAAE,CAAC;AACd,YAAY,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,YAAY,EACV,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,yBAAyB,EACzB,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACjE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACjE,YAAY,EACV,iBAAiB,EACjB,4BAA4B,EAC5B,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,YAAY,EACZ,2BAA2B,GAC5B,MAAM,iCAAiC,CAAC;AAGzC,2DAA2D;AAC3D,OAAO,EAAE,EAAE,IAAI,SAAS,EAAE,CAAC;AAC3B,qEAAqE;AACrE,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAC/C,qEAAqE;AACrE,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAC/C,qFAAqF;AACrF,MAAM,MAAM,mCAAmC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,IACnE,4BAA4B,CAAC,CAAC,CAAC,CAAC;AAClC,qFAAqF;AACrF,MAAM,MAAM,mCAAmC,CAAC,CAAC,IAC/C,4BAA4B,CAAC,CAAC,CAAC,CAAC;AAClC,iEAAiE;AACjE,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACjE,mEAAmE;AACnE,OAAO,EAAE,UAAU,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACvE,gEAAgE;AAChE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9D,6EAA6E;AAC7E,OAAO,EAAE,oBAAoB,IAAI,2BAA2B,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,17 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LangchainAudioTranscription = exports.LangchainTools = exports.LangchainMessages = exports.LangchainModels = exports.Langchain = exports.ImageUtils = exports.AudioUtils = exports.AIAudioTranscription = exports.AIMemory = exports.AITools = exports.AIMessages = exports.AIModels = exports.AI = void 0;
3
+ exports.LangchainAudioTranscription = exports.LangchainTools = exports.LangchainMessages = exports.LangchainModels = exports.Langchain = exports.ImageUtils = exports.AudioUtils = exports.AIAudioTranscription = exports.ANTHROPIC_NO_NATIVE_EMBEDDINGS = exports.AIEmbeddings = exports.ANTHROPIC_NO_NATIVE_AUDIO = exports.AIAudio = exports.AIMemory = exports.AITools = exports.AIMessages = exports.resolveOpenRouterProvider = exports.DEFAULT_LOCAL_API_KEY = exports.DEFAULT_OLLAMA_BASE_URL = exports.AIModels = exports.AI = void 0;
4
4
  const ai_1 = require("./ai");
5
5
  Object.defineProperty(exports, "AI", { enumerable: true, get: function () { return ai_1.AI; } });
6
6
  Object.defineProperty(exports, "Langchain", { enumerable: true, get: function () { return ai_1.AI; } });
7
7
  var models_1 = require("./langchain/models");
8
8
  Object.defineProperty(exports, "AIModels", { enumerable: true, get: function () { return models_1.AIModels; } });
9
+ var models_2 = require("./langchain/models");
10
+ Object.defineProperty(exports, "DEFAULT_OLLAMA_BASE_URL", { enumerable: true, get: function () { return models_2.DEFAULT_OLLAMA_BASE_URL; } });
11
+ Object.defineProperty(exports, "DEFAULT_LOCAL_API_KEY", { enumerable: true, get: function () { return models_2.DEFAULT_LOCAL_API_KEY; } });
12
+ var models_3 = require("./langchain/models");
13
+ Object.defineProperty(exports, "resolveOpenRouterProvider", { enumerable: true, get: function () { return models_3.resolveOpenRouterProvider; } });
9
14
  var messages_1 = require("./langchain/messages");
10
15
  Object.defineProperty(exports, "AIMessages", { enumerable: true, get: function () { return messages_1.AIMessages; } });
11
16
  var tools_1 = require("./langchain/tools");
12
17
  Object.defineProperty(exports, "AITools", { enumerable: true, get: function () { return tools_1.AITools; } });
13
18
  var memory_1 = require("./langchain/memory");
14
19
  Object.defineProperty(exports, "AIMemory", { enumerable: true, get: function () { return memory_1.AIMemory; } });
20
+ var audio_1 = require("./audio");
21
+ Object.defineProperty(exports, "AIAudio", { enumerable: true, get: function () { return audio_1.AIAudio; } });
22
+ var audio_2 = require("./audio");
23
+ Object.defineProperty(exports, "ANTHROPIC_NO_NATIVE_AUDIO", { enumerable: true, get: function () { return audio_2.ANTHROPIC_NO_NATIVE_AUDIO; } });
24
+ var embeddings_1 = require("./embeddings");
25
+ Object.defineProperty(exports, "AIEmbeddings", { enumerable: true, get: function () { return embeddings_1.AIEmbeddings; } });
26
+ Object.defineProperty(exports, "ANTHROPIC_NO_NATIVE_EMBEDDINGS", { enumerable: true, get: function () { return embeddings_1.ANTHROPIC_NO_NATIVE_EMBEDDINGS; } });
27
+ /** @deprecated Use AIAudio instead */
15
28
  var audio_transcription_1 = require("./langchain/audio-transcription");
16
29
  Object.defineProperty(exports, "AIAudioTranscription", { enumerable: true, get: function () { return audio_transcription_1.AIAudioTranscription; } });
17
30
  var audio_utils_1 = require("./utils/audio-utils");
@@ -19,8 +32,8 @@ Object.defineProperty(exports, "AudioUtils", { enumerable: true, get: function (
19
32
  var image_utils_1 = require("./utils/image-utils");
20
33
  Object.defineProperty(exports, "ImageUtils", { enumerable: true, get: function () { return image_utils_1.ImageUtils; } });
21
34
  /** @deprecated Use AIModels instead. Will be removed in 2.0.0 */
22
- var models_2 = require("./langchain/models");
23
- Object.defineProperty(exports, "LangchainModels", { enumerable: true, get: function () { return models_2.AIModels; } });
35
+ var models_4 = require("./langchain/models");
36
+ Object.defineProperty(exports, "LangchainModels", { enumerable: true, get: function () { return models_4.AIModels; } });
24
37
  /** @deprecated Use AIMessages instead. Will be removed in 2.0.0 */
25
38
  var messages_2 = require("./langchain/messages");
26
39
  Object.defineProperty(exports, "LangchainMessages", { enumerable: true, get: function () { return messages_2.AIMessages; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,6BAA0B;AAQjB,mFARA,OAAE,OAQA;AA6CI,0FArDN,OAAE,OAqDa;AApCxB,6CAA8C;AAArC,kGAAA,QAAQ,OAAA;AAEjB,iDAAkD;AAAzC,sGAAA,UAAU,OAAA;AACnB,2CAA4C;AAAnC,gGAAA,OAAO,OAAA;AAChB,6CAA8C;AAArC,kGAAA,QAAQ,OAAA;AAcjB,uEAAuE;AAA9D,2HAAA,oBAAoB,OAAA;AAC7B,mDAAiD;AAAxC,yGAAA,UAAU,OAAA;AACnB,mDAAiD;AAAxC,yGAAA,UAAU,OAAA;AA2BnB,iEAAiE;AACjE,6CAAiE;AAAxD,yGAAA,QAAQ,OAAmB;AACpC,mEAAmE;AACnE,iDAAuE;AAA9D,6GAAA,UAAU,OAAqB;AACxC,gEAAgE;AAChE,2CAA8D;AAArD,uGAAA,OAAO,OAAkB;AAClC,6EAA6E;AAC7E,uEAAsG;AAA7F,kIAAA,oBAAoB,OAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,6BAA0B;AAQjB,mFARA,OAAE,OAQA;AA4FI,0FApGN,OAAE,OAoGa;AAlFxB,6CAA8C;AAArC,kGAAA,QAAQ,OAAA;AACjB,6CAG4B;AAF1B,iHAAA,uBAAuB,OAAA;AACvB,+GAAA,qBAAqB,OAAA;AAWvB,6CAA+D;AAAtD,mHAAA,yBAAyB,OAAA;AAClC,iDAAkD;AAAzC,sGAAA,UAAU,OAAA;AACnB,2CAA4C;AAAnC,gGAAA,OAAO,OAAA;AAChB,6CAA8C;AAArC,kGAAA,QAAQ,OAAA;AAcjB,iCAAkC;AAAzB,gGAAA,OAAO,OAAA;AAiBhB,iCAAoD;AAA3C,kHAAA,yBAAyB,OAAA;AAClC,2CAA4E;AAAnE,0GAAA,YAAY,OAAA;AAAE,4HAAA,8BAA8B,OAAA;AAgBrD,sCAAsC;AACtC,uEAAuE;AAA9D,2HAAA,oBAAoB,OAAA;AAC7B,mDAAiD;AAAxC,yGAAA,UAAU,OAAA;AACnB,mDAAiD;AAAxC,yGAAA,UAAU,OAAA;AAyBnB,iEAAiE;AACjE,6CAAiE;AAAxD,yGAAA,QAAQ,OAAmB;AACpC,mEAAmE;AACnE,iDAAuE;AAA9D,6GAAA,UAAU,OAAqB;AACxC,gEAAgE;AAChE,2CAA8D;AAArD,uGAAA,OAAO,OAAkB;AAClC,6EAA6E;AAC7E,uEAAsG;AAA7F,kIAAA,oBAAoB,OAA+B"}
@@ -1,19 +1,14 @@
1
1
  import type { AudioBuffer, AudioMimeType } from "../@types/audio";
2
- /** Modelos disponíveis na API de transcrição OpenAI (Speech-to-Text) */
3
- export type WhisperModel = "whisper-1" | "gpt-4o-transcribe" | "gpt-4o-mini-transcribe" | "gpt-4o-mini-transcribe-2025-12-15" | "gpt-4o-transcribe-diarize";
4
- export type WhisperTranscriptionOptions = {
5
- /** Modelo de transcrição. Padrão: "whisper-1". gpt-4o-transcribe e gpt-4o-mini-transcribe têm maior qualidade. */
6
- model?: WhisperModel;
7
- languageIn2Digits?: string;
8
- prompt?: string;
9
- responseFormat?: "json" | "text" | "srt" | "verbose_json" | "vtt";
10
- temperature?: number;
11
- timestampGranularities?: ("word" | "segment")[];
12
- /** Formato do áudio: extensão ("mp3", "wav", "webm") ou MIME type ("audio/wav", "audio/webm") */
13
- format?: string | AudioMimeType;
14
- };
2
+ import type { OpenAITranscriptionOptions, WhisperModel } from "../audio/types";
3
+ export type { WhisperModel };
4
+ /** @deprecated Use OpenAITranscriptionOptions from AIAudio */
5
+ export type WhisperTranscriptionOptions = OpenAITranscriptionOptions;
6
+ /**
7
+ * @deprecated Use {@link AIAudio.transcribeWithWhisper} instead.
8
+ */
15
9
  export declare class AIAudioTranscription {
16
10
  static transcribeWithWhisper(audioBuffer: AudioBuffer, options?: WhisperTranscriptionOptions, openAIApiKey?: string): Promise<string>;
17
11
  static transcribeFileWithWhisper(filePath: string, options?: WhisperTranscriptionOptions, openAIApiKey?: string): Promise<string>;
18
12
  }
13
+ export type { AudioBuffer, AudioMimeType };
19
14
  //# sourceMappingURL=audio-transcription.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audio-transcription.d.ts","sourceRoot":"","sources":["../../src/langchain/audio-transcription.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGlE,wEAAwE;AACxE,MAAM,MAAM,YAAY,GACpB,WAAW,GACX,mBAAmB,GACnB,wBAAwB,GACxB,mCAAmC,GACnC,2BAA2B,CAAC;AAEhC,MAAM,MAAM,2BAA2B,GAAG;IACxC,kHAAkH;IAClH,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,cAAc,GAAG,KAAK,CAAC;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAChD,iGAAiG;IACjG,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;CACjC,CAAC;AAgBF,qBAAa,oBAAoB;WAClB,qBAAqB,CAChC,WAAW,EAAE,WAAW,EACxB,OAAO,GAAE,2BAAgC,EACzC,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC;WAwCL,yBAAyB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,2BAAgC,EACzC,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC;CAcnB"}
1
+ {"version":3,"file":"audio-transcription.d.ts","sourceRoot":"","sources":["../../src/langchain/audio-transcription.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAElE,OAAO,KAAK,EACV,0BAA0B,EAC1B,YAAY,EACb,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B,8DAA8D;AAC9D,MAAM,MAAM,2BAA2B,GAAG,0BAA0B,CAAC;AAErE;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,MAAM,CAAC,qBAAqB,CAC1B,WAAW,EAAE,WAAW,EACxB,OAAO,GAAE,2BAAgC,EACzC,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC;IAIlB,MAAM,CAAC,yBAAyB,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,2BAAgC,EACzC,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC;CAGnB;AAED,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC"}
@@ -1,100 +1,16 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
2
  Object.defineProperty(exports, "__esModule", { value: true });
39
3
  exports.AIAudioTranscription = void 0;
40
- const fs = __importStar(require("fs"));
41
- const path = __importStar(require("path"));
42
- const openai_1 = __importDefault(require("openai"));
43
- const openai_2 = require("openai");
44
- const audio_1 = require("../@types/audio");
45
- function getExtension(format) {
46
- if (!format)
47
- return "mp3";
48
- if (format.startsWith("audio/")) {
49
- return audio_1.MIME_TO_EXTENSION[format] ?? "mp3";
50
- }
51
- return format.replace(/^\./, "");
52
- }
53
- function toBuffer(audioBuffer) {
54
- if (audioBuffer instanceof Buffer)
55
- return audioBuffer;
56
- if (audioBuffer instanceof ArrayBuffer)
57
- return Buffer.from(audioBuffer);
58
- return Buffer.from(audioBuffer);
59
- }
4
+ const audio_1 = require("../audio");
5
+ /**
6
+ * @deprecated Use {@link AIAudio.transcribeWithWhisper} instead.
7
+ */
60
8
  class AIAudioTranscription {
61
- static async transcribeWithWhisper(audioBuffer, options = {}, openAIApiKey) {
62
- if (openAIApiKey) {
63
- process.env.OPENAI_API_KEY = openAIApiKey;
64
- }
65
- const buffer = toBuffer(audioBuffer);
66
- const extension = getExtension(options.format);
67
- const fileName = `whisper-${Date.now()}.${extension}`;
68
- const file = await (0, openai_2.toFile)(buffer, fileName);
69
- const openai = new openai_1.default();
70
- const transcriptionParams = {
71
- file,
72
- model: options.model ?? "whisper-1",
73
- response_format: options.responseFormat ?? "text",
74
- };
75
- if (options.languageIn2Digits) {
76
- transcriptionParams.language = options.languageIn2Digits;
77
- }
78
- if (options.prompt) {
79
- transcriptionParams.prompt = options.prompt;
80
- }
81
- if (options.temperature !== undefined) {
82
- transcriptionParams.temperature = options.temperature;
83
- }
84
- if (options.timestampGranularities) {
85
- transcriptionParams.timestamp_granularities =
86
- options.timestampGranularities;
87
- }
88
- const response = await openai.audio.transcriptions.create(transcriptionParams);
89
- return typeof response === "string" ? response : response.text;
9
+ static transcribeWithWhisper(audioBuffer, options = {}, openAIApiKey) {
10
+ return audio_1.AIAudio.transcribeWithWhisper(audioBuffer, options, openAIApiKey);
90
11
  }
91
- static async transcribeFileWithWhisper(filePath, options = {}, openAIApiKey) {
92
- if (!fs.existsSync(filePath)) {
93
- throw new Error(`Arquivo não encontrado: ${filePath}`);
94
- }
95
- const audioBuffer = fs.readFileSync(filePath);
96
- const format = options.format ?? (path.extname(filePath).replace(/^\./, "") || "mp3");
97
- return this.transcribeWithWhisper(audioBuffer, { ...options, format }, openAIApiKey);
12
+ static transcribeFileWithWhisper(filePath, options = {}, openAIApiKey) {
13
+ return audio_1.AIAudio.transcribeFileWithWhisper(filePath, options, openAIApiKey);
98
14
  }
99
15
  }
100
16
  exports.AIAudioTranscription = AIAudioTranscription;
@@ -1 +1 @@
1
- {"version":3,"file":"audio-transcription.js","sourceRoot":"","sources":["../../src/langchain/audio-transcription.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audio-transcription.js","sourceRoot":"","sources":["../../src/langchain/audio-transcription.ts"],"names":[],"mappings":";;;AACA,oCAAmC;AAWnC;;GAEG;AACH,MAAa,oBAAoB;IAC/B,MAAM,CAAC,qBAAqB,CAC1B,WAAwB,EACxB,UAAuC,EAAE,EACzC,YAAqB;QAErB,OAAO,eAAO,CAAC,qBAAqB,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,CAAC,yBAAyB,CAC9B,QAAgB,EAChB,UAAuC,EAAE,EACzC,YAAqB;QAErB,OAAO,eAAO,CAAC,yBAAyB,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAC5E,CAAC;CACF;AAhBD,oDAgBC"}
@@ -31,8 +31,11 @@ export type HumanMessageWithAudioOptions = {
31
31
  filename?: string;
32
32
  };
33
33
  text?: string;
34
- provider?: "openai" | "gemini" | "auto";
34
+ provider?: "openai" | "gemini" | "openrouter" | "auto";
35
35
  openAIApiKey?: string;
36
+ openRouterApiKey?: string;
37
+ /** Modelo OpenRouter STT (ex.: openai/whisper-1) quando provider é openrouter ou auto com OR */
38
+ openRouterTranscriptionModel?: string;
36
39
  };
37
40
  export declare class AIMessages {
38
41
  static system(message: string): SystemMessage;
@@ -40,7 +43,9 @@ export declare class AIMessages {
40
43
  static humanImage(options: HumanMessageWithImageOptions): HumanMessage;
41
44
  static humanAudio(options: HumanMessageWithAudioOptions): Promise<HumanMessage>;
42
45
  static ai(message: string): AIMessage;
46
+ private static resolveAudioProvider;
43
47
  private static createHumanMessageWithAudio;
44
48
  private static processAudioOpenAi;
49
+ private static processAudioOpenRouter;
45
50
  }
46
51
  //# sourceMappingURL=messages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/langchain/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGnE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGlE,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,CAAC;AAEpE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,QAAQ,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,KAAK,EAAE;QACL,MAAM,EAAE,WAAW,CAAC;QACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,QAAQ,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,KAAK,EAAE;QACL,MAAM,EAAE,WAAW,CAAC;QACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,qBAAa,UAAU;IACrB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa;IAI7C,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAI3C,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,4BAA4B,GAAG,YAAY;WA4BzD,UAAU,CACrB,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,YAAY,CAAC;IAcxB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;mBAIhB,2BAA2B;mBAkD3B,kBAAkB;CA0CxC"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/langchain/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGnE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGlE,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,CAAC;AAEpE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,QAAQ,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,KAAK,EAAE;QACL,MAAM,EAAE,WAAW,CAAC;QACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,QAAQ,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,KAAK,EAAE;QACL,MAAM,EAAE,WAAW,CAAC;QACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAC;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gGAAgG;IAChG,4BAA4B,CAAC,EAAE,MAAM,CAAC;CACvC,CAAC;AAEF,qBAAa,UAAU;IACrB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa;IAI7C,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAI3C,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,4BAA4B,GAAG,YAAY;WA4BzD,UAAU,CACrB,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,YAAY,CAAC;IA6BxB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;IAIrC,OAAO,CAAC,MAAM,CAAC,oBAAoB;mBAWd,2BAA2B;mBA8D3B,kBAAkB;mBA2ClB,sBAAsB;CA8B5C"}
@@ -4,7 +4,7 @@ exports.AIMessages = void 0;
4
4
  const langchain_1 = require("langchain");
5
5
  const audio_utils_1 = require("../utils/audio-utils");
6
6
  const image_utils_1 = require("../utils/image-utils");
7
- const audio_transcription_1 = require("./audio-transcription");
7
+ const audio_1 = require("../audio");
8
8
  class AIMessages {
9
9
  static system(message) {
10
10
  return new langchain_1.SystemMessage(message);
@@ -33,17 +33,30 @@ class AIMessages {
33
33
  });
34
34
  }
35
35
  static async humanAudio(options) {
36
- const { audio, text, provider = "auto", openAIApiKey } = options;
36
+ const { audio, text, provider = "auto", openAIApiKey, openRouterApiKey, openRouterTranscriptionModel, } = options;
37
37
  const { buffer, mimeType, filename } = audio;
38
- return this.createHumanMessageWithAudio(buffer, text, mimeType, filename, provider, openAIApiKey);
38
+ const resolvedProvider = this.resolveAudioProvider(provider, openAIApiKey, openRouterApiKey);
39
+ return this.createHumanMessageWithAudio(buffer, text, mimeType, filename, resolvedProvider, openAIApiKey, openRouterApiKey, openRouterTranscriptionModel);
39
40
  }
40
41
  static ai(message) {
41
42
  return new langchain_1.AIMessage(message);
42
43
  }
43
- static async createHumanMessageWithAudio(audioBuffer, text, mimeType, filename, provider = "auto", openAIApiKey) {
44
- // Para OpenAI, faz transcrição prévia automaticamente devido à limitação da API
45
- if (provider === "openai")
44
+ static resolveAudioProvider(provider, openAIApiKey, openRouterApiKey) {
45
+ if (provider !== "auto")
46
+ return provider;
47
+ if (openAIApiKey)
48
+ return "openai";
49
+ if (openRouterApiKey)
50
+ return "openrouter";
51
+ return "gemini";
52
+ }
53
+ static async createHumanMessageWithAudio(audioBuffer, text, mimeType, filename, provider = "gemini", openAIApiKey, openRouterApiKey, openRouterTranscriptionModel = "openai/whisper-1") {
54
+ if (provider === "openai") {
46
55
  return await this.processAudioOpenAi(audioBuffer, mimeType, text, openAIApiKey);
56
+ }
57
+ if (provider === "openrouter") {
58
+ return await this.processAudioOpenRouter(audioBuffer, mimeType, text, openRouterApiKey, openRouterTranscriptionModel);
59
+ }
47
60
  // Para Gemini e outros, usa multimodal direto (trabalho síncrono, mas retorna Promise para compatibilidade)
48
61
  const base64Data = audio_utils_1.AudioUtils.bufferToBase64(audioBuffer);
49
62
  const detectedMimeType = mimeType || audio_utils_1.AudioUtils.detectAudioMimeType(audioBuffer, filename);
@@ -80,7 +93,7 @@ class AIMessages {
80
93
  const transcriptionOptions = mimeType
81
94
  ? { format: mimeType }
82
95
  : { language: "pt" };
83
- const transcribedText = await audio_transcription_1.AIAudioTranscription.transcribeWithWhisper(audioBuffer, transcriptionOptions, openAIApiKey);
96
+ const transcribedText = await audio_1.AIAudio.transcribeWithWhisper(audioBuffer, transcriptionOptions, openAIApiKey);
84
97
  // Combina o texto original (se fornecido) com a transcrição
85
98
  const finalText = text
86
99
  ? `${text}\n\nÁudio transcrito: ${transcribedText}`
@@ -95,6 +108,21 @@ class AIMessages {
95
108
  "Certifique-se de que o arquivo de áudio é válido e está em um formato suportado (mp3, wav, etc.).");
96
109
  }
97
110
  }
111
+ static async processAudioOpenRouter(audioBuffer, mimeType, text, openRouterApiKey, openRouterTranscriptionModel = "openai/whisper-1") {
112
+ if (!openRouterApiKey) {
113
+ throw new Error("openRouterApiKey é necessária quando provider é 'openrouter'.");
114
+ }
115
+ const format = mimeType ?? audio_utils_1.AudioUtils.detectAudioMimeType(audioBuffer);
116
+ const { text: transcribedText } = await audio_1.AIAudio.transcribeOpenRouter(audioBuffer, {
117
+ model: openRouterTranscriptionModel,
118
+ format,
119
+ ...(text ? {} : { language: "pt" }),
120
+ }, openRouterApiKey);
121
+ const finalText = text
122
+ ? `${text}\n\nÁudio transcrito: ${transcribedText}`
123
+ : `Áudio transcrito: ${transcribedText}`;
124
+ return new langchain_1.HumanMessage(finalText);
125
+ }
98
126
  }
99
127
  exports.AIMessages = AIMessages;
100
128
  //# sourceMappingURL=messages.js.map