@llumiverse/common 0.23.0-dev.20251201 → 0.23.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 (90) hide show
  1. package/lib/cjs/capability/azure_foundry.js +160 -0
  2. package/lib/cjs/capability/azure_foundry.js.map +1 -0
  3. package/lib/cjs/capability/bedrock.js +158 -0
  4. package/lib/cjs/capability/bedrock.js.map +1 -0
  5. package/lib/cjs/capability/openai.js +82 -0
  6. package/lib/cjs/capability/openai.js.map +1 -0
  7. package/lib/cjs/capability/vertexai.js +80 -0
  8. package/lib/cjs/capability/vertexai.js.map +1 -0
  9. package/lib/cjs/capability.js +64 -0
  10. package/lib/cjs/capability.js.map +1 -0
  11. package/lib/cjs/index.js +25 -0
  12. package/lib/cjs/index.js.map +1 -0
  13. package/lib/cjs/options/azure_foundry.js +428 -0
  14. package/lib/cjs/options/azure_foundry.js.map +1 -0
  15. package/lib/cjs/options/bedrock.js +462 -0
  16. package/lib/cjs/options/bedrock.js.map +1 -0
  17. package/lib/cjs/options/fallback.js +35 -0
  18. package/lib/cjs/options/fallback.js.map +1 -0
  19. package/lib/cjs/options/groq.js +37 -0
  20. package/lib/cjs/options/groq.js.map +1 -0
  21. package/lib/cjs/options/openai.js +126 -0
  22. package/lib/cjs/options/openai.js.map +1 -0
  23. package/lib/cjs/options/vertexai.js +503 -0
  24. package/lib/cjs/options/vertexai.js.map +1 -0
  25. package/lib/cjs/options.js +30 -0
  26. package/lib/cjs/options.js.map +1 -0
  27. package/lib/cjs/package.json +3 -0
  28. package/lib/cjs/types.js +178 -0
  29. package/lib/cjs/types.js.map +1 -0
  30. package/lib/esm/capability/azure_foundry.js +157 -0
  31. package/lib/esm/capability/azure_foundry.js.map +1 -0
  32. package/lib/esm/capability/bedrock.js +155 -0
  33. package/lib/esm/capability/bedrock.js.map +1 -0
  34. package/lib/esm/capability/openai.js +79 -0
  35. package/lib/esm/capability/openai.js.map +1 -0
  36. package/lib/esm/capability/vertexai.js +77 -0
  37. package/lib/esm/capability/vertexai.js.map +1 -0
  38. package/lib/esm/capability.js +59 -0
  39. package/lib/esm/capability.js.map +1 -0
  40. package/lib/esm/index.js +9 -0
  41. package/lib/esm/index.js.map +1 -0
  42. package/lib/esm/options/azure_foundry.js +424 -0
  43. package/lib/esm/options/azure_foundry.js.map +1 -0
  44. package/lib/esm/options/bedrock.js +458 -0
  45. package/lib/esm/options/bedrock.js.map +1 -0
  46. package/lib/esm/options/fallback.js +32 -0
  47. package/lib/esm/options/fallback.js.map +1 -0
  48. package/lib/esm/options/groq.js +34 -0
  49. package/lib/esm/options/groq.js.map +1 -0
  50. package/lib/esm/options/openai.js +123 -0
  51. package/lib/esm/options/openai.js.map +1 -0
  52. package/lib/esm/options/vertexai.js +498 -0
  53. package/lib/esm/options/vertexai.js.map +1 -0
  54. package/lib/esm/options.js +27 -0
  55. package/lib/esm/options.js.map +1 -0
  56. package/lib/esm/types.js +175 -0
  57. package/lib/esm/types.js.map +1 -0
  58. package/lib/types/capability/azure_foundry.d.ts +7 -0
  59. package/lib/types/capability/azure_foundry.d.ts.map +1 -0
  60. package/lib/types/capability/bedrock.d.ts +7 -0
  61. package/lib/types/capability/bedrock.d.ts.map +1 -0
  62. package/lib/types/capability/openai.d.ts +11 -0
  63. package/lib/types/capability/openai.d.ts.map +1 -0
  64. package/lib/types/capability/vertexai.d.ts +11 -0
  65. package/lib/types/capability/vertexai.d.ts.map +1 -0
  66. package/lib/types/capability.d.ts +5 -0
  67. package/lib/types/capability.d.ts.map +1 -0
  68. package/lib/types/index.d.ts +9 -0
  69. package/lib/types/index.d.ts.map +1 -0
  70. package/lib/types/options/azure_foundry.d.ts +52 -0
  71. package/lib/types/options/azure_foundry.d.ts.map +1 -0
  72. package/lib/types/options/bedrock.d.ts +52 -0
  73. package/lib/types/options/bedrock.d.ts.map +1 -0
  74. package/lib/types/options/fallback.d.ts +13 -0
  75. package/lib/types/options/fallback.d.ts.map +1 -0
  76. package/lib/types/options/groq.d.ts +12 -0
  77. package/lib/types/options/groq.d.ts.map +1 -0
  78. package/lib/types/options/openai.d.ts +21 -0
  79. package/lib/types/options/openai.d.ts.map +1 -0
  80. package/lib/types/options/vertexai.d.ts +74 -0
  81. package/lib/types/options/vertexai.d.ts.map +1 -0
  82. package/lib/types/options.d.ts +3 -0
  83. package/lib/types/options.d.ts.map +1 -0
  84. package/lib/types/types.d.ts +408 -0
  85. package/lib/types/types.d.ts.map +1 -0
  86. package/package.json +1 -1
  87. package/src/capability/azure_foundry.ts +1 -0
  88. package/src/capability/bedrock.ts +98 -128
  89. package/src/capability/openai.ts +20 -62
  90. package/src/capability/vertexai.ts +15 -36
