@llumiverse/common 1.2.0 → 1.4.0-dev.20260629.090753Z

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 (184) hide show
  1. package/lib/capability/anthropic.d.ts +3 -0
  2. package/lib/capability/anthropic.d.ts.map +1 -0
  3. package/lib/capability/anthropic.js +92 -0
  4. package/lib/capability/anthropic.js.map +1 -0
  5. package/lib/{types/capability → capability}/azure_foundry.d.ts +1 -1
  6. package/lib/capability/azure_foundry.d.ts.map +1 -0
  7. package/lib/capability/azure_foundry.js +394 -0
  8. package/lib/capability/azure_foundry.js.map +1 -0
  9. package/lib/{types/capability → capability}/bedrock.d.ts +1 -1
  10. package/lib/capability/bedrock.d.ts.map +1 -0
  11. package/lib/capability/bedrock.js +300 -0
  12. package/lib/capability/bedrock.js.map +1 -0
  13. package/lib/{types/capability → capability}/openai.d.ts +1 -1
  14. package/lib/capability/openai.d.ts.map +1 -0
  15. package/lib/capability/openai.js +179 -0
  16. package/lib/capability/openai.js.map +1 -0
  17. package/lib/{types/capability → capability}/vertexai.d.ts +1 -1
  18. package/lib/capability/vertexai.d.ts.map +1 -0
  19. package/lib/capability/vertexai.js +137 -0
  20. package/lib/capability/vertexai.js.map +1 -0
  21. package/lib/{types/capability.d.ts → capability.d.ts} +1 -1
  22. package/lib/capability.d.ts.map +1 -0
  23. package/lib/{esm/capability.js → capability.js} +21 -15
  24. package/lib/capability.js.map +1 -0
  25. package/lib/index.d.ts +14 -0
  26. package/lib/index.d.ts.map +1 -0
  27. package/lib/index.js +14 -0
  28. package/lib/index.js.map +1 -0
  29. package/lib/options/anthropic.d.ts +16 -0
  30. package/lib/options/anthropic.d.ts.map +1 -0
  31. package/lib/options/anthropic.js +34 -0
  32. package/lib/options/anthropic.js.map +1 -0
  33. package/lib/{types/options → options}/azure_foundry.d.ts +14 -14
  34. package/lib/options/azure_foundry.d.ts.map +1 -0
  35. package/lib/{esm/options → options}/azure_foundry.js +126 -126
  36. package/lib/options/azure_foundry.js.map +1 -0
  37. package/lib/options/bedrock.d.ts +61 -0
  38. package/lib/options/bedrock.d.ts.map +1 -0
  39. package/lib/options/bedrock.js +489 -0
  40. package/lib/options/bedrock.js.map +1 -0
  41. package/lib/options/context-windows.d.ts.map +1 -0
  42. package/lib/options/context-windows.js.map +1 -0
  43. package/lib/options/embedding.d.ts +38 -0
  44. package/lib/options/embedding.d.ts.map +1 -0
  45. package/lib/options/embedding.js +77 -0
  46. package/lib/options/embedding.js.map +1 -0
  47. package/lib/{types/options → options}/fallback.d.ts +2 -2
  48. package/lib/options/fallback.d.ts.map +1 -0
  49. package/lib/options/fallback.js +65 -0
  50. package/lib/options/fallback.js.map +1 -0
  51. package/lib/{types/options → options}/groq.d.ts +2 -2
  52. package/lib/options/groq.d.ts.map +1 -0
  53. package/lib/options/groq.js +54 -0
  54. package/lib/options/groq.js.map +1 -0
  55. package/lib/options/openai.d.ts +40 -0
  56. package/lib/options/openai.d.ts.map +1 -0
  57. package/lib/options/openai.js +284 -0
  58. package/lib/options/openai.js.map +1 -0
  59. package/lib/{types/options → options}/shared-parsing.d.ts +1 -1
  60. package/lib/options/shared-parsing.d.ts.map +1 -0
  61. package/lib/{esm/options → options}/shared-parsing.js +14 -17
  62. package/lib/options/shared-parsing.js.map +1 -0
  63. package/lib/options/version-parsing.d.ts.map +1 -0
  64. package/lib/{esm/options → options}/version-parsing.js +15 -15
  65. package/lib/options/version-parsing.js.map +1 -0
  66. package/lib/{types/options → options}/vertexai.d.ts +18 -15
  67. package/lib/options/vertexai.d.ts.map +1 -0
  68. package/lib/options/vertexai.js +606 -0
  69. package/lib/options/vertexai.js.map +1 -0
  70. package/lib/{types/options.d.ts → options.d.ts} +1 -1
  71. package/lib/options.d.ts.map +1 -0
  72. package/lib/{esm/options.js → options.js} +10 -7
  73. package/lib/options.js.map +1 -0
  74. package/lib/{types/types.d.ts → types.d.ts} +161 -42
  75. package/lib/types.d.ts.map +1 -0
  76. package/lib/{esm/types.js → types.js} +28 -22
  77. package/lib/types.js.map +1 -0
  78. package/package.json +12 -34
  79. package/src/LlumiverseError.test.ts +18 -72
  80. package/src/capability/anthropic.ts +99 -0
  81. package/src/capability/azure_foundry.ts +303 -65
  82. package/src/capability/bedrock.ts +201 -56
  83. package/src/capability/openai.ts +135 -41
  84. package/src/capability/vertexai.ts +105 -35
  85. package/src/capability.ts +21 -16
  86. package/src/index.ts +13 -11
  87. package/src/options/anthropic.ts +59 -0
  88. package/src/options/azure_foundry.ts +157 -143
  89. package/src/options/bedrock.ts +266 -187
  90. package/src/options/context-windows.ts +2 -2
  91. package/src/options/embedding.ts +92 -0
  92. package/src/options/fallback.ts +50 -17
  93. package/src/options/groq.ts +48 -21
  94. package/src/options/openai.ts +231 -183
  95. package/src/options/shared-parsing.ts +16 -21
  96. package/src/options/version-parsing.ts +17 -17
  97. package/src/options/vertexai.ts +385 -288
  98. package/src/options.ts +11 -8
  99. package/src/types.ts +284 -160
  100. package/lib/cjs/capability/azure_foundry.js +0 -160
  101. package/lib/cjs/capability/azure_foundry.js.map +0 -1
  102. package/lib/cjs/capability/bedrock.js +0 -158
  103. package/lib/cjs/capability/bedrock.js.map +0 -1
  104. package/lib/cjs/capability/openai.js +0 -98
  105. package/lib/cjs/capability/openai.js.map +0 -1
  106. package/lib/cjs/capability/vertexai.js +0 -80
  107. package/lib/cjs/capability/vertexai.js.map +0 -1
  108. package/lib/cjs/capability.js +0 -109
  109. package/lib/cjs/capability.js.map +0 -1
  110. package/lib/cjs/index.js +0 -27
  111. package/lib/cjs/index.js.map +0 -1
  112. package/lib/cjs/options/azure_foundry.js +0 -423
  113. package/lib/cjs/options/azure_foundry.js.map +0 -1
  114. package/lib/cjs/options/bedrock.js +0 -427
  115. package/lib/cjs/options/bedrock.js.map +0 -1
  116. package/lib/cjs/options/context-windows.js +0 -138
  117. package/lib/cjs/options/context-windows.js.map +0 -1
  118. package/lib/cjs/options/fallback.js +0 -35
  119. package/lib/cjs/options/fallback.js.map +0 -1
  120. package/lib/cjs/options/groq.js +0 -37
  121. package/lib/cjs/options/groq.js.map +0 -1
  122. package/lib/cjs/options/openai.js +0 -246
  123. package/lib/cjs/options/openai.js.map +0 -1
  124. package/lib/cjs/options/shared-parsing.js +0 -144
  125. package/lib/cjs/options/shared-parsing.js.map +0 -1
  126. package/lib/cjs/options/version-parsing.js +0 -326
  127. package/lib/cjs/options/version-parsing.js.map +0 -1
  128. package/lib/cjs/options/vertexai.js +0 -525
  129. package/lib/cjs/options/vertexai.js.map +0 -1
  130. package/lib/cjs/options.js +0 -30
  131. package/lib/cjs/options.js.map +0 -1
  132. package/lib/cjs/package.json +0 -3
  133. package/lib/cjs/types.js +0 -299
  134. package/lib/cjs/types.js.map +0 -1
  135. package/lib/esm/capability/azure_foundry.js +0 -157
  136. package/lib/esm/capability/azure_foundry.js.map +0 -1
  137. package/lib/esm/capability/bedrock.js +0 -155
  138. package/lib/esm/capability/bedrock.js.map +0 -1
  139. package/lib/esm/capability/openai.js +0 -95
  140. package/lib/esm/capability/openai.js.map +0 -1
  141. package/lib/esm/capability/vertexai.js +0 -77
  142. package/lib/esm/capability/vertexai.js.map +0 -1
  143. package/lib/esm/capability.js.map +0 -1
  144. package/lib/esm/index.js +0 -11
  145. package/lib/esm/index.js.map +0 -1
  146. package/lib/esm/options/azure_foundry.js.map +0 -1
  147. package/lib/esm/options/bedrock.js +0 -423
  148. package/lib/esm/options/bedrock.js.map +0 -1
  149. package/lib/esm/options/context-windows.js.map +0 -1
  150. package/lib/esm/options/fallback.js +0 -32
  151. package/lib/esm/options/fallback.js.map +0 -1
  152. package/lib/esm/options/groq.js +0 -34
  153. package/lib/esm/options/groq.js.map +0 -1
  154. package/lib/esm/options/openai.js +0 -243
  155. package/lib/esm/options/openai.js.map +0 -1
  156. package/lib/esm/options/shared-parsing.js.map +0 -1
  157. package/lib/esm/options/version-parsing.js.map +0 -1
  158. package/lib/esm/options/vertexai.js +0 -519
  159. package/lib/esm/options/vertexai.js.map +0 -1
  160. package/lib/esm/options.js.map +0 -1
  161. package/lib/esm/types.js.map +0 -1
  162. package/lib/types/capability/azure_foundry.d.ts.map +0 -1
  163. package/lib/types/capability/bedrock.d.ts.map +0 -1
  164. package/lib/types/capability/openai.d.ts.map +0 -1
  165. package/lib/types/capability/vertexai.d.ts.map +0 -1
  166. package/lib/types/capability.d.ts.map +0 -1
  167. package/lib/types/index.d.ts +0 -11
  168. package/lib/types/index.d.ts.map +0 -1
  169. package/lib/types/options/azure_foundry.d.ts.map +0 -1
  170. package/lib/types/options/bedrock.d.ts +0 -54
  171. package/lib/types/options/bedrock.d.ts.map +0 -1
  172. package/lib/types/options/context-windows.d.ts.map +0 -1
  173. package/lib/types/options/fallback.d.ts.map +0 -1
  174. package/lib/types/options/groq.d.ts.map +0 -1
  175. package/lib/types/options/openai.d.ts +0 -37
  176. package/lib/types/options/openai.d.ts.map +0 -1
  177. package/lib/types/options/shared-parsing.d.ts.map +0 -1
  178. package/lib/types/options/version-parsing.d.ts.map +0 -1
  179. package/lib/types/options/vertexai.d.ts.map +0 -1
  180. package/lib/types/options.d.ts.map +0 -1
  181. package/lib/types/types.d.ts.map +0 -1
  182. /package/lib/{types/options → options}/context-windows.d.ts +0 -0
  183. /package/lib/{esm/options → options}/context-windows.js +0 -0
  184. /package/lib/{types/options → options}/version-parsing.d.ts +0 -0
