@n8n/ai-utilities 0.30.1 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/cjs/index.d.ts +1 -0
  2. package/dist/cjs/index.js +4 -2
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/model-discovery/chat-model-errors.d.ts +2 -0
  5. package/dist/cjs/model-discovery/chat-model-errors.js +34 -0
  6. package/dist/cjs/model-discovery/chat-model-errors.js.map +1 -0
  7. package/dist/cjs/model-discovery/index.d.ts +5 -0
  8. package/dist/cjs/model-discovery/index.js +17 -1
  9. package/dist/cjs/model-discovery/index.js.map +1 -1
  10. package/dist/cjs/model-discovery/providers/alibaba.d.ts +2 -0
  11. package/dist/cjs/model-discovery/providers/alibaba.js +13 -0
  12. package/dist/cjs/model-discovery/providers/alibaba.js.map +1 -0
  13. package/dist/cjs/model-discovery/providers/minimax.d.ts +1 -0
  14. package/dist/cjs/model-discovery/providers/minimax.js +6 -0
  15. package/dist/cjs/model-discovery/providers/minimax.js.map +1 -0
  16. package/dist/cjs/model-discovery/providers/moonshotai.d.ts +1 -0
  17. package/dist/cjs/model-discovery/providers/moonshotai.js +6 -0
  18. package/dist/cjs/model-discovery/providers/moonshotai.js.map +1 -0
  19. package/dist/cjs/model-discovery/request.d.ts +3 -0
  20. package/dist/cjs/model-discovery/request.js +12 -0
  21. package/dist/cjs/model-discovery/request.js.map +1 -1
  22. package/dist/cjs/typecheck.tsbuildinfo +1 -1
  23. package/dist/cjs/utils/log-ai-event.js +3 -1
  24. package/dist/cjs/utils/log-ai-event.js.map +1 -1
  25. package/dist/cjs/utils/redact-secrets.d.ts +2 -0
  26. package/dist/cjs/utils/redact-secrets.js +99 -0
  27. package/dist/cjs/utils/redact-secrets.js.map +1 -0
  28. package/dist/esm/index.d.ts +1 -0
  29. package/dist/esm/index.js +4 -2
  30. package/dist/esm/index.js.map +1 -1
  31. package/dist/esm/model-discovery/chat-model-errors.d.ts +2 -0
  32. package/dist/esm/model-discovery/chat-model-errors.js +34 -0
  33. package/dist/esm/model-discovery/chat-model-errors.js.map +1 -0
  34. package/dist/esm/model-discovery/index.d.ts +5 -0
  35. package/dist/esm/model-discovery/index.js +17 -1
  36. package/dist/esm/model-discovery/index.js.map +1 -1
  37. package/dist/esm/model-discovery/providers/alibaba.d.ts +2 -0
  38. package/dist/esm/model-discovery/providers/alibaba.js +13 -0
  39. package/dist/esm/model-discovery/providers/alibaba.js.map +1 -0
  40. package/dist/esm/model-discovery/providers/minimax.d.ts +1 -0
  41. package/dist/esm/model-discovery/providers/minimax.js +6 -0
  42. package/dist/esm/model-discovery/providers/minimax.js.map +1 -0
  43. package/dist/esm/model-discovery/providers/moonshotai.d.ts +1 -0
  44. package/dist/esm/model-discovery/providers/moonshotai.js +6 -0
  45. package/dist/esm/model-discovery/providers/moonshotai.js.map +1 -0
  46. package/dist/esm/model-discovery/request.d.ts +3 -0
  47. package/dist/esm/model-discovery/request.js +12 -0
  48. package/dist/esm/model-discovery/request.js.map +1 -1
  49. package/dist/esm/typecheck.tsbuildinfo +1 -1
  50. package/dist/esm/utils/log-ai-event.js +3 -1
  51. package/dist/esm/utils/log-ai-event.js.map +1 -1
  52. package/dist/esm/utils/redact-secrets.d.ts +2 -0
  53. package/dist/esm/utils/redact-secrets.js +99 -0
  54. package/dist/esm/utils/redact-secrets.js.map +1 -0
  55. package/package.json +9 -9
@@ -1,6 +1,7 @@
1
1
  export { AI_NODE_SDK_VERSION } from './ai-node-sdk-version';
2
2
  export { logWrapper } from './utils/log-wrapper';
3
3
  export { logAiEvent } from './utils/log-ai-event';
4
+ export { redactSecrets } from './utils/redact-secrets';
4
5
  export { parseSSEStream } from './utils/sse';
5
6
  export { validateEmbedQueryInput, validateEmbedDocumentsInput, } from './utils/embeddings-input-validation';
6
7
  export { getMetadataFiltersValues, hasLongSequentialRepeat } from './utils/helpers';