@@ -0,0 +1,79 @@
1
+ // Record of OpenAI model capabilities keyed by model ID (lowercased)
2
+ const RECORD_MODEL_CAPABILITIES = {
3
+ "chatgpt-4o-latest": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false }
4
+ };
5
+ // Populate RECORD_FAMILY_CAPABILITIES as a const record (lowest common denominator for each family)
6
+ const RECORD_FAMILY_CAPABILITIES = {
7
+ "gpt": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },
8
+ "gpt-3.5": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },
9
+ "gpt-4": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },
10
+ "gpt-4-turbo": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },
11
+ "gpt-4o": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },
12
+ "gpt-4.1": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },
13
+ "gpt-4.5": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },
14
+ "gpt-image": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },
15
+ "gpt-oss": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },
16
+ "o": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },
17
+ "o1-mini": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },
18
+ "o1-preview": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },
19
+ "omni-moderation": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },
20
+ "sora": { input: { text: true, image: true, video: true, audio: false, embed: false }, output: { text: false, image: false, video: true, audio: true, embed: false }, tool_support: false },
21
+ "text-embedding": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: false, image: false, video: false, audio: false, embed: true }, tool_support: false },
22
+ "text-moderation": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },
23
+ "whisper": { input: { text: false, image: false, video: false, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false }
24
+ };
25
+ // Fallback pattern lists for inferring modalities and tool support
26
+ const IMAGE_INPUT_MODELS = ["image"];
27
+ const VIDEO_INPUT_MODELS = ["video"];
28
+ const AUDIO_INPUT_MODELS = ["audio"];
29
+ const TEXT_INPUT_MODELS = ["text"];
30
+ const IMAGE_OUTPUT_MODELS = ["image"];
31
+ const VIDEO_OUTPUT_MODELS = ["video"];
32
+ const AUDIO_OUTPUT_MODELS = ["audio"];
33
+ const TEXT_OUTPUT_MODELS = ["text"];
34
+ const EMBEDDING_OUTPUT_MODELS = ["embed"];
35
+ const TOOL_SUPPORT_MODELS = ["tool", "gpt", "o1", "o3", "o4"];
36
+ function modelMatches(modelName, patterns) {
37
+ return patterns.some(pattern => modelName.includes(pattern));
38
+ }
39
+ function normalizeOpenAIModelName(modelName) {
40
+ return modelName.toLowerCase();
41
+ }
42
+ /**
43
+ * Get the full ModelCapabilities for an OpenAI model.
44
+ * Checks RECORD_MODEL_CAPABILITIES first, then falls back to pattern-based inference.
45
+ */
46
+ export function getModelCapabilitiesOpenAI(model) {
47
+ const normalized = normalizeOpenAIModelName(model);
48
+ const record = RECORD_MODEL_CAPABILITIES[normalized];
49
+ if (record)
50
+ return record;
51
+ let bestFamilyKey = undefined;
52
+ let bestFamilyLength = 0;
53
+ for (const key of Object.keys(RECORD_FAMILY_CAPABILITIES)) {
54
+ if (normalized.startsWith(key) && key.length > bestFamilyLength) {
55
+ bestFamilyKey = key;
56
+ bestFamilyLength = key.length;
57
+ }
58
+ }
59
+ if (bestFamilyKey) {
60
+ return RECORD_FAMILY_CAPABILITIES[bestFamilyKey];
61
+ }
62
+ const input = {
63
+ text: modelMatches(normalized, TEXT_INPUT_MODELS) || undefined,
64
+ image: modelMatches(normalized, IMAGE_INPUT_MODELS) || undefined,
65
+ video: modelMatches(normalized, VIDEO_INPUT_MODELS) || undefined,
66
+ audio: modelMatches(normalized, AUDIO_INPUT_MODELS) || undefined,
67
+ embed: false
68
+ };
69
+ const output = {
70
+ text: modelMatches(normalized, TEXT_OUTPUT_MODELS) || undefined,
71
+ image: modelMatches(normalized, IMAGE_OUTPUT_MODELS) || undefined,
72
+ video: modelMatches(normalized, VIDEO_OUTPUT_MODELS) || undefined,
73
+ audio: modelMatches(normalized, AUDIO_OUTPUT_MODELS) || undefined,
74
+ embed: modelMatches(normalized, EMBEDDING_OUTPUT_MODELS) || undefined
75
+ };
76
+ const tool_support = modelMatches(normalized, TOOL_SUPPORT_MODELS) || undefined;
77
+ return { input, output, tool_support };
78
+ }
79
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/capability/openai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ // Record of Vertex AI model capabilities keyed by model ID (last path segment, lowercased)
2
+ const RECORD_MODEL_CAPABILITIES = {
3
+ "gemini-2.0-flash-lite-001": { input: { text: true, image: true, video: true, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },
4
+ };
5
+ // Populate RECORD_FAMILY_CAPABILITIES as a const record (lowest common denominator for each family)
6
+ const RECORD_FAMILY_CAPABILITIES = {
7
+ "gemini": { input: { text: true, image: true, video: true, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },
8
+ "gemini-2.5-flash-image": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: true, video: false, audio: false, embed: false }, tool_support: false },
9
+ "gemini-3.0-pro-image": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: true, video: false, audio: false, embed: false }, tool_support: false },
10
+ "gemini-3.0-flash-image": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: true, video: false, audio: false, embed: false }, tool_support: false },
11
+ 'imagen': { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },
12
+ "imagen-3.0": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },
13
+ "imagen-3.0-capability": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },
14
+ "imagen-4.0": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },
15
+ "imagen-4.0-capability": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },
16
+ "claude": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },
17
+ "llama": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },
18
+ "llama-2": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },
19
+ "llama-3.2": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },
20
+ "llama-4": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },
21
+ };
22
+ // Fallback pattern lists for inferring modalities and tool support
23
+ const IMAGE_INPUT_MODELS = ["image"];
24
+ const VIDEO_INPUT_MODELS = ["video"];
25
+ const AUDIO_INPUT_MODELS = ["audio"];
26
+ const TEXT_INPUT_MODELS = ["text"];
27
+ const IMAGE_OUTPUT_MODELS = ["image"];
28
+ const VIDEO_OUTPUT_MODELS = ["video"];
29
+ const AUDIO_OUTPUT_MODELS = ["audio"];
30
+ const TEXT_OUTPUT_MODELS = ["text"];
31
+ const EMBEDDING_OUTPUT_MODELS = ["embed"];
32
+ const TOOL_SUPPORT_MODELS = ["tool", "sonnet", "opus", "gemini", "claude"];
33
+ function modelMatches(modelName, patterns) {
34
+ return patterns.some(pattern => modelName.includes(pattern));
35
+ }
36
+ function normalizeVertexAIModelName(modelName) {
37
+ const segments = modelName.toLowerCase().split("/");
38
+ return segments[segments.length - 1];
39
+ }
40
+ /**
41
+ * Get the full ModelCapabilities for a Vertex AI model.
42
+ * Checks RECORD_MODEL_CAPABILITIES first, then falls back to pattern-based inference.
43
+ */
44
+ export function getModelCapabilitiesVertexAI(model) {
45
+ const normalized = normalizeVertexAIModelName(model);
46
+ const record = RECORD_MODEL_CAPABILITIES[normalized];
47
+ if (record)
48
+ return record;
49
+ let bestFamilyKey = undefined;
50
+ let bestFamilyLength = 0;
51
+ for (const key of Object.keys(RECORD_FAMILY_CAPABILITIES)) {
52
+ if (normalized.startsWith(key) && key.length > bestFamilyLength) {
53
+ bestFamilyKey = key;
54
+ bestFamilyLength = key.length;
55
+ }
56
+ }
57
+ if (bestFamilyKey) {
58
+ return RECORD_FAMILY_CAPABILITIES[bestFamilyKey];
59
+ }
60
+ const input = {
61
+ text: modelMatches(normalized, TEXT_INPUT_MODELS) || undefined,
62
+ image: modelMatches(normalized, IMAGE_INPUT_MODELS) || undefined,
63
+ video: modelMatches(normalized, VIDEO_INPUT_MODELS) || undefined,
64
+ audio: modelMatches(normalized, AUDIO_INPUT_MODELS) || undefined,
65
+ embed: false
66
+ };
67
+ const output = {
68
+ text: modelMatches(normalized, TEXT_OUTPUT_MODELS) || undefined,
69
+ image: modelMatches(normalized, IMAGE_OUTPUT_MODELS) || undefined,
70
+ video: modelMatches(normalized, VIDEO_OUTPUT_MODELS) || undefined,
71
+ audio: modelMatches(normalized, AUDIO_OUTPUT_MODELS) || undefined,
72
+ embed: modelMatches(normalized, EMBEDDING_OUTPUT_MODELS) || undefined
73
+ };
74
+ const tool_support = modelMatches(normalized, TOOL_SUPPORT_MODELS) || undefined;
75
+ return { input, output, tool_support };
76
+ }
77
+ //# sourceMappingURL=vertexai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vertexai.js","sourceRoot":"","sources":["../../../src/capability/vertexai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import { getModelCapabilitiesAzureFoundry } from "./capability/azure_foundry.js";
2
+ import { getModelCapabilitiesBedrock } from "./capability/bedrock.js";
3
+ import { getModelCapabilitiesOpenAI } from "./capability/openai.js";
4
+ import { getModelCapabilitiesVertexAI } from "./capability/vertexai.js";
5
+ import { Providers } from "./types.js";
6
+ export function getModelCapabilities(model, provider) {
7
+ //Check for locations/<location>/ prefix and remove it
8
+ if (model.startsWith("locations/")) {
9
+ const parts = model.split("/");
10
+ if (parts.length >= 3) {
11
+ model = parts.slice(2).join("/");
12
+ }
13
+ }
14
+ const capabilities = _getModelCapabilities(model, provider);
15
+ // Globally disable audio and video for all models, as we don't support them yet
16
+ // We also do not support tool use while streaming
17
+ // TODO: Remove this when we add support.
18
+ capabilities.input.audio = false;
19
+ capabilities.output.audio = false;
20
+ capabilities.output.video = false;
21
+ capabilities.tool_support_streaming = false;
22
+ return capabilities;
23
+ }
24
+ function _getModelCapabilities(model, provider) {
25
+ switch (provider?.toLowerCase()) {
26
+ case Providers.vertexai:
27
+ return getModelCapabilitiesVertexAI(model);
28
+ case Providers.openai:
29
+ return getModelCapabilitiesOpenAI(model);
30
+ case Providers.bedrock:
31
+ return getModelCapabilitiesBedrock(model);
32
+ case Providers.azure_foundry:
33
+ // Azure Foundry uses OpenAI capabilities
34
+ return getModelCapabilitiesAzureFoundry(model);
35
+ default:
36
+ // Guess the provider based on the model name
37
+ if (model.startsWith("gpt")) {
38
+ return getModelCapabilitiesOpenAI(model);
39
+ }
40
+ else if (model.startsWith("publishers/")) {
41
+ return getModelCapabilitiesVertexAI(model);
42
+ }
43
+ else if (model.startsWith("arn:aws")) {
44
+ return getModelCapabilitiesBedrock(model);
45
+ }
46
+ // Fallback to a generic model with no capabilities
47
+ return { input: {}, output: {} };
48
+ }
49
+ }
50
+ export function supportsToolUse(model, provider, streaming = false) {
51
+ const capabilities = getModelCapabilities(model, provider);
52
+ return streaming ? !!capabilities.tool_support_streaming : !!capabilities.tool_support;
53
+ }
54
+ export function modelModalitiesToArray(modalities) {
55
+ return Object.entries(modalities)
56
+ .filter(([_, isSupported]) => isSupported)
57
+ .map(([modality]) => modality);
58
+ }
59
+ //# sourceMappingURL=capability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability.js","sourceRoot":"","sources":["../../src/capability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export * from "./types.js";
2
+ export * from "./capability.js";
3
+ export * from "./options.js";
4
+ export * from "./options/bedrock.js";
5
+ export * from "./options/fallback.js";
6
+ export * from "./options/groq.js";
7
+ export * from "./options/openai.js";
8
+ export * from "./options/vertexai.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAE7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC"}