Skip to content
This repository was archived by the owner on Jul 22, 2025. It is now read-only.

Commit 03343c9

Browse files
committed
support enums
1 parent 16c4d02 commit 03343c9

File tree

1 file changed

+26
-18
lines changed

1 file changed

+26
-18
lines changed

assets/javascripts/discourse/components/ai-llm-editor-form.gjs

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import { popupAjaxError } from "discourse/lib/ajax-error";
1313
import icon from "discourse-common/helpers/d-icon";
1414
import { i18n } from "discourse-i18n";
1515
import AdminUser from "admin/models/admin-user";
16-
import DTooltip from "float-kit/components/d-tooltip";
1716
import DurationSelector from "./ai-quota-duration-selector";
1817
import AiLlmQuotaModal from "./modal/ai-llm-quota-modal";
1918

@@ -145,27 +144,30 @@ export default class AiLlmEditorForm extends Component {
145144
});
146145
}
147146

148-
get metaProviderParams() {
149-
const params =
150-
this.args.llms.resultSetMeta.provider_params[this.args.model.provider] ||
151-
{};
147+
@action
148+
metaProviderParams(provider) {
149+
const params = this.args.llms.resultSetMeta.provider_params[provider] || {};
152150

153-
return Object.entries(params).map(([field, value]) => {
151+
return Object.entries(params).reduce((acc, [field, value]) => {
154152
if (typeof value === "string") {
155-
return { field, type: value };
153+
acc[field] = { type: value };
156154
} else if (typeof value === "object") {
157155
if (value.values) {
158156
value = { ...value };
159-
value.values = value.values.map((v) => {
160-
return { id: v, name: v };
161-
});
157+
value.values = value.values.map((v) => ({ id: v, name: v }));
162158
}
163159
this.args.model.provider_params[field] =
164160
this.args.model.provider_params[field] || value.default;
165-
return { field, ...value };
161+
acc[field] = {
162+
type: value.type || "text",
163+
values: value.values || undefined,
164+
default: value.default || undefined,
165+
};
166+
} else {
167+
acc[field] = { type: "text" }; // fallback
166168
}
167-
return { field, type: "text" }; // fallback
168-
});
169+
return acc;
170+
}, {});
169171
}
170172

171173
@action
@@ -318,21 +320,27 @@ export default class AiLlmEditorForm extends Component {
318320
</form.Field>
319321

320322
<form.Object @name="provider_params" as |object name|>
323+
{{log (this.metaProviderParams data.provider)}}
321324
{{#let
322-
(get (get @llms.resultSetMeta.provider_params data.provider) name)
323-
as |type|
325+
(get (this.metaProviderParams data.provider) name)
326+
as |params|
324327
}}
325328
<object.Field
326329
@name={{name}}
327330
@title={{i18n (concat "discourse_ai.llms.provider_fields." name)}}
328331
@format="large"
329-
@showTitle={{false}}
330332
as |field|
331333
>
332-
{{#if (eq type "checkbox")}}
334+
{{#if (eq params.type "enum")}}
335+
<field.Select as |select|>
336+
{{#each params.values as |value|}}
337+
<select.Option @value={{value}}>{{value}}</select.Option>
338+
{{/each}}
339+
</field.Select>
340+
{{else if (eq params.type "checkbox")}}
333341
<field.Checkbox />
334342
{{else}}
335-
<field.Input @type={{type}} />
343+
<field.Input @type={{params.type}} />
336344
{{/if}}
337345
</object.Field>
338346
{{/let}}

0 commit comments

Comments
 (0)