package/dist/cjs/index.js CHANGED
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toLcMessage = exports.fromLcMessage = exports.getParametersJsonSchema = exports.processDocument = exports.processDocuments = exports.MemoryVectorStoreManager = exports.createVectorStoreNode = exports.extractFromAIParameters = exports.createZodSchemaFromArgs = exports.createToolFromNode = exports.getTemplateNoticeField = exports.getBatchingOptionFields = exports.metadataFilterField = exports.getConnectionHintNoticeField = exports.fetchFollowingRedirects = exports.searxngSearch = exports.braveSearch = exports.proxyFetch = exports.getNodeProxyAgent = exports.getProxyAgent = exports.makeN8nLlmFailedAttemptHandler = exports.getEncoding = exports.encodingForModel = exports.estimateTextSplitsByTokens = exports.estimateTokensByCharCount = exports.estimateTokensFromStringList = exports.parseStrReplacements = exports.findDivergenceContext = exports.formatTextWithLineNumbers = exports.BatchReplacementError = exports.FileNotFoundError = exports.FileExistsError = exports.InvalidPathError = exports.InvalidViewRangeError = exports.InvalidLineNumberError = exports.MultipleMatchesError = exports.NoMatchFoundError = exports.TextEditorDocument = exports.N8nLlmTracing = exports.N8nPdfLoader = exports.N8nJsonLoader = exports.N8nBinaryLoader = exports.hasLongSequentialRepeat = exports.getMetadataFiltersValues = exports.validateEmbedDocumentsInput = exports.validateEmbedQueryInput = exports.parseSSEStream = exports.logAiEvent = exports.logWrapper = exports.AI_NODE_SDK_VERSION = void 0;
4
- exports.supplyModel = exports.supplyMemory = exports.WindowedChatMemory = exports.BaseChatMemory = exports.BaseChatHistory = exports.BaseChatModel = exports.LangchainChatModelAdapter = exports.isToolsInstance = exports.isChatInstance = exports.isBaseChatMessageHistory = exports.isBaseChatMemory = exports.fromLcContent = exports.toLcContent = void 0;
3
+ exports.fromLcMessage = exports.getParametersJsonSchema = exports.processDocument = exports.processDocuments = exports.MemoryVectorStoreManager = exports.createVectorStoreNode = exports.extractFromAIParameters = exports.createZodSchemaFromArgs = exports.createToolFromNode = exports.getTemplateNoticeField = exports.getBatchingOptionFields = exports.metadataFilterField = exports.getConnectionHintNoticeField = exports.fetchFollowingRedirects = exports.searxngSearch = exports.braveSearch = exports.proxyFetch = exports.getNodeProxyAgent = exports.getProxyAgent = exports.makeN8nLlmFailedAttemptHandler = exports.getEncoding = exports.encodingForModel = exports.estimateTextSplitsByTokens = exports.estimateTokensByCharCount = exports.estimateTokensFromStringList = exports.parseStrReplacements = exports.findDivergenceContext = exports.formatTextWithLineNumbers = exports.BatchReplacementError = exports.FileNotFoundError = exports.FileExistsError = exports.InvalidPathError = exports.InvalidViewRangeError = exports.InvalidLineNumberError = exports.MultipleMatchesError = exports.NoMatchFoundError = exports.TextEditorDocument = exports.N8nLlmTracing = exports.N8nPdfLoader = exports.N8nJsonLoader = exports.N8nBinaryLoader = exports.hasLongSequentialRepeat = exports.getMetadataFiltersValues = exports.validateEmbedDocumentsInput = exports.validateEmbedQueryInput = exports.parseSSEStream = exports.redactSecrets = exports.logAiEvent = exports.logWrapper = exports.AI_NODE_SDK_VERSION = void 0;
4
+ exports.supplyModel = exports.supplyMemory = exports.WindowedChatMemory = exports.BaseChatMemory = exports.BaseChatHistory = exports.BaseChatModel = exports.LangchainChatModelAdapter = exports.isToolsInstance = exports.isChatInstance = exports.isBaseChatMessageHistory = exports.isBaseChatMemory = exports.fromLcContent = exports.toLcContent = exports.toLcMessage = void 0;
5
5
  var ai_node_sdk_version_1 = require("./ai-node-sdk-version");
6
6
  Object.defineProperty(exports, "AI_NODE_SDK_VERSION", { enumerable: true, get: function () { return ai_node_sdk_version_1.AI_NODE_SDK_VERSION; } });
7
7
  var log_wrapper_1 = require("./utils/log-wrapper");
8
8
  Object.defineProperty(exports, "logWrapper", { enumerable: true, get: function () { return log_wrapper_1.logWrapper; } });
9
9
  var log_ai_event_1 = require("./utils/log-ai-event");
10
10
  Object.defineProperty(exports, "logAiEvent", { enumerable: true, get: function () { return log_ai_event_1.logAiEvent; } });
11
+ var redact_secrets_1 = require("./utils/redact-secrets");
12
+ Object.defineProperty(exports, "redactSecrets", { enumerable: true, get: function () { return redact_secrets_1.redactSecrets; } });
11
13
  var sse_1 = require("./utils/sse");
12
14
  Object.defineProperty(exports, "parseSSEStream", { enumerable: true, get: function () { return sse_1.parseSSEStream; } });