@@ -1,4 +1,4 @@
1
- import { type ModelOptionInfoItem, type ModelOptions, type ModelOptionsInfo, OptionType } from "../types.js";
1
+ import { type ModelOptionInfoItem, type ModelOptions, type ModelOptionsInfo, OptionType } from '../types.js';
2
2
  import {
3
3
  buildClaudeCacheOptions,
4
4
  buildClaudeCacheTtlOptions,
@@ -6,38 +6,64 @@ import {
6
6
  buildClaudeIncludeThoughtsOption,
7
7
  buildClaudeThinkingBudgetOption,
8
8
  getClaudeMaxTokensLimit,
9
- } from "./shared-parsing.js";
10
- import { hasSamplingParameterRestriction } from "./version-parsing.js";
9
+ } from './shared-parsing.js';
10
+ import { hasSamplingParameterRestriction } from './version-parsing.js';
11
11
 
12
- // Union type of all Bedrock options
13
- export type BedrockOptions = NovaCanvasOptions | BaseConverseOptions | BedrockClaudeOptions | BedrockPalmyraOptions | BedrockGptOssOptions | TwelvelabsPegasusOptions;
12
+ /**
13
+ * Union type of all Bedrock options
14
+ *
15
+ * @discriminator _option_id
16
+ */
17
+ export type BedrockOptions =
18
+ | NovaCanvasOptions
19
+ | BedrockConverseOptions
20
+ | BedrockNovaOptions
21
+ | BedrockMistralOptions
22
+ | BedrockAI21Options
23
+ | BedrockCohereCommandOptions
24
+ | BedrockClaudeOptions
25
+ | BedrockPalmyraOptions
26
+ | BedrockGptOssOptions
27
+ | TwelvelabsPegasusOptions;
14
28
 
