hoomanjs 1.45.4 → 1.46.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.
- package/dist/acp/acp-agent.js +15 -15
- package/dist/acp/acp-agent.js.map +1 -1
- package/dist/acp/prompt-invoke.d.ts +2 -1
- package/dist/acp/prompt-invoke.js +20 -95
- package/dist/acp/prompt-invoke.js.map +1 -1
- package/dist/chat/app.js +19 -19
- package/dist/chat/app.js.map +1 -1
- package/dist/chat/components/BottomChrome.d.ts +1 -1
- package/dist/chat/components/DownloadPanel.d.ts +1 -1
- package/dist/chat/components/DownloadPanel.js +1 -1
- package/dist/chat/components/DownloadPanel.js.map +1 -1
- package/dist/chat/components/StatusBar.js +1 -1
- package/dist/chat/components/StatusBar.js.map +1 -1
- package/dist/cli.js +5 -2
- package/dist/cli.js.map +1 -1
- package/dist/configure/app.js +292 -0
- package/dist/configure/app.js.map +1 -1
- package/dist/core/agent/gitignore-guard-plugin.d.ts +2 -0
- package/dist/core/agent/gitignore-guard-plugin.js +79 -0
- package/dist/core/agent/gitignore-guard-plugin.js.map +1 -0
- package/dist/core/agent/index.js +3 -0
- package/dist/core/agent/index.js.map +1 -1
- package/dist/core/config.d.ts +39 -6
- package/dist/core/config.js +5 -2
- package/dist/core/config.js.map +1 -1
- package/dist/core/index.js +19 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/models/anthropic.js +10 -4
- package/dist/core/models/anthropic.js.map +1 -1
- package/dist/core/models/azure.js +2 -1
- package/dist/core/models/azure.js.map +1 -1
- package/dist/core/models/bedrock.js +1 -0
- package/dist/core/models/bedrock.js.map +1 -1
- package/dist/core/models/google.js +1 -0
- package/dist/core/models/google.js.map +1 -1
- package/dist/core/models/groq.js +2 -1
- package/dist/core/models/groq.js.map +1 -1
- package/dist/core/models/llama-cpp/index.js +1 -0
- package/dist/core/models/llama-cpp/index.js.map +1 -1
- package/dist/core/models/llama-cpp/resolve-model.js +1 -1
- package/dist/core/models/llama-cpp/resolve-model.js.map +1 -1
- package/dist/core/models/minimax.js +2 -1
- package/dist/core/models/minimax.js.map +1 -1
- package/dist/core/models/mlx/index.js +2 -1
- package/dist/core/models/mlx/index.js.map +1 -1
- package/dist/core/models/mlx/resolve-model.js +1 -1
- package/dist/core/models/mlx/resolve-model.js.map +1 -1
- package/dist/core/models/mlx/strands-mlx.js +1 -1
- package/dist/core/models/mlx/strands-mlx.js.map +1 -1
- package/dist/core/models/moonshot.js +2 -1
- package/dist/core/models/moonshot.js.map +1 -1
- package/dist/core/models/ollama/index.js +7 -3
- package/dist/core/models/ollama/index.js.map +1 -1
- package/dist/core/models/openai.js +2 -1
- package/dist/core/models/openai.js.map +1 -1
- package/dist/core/models/openrouter.js +2 -1
- package/dist/core/models/openrouter.js.map +1 -1
- package/dist/core/models/types.d.ts +43 -11
- package/dist/core/models/types.js +15 -4
- package/dist/core/models/types.js.map +1 -1
- package/dist/core/models/xai.js +2 -1
- package/dist/core/models/xai.js.map +1 -1
- package/dist/core/prompts/modes/agent.md +1 -1
- package/dist/core/prompts/modes/plan.md +11 -7
- package/dist/core/prompts/static/browser.md +9 -0
- package/dist/core/prompts/system.js +3 -0
- package/dist/core/prompts/system.js.map +1 -1
- package/dist/core/ripgrep/bootstrap.js +5 -19
- package/dist/core/ripgrep/bootstrap.js.map +1 -1
- package/dist/core/skills/built-in/hooman-config/SKILL.md +22 -5
- package/dist/core/skills/built-in/hooman-config/providers.md +14 -12
- package/dist/core/skills/plugin.js +5 -1
- package/dist/core/skills/plugin.js.map +1 -1
- package/dist/core/tools/filesystem.js +9 -0
- package/dist/core/tools/filesystem.js.map +1 -1
- package/dist/core/tools/shell.js +3 -14
- package/dist/core/tools/shell.js.map +1 -1
- package/dist/core/utils/attachments.d.ts +4 -2
- package/dist/core/utils/attachments.js +10 -32
- package/dist/core/utils/attachments.js.map +1 -1
- package/dist/core/utils/command-path.d.ts +1 -0
- package/dist/core/utils/command-path.js +17 -0
- package/dist/core/utils/command-path.js.map +1 -0
- package/dist/core/utils/download-progress.js.map +1 -0
- package/dist/core/utils/gitignore.d.ts +11 -0
- package/dist/core/utils/gitignore.js +141 -0
- package/dist/core/utils/gitignore.js.map +1 -0
- package/dist/core/utils/hub-download.js.map +1 -0
- package/dist/core/utils/metadata.d.ts +65 -0
- package/dist/core/utils/{billing.js → metadata.js} +56 -73
- package/dist/core/utils/metadata.js.map +1 -0
- package/dist/core/utils/model-metadata.d.ts +39 -0
- package/dist/core/utils/model-metadata.js +222 -0
- package/dist/core/utils/model-metadata.js.map +1 -0
- package/dist/core/utils/paths.d.ts +1 -0
- package/dist/core/utils/paths.js +2 -0
- package/dist/core/utils/paths.js.map +1 -1
- package/dist/core/utils/reasoning-effort.d.ts +9 -1
- package/dist/core/{models → utils}/usage.js +1 -1
- package/dist/core/utils/usage.js.map +1 -0
- package/dist/daemon/index.d.ts +2 -0
- package/dist/daemon/index.js +6 -3
- package/dist/daemon/index.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
- package/dist/core/models/download-progress.js.map +0 -1
- package/dist/core/models/hub-download.js.map +0 -1
- package/dist/core/models/usage.js.map +0 -1
- package/dist/core/utils/billing.d.ts +0 -76
- package/dist/core/utils/billing.js.map +0 -1
- /package/dist/core/{models → utils}/download-progress.d.ts +0 -0
- /package/dist/core/{models → utils}/download-progress.js +0 -0
- /package/dist/core/{models → utils}/hub-download.d.ts +0 -0
- /package/dist/core/{models → utils}/hub-download.js +0 -0
- /package/dist/core/{models → utils}/usage.d.ts +0 -0
package/dist/configure/app.js
CHANGED
|
@@ -617,6 +617,13 @@ const LLM_FIELD_DEFINITIONS = [
|
|
|
617
617
|
placeholder: "0.7",
|
|
618
618
|
note: "Leave blank to clear.",
|
|
619
619
|
},
|
|
620
|
+
{
|
|
621
|
+
key: "topP",
|
|
622
|
+
label: "Top P",
|
|
623
|
+
kind: "optionalNumber",
|
|
624
|
+
placeholder: "0.95",
|
|
625
|
+
note: "Leave blank to clear.",
|
|
626
|
+
},
|
|
620
627
|
{
|
|
621
628
|
key: "maxTokens",
|
|
622
629
|
label: "Max tokens",
|
|
@@ -632,6 +639,69 @@ const LLM_FIELD_DEFINITIONS = [
|
|
|
632
639
|
note: "Context size in tokens; only honored by the local llama-cpp and mlx providers (overrides their provider-level `context`). Leave blank to clear.",
|
|
633
640
|
},
|
|
634
641
|
];
|
|
642
|
+
const LLM_METADATA_FIELD_DEFINITIONS = [
|
|
643
|
+
{
|
|
644
|
+
key: "metadataName",
|
|
645
|
+
label: "Metadata model name",
|
|
646
|
+
kind: "string",
|
|
647
|
+
placeholder: "openai/gpt-5-mini",
|
|
648
|
+
note: "Optional override for models.dev lookup; leave blank to remove metadata.",
|
|
649
|
+
},
|
|
650
|
+
{
|
|
651
|
+
key: "metadataContext",
|
|
652
|
+
label: "Metadata context size",
|
|
653
|
+
kind: "optionalInteger",
|
|
654
|
+
placeholder: "200000",
|
|
655
|
+
},
|
|
656
|
+
{
|
|
657
|
+
key: "metadataCostInput",
|
|
658
|
+
label: "Metadata input cost / 1M",
|
|
659
|
+
kind: "optionalNumber",
|
|
660
|
+
placeholder: "0.25",
|
|
661
|
+
},
|
|
662
|
+
{
|
|
663
|
+
key: "metadataCostCache",
|
|
664
|
+
label: "Metadata cache cost / 1M",
|
|
665
|
+
kind: "optionalNumber",
|
|
666
|
+
placeholder: "0.025",
|
|
667
|
+
},
|
|
668
|
+
{
|
|
669
|
+
key: "metadataCostOutput",
|
|
670
|
+
label: "Metadata output cost / 1M",
|
|
671
|
+
kind: "optionalNumber",
|
|
672
|
+
placeholder: "2",
|
|
673
|
+
},
|
|
674
|
+
{
|
|
675
|
+
key: "metadataModalityText",
|
|
676
|
+
label: "Metadata modality: text",
|
|
677
|
+
kind: "optionalBoolean",
|
|
678
|
+
placeholder: "true",
|
|
679
|
+
},
|
|
680
|
+
{
|
|
681
|
+
key: "metadataModalityImage",
|
|
682
|
+
label: "Metadata modality: image",
|
|
683
|
+
kind: "optionalBoolean",
|
|
684
|
+
placeholder: "false",
|
|
685
|
+
},
|
|
686
|
+
{
|
|
687
|
+
key: "metadataModalityPdf",
|
|
688
|
+
label: "Metadata modality: pdf",
|
|
689
|
+
kind: "optionalBoolean",
|
|
690
|
+
placeholder: "false",
|
|
691
|
+
},
|
|
692
|
+
{
|
|
693
|
+
key: "metadataModalityAudio",
|
|
694
|
+
label: "Metadata modality: audio",
|
|
695
|
+
kind: "optionalBoolean",
|
|
696
|
+
placeholder: "false",
|
|
697
|
+
},
|
|
698
|
+
{
|
|
699
|
+
key: "metadataModalityVideo",
|
|
700
|
+
label: "Metadata modality: video",
|
|
701
|
+
kind: "optionalBoolean",
|
|
702
|
+
placeholder: "false",
|
|
703
|
+
},
|
|
704
|
+
];
|
|
635
705
|
function formatTypedFieldValue(definition, value) {
|
|
636
706
|
if (value === undefined) {
|
|
637
707
|
return "not set";
|
|
@@ -647,6 +717,52 @@ function formatTypedFieldValue(definition, value) {
|
|
|
647
717
|
}
|
|
648
718
|
return truncate(String(value), 44);
|
|
649
719
|
}
|
|
720
|
+
function buildLlmMetadataFromFields(fields) {
|
|
721
|
+
const name = normalizeOptional(fields.metadataName ?? "");
|
|
722
|
+
const context = parseTypedFieldValue(fields.metadataContext ?? "", LLM_METADATA_FIELD_DEFINITIONS[1]);
|
|
723
|
+
const inputCost = parseTypedFieldValue(fields.metadataCostInput ?? "", LLM_METADATA_FIELD_DEFINITIONS[2]);
|
|
724
|
+
const cacheCost = parseTypedFieldValue(fields.metadataCostCache ?? "", LLM_METADATA_FIELD_DEFINITIONS[3]);
|
|
725
|
+
const outputCost = parseTypedFieldValue(fields.metadataCostOutput ?? "", LLM_METADATA_FIELD_DEFINITIONS[4]);
|
|
726
|
+
const text = parseTypedFieldValue(fields.metadataModalityText ?? "", LLM_METADATA_FIELD_DEFINITIONS[5]);
|
|
727
|
+
const image = parseTypedFieldValue(fields.metadataModalityImage ?? "", LLM_METADATA_FIELD_DEFINITIONS[6]);
|
|
728
|
+
const pdf = parseTypedFieldValue(fields.metadataModalityPdf ?? "", LLM_METADATA_FIELD_DEFINITIONS[7]);
|
|
729
|
+
const audio = parseTypedFieldValue(fields.metadataModalityAudio ?? "", LLM_METADATA_FIELD_DEFINITIONS[8]);
|
|
730
|
+
const video = parseTypedFieldValue(fields.metadataModalityVideo ?? "", LLM_METADATA_FIELD_DEFINITIONS[9]);
|
|
731
|
+
if ((inputCost !== undefined ||
|
|
732
|
+
cacheCost !== undefined ||
|
|
733
|
+
outputCost !== undefined) &&
|
|
734
|
+
(inputCost === undefined || outputCost === undefined)) {
|
|
735
|
+
throw new Error('Metadata costs require both "Metadata input cost / 1M" and "Metadata output cost / 1M".');
|
|
736
|
+
}
|
|
737
|
+
if (!name) {
|
|
738
|
+
return undefined;
|
|
739
|
+
}
|
|
740
|
+
const metadata = { name };
|
|
741
|
+
if (context !== undefined) {
|
|
742
|
+
metadata.context = context;
|
|
743
|
+
}
|
|
744
|
+
if (inputCost !== undefined && outputCost !== undefined) {
|
|
745
|
+
metadata.costs = {
|
|
746
|
+
"input/m": inputCost,
|
|
747
|
+
...(cacheCost !== undefined ? { "cache/m": cacheCost } : {}),
|
|
748
|
+
"output/m": outputCost,
|
|
749
|
+
};
|
|
750
|
+
}
|
|
751
|
+
if (text !== undefined ||
|
|
752
|
+
image !== undefined ||
|
|
753
|
+
pdf !== undefined ||
|
|
754
|
+
audio !== undefined ||
|
|
755
|
+
video !== undefined) {
|
|
756
|
+
metadata.modality = {
|
|
757
|
+
...(text !== undefined ? { text } : {}),
|
|
758
|
+
...(image !== undefined ? { image } : {}),
|
|
759
|
+
...(pdf !== undefined ? { pdf } : {}),
|
|
760
|
+
...(audio !== undefined ? { audio } : {}),
|
|
761
|
+
...(video !== undefined ? { video } : {}),
|
|
762
|
+
};
|
|
763
|
+
}
|
|
764
|
+
return metadata;
|
|
765
|
+
}
|
|
650
766
|
function parseTypedFieldValue(input, definition) {
|
|
651
767
|
switch (definition.kind) {
|
|
652
768
|
case "string":
|
|
@@ -1471,6 +1587,21 @@ export function ConfigureApp({ config, mcpConfig, mcpManager, skills, onExit, })
|
|
|
1471
1587
|
}
|
|
1472
1588
|
},
|
|
1473
1589
|
},
|
|
1590
|
+
{
|
|
1591
|
+
label: `Browser tool • ${yesNo(configData.tools.browser.enabled)}`,
|
|
1592
|
+
value: () => {
|
|
1593
|
+
if (updateConfig({
|
|
1594
|
+
tools: {
|
|
1595
|
+
...config.tools,
|
|
1596
|
+
browser: {
|
|
1597
|
+
enabled: !configData.tools.browser.enabled,
|
|
1598
|
+
},
|
|
1599
|
+
},
|
|
1600
|
+
}, `Browser tool ${configData.tools.browser.enabled ? "disabled" : "enabled"}.`)) {
|
|
1601
|
+
setScreen({ kind: "config-tools" });
|
|
1602
|
+
}
|
|
1603
|
+
},
|
|
1604
|
+
},
|
|
1474
1605
|
{
|
|
1475
1606
|
label: `Subagents • ${yesNo(configData.tools.subagents.enabled)}`,
|
|
1476
1607
|
value: () => {
|
|
@@ -2077,8 +2208,19 @@ export function ConfigureApp({ config, mcpConfig, mcpManager, skills, onExit, })
|
|
|
2077
2208
|
provider: providerName,
|
|
2078
2209
|
model: defaultModelForProviderType(providerType),
|
|
2079
2210
|
temperature: "",
|
|
2211
|
+
topP: "",
|
|
2080
2212
|
maxTokens: "",
|
|
2081
2213
|
context: "",
|
|
2214
|
+
metadataName: "",
|
|
2215
|
+
metadataContext: "",
|
|
2216
|
+
metadataCostInput: "",
|
|
2217
|
+
metadataCostCache: "",
|
|
2218
|
+
metadataCostOutput: "",
|
|
2219
|
+
metadataModalityText: "",
|
|
2220
|
+
metadataModalityImage: "",
|
|
2221
|
+
metadataModalityPdf: "",
|
|
2222
|
+
metadataModalityAudio: "",
|
|
2223
|
+
metadataModalityVideo: "",
|
|
2082
2224
|
});
|
|
2083
2225
|
setScreen({ kind: "config-llm-create" });
|
|
2084
2226
|
},
|
|
@@ -2122,6 +2264,16 @@ export function ConfigureApp({ config, mcpConfig, mcpManager, skills, onExit, })
|
|
|
2122
2264
|
}, llmDraft[definition.key])}`,
|
|
2123
2265
|
value: () => editLlmDraftField(definition.label, definition.key, llmDraft[definition.key] ?? "", definition.note),
|
|
2124
2266
|
})),
|
|
2267
|
+
...LLM_METADATA_FIELD_DEFINITIONS.map((definition) => ({
|
|
2268
|
+
key: `llm-create-metadata:${definition.key}`,
|
|
2269
|
+
label: `${definition.label} • ${formatDraftFieldValue({
|
|
2270
|
+
key: definition.key,
|
|
2271
|
+
label: definition.label,
|
|
2272
|
+
placeholder: definition.placeholder,
|
|
2273
|
+
note: definition.note,
|
|
2274
|
+
}, llmDraft[definition.key])}`,
|
|
2275
|
+
value: () => editLlmDraftField(definition.label, definition.key, llmDraft[definition.key] ?? "", definition.note),
|
|
2276
|
+
})),
|
|
2125
2277
|
{
|
|
2126
2278
|
label: "Save",
|
|
2127
2279
|
value: () => {
|
|
@@ -2148,11 +2300,13 @@ export function ConfigureApp({ config, mcpConfig, mcpManager, skills, onExit, })
|
|
|
2148
2300
|
for (const definition of LLM_FIELD_DEFINITIONS) {
|
|
2149
2301
|
options[definition.key] = parseTypedFieldValue(llmDraft[definition.key] ?? "", definition);
|
|
2150
2302
|
}
|
|
2303
|
+
const metadata = buildLlmMetadataFromFields(llmDraft);
|
|
2151
2304
|
if (updateConfig({
|
|
2152
2305
|
llms: addLlmEntry({
|
|
2153
2306
|
name,
|
|
2154
2307
|
provider: providerName,
|
|
2155
2308
|
options: options,
|
|
2309
|
+
...(metadata ? { metadata } : {}),
|
|
2156
2310
|
default: false,
|
|
2157
2311
|
}),
|
|
2158
2312
|
}, `Added LLM "${name}".`)) {
|
|
@@ -2183,6 +2337,9 @@ export function ConfigureApp({ config, mcpConfig, mcpManager, skills, onExit, })
|
|
|
2183
2337
|
const isOnly = config.llms.length === 1;
|
|
2184
2338
|
const isDefault = entry.default;
|
|
2185
2339
|
const llmOptions = entry.options;
|
|
2340
|
+
const llmMetadata = (entry.metadata ?? {});
|
|
2341
|
+
const llmMetadataCosts = (llmMetadata.costs ?? {});
|
|
2342
|
+
const llmMetadataModality = (llmMetadata.modality ?? {});
|
|
2186
2343
|
const items = [
|
|
2187
2344
|
{
|
|
2188
2345
|
label: `Name • ${entry.name}`,
|
|
@@ -2259,6 +2416,141 @@ export function ConfigureApp({ config, mcpConfig, mcpManager, skills, onExit, })
|
|
|
2259
2416
|
},
|
|
2260
2417
|
}),
|
|
2261
2418
|
})),
|
|
2419
|
+
...LLM_METADATA_FIELD_DEFINITIONS.map((definition) => ({
|
|
2420
|
+
key: `llm-metadata-field:${entry.name}:${definition.key}`,
|
|
2421
|
+
label: `${definition.label} • ${formatDraftFieldValue(definition, (() => {
|
|
2422
|
+
switch (definition.key) {
|
|
2423
|
+
case "metadataName":
|
|
2424
|
+
return typeof llmMetadata.name === "string"
|
|
2425
|
+
? llmMetadata.name
|
|
2426
|
+
: undefined;
|
|
2427
|
+
case "metadataContext":
|
|
2428
|
+
return llmMetadata.context !== undefined
|
|
2429
|
+
? String(llmMetadata.context)
|
|
2430
|
+
: undefined;
|
|
2431
|
+
case "metadataCostInput":
|
|
2432
|
+
return llmMetadataCosts["input/m"] !== undefined
|
|
2433
|
+
? String(llmMetadataCosts["input/m"])
|
|
2434
|
+
: undefined;
|
|
2435
|
+
case "metadataCostCache":
|
|
2436
|
+
return llmMetadataCosts["cache/m"] !== undefined
|
|
2437
|
+
? String(llmMetadataCosts["cache/m"])
|
|
2438
|
+
: undefined;
|
|
2439
|
+
case "metadataCostOutput":
|
|
2440
|
+
return llmMetadataCosts["output/m"] !== undefined
|
|
2441
|
+
? String(llmMetadataCosts["output/m"])
|
|
2442
|
+
: undefined;
|
|
2443
|
+
case "metadataModalityText":
|
|
2444
|
+
return llmMetadataModality.text !== undefined
|
|
2445
|
+
? String(llmMetadataModality.text)
|
|
2446
|
+
: undefined;
|
|
2447
|
+
case "metadataModalityImage":
|
|
2448
|
+
return llmMetadataModality.image !== undefined
|
|
2449
|
+
? String(llmMetadataModality.image)
|
|
2450
|
+
: undefined;
|
|
2451
|
+
case "metadataModalityPdf":
|
|
2452
|
+
return llmMetadataModality.pdf !== undefined
|
|
2453
|
+
? String(llmMetadataModality.pdf)
|
|
2454
|
+
: undefined;
|
|
2455
|
+
case "metadataModalityAudio":
|
|
2456
|
+
return llmMetadataModality.audio !== undefined
|
|
2457
|
+
? String(llmMetadataModality.audio)
|
|
2458
|
+
: undefined;
|
|
2459
|
+
case "metadataModalityVideo":
|
|
2460
|
+
return llmMetadataModality.video !== undefined
|
|
2461
|
+
? String(llmMetadataModality.video)
|
|
2462
|
+
: undefined;
|
|
2463
|
+
default:
|
|
2464
|
+
return undefined;
|
|
2465
|
+
}
|
|
2466
|
+
})())}`,
|
|
2467
|
+
value: () => promptValue({
|
|
2468
|
+
title: `Update ${definition.label}`,
|
|
2469
|
+
label: definition.label,
|
|
2470
|
+
initialValue: definition.key === "metadataName"
|
|
2471
|
+
? typeof llmMetadata.name === "string"
|
|
2472
|
+
? llmMetadata.name
|
|
2473
|
+
: ""
|
|
2474
|
+
: definition.key === "metadataContext"
|
|
2475
|
+
? llmMetadata.context !== undefined
|
|
2476
|
+
? String(llmMetadata.context)
|
|
2477
|
+
: ""
|
|
2478
|
+
: definition.key === "metadataCostInput"
|
|
2479
|
+
? llmMetadataCosts["input/m"] !== undefined
|
|
2480
|
+
? String(llmMetadataCosts["input/m"])
|
|
2481
|
+
: ""
|
|
2482
|
+
: definition.key === "metadataCostCache"
|
|
2483
|
+
? llmMetadataCosts["cache/m"] !== undefined
|
|
2484
|
+
? String(llmMetadataCosts["cache/m"])
|
|
2485
|
+
: ""
|
|
2486
|
+
: definition.key === "metadataCostOutput"
|
|
2487
|
+
? llmMetadataCosts["output/m"] !== undefined
|
|
2488
|
+
? String(llmMetadataCosts["output/m"])
|
|
2489
|
+
: ""
|
|
2490
|
+
: definition.key === "metadataModalityText"
|
|
2491
|
+
? llmMetadataModality.text !== undefined
|
|
2492
|
+
? String(llmMetadataModality.text)
|
|
2493
|
+
: ""
|
|
2494
|
+
: definition.key === "metadataModalityImage"
|
|
2495
|
+
? llmMetadataModality.image !== undefined
|
|
2496
|
+
? String(llmMetadataModality.image)
|
|
2497
|
+
: ""
|
|
2498
|
+
: definition.key === "metadataModalityPdf"
|
|
2499
|
+
? llmMetadataModality.pdf !== undefined
|
|
2500
|
+
? String(llmMetadataModality.pdf)
|
|
2501
|
+
: ""
|
|
2502
|
+
: definition.key === "metadataModalityAudio"
|
|
2503
|
+
? llmMetadataModality.audio !== undefined
|
|
2504
|
+
? String(llmMetadataModality.audio)
|
|
2505
|
+
: ""
|
|
2506
|
+
: llmMetadataModality.video !== undefined
|
|
2507
|
+
? String(llmMetadataModality.video)
|
|
2508
|
+
: "",
|
|
2509
|
+
placeholder: definition.placeholder,
|
|
2510
|
+
note: definition.note,
|
|
2511
|
+
onSubmit: async (value) => {
|
|
2512
|
+
const draftFields = {
|
|
2513
|
+
metadataName: typeof llmMetadata.name === "string"
|
|
2514
|
+
? llmMetadata.name
|
|
2515
|
+
: "",
|
|
2516
|
+
metadataContext: llmMetadata.context !== undefined
|
|
2517
|
+
? String(llmMetadata.context)
|
|
2518
|
+
: "",
|
|
2519
|
+
metadataCostInput: llmMetadataCosts["input/m"] !== undefined
|
|
2520
|
+
? String(llmMetadataCosts["input/m"])
|
|
2521
|
+
: "",
|
|
2522
|
+
metadataCostCache: llmMetadataCosts["cache/m"] !== undefined
|
|
2523
|
+
? String(llmMetadataCosts["cache/m"])
|
|
2524
|
+
: "",
|
|
2525
|
+
metadataCostOutput: llmMetadataCosts["output/m"] !== undefined
|
|
2526
|
+
? String(llmMetadataCosts["output/m"])
|
|
2527
|
+
: "",
|
|
2528
|
+
metadataModalityText: llmMetadataModality.text !== undefined
|
|
2529
|
+
? String(llmMetadataModality.text)
|
|
2530
|
+
: "",
|
|
2531
|
+
metadataModalityImage: llmMetadataModality.image !== undefined
|
|
2532
|
+
? String(llmMetadataModality.image)
|
|
2533
|
+
: "",
|
|
2534
|
+
metadataModalityPdf: llmMetadataModality.pdf !== undefined
|
|
2535
|
+
? String(llmMetadataModality.pdf)
|
|
2536
|
+
: "",
|
|
2537
|
+
metadataModalityAudio: llmMetadataModality.audio !== undefined
|
|
2538
|
+
? String(llmMetadataModality.audio)
|
|
2539
|
+
: "",
|
|
2540
|
+
metadataModalityVideo: llmMetadataModality.video !== undefined
|
|
2541
|
+
? String(llmMetadataModality.video)
|
|
2542
|
+
: "",
|
|
2543
|
+
[definition.key]: value,
|
|
2544
|
+
};
|
|
2545
|
+
const metadata = buildLlmMetadataFromFields(draftFields);
|
|
2546
|
+
if (updateConfig({
|
|
2547
|
+
llms: config.llms.map((llm) => llm.name === entry.name ? { ...llm, metadata } : llm),
|
|
2548
|
+
}, `Updated ${definition.label.toLowerCase()} for "${entry.name}".`)) {
|
|
2549
|
+
setPrompt(null);
|
|
2550
|
+
}
|
|
2551
|
+
},
|
|
2552
|
+
}),
|
|
2553
|
+
})),
|
|
2262
2554
|
{
|
|
2263
2555
|
label: isDefault ? "Default • yes" : "Set as default",
|
|
2264
2556
|
value: () => {
|