13
15
  var embeddings_input_validation_1 = require("./utils/embeddings-input-validation");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AACA,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAG5B,mDAAiD;AAAxC,yGAAA,UAAU,OAAA;AACnB,qDAAkD;AAAzC,0GAAA,UAAU,OAAA;AACnB,mCAA6C;AAApC,qGAAA,cAAc,OAAA;AACvB,mFAG6C;AAF5C,sIAAA,uBAAuB,OAAA;AACvB,0IAAA,2BAA2B,OAAA;AAE5B,2CAAoF;AAA3E,mHAAA,wBAAwB,OAAA;AAAE,kHAAA,uBAAuB,OAAA;AAC1D,+DAA4D;AAAnD,oHAAA,eAAe,OAAA;AACxB,2DAAwD;AAA/C,gHAAA,aAAa,OAAA;AACtB,iEAA8D;AAArD,8GAAA,YAAY,OAAA;AACrB,2DAAwD;AAA/C,gHAAA,aAAa,OAAA;AACtB,qEAasC;AAZrC,0HAAA,kBAAkB,OAAA;AAClB,yHAAA,iBAAiB,OAAA;AACjB,4HAAA,oBAAoB,OAAA;AACpB,8HAAA,sBAAsB,OAAA;AACtB,6HAAA,qBAAqB,OAAA;AACrB,wHAAA,gBAAgB,OAAA;AAChB,uHAAA,eAAe,OAAA;AACf,yHAAA,iBAAiB,OAAA;AACjB,6HAAA,qBAAqB,OAAA;AACrB,iIAAA,yBAAyB,OAAA;AACzB,6HAAA,qBAAqB,OAAA;AACrB,4HAAA,oBAAoB,OAAA;AAgBrB,qEAI2C;AAH1C,+HAAA,4BAA4B,OAAA;AAC5B,4HAAA,yBAAyB,OAAA;AACzB,6HAAA,0BAA0B,OAAA;AAE3B,uDAA2E;AAAlE,4GAAA,gBAAgB,OAAA;AAAE,uGAAA,WAAW,OAAA;AACtC,wGAA2G;AAAlG,4IAAA,8BAA8B,OAAA;AACvC,6DAKkC;AAJjC,iHAAA,aAAa,OAAA;AACb,qHAAA,iBAAiB,OAAA;AACjB,8GAAA,UAAU,OAAA;AAGX,2CAAmF;AAA1E,yGAAA,WAAW,OAAA;AAAE,2GAAA,aAAa,OAAA;AAEnC,6DAGkC;AAFjC,2HAAA,uBAAuB,OAAA;AAGxB,uDAK+B;AAJ9B,6HAAA,4BAA4B,OAAA;AAC5B,oHAAA,mBAAmB,OAAA;AACnB,wHAAA,uBAAuB,OAAA;AACvB,uHAAA,sBAAsB,OAAA;AAEvB,mEAIqC;AAHpC,yHAAA,kBAAkB,OAAA;AAClB,8HAAA,uBAAuB,OAAA;AACvB,8HAAA,uBAAuB,OAAA;AAExB,0GAAyG;AAAhG,8HAAA,qBAAqB,OAAA;AAM9B,wGAAuG;AAA9F,oIAAA,wBAAwB,OAAA;AACjC,0EAG+C;AAF9C,oHAAA,gBAAgB,OAAA;AAChB,mHAAA,eAAe,OAAA;AAKhB,0CAA4D;AAAnD,+GAAA,uBAAuB,OAAA;AAChC,gDAA8F;AAArF,wGAAA,aAAa,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,wGAAA,aAAa,OAAA;AAG/D,mCAKkB;AAJjB,0GAAA,gBAAgB,OAAA;AAChB,kHAAA,wBAAwB,OAAA;AACxB,wGAAA,cAAc,OAAA;AACd,yGAAA,eAAe,OAAA;AAsBhB,wEAA4E;AAAnE,iIAAA,yBAAyB,OAAA;AAClC,0CAAkD;AAAzC,qGAAA,aAAa,OAAA;AAGtB,gEAA6D;AAApD,oHAAA,eAAe,OAAA;AACxB,8DAA2D;AAAlD,kHAAA,cAAc,OAAA;AAGvB,sEAAkG;AAAzF,0HAAA,kBAAkB,OAAA;AAG3B,yDAAkF;AAAzE,4GAAA,YAAY,OAAA;AACrB,uDAAiG;AAAxF,0GAAA,WAAW,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AACA,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAG5B,mDAAiD;AAAxC,yGAAA,UAAU,OAAA;AACnB,qDAAkD;AAAzC,0GAAA,UAAU,OAAA;AACnB,yDAAuD;AAA9C,+GAAA,aAAa,OAAA;AACtB,mCAA6C;AAApC,qGAAA,cAAc,OAAA;AACvB,mFAG6C;AAF5C,sIAAA,uBAAuB,OAAA;AACvB,0IAAA,2BAA2B,OAAA;AAE5B,2CAAoF;AAA3E,mHAAA,wBAAwB,OAAA;AAAE,kHAAA,uBAAuB,OAAA;AAC1D,+DAA4D;AAAnD,oHAAA,eAAe,OAAA;AACxB,2DAAwD;AAA/C,gHAAA,aAAa,OAAA;AACtB,iEAA8D;AAArD,8GAAA,YAAY,OAAA;AACrB,2DAAwD;AAA/C,gHAAA,aAAa,OAAA;AACtB,qEAasC;AAZrC,0HAAA,kBAAkB,OAAA;AAClB,yHAAA,iBAAiB,OAAA;AACjB,4HAAA,oBAAoB,OAAA;AACpB,8HAAA,sBAAsB,OAAA;AACtB,6HAAA,qBAAqB,OAAA;AACrB,wHAAA,gBAAgB,OAAA;AAChB,uHAAA,eAAe,OAAA;AACf,yHAAA,iBAAiB,OAAA;AACjB,6HAAA,qBAAqB,OAAA;AACrB,iIAAA,yBAAyB,OAAA;AACzB,6HAAA,qBAAqB,OAAA;AACrB,4HAAA,oBAAoB,OAAA;AAgBrB,qEAI2C;AAH1C,+HAAA,4BAA4B,OAAA;AAC5B,4HAAA,yBAAyB,OAAA;AACzB,6HAAA,0BAA0B,OAAA;AAE3B,uDAA2E;AAAlE,4GAAA,gBAAgB,OAAA;AAAE,uGAAA,WAAW,OAAA;AACtC,wGAA2G;AAAlG,4IAAA,8BAA8B,OAAA;AACvC,6DAKkC;AAJjC,iHAAA,aAAa,OAAA;AACb,qHAAA,iBAAiB,OAAA;AACjB,8GAAA,UAAU,OAAA;AAGX,2CAAmF;AAA1E,yGAAA,WAAW,OAAA;AAAE,2GAAA,aAAa,OAAA;AAEnC,6DAGkC;AAFjC,2HAAA,uBAAuB,OAAA;AAGxB,uDAK+B;AAJ9B,6HAAA,4BAA4B,OAAA;AAC5B,oHAAA,mBAAmB,OAAA;AACnB,wHAAA,uBAAuB,OAAA;AACvB,uHAAA,sBAAsB,OAAA;AAEvB,mEAIqC;AAHpC,yHAAA,kBAAkB,OAAA;AAClB,8HAAA,uBAAuB,OAAA;AACvB,8HAAA,uBAAuB,OAAA;AAExB,0GAAyG;AAAhG,8HAAA,qBAAqB,OAAA;AAM9B,wGAAuG;AAA9F,oIAAA,wBAAwB,OAAA;AACjC,0EAG+C;AAF9C,oHAAA,gBAAgB,OAAA;AAChB,mHAAA,eAAe,OAAA;AAKhB,0CAA4D;AAAnD,+GAAA,uBAAuB,OAAA;AAChC,gDAA8F;AAArF,wGAAA,aAAa,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,wGAAA,aAAa,OAAA;AAG/D,mCAKkB;AAJjB,0GAAA,gBAAgB,OAAA;AAChB,kHAAA,wBAAwB,OAAA;AACxB,wGAAA,cAAc,OAAA;AACd,yGAAA,eAAe,OAAA;AAsBhB,wEAA4E;AAAnE,iIAAA,yBAAyB,OAAA;AAClC,0CAAkD;AAAzC,qGAAA,aAAa,OAAA;AAGtB,gEAA6D;AAApD,oHAAA,eAAe,OAAA;AACxB,8DAA2D;AAAlD,kHAAA,cAAc,OAAA;AAGvB,sEAAkG;AAAzF,0HAAA,kBAAkB,OAAA;AAG3B,yDAAkF;AAAzE,4GAAA,YAAY,OAAA;AACrB,uDAAiG;AAAxF,0GAAA,WAAW,OAAA"}