15
29
  export interface NovaCanvasOptions {
16
- _option_id: "bedrock-nova-canvas"
17
- taskType: "TEXT_IMAGE" | "TEXT_IMAGE_WITH_IMAGE_CONDITIONING" | "COLOR_GUIDED_GENERATION" | "IMAGE_VARIATION" | "INPAINTING" | "OUTPAINTING" | "BACKGROUND_REMOVAL";
30
+ _option_id: 'bedrock-nova-canvas';
31
+ taskType:
32
+ | 'TEXT_IMAGE'
33
+ | 'TEXT_IMAGE_WITH_IMAGE_CONDITIONING'
34
+ | 'COLOR_GUIDED_GENERATION'
35
+ | 'IMAGE_VARIATION'
36
+ | 'INPAINTING'
37
+ | 'OUTPAINTING'
38
+ | 'BACKGROUND_REMOVAL';
18
39
  width?: number;
19
40
  height?: number;
20
- quality?: "standard" | "premium";
41
+ quality?: 'standard' | 'premium';
21
42
  cfgScale?: number;
22
43
  seed?: number;
23
44
  numberOfImages?: number;
24
- controlMode?: "CANNY_EDGE" | "SEGMENTATION";
45
+ controlMode?: 'CANNY_EDGE' | 'SEGMENTATION';
25
46
  controlStrength?: number;
26
47
  colors?: string[];
27
48
  similarityStrength?: number;
28
- outPaintingMode?: "DEFAULT" | "PRECISE";
49
+ outPaintingMode?: 'DEFAULT' | 'PRECISE';
29
50
  }
30
51
 
