| author | |
| committer | |
| log | 39167eb1a586ee9e060d6ec3314617e14e0259c0 |
| tree | 30feaa889d4930038003fbc6d9ba5bcefec4aaea |
| parent | 7ce4194707e2a883ccd6a44fd2e07eba08f5369a |
| signature | Signed by PGP key B5690EEEBB952194 |
3 files changed, 43 insertions(+), 18 deletions(-)
apps/server/src/provider/Layers/ClaudeProvider.ts+15-3| ... | ... | @@ -78,7 +78,11 @@ const CLAUDE_MODEL_CATALOG: ReadonlyArray<ServerProviderModel> = [ |
| 78 | 78 | { value: "high", label: "High", isDefault: true }, |
| 79 | 79 | { value: "xhigh", label: "Extra High" }, |
| 80 | 80 | { value: "max", label: "Max" }, |
| 81 | { value: "ultracode", label: "Ultracode" }, | |
| 81 | { | |
| 82 | value: "ultracode", | |
| 83 | label: "Ultracode", | |
| 84 | description: "xhigh effort plus multi-agent workflow orchestration", | |
| 85 | }, | |
| 82 | 86 | { value: "ultrathink", label: "Ultrathink" }, |
| 83 | 87 | ], |
| 84 | 88 | promptInjectedValues: ["ultrathink"], |
| ... | ... | @@ -109,7 +113,11 @@ const CLAUDE_MODEL_CATALOG: ReadonlyArray<ServerProviderModel> = [ |
| 109 | 113 | { value: "high", label: "High", isDefault: true }, |
| 110 | 114 | { value: "xhigh", label: "Extra High" }, |
| 111 | 115 | { value: "max", label: "Max" }, |
| 112 | { value: "ultracode", label: "Ultracode" }, | |
| 116 | { | |
| 117 | value: "ultracode", | |
| 118 | label: "Ultracode", | |
| 119 | description: "xhigh effort plus multi-agent workflow orchestration", | |
| 120 | }, | |
| 113 | 121 | { value: "ultrathink", label: "Ultrathink" }, |
| 114 | 122 | ], |
| 115 | 123 | promptInjectedValues: ["ultrathink"], |
| ... | ... | @@ -145,7 +153,11 @@ const CLAUDE_MODEL_CATALOG: ReadonlyArray<ServerProviderModel> = [ |
| 145 | 153 | { value: "high", label: "High", isDefault: true }, |
| 146 | 154 | { value: "xhigh", label: "Extra High" }, |
| 147 | 155 | { value: "max", label: "Max" }, |
| 148 | { value: "ultracode", label: "Ultracode" }, | |
| 156 | { | |
| 157 | value: "ultracode", | |
| 158 | label: "Ultracode", | |
| 159 | description: "xhigh effort plus multi-agent workflow orchestration", | |
| 160 | }, | |
| 149 | 161 | { value: "ultrathink", label: "Ultrathink" }, |
| 150 | 162 | ], |
| 151 | 163 | promptInjectedValues: ["ultrathink"], |
apps/server/src/provider/providerSnapshot.ts+12-6| ... | ... | @@ -168,16 +168,22 @@ export function buildSelectOptionDescriptor(input: { |
| 168 | 168 | readonly id: string; |
| 169 | 169 | readonly label: string; |
| 170 | 170 | readonly options: |
| 171 | | ReadonlyArray<{ value: string; label: string; isDefault?: boolean | undefined }> | |
| 171 | | ReadonlyArray<{ | |
| 172 | value: string; | |
| 173 | label: string; | |
| 174 | description?: string | undefined; | |
| 175 | isDefault?: boolean | undefined; | |
| 176 | }> | |
| 172 | 177 | | undefined; |
| 173 | 178 | readonly description?: string; |
| 174 | 179 | readonly promptInjectedValues?: ReadonlyArray<string>; |
| 175 | 180 | }) { |
| 176 | const options = (input.options ?? []).map((option) => | |
| 177 | option.isDefault | |
| 178 | ? { id: option.value, label: option.label, isDefault: true } | |
| 179 | : { id: option.value, label: option.label }, | |
| 180 | ); | |
| 181 | const options = (input.options ?? []).map((option) => ({ | |
| 182 | id: option.value, | |
| 183 | label: option.label, | |
| 184 | ...(option.description ? { description: option.description } : {}), | |
| 185 | ...(option.isDefault ? { isDefault: true } : {}), | |
| 186 | })); | |
| 181 | 187 | const currentValue = options.find((option) => option.isDefault)?.id; |
| 182 | 188 | return { |
| 183 | 189 | id: input.id, |
apps/web/src/components/chat/TraitsPicker.tsx+16-9| ... | ... | @@ -328,16 +328,23 @@ export const TraitsMenuContent = memo(function TraitsMenuContentImpl({ |
| 328 | 328 | closeOnClick |
| 329 | 329 | disabled={ultrathinkInBodyText && descriptor.id === primarySelectDescriptor?.id} |
| 330 | 330 | > |
| 331 | <span className="flex w-full min-w-0 items-center justify-between gap-3"> | |
| 332 | <span className="min-w-0 truncate"> | |
| 333 | {option.label} | |
| 334 | {option.isDefault ? ( | |
| 335 | <> | |
| 336 | {" "} | |
| 337 | <DefaultBadge /> | |
| 338 | </> | |
| 339 | ) : null} | |
| 331 | <span className="flex w-full min-w-0 flex-col"> | |
| 332 | <span className="flex w-full min-w-0 items-center justify-between gap-3"> | |
| 333 | <span className="min-w-0 truncate"> | |
| 334 | {option.label} | |
| 335 | {option.isDefault ? ( | |
| 336 | <> | |
| 337 | {" "} | |
| 338 | <DefaultBadge /> | |
| 339 | </> | |
| 340 | ) : null} | |
| 341 | </span> | |
| 340 | 342 | </span> |
| 343 | {option.description ? ( | |
| 344 | <span className="max-w-56 text-pretty text-muted-foreground/80 text-xs"> | |
| 345 | {option.description} | |
| 346 | </span> | |
| 347 | ) : null} | |
| 341 | 348 | </span> |
| 342 | 349 | </MenuRadioItem> |
| 343 | 350 | ))} |