@@ -0,0 +1,2 @@
1
+ export type ChatModelFailureKind = 'invalid_model' | 'unsupported_parameter' | 'capability_mismatch';
2
+ export declare function classifyChatModelFailure(errorMessage: string | undefined): ChatModelFailureKind | undefined;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.classifyChatModelFailure = classifyChatModelFailure;
4
+ const QUOTE = '[\'"\\x60]';
5
+ const MODEL_SUBJECT = '\\b(?:models?|deployment|engine)\\b' +
6
+ `(?:\\s*${QUOTE}?[\\w./:@-]+${QUOTE}?)?` +
7
+ '(?:\\s+(?:is|was|are|were|has been|had been))?' +
8
+ '[\\s,:;\'"\\x60-]*';
9
+ const MODEL_REJECTED = '(?:not found|does not exist|not available|no longer exists|invalid|unknown)';
10
+ const CHAT_MODEL_ERROR_PATTERNS = [
11
+ {
12
+ kind: 'unsupported_parameter',
13
+ pattern: /\b(?:unsupported_parameter|invalid_parameter)\b|(?:unsupported (?:parameter|value|option)|parameter [^\s]+ is not supported|does not support (?:temperature|top_p|max_tokens|max_completion_tokens|thinking)|(?:temperature|top_p|max_tokens|max_completion_tokens|thinking) (?:is not supported|cannot be set|is not allowed))/i,
14
+ },
15
+ {
16
+ kind: 'invalid_model',
17
+ pattern: new RegExp('\\b(?:model_not_found|not_found_error|invalid_model_id|invalid_model|unknown_model)\\b' +
18
+ `|${MODEL_SUBJECT}${MODEL_REJECTED}`, 'i'),
19
+ },
20
+ {
21
+ kind: 'capability_mismatch',
22
+ pattern: /\b(?:not a chat model|not supported for (?:generateContent|this operation)|does not support (?:tools|tool use|function calling|functions|vision|multimodal)|only supported (?:via|for) responses api)\b/i,
23
+ },
24
+ ];
25
+ function classifyChatModelFailure(errorMessage) {
26
+ if (!errorMessage)
27
+ return undefined;
28
+ for (const { kind, pattern } of CHAT_MODEL_ERROR_PATTERNS) {
29
+ if (pattern.test(errorMessage))
30
+ return kind;
31
+ }
32
+ return undefined;
33
+ }
34
+ //# sourceMappingURL=chat-model-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-model-errors.js","sourceRoot":"","sources":["../../../src/model-discovery/chat-model-errors.ts"],"names":[],"mappings":";;;AA4BA,MAAM,KAAK,GAAG,YAAY,CAAC;AAE3B,MAAM,aAAa,GAClB,qCAAqC;IAErC,UAAU,KAAK,eAAe,KAAK,KAAK;IACxC,gDAAgD;IAChD,oBAAoB,CAAC;AAEtB,MAAM,cAAc,GACnB,6EAA6E,CAAC;AAE/E,MAAM,yBAAyB,GAG1B;IACJ;QACC,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EACN,kUAAkU;KACnU;IACD;QACC,IAAI,EAAE,eAAe;QAErB,OAAO,EAAE,IAAI,MAAM,CAClB,wFAAwF;YACvF,IAAI,aAAa,GAAG,cAAc,EAAE,EACrC,GAAG,CACH;KACD;IACD;QACC,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EACN,0MAA0M;KAC3M;CACD,CAAC;AAEF,kCACC,YAAgC;IAEhC,IAAI,CAAC,YAAY;QAAE,OAAO,SAAS,CAAC;IACpC,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,yBAAyB,EAAE,CAAC;QAC3D,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;YAAE,OAAO,IAAI,CAAC;IAC7C,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC"}
@@ -2,15 +2,20 @@ import type { ListModelsFn, ListModelsOptions, ProviderModel } from './types';
2
2
  export declare const MODEL_DISCOVERY_PROVIDERS: Record<string, ListModelsFn>;