31
- export interface BaseConverseOptions {
32
- _option_id: "bedrock-converse" | "bedrock-claude" | "bedrock-nova" | "bedrock-mistral" | "bedrock-ai21" | "bedrock-cohere-command" | "bedrock-palmyra" | "bedrock-gpt-oss";
52
+ export interface BaseConverseOptions<TOptionId extends string = string> {
53
+ _option_id: TOptionId;
33
54
  max_tokens?: number;
34
55
  temperature?: number;
35
56
  top_p?: number;
36
57
  stop_sequence?: string[];
37
58
  }
38
59
 
39
- export interface BedrockClaudeOptions extends BaseConverseOptions {
40
- _option_id: "bedrock-claude";
60
+ export type BedrockConverseOptions = BaseConverseOptions<'bedrock-converse'>;
61
+ export type BedrockNovaOptions = BaseConverseOptions<'bedrock-nova'>;
62
+ export type BedrockMistralOptions = BaseConverseOptions<'bedrock-mistral'>;
63
+ export type BedrockAI21Options = BaseConverseOptions<'bedrock-ai21'>;
64
+ export type BedrockCohereCommandOptions = BaseConverseOptions<'bedrock-cohere-command'>;
65
+
66
+ export interface BedrockClaudeOptions extends BaseConverseOptions<'bedrock-claude'> {
41
67
  top_k?: number;
42
68
  thinking_budget_tokens?: number;
43
69
  include_thoughts?: boolean;
@@ -46,100 +72,95 @@ export interface BedrockClaudeOptions extends BaseConverseOptions {
46
72
  cache_ttl?: '5m' | '1h';
47
73
  }
48
74
 
49
- export interface BedrockPalmyraOptions extends BaseConverseOptions {
50
- _option_id: "bedrock-palmyra";
75
+ export interface BedrockPalmyraOptions extends BaseConverseOptions<'bedrock-palmyra'> {
51
76
  min_tokens?: number;
52
77
  seed?: number;
53
78
  frequency_penalty?: number;
54
79
  presence_penalty?: number;
55
80
  }
56
81
 
57
- export interface BedrockGptOssOptions extends BaseConverseOptions {
58
- _option_id: "bedrock-gpt-oss";
59
- reasoning_effort?: "low" | "medium" | "high";
82
+ export interface BedrockGptOssOptions extends BaseConverseOptions<'bedrock-gpt-oss'> {
83
+ reasoning_effort?: 'low' | 'medium' | 'high';
60
84
  frequency_penalty?: number;
61
85
  presence_penalty?: number;
62
86
  }
63
87
 
64
88
  export interface TwelvelabsPegasusOptions {
65
- _option_id: "bedrock-twelvelabs-pegasus";
89
+ _option_id: 'bedrock-twelvelabs-pegasus';
66
90
  temperature?: number;
67
91
  max_tokens?: number;
68
92
  }
69
93
 
70
94
  export function getMaxTokensLimitBedrock(model: string): number | undefined {
71
95
  // Claude models — delegate to shared limit logic (128K for 3.7 and Opus 4.7+)
72
- if (model.includes("claude")) {
96
+ if (model.includes('claude')) {
73
97
  return getClaudeMaxTokensLimit(model);
74
98
  }
75
99
  // Amazon models
76
- else if (model.includes("amazon")) {
77
- if (model.includes("titan")) {
78
- if (model.includes("lite")) {
100
+ else if (model.includes('amazon')) {
101
+ if (model.includes('titan')) {
102
+ if (model.includes('lite')) {
79
103
  return 4096;
80
- } else if (model.includes("express")) {
104
+ } else if (model.includes('express')) {
81
105
  return 8192;
82
- } else if (model.includes("premier")) {
106
+ } else if (model.includes('premier')) {
83
107
  return 3072;
84
108
  }
85
-
86
- }
87
- else if (model.includes("nova")) {
109
+ } else if (model.includes('nova')) {
88
110
  return 10000;
89
111
  }
90
112
  }
91
113
  // Mistral models
92
- else if (model.includes("mistral")) {
93
- if (model.includes("8x7b")) {
114
+ else if (model.includes('mistral')) {
115
+ if (model.includes('8x7b')) {
94
116
  return 4096;
95
117
  }
96
- if (model.includes("pixtral-large")) {
118
+ if (model.includes('pixtral-large')) {
97
119
  return 4096;
98
120
  }
99
121
  return 8192;
100
122
  }
101
123
  // AI21 models
102
- else if (model.includes("ai21")) {
103
- if (model.includes("j2")) {
104
- if (model.includes("large") || model.includes("mid") || model.includes("ultra")) {
124
+ else if (model.includes('ai21')) {
125
+ if (model.includes('j2')) {
126
+ if (model.includes('large') || model.includes('mid') || model.includes('ultra')) {
105
127
  return 8191;
106
128
  }
107
129
  return 2048;
108
130
  }
109
- if (model.includes("jamba")) {
131
+ if (model.includes('jamba')) {
110
132
  return 4096;
111
133
  }
112
134
  }
113
135
  // Cohere models
114
- else if (model.includes("cohere.command")) {
115
- if (model.includes("command-a")) {
136
+ else if (model.includes('cohere.command')) {
137
+ if (model.includes('command-a')) {
116
138
  return 8000;
117
139
  }
118
140
  return 4096;
119
141
  }
120
142
  // Meta models
121
- else if (model.includes("llama")) {
122
- if (model.includes("3-70b") || model.includes("3-8b")) {
143
+ else if (model.includes('llama')) {
144
+ if (model.includes('3-70b') || model.includes('3-8b')) {
123
145
  return 2048;
124
146
  }
125
147
  return 8192;
126
148
  }
127
149
  //Writer models
128
- else if (model.includes("writer")) {
129
- if (model.includes("palmyra-x5")) {
150
+ else if (model.includes('writer')) {
151
+ if (model.includes('palmyra-x5')) {
130
152
  return 8192;
131
- }
132
- else if (model.includes("palmyra-x4")) {
153
+ } else if (model.includes('palmyra-x4')) {
133
154
  return 8192;
134
155
  }
135
156
  }
136
157
  // OpenAI gpt-oss models
137
- if (model.includes("gpt-oss")) {
158
+ if (model.includes('gpt-oss')) {
138
159
  return 8192;
139
160
  }
140
161
  // TwelveLabs models
141
- else if (model.includes("twelvelabs")) {
142
- if (model.includes("pegasus")) {
162
+ else if (model.includes('twelvelabs')) {
163
+ if (model.includes('pegasus')) {
143
164
  return 4096; // Max output tokens for Pegasus
144
165
  }
145
166
  // Marengo is an embedding model, doesn't generate text
@@ -151,85 +172,143 @@ export function getMaxTokensLimitBedrock(model: string): number | undefined {
151
172
  }
152
173
 
153
174
  export function getBedrockOptions(model: string, option?: ModelOptions): ModelOptionsInfo {
154
- if (model.includes("canvas")) {
175
+ if (model.includes('canvas')) {
155
176
  const taskTypeList: ModelOptionInfoItem = {
156
- name: "taskType",
177
+ name: 'taskType',
157
178
  type: OptionType.enum,
158
179
  enum: {
159
- "Text-To-Image": "TEXT_IMAGE",
160
- "Text-To-Image-with-Image-Conditioning": "TEXT_IMAGE_WITH_IMAGE_CONDITIONING",
161
- "Color-Guided-Generation": "COLOR_GUIDED_GENERATION",
162
- "Image-Variation": "IMAGE_VARIATION",
163
- "Inpainting": "INPAINTING",
164
- "Outpainting": "OUTPAINTING",
165
- "Background-Removal": "BACKGROUND_REMOVAL",
180
+ 'Text-To-Image': 'TEXT_IMAGE',
181
+ 'Text-To-Image-with-Image-Conditioning': 'TEXT_IMAGE_WITH_IMAGE_CONDITIONING',
182
+ 'Color-Guided-Generation': 'COLOR_GUIDED_GENERATION',
183
+ 'Image-Variation': 'IMAGE_VARIATION',
184
+ Inpainting: 'INPAINTING',
185
+ Outpainting: 'OUTPAINTING',
186
+ 'Background-Removal': 'BACKGROUND_REMOVAL',
166
187
  },
167
- default: "TEXT_IMAGE",
168
- description: "The type of task to perform",
188
+ default: 'TEXT_IMAGE',
189
+ description: 'The type of task to perform',
169
190
  refresh: true,
170
191
  };
171
192
 
172
193
  let otherOptions: ModelOptionInfoItem[] = [
173
- { name: "width", type: OptionType.numeric, min: 320, max: 4096, default: 512, step: 16, integer: true, description: "The width of the generated image" },
174
- { name: "height", type: OptionType.numeric, min: 320, max: 4096, default: 512, step: 16, integer: true, description: "The height of the generated image" },
175
194
  {
176
- name: "quality",
195
+ name: 'width',
196
+ type: OptionType.numeric,
197
+ min: 320,
198
+ max: 4096,
199
+ default: 512,
200
+ step: 16,
201
+ integer: true,
202
+ description: 'The width of the generated image',
203
+ },
204
+ {
205
+ name: 'height',
206
+ type: OptionType.numeric,
207
+ min: 320,
208
+ max: 4096,
209
+ default: 512,
210
+ step: 16,
211
+ integer: true,
212
+ description: 'The height of the generated image',
213
+ },
214
+ {
215
+ name: 'quality',
177
216
  type: OptionType.enum,
178
- enum: { "standard": "standard", "premium": "premium" },
179
- default: "standard",
180
- description: "The quality of the generated image"
217
+ enum: { standard: 'standard', premium: 'premium' },
218
+ default: 'standard',
219
+ description: 'The quality of the generated image',
220
+ },
221
+ {
222
+ name: 'cfgScale',
223
+ type: OptionType.numeric,
224
+ min: 1.1,
225
+ max: 10.0,
226
+ default: 6.5,
227
+ step: 0.1,
228
+ integer: false,
229
+ description: 'The scale of the generated image',
230
+ },
231
+ {
232
+ name: 'seed',
233
+ type: OptionType.numeric,
234
+ min: 0,
235
+ max: 858993459,
236
+ default: 12,
237
+ integer: true,
238
+ description: 'The seed of the generated image',
239
+ },
240
+ {
241
+ name: 'numberOfImages',
242
+ type: OptionType.numeric,
243
+ min: 1,
244
+ max: 5,
245
+ default: 1,
246
+ integer: true,
247
+ description: 'The number of images to generate',
181
248
  },
182
- { name: "cfgScale", type: OptionType.numeric, min: 1.1, max: 10.0, default: 6.5, step: 0.1, integer: false, description: "The scale of the generated image" },
183
- { name: "seed", type: OptionType.numeric, min: 0, max: 858993459, default: 12, integer: true, description: "The seed of the generated image" },
184
- { name: "numberOfImages", type: OptionType.numeric, min: 1, max: 5, default: 1, integer: true, description: "The number of images to generate" },
185
249
  ];
186
250
 
187
251
  let dependentOptions: ModelOptionInfoItem[] = [];
188
252
 
189
- switch ((option as NovaCanvasOptions)?.taskType ?? "TEXT_IMAGE") {
190
- case "TEXT_IMAGE_WITH_IMAGE_CONDITIONING":
253
+ switch ((option as NovaCanvasOptions)?.taskType ?? 'TEXT_IMAGE') {
254
+ case 'TEXT_IMAGE_WITH_IMAGE_CONDITIONING':
191
255
  dependentOptions.push(
192
256
  {
193
- name: "controlMode", type: OptionType.enum, enum: { "CANNY_EDGE": "CANNY_EDGE", "SEGMENTATION": "SEGMENTATION" },
194
- default: "CANNY_EDGE", description: "The control mode of the generated image"
257
+ name: 'controlMode',
258
+ type: OptionType.enum,
259
+ enum: { CANNY_EDGE: 'CANNY_EDGE', SEGMENTATION: 'SEGMENTATION' },
260
+ default: 'CANNY_EDGE',
261
+ description: 'The control mode of the generated image',
262
+ },
263
+ {
264
+ name: 'controlStrength',
265
+ type: OptionType.numeric,
266
+ min: 0,
267
+ max: 1,
268
+ default: 0.7,
269
+ description: 'The control strength of the generated image',
195
270
  },
196
- { name: "controlStrength", type: OptionType.numeric, min: 0, max: 1, default: 0.7, description: "The control strength of the generated image" },
197
271
  );
198
272
  break;
199
- case "COLOR_GUIDED_GENERATION":
200
- dependentOptions.push(
201
- { name: "colors", type: OptionType.string_list, value: [], description: "Hexadecimal color values to guide generation" },
202
- )
273
+ case 'COLOR_GUIDED_GENERATION':
274
+ dependentOptions.push({
275
+ name: 'colors',
276
+ type: OptionType.string_list,
277
+ value: [],
278
+ description: 'Hexadecimal color values to guide generation',
279
+ });
203
280
  break;
204
- case "IMAGE_VARIATION":
205
- dependentOptions.push(
206
- { name: "similarityStrength", type: OptionType.numeric, min: 0.2, max: 1, default: 0.7, description: "The similarity strength of the generated image" },
207
- )
281
+ case 'IMAGE_VARIATION':
282
+ dependentOptions.push({
283
+ name: 'similarityStrength',
284
+ type: OptionType.numeric,
285
+ min: 0.2,
286
+ max: 1,
287
+ default: 0.7,
288
+ description: 'The similarity strength of the generated image',
289
+ });
208
290
  break;
209
- case "INPAINTING":
291
+ case 'INPAINTING':
210
292
  //No changes
211
293
  break;
212
- case "OUTPAINTING":
213
- dependentOptions.push(
214
- {
215
- name: "outPaintingMode", type: OptionType.enum, enum: { "DEFAULT": "DEFAULT", "PRECISE": "PRECISE" },
216
- default: "default", description: "The outpainting mode of the generated image"
217
- },
218
- )
294
+ case 'OUTPAINTING':
295
+ dependentOptions.push({
296
+ name: 'outPaintingMode',
297
+ type: OptionType.enum,
298
+ enum: { DEFAULT: 'DEFAULT', PRECISE: 'PRECISE' },
299
+ default: 'default',
300
+ description: 'The outpainting mode of the generated image',
301
+ });
219
302
  break;
220
- case "BACKGROUND_REMOVAL":
303
+ case 'BACKGROUND_REMOVAL':
221
304
  dependentOptions = [];
222
305
  otherOptions = [];
223
306
  break;
224
307
  }
225
308
 
226
309
  return {
227
- _option_id: "bedrock-nova-canvas",
228
- options: [
229
- taskTypeList,
230
- ...otherOptions,
231
- ...dependentOptions,
232
- ]
310
+ _option_id: 'bedrock-nova-canvas',
311
+ options: [taskTypeList, ...otherOptions, ...dependentOptions],
233
312
  };
234
313
  } else {
235
314
  const max_tokens_limit = getMaxTokensLimitBedrock(model);
@@ -239,57 +318,59 @@ export function getBedrockOptions(model: string, option?: ModelOptions): ModelOp
239
318
  const hasSamplingRestriction = hasSamplingParameterRestriction(model);
240
319
  const baseConverseOptions: ModelOptionInfoItem[] = [
241
320
  {
242
- name: "max_tokens",
321
+ name: 'max_tokens',
243
322
  type: OptionType.numeric,
244
323
  min: 1,
245
324
  max: max_tokens_limit,
246
325
  integer: true,
247
326
  step: 200,
248
- description: "The maximum number of tokens to generate",
327
+ description: 'The maximum number of tokens to generate',
249
328
  },
250
329
  ];
251
330
 
252
331
  // Opus 4.7+ models don't support temperature, top_p
253
332
  if (!hasSamplingRestriction) {
254
333
  baseConverseOptions.push({
255
- name: "temperature",
334
+ name: 'temperature',
256
335
  type: OptionType.numeric,
257
336
  min: 0.0,
258
337
  default: 0.7,
259
338
  step: 0.1,
260
- description: "A higher temperature biases toward less likely tokens, making the model more creative"
339
+ description: 'A higher temperature biases toward less likely tokens, making the model more creative',
261
340
  });
262
341
  baseConverseOptions.push({
263
- name: "top_p",
342
+ name: 'top_p',
264
343
  type: OptionType.numeric,
265
344
  min: 0,
266
345
  max: 1,
267
346
  step: 0.1,
268
- description: "Limits token sampling to the cumulative probability of the top p tokens"
347
+ description: 'Limits token sampling to the cumulative probability of the top p tokens',
269
348
  });
270
349
  }
271
350
 
272
351
  baseConverseOptions.push({
273
- name: "stop_sequence",
352
+ name: 'stop_sequence',
274
353
  type: OptionType.string_list,
275
354
  value: [],
276
- description: "The generation will halt if one of the stop sequences is output"
355
+ description: 'The generation will halt if one of the stop sequences is output',
277
356
  });
278
357
 
279
- if (model.includes("claude")) {
358
+ if (model.includes('claude')) {
280
359
  // Opus 4.7+ models don't support top_k
281
- const claudeConverseOptions: ModelOptionInfoItem[] = hasSamplingRestriction ? [] : [
282
- {
283
- name: "top_k",
284
- type: OptionType.numeric,
285
- min: 1,
286
- integer: true,
287
- step: 1,
288
- description: "Limits token sampling to the top k tokens"
289
- },
290
- ];
360
+ const claudeConverseOptions: ModelOptionInfoItem[] = hasSamplingRestriction
361
+ ? []
362
+ : [
363
+ {
364
+ name: 'top_k',
365
+ type: OptionType.numeric,
366
+ min: 1,
367
+ integer: true,
368
+ step: 1,
369
+ description: 'Limits token sampling to the top k tokens',
370
+ },
371
+ ];
291
372
  return {
292
- _option_id: "bedrock-claude",
373
+ _option_id: 'bedrock-claude',
293
374
  options: [
294
375
  ...baseConverseOptions,
295
376
  ...claudeConverseOptions,
@@ -300,115 +381,111 @@ export function getBedrockOptions(model: string, option?: ModelOptions): ModelOp
300
381
  ...buildClaudeCacheTtlOptions((option as BedrockClaudeOptions)?.cache_enabled),
301
382
  ],
302
383
  };
303
- }
304
- else if (model.includes("amazon")) {
384
+ } else if (model.includes('amazon')) {
305
385
  //Titan models also exists but does not support any additional options
306
- if (model.includes("nova")) {
386
+ if (model.includes('nova')) {
307
387
  const novaConverseOptions: ModelOptionInfoItem[] = [
308
388
  {
309
- name: "top_k",
389
+ name: 'top_k',
310
390
  type: OptionType.numeric,
311
391
  min: 1,
312
392
  integer: true,
313
393
  step: 1,
314
- description: "Limits token sampling to the top k tokens"
394
+ description: 'Limits token sampling to the top k tokens',
315
395
  },
316
396
  ];
317
397
  return {
318
- _option_id: "bedrock-nova",
319
- options: [...baseConverseOptions, ...novaConverseOptions]
320
- }
398
+ _option_id: 'bedrock-nova',
399
+ options: [...baseConverseOptions, ...novaConverseOptions],
400
+ };
321
401
  }
322
- }
323
- else if (model.includes("mistral")) {
402
+ } else if (model.includes('mistral')) {
324
403
  //7b and 8x7b instruct
325
- if (model.includes("7b")) {
404
+ if (model.includes('7b')) {
326
405
  const mistralConverseOptions: ModelOptionInfoItem[] = [
327
406
  {
328
- name: "top_k",
407
+ name: 'top_k',
329
408
  type: OptionType.numeric,
330
409
  min: 1,
331
410
  integer: true,
332
411
  step: 1,
333
- description: "Limits token sampling to the top k tokens"
412
+ description: 'Limits token sampling to the top k tokens',
334
413
  },
335
414
  ];
336
415
  return {
337
- _option_id: "bedrock-mistral",
338
- options: [...baseConverseOptions, ...mistralConverseOptions]
339
- }
416
+ _option_id: 'bedrock-mistral',
417
+ options: [...baseConverseOptions, ...mistralConverseOptions],
418
+ };
340
419
  }
341
420
  //Other models such as Mistral Small, Large and Large 2
342
421
  //Support no additional options
343
- }
344
- else if (model.includes("ai21")) {
422
+ } else if (model.includes('ai21')) {
345
423
  const ai21ConverseOptions: ModelOptionInfoItem[] = [
346
424
  {
347
- name: "presence_penalty",
425
+ name: 'presence_penalty',
348
426
  type: OptionType.numeric,
349
427
  min: -2,
350
428
  max: 2,
351
429
  default: 0,
352
430
  step: 0.1,
353
- description: "A higher presence penalty encourages the model to talk about new topics"
431
+ description: 'A higher presence penalty encourages the model to talk about new topics',
354
432
  },
355
433
  {
356
- name: "frequency_penalty",
434
+ name: 'frequency_penalty',
357
435
  type: OptionType.numeric,
358
436
  min: -2,
359
437
  max: 2,
360
438
  default: 0,
361
439
  step: 0.1,
362
- description: "A higher frequency penalty encourages the model to use less common words"
440
+ description: 'A higher frequency penalty encourages the model to use less common words',
363
441
  },
364
442
  ];
365
443
 
366
444
  return {
367
- _option_id: "bedrock-ai21",
368
- options: [...baseConverseOptions, ...ai21ConverseOptions]
369
- }
370
- }
371
- else if (model.includes("cohere.command")) {
445
+ _option_id: 'bedrock-ai21',
446
+ options: [...baseConverseOptions, ...ai21ConverseOptions],
447
+ };
448
+ } else if (model.includes('cohere.command')) {
372
449
  const cohereCommandOptions: ModelOptionInfoItem[] = [
373
450
  {
374
- name: "top_k",
451
+ name: 'top_k',
375
452
  type: OptionType.numeric,
376
453
  min: 1,
377
454
  integer: true,
378
455
  step: 1,
379
- description: "Limits token sampling to the top k tokens"
456
+ description: 'Limits token sampling to the top k tokens',
380
457
  },
381
458
  ];
382
- if (model.includes("command-r")) {
459
+ if (model.includes('command-r')) {
383
460
  const cohereCommandROptions: ModelOptionInfoItem[] = [
384
461
  {
385
- name: "frequency_penalty",
462
+ name: 'frequency_penalty',
386
463
  type: OptionType.numeric,
387
464
  min: -2,
388
465
  max: 2,
389
466
  default: 0,
390
467
  step: 0.1,
391
- description: "A higher frequency penalty encourages the model to use less common words"
468
+ description: 'A higher frequency penalty encourages the model to use less common words',
392
469
  },
393
470
  {
394
- name: "presence_penalty",
471
+ name: 'presence_penalty',
395
472
  type: OptionType.numeric,
396
473
  min: -2,
397
474
  max: 2,
398
475
  default: 0,
399
476
  step: 0.1,
400
- description: "A higher presence penalty encourages the model to talk about new topics"
477
+ description: 'A higher presence penalty encourages the model to talk about new topics',
401
478
  },
402
479
  ];
403
480
  return {
404
- _option_id: "bedrock-cohere-command",
405
- options: [...baseConverseOptions, ...cohereCommandOptions, ...cohereCommandROptions]
406
- }
481
+ _option_id: 'bedrock-cohere-command',
482
+ options: [...baseConverseOptions, ...cohereCommandOptions, ...cohereCommandROptions],
483
+ };
407
484
  }
408
- } else if (model.includes("writer")) {
485
+ } else if (model.includes('writer')) {
409
486
  const palmyraConverseOptions: ModelOptionInfoItem[] = [
410
487
  {
411
- name: "min_tokens",
488
+ name: 'min_tokens',
412
489
  type: OptionType.numeric,
413
490
  min: 1,
414
491
  max: max_tokens_limit,
@@ -416,91 +493,93 @@ export function getBedrockOptions(model: string, option?: ModelOptions): ModelOp
416
493
  step: 100,
417
494
  },
418
495
  {
419
- name: "seed",
496
+ name: 'seed',
420
497
  type: OptionType.numeric,
421
498
  integer: true,
422
- description: "Random seed for generation"
499
+ description: 'Random seed for generation',
423
500
  },
424
501
  {
425
- name: "frequency_penalty",
502
+ name: 'frequency_penalty',
426
503
  type: OptionType.numeric,
427
504
  min: -2,
428
505
  max: 2,
429
506
  default: 0,
430
507
  step: 0.1,
431
- description: "A higher frequency penalty encourages the model to use less common words"
508
+ description: 'A higher frequency penalty encourages the model to use less common words',
432
509
  },
433
510
  {
434
- name: "presence_penalty",
511
+ name: 'presence_penalty',
435
512
  type: OptionType.numeric,
436
513
  min: -2,
437
514
  max: 2,
438
515
  default: 0,
439
516
  step: 0.1,
440
- description: "A higher presence penalty encourages the model to talk about new topics"
517
+ description: 'A higher presence penalty encourages the model to talk about new topics',
441
518
  },
442
- ]
519
+ ];
443
520
  return {
444
- _option_id: "bedrock-palmyra",
445
- options: [...baseConverseOptions, ...palmyraConverseOptions]
446
- }
447
- }
448
- else if (model.includes("gpt-oss")) {
521
+ _option_id: 'bedrock-palmyra',
522
+ options: [...baseConverseOptions, ...palmyraConverseOptions],
523
+ };
524
+ } else if (model.includes('gpt-oss')) {
449
525
  const gptOssOptions: ModelOptionInfoItem[] = [
450
526
  {
451
- name: "reasoning_effort",
527
+ name: 'reasoning_effort',
452
528
  type: OptionType.enum,
453
529
  enum: {
454
- "low": "low",
455
- "medium": "medium",
456
- "high": "high"
530
+ low: 'low',
531
+ medium: 'medium',
532
+ high: 'high',
457
533
  },
458
- default: "medium",
459
- description: "The reasoning effort of the model, which affects the quality and speed of the response"
534
+ default: 'medium',
535
+ description:
536
+ 'The reasoning effort of the model, which affects the quality and speed of the response',
460
537
  },
461
538
  ];
462
539
 
463
540
  const baseConverseOptionsNoStop: ModelOptionInfoItem[] = [...baseConverseOptions];
464
541
  // Remove stop_sequence for gpt-oss
465
- baseConverseOptionsNoStop.splice(baseConverseOptionsNoStop.findIndex(o => o.name === "stop_sequence"), 1);
542
+ baseConverseOptionsNoStop.splice(
543
+ baseConverseOptionsNoStop.findIndex((o) => o.name === 'stop_sequence'),
544
+ 1,
545
+ );
466
546
  return {
467
- _option_id: "bedrock-gpt-oss",
468
- options: [...baseConverseOptionsNoStop, ...gptOssOptions]
547
+ _option_id: 'bedrock-gpt-oss',
548
+ options: [...baseConverseOptionsNoStop, ...gptOssOptions],
469
549
  };
470
- }
471
- else if (model.includes("twelvelabs")) {
472
- if (model.includes("pegasus")) {
550
+ } else if (model.includes('twelvelabs')) {
551
+ if (model.includes('pegasus')) {
473
552
  const pegasusOptions: ModelOptionInfoItem[] = [
474
553
  {
475
- name: "temperature",
554
+ name: 'temperature',
476
555
  type: OptionType.numeric,
477
556
  min: 0.0,
478
557
  max: 1.0,
479
558
  default: 0.2,
480
559
  step: 0.1,
481
- description: "Controls randomness in the output"
560
+ description: 'Controls randomness in the output',
482
561
  },
483
562
  {
484
- name: "max_tokens",
563
+ name: 'max_tokens',
485
564
  type: OptionType.numeric,
486
565
  min: 1,
487
566
  max: 4096,
488
567
  integer: true,
489
568
  step: 100,
490
- description: "The maximum number of tokens to generate"
491
- }
569
+ description: 'The maximum number of tokens to generate',
570
+ },
492
571
  ];
493
572
  return {
494
- _option_id: "bedrock-twelvelabs-pegasus",
495
- options: pegasusOptions
573
+ _option_id: 'bedrock-twelvelabs-pegasus',
574
+ options: pegasusOptions,
496
575
  };
497
576
  }
498
577
  }
499
578
 
500
579
  //Fallback to converse standard.
501
580
  return {
502
- _option_id: "bedrock-converse",
503
- options: baseConverseOptions
581
+ _option_id: 'bedrock-converse',
582
+ options: baseConverseOptions,
504
583
  };
505
584
  }
506
585
  }