hoomanjs 1.42.1 → 1.43.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/README.md +1 -1
- package/dist/acp/acp-agent.js +21 -3
- package/dist/acp/acp-agent.js.map +1 -1
- package/dist/chat/app.js +19 -2
- package/dist/chat/app.js.map +1 -1
- package/dist/chat/components/BottomChrome.d.ts +1 -0
- package/dist/chat/components/BottomChrome.js.map +1 -1
- package/dist/chat/components/StatusBar.d.ts +1 -0
- package/dist/chat/components/StatusBar.js +3 -0
- package/dist/chat/components/StatusBar.js.map +1 -1
- package/dist/configure/app.js +145 -3
- package/dist/configure/app.js.map +1 -1
- package/dist/configure/types.d.ts +3 -0
- package/dist/core/config.d.ts +67 -0
- package/dist/core/config.js +40 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/models/hub-download.d.ts +27 -0
- package/dist/core/models/hub-download.js +136 -0
- package/dist/core/models/hub-download.js.map +1 -0
- package/dist/core/models/index.js +1 -0
- package/dist/core/models/index.js.map +1 -1
- package/dist/core/models/llama-cpp/index.js +3 -0
- package/dist/core/models/llama-cpp/index.js.map +1 -1
- package/dist/core/models/llama-cpp/resolve-model.js +3 -132
- package/dist/core/models/llama-cpp/resolve-model.js.map +1 -1
- package/dist/core/models/llama-cpp/strands-llama-cpp.d.ts +6 -0
- package/dist/core/models/llama-cpp/strands-llama-cpp.js +6 -0
- package/dist/core/models/llama-cpp/strands-llama-cpp.js.map +1 -1
- package/dist/core/models/mlx/index.d.ts +13 -0
- package/dist/core/models/mlx/index.js +47 -0
- package/dist/core/models/mlx/index.js.map +1 -0
- package/dist/core/models/mlx/resolve-model.d.ts +31 -0
- package/dist/core/models/mlx/resolve-model.js +149 -0
- package/dist/core/models/mlx/resolve-model.js.map +1 -0
- package/dist/core/models/mlx/strands-mlx.d.ts +45 -0
- package/dist/core/models/mlx/strands-mlx.js +439 -0
- package/dist/core/models/mlx/strands-mlx.js.map +1 -0
- package/dist/core/models/types.d.ts +149 -4
- package/dist/core/models/types.js +27 -0
- package/dist/core/models/types.js.map +1 -1
- package/dist/core/skills/built-in/hooman-config/SKILL.md +34 -2
- package/dist/core/skills/built-in/hooman-config/providers.md +4 -2
- package/dist/core/utils/billing.d.ts +23 -2
- package/dist/core/utils/billing.js +25 -2
- package/dist/core/utils/billing.js.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomChrome.js","sourceRoot":"","sources":["../../../src/chat/components/BottomChrome.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAM1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAmB,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"BottomChrome.js","sourceRoot":"","sources":["../../../src/chat/components/BottomChrome.tsx"],"names":[],"mappings":"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"}
|
|
@@ -74,6 +74,9 @@ export function StatusBar({ running, currentModel, reasoningEffort, yoloOn, sess
|
|
|
74
74
|
const tokensLabel = [
|
|
75
75
|
inputLabel,
|
|
76
76
|
`${formatTokenCount(usage.outputTokens)} out`,
|
|
77
|
+
...(usage.tokensPerSecond && usage.tokensPerSecond > 0
|
|
78
|
+
? [`${formatTokenCount(usage.tokensPerSecond)} tok/s`]
|
|
79
|
+
: []),
|
|
77
80
|
].join(", ");
|
|
78
81
|
const hasTokens = usage.inputTokens + cacheInput + usage.outputTokens > 0;
|
|
79
82
|
// Context-window utilization + session cost, resolved from the model's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../src/chat/components/StatusBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,MAAM,kBAAkB,GAAG;IACzB,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,CAAC;IACZ,KAAK,EAAE,KAAK;CACJ,CAAC;AAEX,SAAS,gBAAgB,CAAC,CAAS;IACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;AACpD,CAAC;AAED,+EAA+E;AAC/E,SAAS,aAAa,CAAC,MAAc;IACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC5C,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACjC,CAAC;IACD,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QACjB,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;AAClC,CAAC;AAED,kFAAkF;AAClF,SAAS,iBAAiB,CAAC,KAAa;IACtC,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;
|
|
1
|
+
{"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../src/chat/components/StatusBar.tsx"],"names":[],"mappings":"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"}
|
package/dist/configure/app.js
CHANGED
|
@@ -139,6 +139,7 @@ const SUPPORTED_PROVIDER_TYPES = [
|
|
|
139
139
|
LlmProvider.Groq,
|
|
140
140
|
LlmProvider.LlamaCpp,
|
|
141
141
|
LlmProvider.Minimax,
|
|
142
|
+
LlmProvider.Mlx,
|
|
142
143
|
LlmProvider.Moonshot,
|
|
143
144
|
LlmProvider.Ollama,
|
|
144
145
|
LlmProvider.OpenAI,
|
|
@@ -153,6 +154,7 @@ const DEFAULT_MODEL_BY_PROVIDER = {
|
|
|
153
154
|
[LlmProvider.Groq]: "openai/gpt-oss-20b",
|
|
154
155
|
[LlmProvider.LlamaCpp]: "Qwen/Qwen3-1.7B-GGUF:Q8_0",
|
|
155
156
|
[LlmProvider.Minimax]: "MiniMax-M3",
|
|
157
|
+
[LlmProvider.Mlx]: "mlx-community/Qwen3.5-9B-OptiQ-4bit",
|
|
156
158
|
[LlmProvider.Moonshot]: "kimi-k2.7-code",
|
|
157
159
|
[LlmProvider.Ollama]: "gemma4:e4b",
|
|
158
160
|
[LlmProvider.OpenAI]: "gpt-5.5",
|
|
@@ -178,6 +180,8 @@ function providerOptionsTemplate(provider) {
|
|
|
178
180
|
return {};
|
|
179
181
|
case LlmProvider.Minimax:
|
|
180
182
|
return {};
|
|
183
|
+
case LlmProvider.Mlx:
|
|
184
|
+
return {};
|
|
181
185
|
case LlmProvider.Moonshot:
|
|
182
186
|
return {};
|
|
183
187
|
case LlmProvider.Ollama:
|
|
@@ -385,6 +389,13 @@ const PROVIDER_FIELD_DEFINITIONS = {
|
|
|
385
389
|
placeholder: "8192",
|
|
386
390
|
note: "Context size in tokens (per-LLM `context` overrides this). Leave blank to let node-llama-cpp adapt it to the model and available memory.",
|
|
387
391
|
},
|
|
392
|
+
{
|
|
393
|
+
key: "promptCache",
|
|
394
|
+
label: "Prompt cache",
|
|
395
|
+
kind: "optionalBoolean",
|
|
396
|
+
placeholder: "true",
|
|
397
|
+
note: "Reuse KV state evaluated by previous turns (prompt caching). Defaults to true; set false to re-prefill the full conversation every turn.",
|
|
398
|
+
},
|
|
388
399
|
{
|
|
389
400
|
key: "reasoningEffort",
|
|
390
401
|
label: "Reasoning effort",
|
|
@@ -422,6 +433,36 @@ const PROVIDER_FIELD_DEFINITIONS = {
|
|
|
422
433
|
note: 'Set "summarized" to switch to adaptive thinking + output_config.effort; "omitted" to hide; blank keeps the adaptive+budget scheme.',
|
|
423
434
|
},
|
|
424
435
|
],
|
|
436
|
+
[LlmProvider.Mlx]: [
|
|
437
|
+
{
|
|
438
|
+
key: "hfToken",
|
|
439
|
+
label: "Hugging Face token",
|
|
440
|
+
kind: "string",
|
|
441
|
+
placeholder: "hf_...",
|
|
442
|
+
sensitive: true,
|
|
443
|
+
note: "Optional; used to download gated/private MLX repos from the Hugging Face Hub. Falls back to the HF_TOKEN env var.",
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
key: "context",
|
|
447
|
+
label: "Context size",
|
|
448
|
+
kind: "optionalInteger",
|
|
449
|
+
placeholder: "262144",
|
|
450
|
+
note: "Declared context window in tokens for the context-usage gauge (per-LLM `context` overrides this). MLX allocates KV state dynamically, so this doesn't size an allocation.",
|
|
451
|
+
},
|
|
452
|
+
{
|
|
453
|
+
key: "promptCache",
|
|
454
|
+
label: "Prompt cache",
|
|
455
|
+
kind: "promptCache",
|
|
456
|
+
note: "Reuse KV state from mlex's internal prompt-cache pool (prefix matching against previous calls), applied when the model loads. Unset, null, or false disables caching entirely; enabling it (with or without overriding mlex's own sizing defaults: 16 entries, 300s TTL, 8-token minimum) turns it on.",
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
key: "reasoningEffort",
|
|
460
|
+
label: "Reasoning effort",
|
|
461
|
+
kind: "reasoningEffort",
|
|
462
|
+
placeholder: "medium",
|
|
463
|
+
note: 'Enables thinking on reasoning-capable MLX models (Qwen3/3.5, Gemma 4, Nemotron) and caps thought tokens (1024/2048/4096/8192). Allowed: "minimal", "low", "medium", "high", or blank to disable thinking.',
|
|
464
|
+
},
|
|
465
|
+
],
|
|
425
466
|
[LlmProvider.Moonshot]: [
|
|
426
467
|
{
|
|
427
468
|
key: "apiKey",
|
|
@@ -587,7 +628,7 @@ const LLM_FIELD_DEFINITIONS = [
|
|
|
587
628
|
label: "Context size",
|
|
588
629
|
kind: "optionalInteger",
|
|
589
630
|
placeholder: "32768",
|
|
590
|
-
note: "Context size in tokens; only honored by the llama-cpp
|
|
631
|
+
note: "Context size in tokens; only honored by the local llama-cpp and mlx providers (overrides their provider-level `context`). Leave blank to clear.",
|
|
591
632
|
},
|
|
592
633
|
];
|
|
593
634
|
function formatTypedFieldValue(definition, value) {
|
|
@@ -672,7 +713,29 @@ function parseTypedFieldValue(input, definition) {
|
|
|
672
713
|
}
|
|
673
714
|
throw new Error(`${definition.label} must be "summarized" or "omitted".`);
|
|
674
715
|
}
|
|
716
|
+
case "promptCache":
|
|
717
|
+
// Edited via a dedicated screen (config-provider-prompt-cache), never
|
|
718
|
+
// through the generic promptValue path.
|
|
719
|
+
return undefined;
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
/** Label suffix for the mlx `promptCache` provider field row. */
|
|
723
|
+
function formatPromptCacheSummary(value) {
|
|
724
|
+
if (value === undefined || value === null || value === false) {
|
|
725
|
+
return "disabled";
|
|
675
726
|
}
|
|
727
|
+
const config = value;
|
|
728
|
+
const overrides = [];
|
|
729
|
+
if (config.maxEntries !== undefined) {
|
|
730
|
+
overrides.push(`maxEntries=${config.maxEntries}`);
|
|
731
|
+
}
|
|
732
|
+
if (config.ttl !== undefined) {
|
|
733
|
+
overrides.push(`ttl=${config.ttl}s`);
|
|
734
|
+
}
|
|
735
|
+
if (config.minTokens !== undefined) {
|
|
736
|
+
overrides.push(`minTokens=${config.minTokens}`);
|
|
737
|
+
}
|
|
738
|
+
return overrides.length > 0 ? `enabled (${overrides.join(", ")})` : "enabled";
|
|
676
739
|
}
|
|
677
740
|
/** On/off display for tool rows (`Tool • Yes` / `Tool • No`). */
|
|
678
741
|
const yesNo = (on) => (on ? "Yes" : "No");
|
|
@@ -785,7 +848,8 @@ export function ConfigureApp({ config, mcpConfig, mcpManager, skills, onExit, })
|
|
|
785
848
|
if (screen.kind === "config-provider-openai-api" ||
|
|
786
849
|
screen.kind === "config-provider-reasoning-effort" ||
|
|
787
850
|
screen.kind === "config-provider-reasoning-summary" ||
|
|
788
|
-
screen.kind === "config-provider-reasoning-display"
|
|
851
|
+
screen.kind === "config-provider-reasoning-display" ||
|
|
852
|
+
screen.kind === "config-provider-prompt-cache") {
|
|
789
853
|
setScreen({ kind: "config-provider-edit", name: screen.name });
|
|
790
854
|
return;
|
|
791
855
|
}
|
|
@@ -1434,7 +1498,9 @@ export function ConfigureApp({ config, mcpConfig, mcpManager, skills, onExit, })
|
|
|
1434
1498
|
? providerOptions.reasoning?.summary
|
|
1435
1499
|
: definition.kind === "reasoningDisplay"
|
|
1436
1500
|
? providerOptions.reasoning?.display
|
|
1437
|
-
:
|
|
1501
|
+
: definition.kind === "promptCache"
|
|
1502
|
+
? formatPromptCacheSummary(providerOptions.promptCache)
|
|
1503
|
+
: providerOptions[definition.key])}`,
|
|
1438
1504
|
value: () => {
|
|
1439
1505
|
if (definition.kind === "openaiApi") {
|
|
1440
1506
|
setScreen({
|
|
@@ -1464,6 +1530,13 @@ export function ConfigureApp({ config, mcpConfig, mcpManager, skills, onExit, })
|
|
|
1464
1530
|
});
|
|
1465
1531
|
return;
|
|
1466
1532
|
}
|
|
1533
|
+
if (definition.kind === "promptCache") {
|
|
1534
|
+
setScreen({
|
|
1535
|
+
kind: "config-provider-prompt-cache",
|
|
1536
|
+
name: entry.name,
|
|
1537
|
+
});
|
|
1538
|
+
return;
|
|
1539
|
+
}
|
|
1467
1540
|
if (definition.kind === "bedrockCredentials") {
|
|
1468
1541
|
promptValue({
|
|
1469
1542
|
title: "Update static credentials",
|
|
@@ -1628,6 +1701,73 @@ export function ConfigureApp({ config, mcpConfig, mcpManager, skills, onExit, })
|
|
|
1628
1701
|
];
|
|
1629
1702
|
return _jsx(MenuScreen, { title: title, description: description, items: items });
|
|
1630
1703
|
};
|
|
1704
|
+
/**
|
|
1705
|
+
* The mlx `promptCache` provider field: unset/`null`/`false` disables
|
|
1706
|
+
* caching entirely; an object (even `{}`) enables it, with `minTokens`/
|
|
1707
|
+
* `maxEntries`/`ttl` overriding mlex's own pool-sizing defaults (8/16/300s).
|
|
1708
|
+
* Setting any of the three fields below auto-enables caching if it was
|
|
1709
|
+
* disabled; the "Enabled" toggle exists for turning caching on with pure
|
|
1710
|
+
* defaults (or off, dropping any overrides) without touching a field.
|
|
1711
|
+
*/
|
|
1712
|
+
const renderPromptCacheMenu = () => {
|
|
1713
|
+
if (screen.kind !== "config-provider-prompt-cache") {
|
|
1714
|
+
return null;
|
|
1715
|
+
}
|
|
1716
|
+
const entry = config.providers.find((provider) => provider.name === screen.name);
|
|
1717
|
+
if (!entry) {
|
|
1718
|
+
return null;
|
|
1719
|
+
}
|
|
1720
|
+
const current = "promptCache" in entry.options
|
|
1721
|
+
? entry.options.promptCache
|
|
1722
|
+
: undefined;
|
|
1723
|
+
const enabled = current !== undefined && current !== null && current !== false;
|
|
1724
|
+
const poolConfig = enabled ? current : undefined;
|
|
1725
|
+
const patchField = (key, next) => {
|
|
1726
|
+
const merged = { ...(poolConfig ?? {}), [key]: next };
|
|
1727
|
+
return patchProvider(entry.name, { promptCache: merged });
|
|
1728
|
+
};
|
|
1729
|
+
const numberField = (key, label, placeholder, note) => ({
|
|
1730
|
+
label: `${label} • ${poolConfig?.[key] !== undefined ? poolConfig[key] : "default"}`,
|
|
1731
|
+
value: () => promptValue({
|
|
1732
|
+
title: `Update ${label}`,
|
|
1733
|
+
label,
|
|
1734
|
+
initialValue: poolConfig?.[key] !== undefined ? String(poolConfig[key]) : "",
|
|
1735
|
+
placeholder,
|
|
1736
|
+
note,
|
|
1737
|
+
onSubmit: async (value) => {
|
|
1738
|
+
const trimmed = normalizeOptional(value);
|
|
1739
|
+
const next = trimmed === undefined
|
|
1740
|
+
? undefined
|
|
1741
|
+
: parseNumber(trimmed, label, {
|
|
1742
|
+
integer: true,
|
|
1743
|
+
min: key === "minTokens" ? 0 : 1,
|
|
1744
|
+
});
|
|
1745
|
+
if (updateConfig({ providers: patchField(key, next) }, `Updated prompt-cache ${key} for "${entry.name}".`)) {
|
|
1746
|
+
setPrompt(null);
|
|
1747
|
+
}
|
|
1748
|
+
},
|
|
1749
|
+
}),
|
|
1750
|
+
});
|
|
1751
|
+
const items = [
|
|
1752
|
+
{
|
|
1753
|
+
label: `Enabled • ${enabled ? "Yes" : "No"}`,
|
|
1754
|
+
value: () => {
|
|
1755
|
+
const next = enabled ? undefined : (poolConfig ?? {});
|
|
1756
|
+
if (updateConfig({ providers: patchProvider(entry.name, { promptCache: next }) }, `${enabled ? "Disabled" : "Enabled"} prompt cache for "${entry.name}".`)) {
|
|
1757
|
+
setScreen({ kind: "config-provider-prompt-cache", name: entry.name });
|
|
1758
|
+
}
|
|
1759
|
+
},
|
|
1760
|
+
},
|
|
1761
|
+
numberField("maxEntries", "Max entries", "16", "Maximum cached prefixes kept at once (LRU-evicted beyond this). Leave blank for mlex's default (16)."),
|
|
1762
|
+
numberField("ttl", "TTL (seconds)", "300", "How long an unused cache entry is kept before eviction. Leave blank for mlex's default (300, i.e. 5 minutes)."),
|
|
1763
|
+
numberField("minTokens", "Min cacheable tokens", "8", "Prompts shorter than this many tokens are never cached. Leave blank for mlex's default (8)."),
|
|
1764
|
+
{
|
|
1765
|
+
label: "Back",
|
|
1766
|
+
value: () => setScreen({ kind: "config-provider-edit", name: entry.name }),
|
|
1767
|
+
},
|
|
1768
|
+
];
|
|
1769
|
+
return (_jsx(MenuScreen, { title: `Prompt Cache • ${entry.name}`, description: "Sizing for mlex's internal prompt-cache pool, applied once when the model loads. Setting any field below also enables caching if it was disabled.", items: items }));
|
|
1770
|
+
};
|
|
1631
1771
|
const renderProviderTypeMenu = () => {
|
|
1632
1772
|
if (screen.kind !== "config-provider-type") {
|
|
1633
1773
|
return null;
|
|
@@ -2396,6 +2536,8 @@ export function ConfigureApp({ config, mcpConfig, mcpManager, skills, onExit, })
|
|
|
2396
2536
|
return renderOpenAIEnumMenu("config-provider-reasoning-summary", "summary", `Choose Reasoning summary • ${screen.name}`, 'Responses API only. Pick one: "auto" (default), "concise", "detailed", or "none".', ["auto", "concise", "detailed", "none"], "Not set (auto) • current");
|
|
2397
2537
|
case "config-provider-reasoning-display":
|
|
2398
2538
|
return renderOpenAIEnumMenu("config-provider-reasoning-display", "display", `Choose Reasoning display • ${screen.name}`, 'Bedrock Claude / MiniMax only (not native Anthropic). "summarized" reveals reasoning on newer Bedrock Claude (Opus 4.7+) and switches to adaptive thinking; "omitted" hides it. Clear to keep the enabled+budget scheme.', ["summarized", "omitted"], "Not set • current");
|
|
2539
|
+
case "config-provider-prompt-cache":
|
|
2540
|
+
return renderPromptCacheMenu();
|
|
2399
2541
|
case "config-provider-delete-confirm":
|
|
2400
2542
|
return renderProviderDeleteConfirm();
|
|
2401
2543
|
case "config-llms":
|