3
3
  export declare function isModelDiscoveryProvider(provider: string): boolean;
4
4
  export declare function listModelsForProvider(provider: string, options: ListModelsOptions): Promise<ProviderModel[]>;
5
+ export { classifyChatModelFailure, type ChatModelFailureKind, } from './chat-model-errors';
6
+ export { listAlibabaModels } from './providers/alibaba';
5
7
  export { listAnthropicModels } from './providers/anthropic';
6
8
  export { listCohereModels } from './providers/cohere';
7
9
  export { listDeepSeekModels } from './providers/deepseek';
8
10
  export { listGoogleModels } from './providers/google';
9
11
  export { listGroqModels } from './providers/groq';
12
+ export { listMiniMaxModels } from './providers/minimax';
10
13
  export { listMistralModels } from './providers/mistral';
14
+ export { listMoonshotAiModels } from './providers/moonshotai';
11
15
  export { listNvidiaModels } from './providers/nvidia';
12
16
  export { listOpenAiModels, shouldIncludeOpenAiModel, OFFICIAL_OPENAI_HOSTNAMES, isOpenAiCustomEndpoint, } from './providers/openai';
13
17
  export { listOpenRouterModels } from './providers/openrouter';
14
18
  export { listVercelModels } from './providers/vercel';
15
19
  export { listXaiModels } from './providers/xai';
20
+ export { ensureUrlPathSuffix } from './request';
16
21
  export type { ListModelsFn, ListModelsOptions, ProviderModel } from './types';
@@ -1,26 +1,32 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.listXaiModels = exports.listVercelModels = exports.listOpenRouterModels = exports.isOpenAiCustomEndpoint = exports.OFFICIAL_OPENAI_HOSTNAMES = exports.shouldIncludeOpenAiModel = exports.listOpenAiModels = exports.listNvidiaModels = exports.listMistralModels = exports.listGroqModels = exports.listGoogleModels = exports.listDeepSeekModels = exports.listCohereModels = exports.listAnthropicModels = exports.MODEL_DISCOVERY_PROVIDERS = void 0;
3
+ exports.ensureUrlPathSuffix = exports.listXaiModels = exports.listVercelModels = exports.listOpenRouterModels = exports.isOpenAiCustomEndpoint = exports.OFFICIAL_OPENAI_HOSTNAMES = exports.shouldIncludeOpenAiModel = exports.listOpenAiModels = exports.listNvidiaModels = exports.listMoonshotAiModels = exports.listMistralModels = exports.listMiniMaxModels = exports.listGroqModels = exports.listGoogleModels = exports.listDeepSeekModels = exports.listCohereModels = exports.listAnthropicModels = exports.listAlibabaModels = exports.classifyChatModelFailure = exports.MODEL_DISCOVERY_PROVIDERS = void 0;
4
4
  exports.isModelDiscoveryProvider = isModelDiscoveryProvider;
5
5
  exports.listModelsForProvider = listModelsForProvider;
6
+ const alibaba_1 = require("./providers/alibaba");
6
7
  const anthropic_1 = require("./providers/anthropic");
7
8
  const cohere_1 = require("./providers/cohere");
8
9
  const deepseek_1 = require("./providers/deepseek");
9
10
  const google_1 = require("./providers/google");
10
11
  const groq_1 = require("./providers/groq");
12
+ const minimax_1 = require("./providers/minimax");
11
13
  const mistral_1 = require("./providers/mistral");
14
+ const moonshotai_1 = require("./providers/moonshotai");
12
15
  const nvidia_1 = require("./providers/nvidia");
13
16
  const openai_1 = require("./providers/openai");
14
17
  const openrouter_1 = require("./providers/openrouter");
15
18
  const vercel_1 = require("./providers/vercel");
16
19
  const xai_1 = require("./providers/xai");
