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.
Files changed (46) hide show
  1. package/README.md +1 -1
  2. package/dist/acp/acp-agent.js +21 -3
  3. package/dist/acp/acp-agent.js.map +1 -1
  4. package/dist/chat/app.js +19 -2
  5. package/dist/chat/app.js.map +1 -1
  6. package/dist/chat/components/BottomChrome.d.ts +1 -0
  7. package/dist/chat/components/BottomChrome.js.map +1 -1
  8. package/dist/chat/components/StatusBar.d.ts +1 -0
  9. package/dist/chat/components/StatusBar.js +3 -0
  10. package/dist/chat/components/StatusBar.js.map +1 -1
  11. package/dist/configure/app.js +145 -3
  12. package/dist/configure/app.js.map +1 -1
  13. package/dist/configure/types.d.ts +3 -0
  14. package/dist/core/config.d.ts +67 -0
  15. package/dist/core/config.js +40 -0
  16. package/dist/core/config.js.map +1 -1
  17. package/dist/core/models/hub-download.d.ts +27 -0
  18. package/dist/core/models/hub-download.js +136 -0
  19. package/dist/core/models/hub-download.js.map +1 -0
  20. package/dist/core/models/index.js +1 -0
  21. package/dist/core/models/index.js.map +1 -1
  22. package/dist/core/models/llama-cpp/index.js +3 -0
  23. package/dist/core/models/llama-cpp/index.js.map +1 -1
  24. package/dist/core/models/llama-cpp/resolve-model.js +3 -132
  25. package/dist/core/models/llama-cpp/resolve-model.js.map +1 -1
  26. package/dist/core/models/llama-cpp/strands-llama-cpp.d.ts +6 -0
  27. package/dist/core/models/llama-cpp/strands-llama-cpp.js +6 -0
  28. package/dist/core/models/llama-cpp/strands-llama-cpp.js.map +1 -1
  29. package/dist/core/models/mlx/index.d.ts +13 -0
  30. package/dist/core/models/mlx/index.js +47 -0
  31. package/dist/core/models/mlx/index.js.map +1 -0
  32. package/dist/core/models/mlx/resolve-model.d.ts +31 -0
  33. package/dist/core/models/mlx/resolve-model.js +149 -0
  34. package/dist/core/models/mlx/resolve-model.js.map +1 -0
  35. package/dist/core/models/mlx/strands-mlx.d.ts +45 -0
  36. package/dist/core/models/mlx/strands-mlx.js +439 -0
  37. package/dist/core/models/mlx/strands-mlx.js.map +1 -0
  38. package/dist/core/models/types.d.ts +149 -4
  39. package/dist/core/models/types.js +27 -0
  40. package/dist/core/models/types.js.map +1 -1
  41. package/dist/core/skills/built-in/hooman-config/SKILL.md +34 -2
  42. package/dist/core/skills/built-in/hooman-config/providers.md +4 -2
  43. package/dist/core/utils/billing.d.ts +23 -2
  44. package/dist/core/utils/billing.js +25 -2
  45. package/dist/core/utils/billing.js.map +1 -1
  46. package/package.json +2 -1
@@ -31,6 +31,7 @@ type BottomChromeProps = {
31
31
  cacheReadInputTokens?: number;
32
32
  cacheWriteInputTokens?: number;
33
33
  latencyMs: number;
34
+ tokensPerSecond?: number;
34
35
  };
35
36
  /** Context-window utilization; only set when the window size was resolved. */
36
37
  contextUsage?: {
@@ -1 +1 @@
1
- {"version":3,"file":"BottomChrome.js","sourceRoot":"","sources":["../../../src/chat/components/BottomChrome.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BottomChrome.js","sourceRoot":"","sources":["../../../src/chat/components/BottomChrome.tsx"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ type StatusBarProps = {
17
17
  cacheReadInputTokens?: number;
18
18
  cacheWriteInputTokens?: number;
19
19
  latencyMs: number;
20
+ tokensPerSecond?: number;
20
21
  };
21
22
  /** Context-window utilization; only set when the window size was resolved. */
22
23
  contextUsage?: {
@@ -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":"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"}
1
+ {"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../src/chat/components/StatusBar.tsx"],"names":[],"mappings":"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"}
@@ -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 provider (overrides its provider-level `context`). Leave blank to clear.",
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
- : providerOptions[definition.key])}`,
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":