17
20
  exports.MODEL_DISCOVERY_PROVIDERS = {
21
+ alibaba: alibaba_1.listAlibabaModels,
18
22
  anthropic: anthropic_1.listAnthropicModels,
19
23
  cohere: cohere_1.listCohereModels,
20
24
  deepseek: deepseek_1.listDeepSeekModels,
21
25
  google: google_1.listGoogleModels,
22
26
  groq: groq_1.listGroqModels,
27
+ minimax: minimax_1.listMiniMaxModels,
23
28
  mistral: mistral_1.listMistralModels,
29
+ moonshotai: moonshotai_1.listMoonshotAiModels,
24
30
  nvidia: nvidia_1.listNvidiaModels,
25
31
  openai: openai_1.listOpenAiModels,
26
32
  openrouter: openrouter_1.listOpenRouterModels,
@@ -37,6 +43,10 @@ async function listModelsForProvider(provider, options) {
37
43
  }
38
44
  return await listModels(options);
39
45
  }
46
+ var chat_model_errors_1 = require("./chat-model-errors");
47
+ Object.defineProperty(exports, "classifyChatModelFailure", { enumerable: true, get: function () { return chat_model_errors_1.classifyChatModelFailure; } });
48
+ var alibaba_2 = require("./providers/alibaba");
49
+ Object.defineProperty(exports, "listAlibabaModels", { enumerable: true, get: function () { return alibaba_2.listAlibabaModels; } });
40
50
  var anthropic_2 = require("./providers/anthropic");
41
51
  Object.defineProperty(exports, "listAnthropicModels", { enumerable: true, get: function () { return anthropic_2.listAnthropicModels; } });
42
52
  var cohere_2 = require("./providers/cohere");
@@ -47,8 +57,12 @@ var google_2 = require("./providers/google");
47
57
  Object.defineProperty(exports, "listGoogleModels", { enumerable: true, get: function () { return google_2.listGoogleModels; } });
48
58
  var groq_2 = require("./providers/groq");
49
59
  Object.defineProperty(exports, "listGroqModels", { enumerable: true, get: function () { return groq_2.listGroqModels; } });
60
+ var minimax_2 = require("./providers/minimax");
61
+ Object.defineProperty(exports, "listMiniMaxModels", { enumerable: true, get: function () { return minimax_2.listMiniMaxModels; } });
50
62
  var mistral_2 = require("./providers/mistral");
51
63
  Object.defineProperty(exports, "listMistralModels", { enumerable: true, get: function () { return mistral_2.listMistralModels; } });
64
+ var moonshotai_2 = require("./providers/moonshotai");
65
+ Object.defineProperty(exports, "listMoonshotAiModels", { enumerable: true, get: function () { return moonshotai_2.listMoonshotAiModels; } });
52
66
  var nvidia_2 = require("./providers/nvidia");
53
67
  Object.defineProperty(exports, "listNvidiaModels", { enumerable: true, get: function () { return nvidia_2.listNvidiaModels; } });
54
68
  var openai_2 = require("./providers/openai");
@@ -62,4 +76,6 @@ var vercel_2 = require("./providers/vercel");
62
76
  Object.defineProperty(exports, "listVercelModels", { enumerable: true, get: function () { return vercel_2.listVercelModels; } });
63
77
  var xai_2 = require("./providers/xai");
64
78
  Object.defineProperty(exports, "listXaiModels", { enumerable: true, get: function () { return xai_2.listXaiModels; } });
79
+ var request_1 = require("./request");
80
+ Object.defineProperty(exports, "ensureUrlPathSuffix", { enumerable: true, get: function () { return request_1.ensureUrlPathSuffix; } });
65
81
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/model-discovery/index.ts"],"names":[],"mappings":";;;;;AAAA,qDAA4D;AAC5D,+CAAsD;AACtD,mDAA0D;AAC1D,+CAAsD;AACtD,2CAAkD;AAClD,iDAAwD;AACxD,+CAAsD;AACtD,+CAAsD;AACtD,uDAA8D;AAC9D,+CAAsD;AACtD,yCAAgD;AAcnC,QAAA,yBAAyB,GAAiC;IACtE,SAAS,EAAE,+BAAmB;IAC9B,MAAM,EAAE,yBAAgB;IACxB,QAAQ,EAAE,6BAAkB;IAC5B,MAAM,EAAE,yBAAgB;IACxB,IAAI,EAAE,qBAAc;IACpB,OAAO,EAAE,2BAAiB;IAC1B,MAAM,EAAE,yBAAgB;IACxB,MAAM,EAAE,yBAAgB;IACxB,UAAU,EAAE,iCAAoB;IAChC,MAAM,EAAE,yBAAgB;IACxB,GAAG,EAAE,mBAAa;CAClB,CAAC;AAEF,kCAAyC,QAAgB;IACxD,OAAO,QAAQ,IAAI,QAAA,yBAAyB,CAAC;AAC9C,CAAC;AAEM,KAAK,gCACX,QAAgB,EAChB,OAA0B;IAE1B,MAAM,UAAU,GAAG,QAAA,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,sCAAsC,QAAQ,GAAG,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,mDAA4D;AAAnD,gHAAA,mBAAmB,OAAA;AAC5B,6CAAsD;AAA7C,0GAAA,gBAAgB,OAAA;AACzB,iDAA0D;AAAjD,8GAAA,kBAAkB,OAAA;AAC3B,6CAAsD;AAA7C,0GAAA,gBAAgB,OAAA;AACzB,yCAAkD;AAAzC,sGAAA,cAAc,OAAA;AACvB,+CAAwD;AAA/C,4GAAA,iBAAiB,OAAA;AAC1B,6CAAsD;AAA7C,0GAAA,gBAAgB,OAAA;AACzB,6CAK4B;AAJ3B,0GAAA,gBAAgB,OAAA;AAChB,kHAAA,wBAAwB,OAAA;AACxB,mHAAA,yBAAyB,OAAA;AACzB,gHAAA,sBAAsB,OAAA;AAEvB,qDAA8D;AAArD,kHAAA,oBAAoB,OAAA;AAC7B,6CAAsD;AAA7C,0GAAA,gBAAgB,OAAA;AACzB,uCAAgD;AAAvC,oGAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/model-discovery/index.ts"],"names":[],"mappings":";;;;;AAAA,iDAAwD;AACxD,qDAA4D;AAC5D,+CAAsD;AACtD,mDAA0D;AAC1D,+CAAsD;AACtD,2CAAkD;AAClD,iDAAwD;AACxD,iDAAwD;AACxD,uDAA8D;AAC9D,+CAAsD;AACtD,+CAAsD;AACtD,uDAA8D;AAC9D,+CAAsD;AACtD,yCAAgD;AAcnC,QAAA,yBAAyB,GAAiC;IACtE,OAAO,EAAE,2BAAiB;IAC1B,SAAS,EAAE,+BAAmB;IAC9B,MAAM,EAAE,yBAAgB;IACxB,QAAQ,EAAE,6BAAkB;IAC5B,MAAM,EAAE,yBAAgB;IACxB,IAAI,EAAE,qBAAc;IACpB,OAAO,EAAE,2BAAiB;IAC1B,OAAO,EAAE,2BAAiB;IAC1B,UAAU,EAAE,iCAAoB;IAChC,MAAM,EAAE,yBAAgB;IACxB,MAAM,EAAE,yBAAgB;IACxB,UAAU,EAAE,iCAAoB;IAChC,MAAM,EAAE,yBAAgB;IACxB,GAAG,EAAE,mBAAa;CAClB,CAAC;AAEF,kCAAyC,QAAgB;IACxD,OAAO,QAAQ,IAAI,QAAA,yBAAyB,CAAC;AAC9C,CAAC;AAEM,KAAK,gCACX,QAAgB,EAChB,OAA0B;IAE1B,MAAM,UAAU,GAAG,QAAA,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,sCAAsC,QAAQ,GAAG,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,yDAG6B;AAF5B,6HAAA,wBAAwB,OAAA;AAGzB,+CAAwD;AAA/C,4GAAA,iBAAiB,OAAA;AAC1B,mDAA4D;AAAnD,gHAAA,mBAAmB,OAAA;AAC5B,6CAAsD;AAA7C,0GAAA,gBAAgB,OAAA;AACzB,iDAA0D;AAAjD,8GAAA,kBAAkB,OAAA;AAC3B,6CAAsD;AAA7C,0GAAA,gBAAgB,OAAA;AACzB,yCAAkD;AAAzC,sGAAA,cAAc,OAAA;AACvB,+CAAwD;AAA/C,4GAAA,iBAAiB,OAAA;AAC1B,+CAAwD;AAA/C,4GAAA,iBAAiB,OAAA;AAC1B,qDAA8D;AAArD,kHAAA,oBAAoB,OAAA;AAC7B,6CAAsD;AAA7C,0GAAA,gBAAgB,OAAA;AACzB,6CAK4B;AAJ3B,0GAAA,gBAAgB,OAAA;AAChB,kHAAA,wBAAwB,OAAA;AACxB,mHAAA,yBAAyB,OAAA;AACzB,gHAAA,sBAAsB,OAAA;AAEvB,qDAA8D;AAArD,kHAAA,oBAAoB,OAAA;AAC7B,6CAAsD;AAA7C,0GAAA,gBAAgB,OAAA;AACzB,uCAAgD;AAAvC,oGAAA,aAAa,OAAA;AACtB,qCAAgD;AAAvC,8GAAA,mBAAmB,OAAA"}
@@ -0,0 +1,2 @@
1
+ import type { ListModelsFn } from '../types';
2
+ export declare const listAlibabaModels: ListModelsFn;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listAlibabaModels = void 0;
4
+ const request_1 = require("../request");
5
+ const COMPATIBLE_MODE_SUFFIX = '/compatible-mode/v1';
6
+ const DEFAULT_BASE_URL = `https://dashscope-intl.aliyuncs.com${COMPATIBLE_MODE_SUFFIX}`;
7
+ const listAlibabaModels = async (options) => {
8
+ const resolvedBaseUrl = (0, request_1.ensureUrlPathSuffix)((0, request_1.baseUrl)(options, DEFAULT_BASE_URL), COMPATIBLE_MODE_SUFFIX);
9
+ const data = (await (0, request_1.getJson)(`${resolvedBaseUrl}/models`, (0, request_1.bearerHeaders)(options), options, 'alibaba'));
10
+ return (0, request_1.idsToModels)(data.data ?? []).sort(request_1.byName);
11
+ };
12
+ exports.listAlibabaModels = listAlibabaModels;
13
+ //# sourceMappingURL=alibaba.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alibaba.js","sourceRoot":"","sources":["../../../../src/model-discovery/providers/alibaba.ts"],"names":[],"mappings":";;;AAAA,wCAOoB;AAIpB,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AACrD,MAAM,gBAAgB,GAAG,sCAAsC,sBAAsB,EAAE,CAAC;AASjF,MAAM,iBAAiB,GAAiB,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,eAAe,GAAG,IAAA,6BAAmB,EAC1C,IAAA,iBAAO,EAAC,OAAO,EAAE,gBAAgB,CAAC,EAClC,sBAAsB,CACtB,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,MAAM,IAAA,iBAAO,EAC1B,GAAG,eAAe,SAAS,EAC3B,IAAA,uBAAa,EAAC,OAAO,CAAC,EACtB,OAAO,EACP,SAAS,CACT,CAAwB,CAAC;IAC1B,OAAO,IAAA,qBAAW,EAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAM,CAAC,CAAC;AAClD,CAAC,CAAC;AAZW,QAAA,iBAAiB,GAAjB,iBAAiB,CAY5B"}
@@ -0,0 +1 @@
1
+ export declare const listMiniMaxModels: import("..").ListModelsFn;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listMiniMaxModels = void 0;
4
+ const request_1 = require("../request");
5
+ exports.listMiniMaxModels = (0, request_1.makeBearerDataListing)('minimax', 'https://api.minimax.io/v1');
6
+ //# sourceMappingURL=minimax.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minimax.js","sourceRoot":"","sources":["../../../../src/model-discovery/providers/minimax.ts"],"names":[],"mappings":";;;AAAA,wCAAmD;AAOtC,QAAA,iBAAiB,GAAG,IAAA,+BAAqB,EAAC,SAAS,EAAE,2BAA2B,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const listMoonshotAiModels: import("..").ListModelsFn;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listMoonshotAiModels = void 0;
4
+ const request_1 = require("../request");
5
+ exports.listMoonshotAiModels = (0, request_1.makeBearerDataListing)('moonshotai', 'https://api.moonshot.ai/v1');
6
+ //# sourceMappingURL=moonshotai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moonshotai.js","sourceRoot":"","sources":["../../../../src/model-discovery/providers/moonshotai.ts"],"names":[],"mappings":";;;AAAA,wCAAmD;AAGtC,QAAA,oBAAoB,GAAG,IAAA,+BAAqB,EACxD,YAAY,EACZ,4BAA4B,CAC5B,CAAC"}
@@ -1,6 +1,9 @@
1
1
  import type { ListModelsFn, ListModelsOptions, ProviderModel } from './types';
2
2
  export declare function getJson(url: string, headers: Record<string, string>, options: ListModelsOptions, provider: string): Promise<unknown>;
3
3
  export declare function baseUrl(options: ListModelsOptions, fallback: string): string;
4
+ export declare function ensureUrlPathSuffix(baseURL: string, suffix: string, options?: {
5
+ stripSuffix?: string;
6
+ }): string;
4
7
  export declare function bearerHeaders(options: ListModelsOptions): Record<string, string>;
5
8
  export declare function byName(a: ProviderModel, b: ProviderModel): number;
6
9
  export interface IdItem {
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getJson = getJson;
4
4
  exports.baseUrl = baseUrl;
5
+ exports.ensureUrlPathSuffix = ensureUrlPathSuffix;
5
6
  exports.bearerHeaders = bearerHeaders;
6
7
  exports.byName = byName;
7
8
  exports.idsToModels = idsToModels;
@@ -25,6 +26,17 @@ async function getJson(url, headers, options, provider) {
25
26
  function baseUrl(options, fallback) {
26
27
  return (options.baseURL ?? fallback).replace(/\/+$/, '');
27
28
  }
29
+ function ensureUrlPathSuffix(baseURL, suffix, options) {
30
+ const url = new URL(baseURL);
31
+ const path = url.pathname.replace(/\/$/, '');
32
+ if (path.endsWith(suffix))
33
+ return baseURL;
34
+ const trimmedPath = options?.stripSuffix && path.endsWith(options.stripSuffix)
35
+ ? path.slice(0, -options.stripSuffix.length)
36
+ : path;
37
+ url.pathname = `${trimmedPath}${suffix}`;
38
+ return url.toString();
39
+ }
28
40
  function bearerHeaders(options) {
29
41
  return { Authorization: `Bearer ${options.apiKey}` };
30
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/model-discovery/request.ts"],"names":[],"mappings":";;;;;;;;AAAA,+CAAyC;AAKlC,KAAK,kBACX,GAAW,EACX,OAA+B,EAC/B,OAA0B,EAC1B,QAAgB;IAEhB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE;QACnC,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;KAC3C,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAClB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACxD,MAAM,IAAI,wBAAS,CAClB,0HAA0H,EAC1H,EAAE,YAAY,EAAE,KAAK,EAAE,CACvB,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,IAAI,KAAK,CACd,kBAAkB,QAAQ,mBAAmB,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACvG,CAAC;IACH,CAAC;IACD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC9B,CAAC;AAGD,iBAAwB,OAA0B,EAAE,QAAgB;IACnE,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,uBAA8B,OAA0B;IACvD,OAAO,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AACtD,CAAC;AAED,gBAAuB,CAAgB,EAAE,CAAgB;IACxD,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC;AAOD,qBAA4B,KAAe;IAC1C,OAAO,KAAK;SACV,MAAM,CAAC,CAAC,IAAI,EAA0B,EAAE,CAAC,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;SACvF,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACnD,CAAC;AAMD,+BAAsC,QAAgB,EAAE,cAAsB;IAC7E,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAC1B,GAAG,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,SAAS,EAC5C,aAAa,CAAC,OAAO,CAAC,EACtB,OAAO,EACP,QAAQ,CACR,CAAwB,CAAC;QAC1B,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/model-discovery/request.ts"],"names":[],"mappings":"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"}