hoomanjs 1.32.0 → 1.34.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 (120) hide show
  1. package/README.md +81 -264
  2. package/dist/acp/sessions/options.js +2 -2
  3. package/dist/acp/sessions/options.js.map +1 -1
  4. package/dist/acp/utils/tool-kind.js +1 -1
  5. package/dist/acp/utils/tool-kind.js.map +1 -1
  6. package/dist/acp/utils/tool-locations.js +1 -1
  7. package/dist/acp/utils/tool-locations.js.map +1 -1
  8. package/dist/chat/app.js +5 -19
  9. package/dist/chat/app.js.map +1 -1
  10. package/dist/chat/components/ChromePicker.js +1 -1
  11. package/dist/chat/components/ChromePicker.js.map +1 -1
  12. package/dist/chat/index.js.map +1 -1
  13. package/dist/configure/app.js +1000 -387
  14. package/dist/configure/app.js.map +1 -1
  15. package/dist/configure/index.js.map +1 -1
  16. package/dist/configure/types.d.ts +18 -0
  17. package/dist/core/agent/index.js +6 -4
  18. package/dist/core/agent/index.js.map +1 -1
  19. package/dist/core/config.d.ts +310 -80
  20. package/dist/core/config.js +93 -209
  21. package/dist/core/config.js.map +1 -1
  22. package/dist/core/mcp/manager.js +1 -1
  23. package/dist/core/mcp/manager.js.map +1 -1
  24. package/dist/core/mcp/oauth/provider.js.map +1 -1
  25. package/dist/core/mcp/prefixed-mcp-tool.d.ts +0 -1
  26. package/dist/core/mcp/prefixed-mcp-tool.js +0 -2
  27. package/dist/core/mcp/prefixed-mcp-tool.js.map +1 -1
  28. package/dist/core/models/anthropic.d.ts +3 -12
  29. package/dist/core/models/anthropic.js +20 -91
  30. package/dist/core/models/anthropic.js.map +1 -1
  31. package/dist/core/models/azure.d.ts +4 -0
  32. package/dist/core/models/azure.js +26 -0
  33. package/dist/core/models/azure.js.map +1 -0
  34. package/dist/core/models/bedrock.d.ts +3 -20
  35. package/dist/core/models/bedrock.js +22 -18
  36. package/dist/core/models/bedrock.js.map +1 -1
  37. package/dist/core/models/google.d.ts +2 -9
  38. package/dist/core/models/google.js +12 -31
  39. package/dist/core/models/google.js.map +1 -1
  40. package/dist/core/models/groq.d.ts +2 -9
  41. package/dist/core/models/groq.js +15 -25
  42. package/dist/core/models/groq.js.map +1 -1
  43. package/dist/core/models/index.d.ts +2 -1
  44. package/dist/core/models/index.js +3 -0
  45. package/dist/core/models/index.js.map +1 -1
  46. package/dist/core/models/minimax.d.ts +2 -0
  47. package/dist/core/models/minimax.js +11 -0
  48. package/dist/core/models/minimax.js.map +1 -0
  49. package/dist/core/models/moonshot.d.ts +2 -10
  50. package/dist/core/models/moonshot.js +23 -38
  51. package/dist/core/models/moonshot.js.map +1 -1
  52. package/dist/core/models/ollama/index.d.ts +2 -1
  53. package/dist/core/models/ollama/index.js +14 -3
  54. package/dist/core/models/ollama/index.js.map +1 -1
  55. package/dist/core/models/openai.d.ts +3 -4
  56. package/dist/core/models/openai.js +20 -3
  57. package/dist/core/models/openai.js.map +1 -1
  58. package/dist/core/models/openrouter.d.ts +4 -0
  59. package/dist/core/models/openrouter.js +23 -0
  60. package/dist/core/models/openrouter.js.map +1 -0
  61. package/dist/core/models/types.d.ts +346 -0
  62. package/dist/core/models/types.js +220 -0
  63. package/dist/core/models/types.js.map +1 -0
  64. package/dist/core/models/xai.d.ts +2 -9
  65. package/dist/core/models/xai.js +15 -25
  66. package/dist/core/models/xai.js.map +1 -1
  67. package/dist/core/modes/definitions.js +2 -2
  68. package/dist/core/modes/definitions.js.map +1 -1
  69. package/dist/core/prompts/harness/behaviour.md +10 -16
  70. package/dist/core/prompts/harness/communication.md +10 -19
  71. package/dist/core/prompts/harness/execution.md +8 -22
  72. package/dist/core/prompts/harness/guardrails.md +11 -18
  73. package/dist/core/prompts/modes/ask.md +6 -17
  74. package/dist/core/prompts/modes/plan.md +8 -25
  75. package/dist/core/prompts/runtime.js +2 -1
  76. package/dist/core/prompts/runtime.js.map +1 -1
  77. package/dist/core/prompts/static/filesystem.md +6 -36
  78. package/dist/core/prompts/static/planning.md +9 -32
  79. package/dist/core/prompts/static/shell.md +7 -30
  80. package/dist/core/prompts/static/skills.md +5 -16
  81. package/dist/core/prompts/static/web-search.md +6 -41
  82. package/dist/core/ripgrep/bootstrap.d.ts +1 -0
  83. package/dist/core/ripgrep/bootstrap.js +191 -0
  84. package/dist/core/ripgrep/bootstrap.js.map +1 -0
  85. package/dist/core/ripgrep/exec.d.ts +38 -0
  86. package/dist/core/ripgrep/exec.js +320 -0
  87. package/dist/core/ripgrep/exec.js.map +1 -0
  88. package/dist/core/ripgrep/index.d.ts +2 -0
  89. package/dist/core/ripgrep/index.js +3 -0
  90. package/dist/core/ripgrep/index.js.map +1 -0
  91. package/dist/core/ripgrep/tool.d.ts +18 -0
  92. package/dist/core/ripgrep/tool.js +101 -0
  93. package/dist/core/ripgrep/tool.js.map +1 -0
  94. package/dist/core/skills/built-in/hooman-config/SKILL.md +87 -193
  95. package/dist/core/state/tool-approvals.js +1 -1
  96. package/dist/core/state/tool-approvals.js.map +1 -1
  97. package/dist/core/subagents/research.js +1 -1
  98. package/dist/core/subagents/research.js.map +1 -1
  99. package/dist/core/subagents/runner.js +1 -1
  100. package/dist/core/subagents/runner.js.map +1 -1
  101. package/dist/core/tools/filesystem.d.ts +0 -5
  102. package/dist/core/tools/filesystem.js +4 -69
  103. package/dist/core/tools/filesystem.js.map +1 -1
  104. package/dist/core/tools/grep.d.ts +1 -0
  105. package/dist/core/tools/grep.js +2 -0
  106. package/dist/core/tools/grep.js.map +1 -0
  107. package/dist/core/tools/index.d.ts +1 -0
  108. package/dist/core/tools/index.js +1 -0
  109. package/dist/core/tools/index.js.map +1 -1
  110. package/dist/core/tools/shell.js.map +1 -1
  111. package/dist/core/utils/paths.d.ts +3 -0
  112. package/dist/core/utils/paths.js +3 -0
  113. package/dist/core/utils/paths.js.map +1 -1
  114. package/dist/core/utils/ripgrep.d.ts +1 -0
  115. package/dist/core/utils/ripgrep.js +2 -0
  116. package/dist/core/utils/ripgrep.js.map +1 -0
  117. package/dist/index.d.ts +4 -1
  118. package/dist/index.js +4 -1
  119. package/dist/index.js.map +1 -1
  120. package/package.json +4 -3
package/README.md CHANGED
@@ -21,7 +21,7 @@ It gives you a practical toolkit to build and run agent workflows:
21
21
  - a one-shot `exec` command for single prompts
22
22
  - a stateful `chat` interface for iterative sessions
23
23
  - a `daemon` command for channel-driven MCP automation
24
- - an in-chat `/config` workflow (Ink-powered) for app config, prompts, MCP servers, and installed skills
24
+ - an in-chat `/config` workflow (Ink-powered) for general settings, models, MCP servers, and installed skills
25
25
  - an `acp` command for running Hooman as an Agent Client Protocol (ACP) agent over stdio
26
26
 
27
27
  ## Related
@@ -30,7 +30,7 @@ It gives you a practical toolkit to build and run agent workflows:
30
30
 
31
31
  ## Features
32
32
 
33
- - Multiple LLM providers: `anthropic`, `bedrock`, `google`, `groq`, `moonshot`, `ollama`, `openai`, `xai`
33
+ - Multiple LLM providers: `anthropic`, `azure`, `bedrock`, `google`, `groq`, `minimax`, `moonshot`, `ollama`, `openai`, `openrouter`, `xai`
34
34
  - Local configuration under `~/.hooman`
35
35
  - Optional web search tool with provider selection (`brave`, `exa`, `firecrawl`, `serper`, or `tavily`)
36
36
  - MCP server support via `stdio`, `streamable-http`, and `sse`
@@ -39,6 +39,7 @@ It gives you a practical toolkit to build and run agent workflows:
39
39
  - Runtime skills via Strands `AgentSkills`, loading bundled built-in skills plus local `~/.hooman/skills`
40
40
  - Bundled prompt harness toggles (`behaviour`, `communication`, `execution`, `guardrails`); coding guidance ships as the built-in `hooman-coding` skill
41
41
  - Built-in research sub-agent runner (`research`) with configurable concurrency
42
+ - Built-in `grep` tool backed by ripgrep (`rg`), with runtime bootstrap when `rg` is not available on PATH
42
43
  - Toolkit-oriented architecture with configurable tools, prompts, and transports
43
44
  - Interactive terminal UI for chat and configuration
44
45
 
@@ -263,11 +264,12 @@ The configuration workflow is launched from inside a `chat` session with the `/c
263
264
 
264
265
  The configuration UI currently lets you:
265
266
 
266
- - edit app configuration values
267
+ - manage general settings such as name, prompts, tools, and compaction
268
+ - manage models and providers with field-by-field editors
267
269
  - choose search provider and set its API key
268
270
  - toggle bundled harness prompts (`behaviour`, `communication`, `execution`, `guardrails`)
269
271
  - edit `instructions.md` in your `$VISUAL` / `$EDITOR` (cross-platform fallback included)
270
- - add, edit, and delete MCP servers with confirmation
272
+ - add, edit, and delete MCP servers with field-by-field editors and confirmation
271
273
  - search, install, refresh, and remove skills
272
274
 
273
275
  ### `hooman acp`
@@ -300,32 +302,37 @@ Important files and folders:
300
302
  - `instructions.md` - system instructions used to build the agent prompt
301
303
  - `mcp.json` - MCP server definitions
302
304
  - `skills/` - installed skills
305
+ - `bin/` - runtime-managed helper binaries (including bootstrapped `rg` for the `grep` tool when system `rg` is unavailable)
306
+ - `cache/` - runtime caches used by tools and subsystems
303
307
  - `sessions/` - persisted session data
304
308
  - `acp-sessions/` - persisted ACP session metadata and message snapshots
305
309
 
310
+ `grep` tool binary resolution order:
311
+
312
+ 1. Use system `rg` when available.
313
+ 2. Else use cached `~/.hooman/bin/rg` (or `rg.exe` on Windows).
314
+ 3. Else download and verify a platform-specific ripgrep release into `~/.hooman/bin/`.
315
+
306
316
  ## Example `config.json`
307
317
 
308
- The on-disk shape uses a reusable **`providers`** array plus a non-empty **`llms`** array. Each provider stores the shared runtime type and params once; each LLM references a provider by name, sets its `model`, optional model-specific `params`, and `default`. The bundled **hooman-config** skill documents the full schema.
318
+ The on-disk shape uses a reusable **`providers`** array plus a non-empty **`llms`** array. Each provider stores a runtime `provider` id plus provider-specific `options`; each LLM references a provider by name, stores its model `options`, and marks one entry as the default. The bundled **hooman-config** skill documents the full schema.
309
319
 
310
320
  ```json
311
321
  {
312
322
  "name": "Hooman",
313
323
  "providers": [
314
324
  {
315
- "name": "ollama-local",
316
- "options": {
317
- "provider": "ollama",
318
- "params": {}
319
- }
325
+ "name": "Ollama",
326
+ "provider": "ollama",
327
+ "options": {}
320
328
  }
321
329
  ],
322
330
  "llms": [
323
331
  {
324
332
  "name": "Default",
333
+ "provider": "Ollama",
325
334
  "options": {
326
- "provider": "ollama-local",
327
- "model": "gemma4:e4b",
328
- "params": {}
335
+ "model": "gemma4:e4b"
329
336
  },
330
337
  "default": true
331
338
  }
@@ -346,25 +353,12 @@ The on-disk shape uses a reusable **`providers`** array plus a non-empty **`llms
346
353
  "guardrails": true
347
354
  },
348
355
  "tools": {
349
- "todo": {
350
- "enabled": true
351
- },
352
- "fetch": {
353
- "enabled": true
354
- },
355
- "filesystem": {
356
- "enabled": true
357
- },
358
- "shell": {
359
- "enabled": true
360
- },
361
- "sleep": {
362
- "enabled": true
363
- },
364
- "agents": {
365
- "enabled": true,
366
- "concurrency": 2
367
- }
356
+ "todo": { "enabled": true },
357
+ "fetch": { "enabled": true },
358
+ "filesystem": { "enabled": true },
359
+ "shell": { "enabled": true },
360
+ "sleep": { "enabled": true },
361
+ "agents": { "enabled": true, "concurrency": 2 }
368
362
  },
369
363
  "compaction": {
370
364
  "ratio": 0.75,
@@ -377,19 +371,20 @@ Tool approvals are session-scoped and are not persisted in `config.json`.
377
371
 
378
372
  Hooman enables Strands `ContextOffloader` by default with file-backed storage under `~/.hooman/sessions/offloaded-content`, so large tool results can be previewed in-context and retrieved later without bloating the active conversation window.
379
373
 
380
- Supported `providers[].options.provider` values registered in this release (see `src/core/models/index.ts`):
374
+ Supported `providers[].provider` values registered in this release (see `src/core/models/index.ts`):
381
375
 
382
376
  - `anthropic`
377
+ - `azure`
383
378
  - `bedrock`
384
379
  - `google`
385
380
  - `groq`
381
+ - `minimax`
386
382
  - `moonshot`
387
383
  - `ollama`
388
384
  - `openai`
385
+ - `openrouter`
389
386
  - `xai`
390
387
 
391
- The `LlmProvider` enum in `src/core/config.ts` may list additional strings for forwards compatibility; unknown providers are not loaded at runtime.
392
-
393
388
  Supported `search.provider` values:
394
389
 
395
390
  - `brave`
@@ -400,253 +395,62 @@ Supported `search.provider` values:
400
395
 
401
396
  ## Provider Notes
402
397
 
403
- ### Ollama
404
-
405
- Good default for local usage. Example:
406
-
407
- ```json
408
- {
409
- "providers": [
410
- {
411
- "name": "ollama-local",
412
- "options": {
413
- "provider": "ollama",
414
- "params": {}
415
- }
416
- }
417
- ],
418
- "llms": [
419
- {
420
- "name": "Default",
421
- "options": {
422
- "provider": "ollama-local",
423
- "model": "gemma4:e4b",
424
- "params": {}
425
- },
426
- "default": true
427
- }
428
- ]
429
- }
430
- ```
431
-
432
- ### OpenAI
433
-
434
- Uses Strands **OpenAIModel** (Chat Completions). `apiKey` is optional if `OPENAI_API_KEY` is set. Use `clientConfig` for a custom base URL or other OpenAI client options (OpenAI-compatible proxies and gateways).
435
-
436
- Example:
437
-
438
- ```json
439
- {
440
- "providers": [
441
- {
442
- "name": "openai",
443
- "options": {
444
- "provider": "openai",
445
- "params": {
446
- "apiKey": "..."
447
- }
448
- }
449
- }
450
- ],
451
- "llms": [
452
- {
453
- "name": "GPT-5",
454
- "options": {
455
- "provider": "openai",
456
- "model": "gpt-5",
457
- "params": {}
458
- },
459
- "default": true
460
- }
461
- ]
462
- }
463
- ```
464
-
465
- OpenAI-compatible gateways that put token `usage` on the last streamed chunk together with `choices` are handled via a small stream shim so usage still surfaces in the UI.
466
-
467
- ### Anthropic
468
-
469
- Uses Strands **AnthropicModel** (Anthropic Messages API). `apiKey` or `authToken`, optional `baseURL` and `headers` (merged into `clientConfig`), optional `clientConfig`, and model fields such as `temperature` and `maxTokens`. A prebuilt `client` is not configurable from JSON.
470
-
471
- ```json
472
- {
473
- "providers": [
474
- {
475
- "name": "anthropic",
476
- "options": {
477
- "provider": "anthropic",
478
- "params": {
479
- "apiKey": "..."
480
- }
481
- }
482
- }
483
- ],
484
- "llms": [
485
- {
486
- "name": "Claude Sonnet",
487
- "options": {
488
- "provider": "anthropic",
489
- "model": "claude-sonnet-4-20250514",
490
- "params": {
491
- "temperature": 0.7
492
- }
493
- },
494
- "default": true
495
- }
496
- ]
497
- }
498
- ```
499
-
500
- ### Google
501
-
502
- Uses Strands `GoogleModel` on top of `@google/genai`. Top-level options like `apiKey`, `client`, `clientConfig`, and `builtInTools` are supported; other values go into Google generation params.
503
-
504
- ```json
505
- {
506
- "providers": [
507
- {
508
- "name": "google",
509
- "options": {
510
- "provider": "google",
511
- "params": {
512
- "apiKey": "..."
513
- }
514
- }
515
- }
516
- ],
517
- "llms": [
518
- {
519
- "name": "Gemini Flash",
520
- "options": {
521
- "provider": "google",
522
- "model": "gemini-2.5-flash",
523
- "params": {
524
- "temperature": 0.7,
525
- "maxOutputTokens": 2048,
526
- "topP": 0.9,
527
- "topK": 40
528
- }
529
- },
530
- "default": true
531
- }
532
- ]
533
- }
534
- ```
535
-
536
- ### Bedrock
537
-
538
- Supports `region`, `clientConfig`, and optional `apiKey`, with all other values forwarded as Bedrock model options.
398
+ Provider entries now look like:
539
399
 
540
400
  ```json
541
401
  {
542
- "providers": [
543
- {
544
- "name": "bedrock-dev",
545
- "options": {
546
- "provider": "bedrock",
547
- "params": {
548
- "region": "us-east-1",
549
- "clientConfig": {
550
- "profile": "dev",
551
- "maxAttempts": 3,
552
- "credentials": {
553
- "accessKeyId": "AKIA...",
554
- "secretAccessKey": "...",
555
- "sessionToken": "..."
556
- }
557
- }
558
- }
559
- }
560
- }
561
- ],
562
- "llms": [
563
- {
564
- "name": "Claude Sonnet",
565
- "options": {
566
- "provider": "bedrock-dev",
567
- "model": "anthropic.claude-sonnet-4-20250514-v1:0",
568
- "params": {
569
- "temperature": 0.7,
570
- "maxTokens": 1024
571
- }
572
- },
573
- "default": true
574
- }
575
- ]
576
- }
577
- ```
578
-
579
- You can also rely on the AWS default credential chain (recommended) by setting environment variables such as `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, and optionally `AWS_SESSION_TOKEN`.
580
-
581
- ### Groq
582
-
583
- ### Anthropic
584
-
585
- Uses Strands `AnthropicModel` on top of `@anthropic-ai/sdk`. Provider-specific settings `apiKey`/`authToken`, `baseURL`, `headers`, `clientConfig`, `betas`, and `useNativeTokenCount` are picked up directly. Standard model config such as `temperature`, `topP`, `maxTokens`, and `stopSequences` stays top-level. Any other keys are forwarded to the Anthropic Messages request body, which is useful for Anthropic-compatible providers such as MiniMax.
586
-
587
- For MiniMax specifically:
588
-
589
- - Use `baseURL: "https://api.minimax.io/anthropic"`.
590
- - `MiniMax-M3` can emit visible thinking blocks when you set `thinking: { "type": "adaptive" }`.
591
- - `MiniMax-M2.7` / `M2.5` / `M2.1` / `M2` do internal reasoning, but MiniMax’s Anthropic-compatible API does not expose those as `thinking` content blocks, so Hooman has nothing to render in the transcript.
592
-
593
- ```json
594
- {
595
- "provider": "anthropic",
596
- "model": "MiniMax-M3",
597
- "params": {
598
- "apiKey": "...",
599
- "baseURL": "https://api.minimax.io/anthropic",
600
- "thinking": { "type": "adaptive" },
601
- "temperature": 1
402
+ "name": "MiniMax",
403
+ "provider": "minimax",
404
+ "options": {
405
+ "apiKey": "..."
602
406
  }
603
407
  }
604
408
  ```
605
409
 
606
- ### Groq
607
-
608
- Uses the Vercel AI SDK Groq provider (`@ai-sdk/groq`) on top of Strands `VercelModel`. Provider-specific settings `apiKey`, `baseURL`, and `headers` are picked up; other values are forwarded into the model config (`temperature`, `maxTokens`, etc.). Defaults to `GROQ_API_KEY` from the environment when no `apiKey` is supplied.
410
+ LLM entries reference a provider by name and carry normalized model options:
609
411
 
610
412
  ```json
611
413
  {
612
- "provider": "groq",
613
- "model": "gemma2-9b-it",
614
- "params": {
615
- "apiKey": "...",
616
- "temperature": 0.7
617
- }
414
+ "name": "MiniMax M3",
415
+ "provider": "MiniMax",
416
+ "options": {
417
+ "model": "MiniMax-M3",
418
+ "temperature": 1,
419
+ "maxTokens": 4096
420
+ },
421
+ "default": true
618
422
  }
619
423
  ```
620
424
 
621
- ### Moonshot
425
+ Supported provider option fields:
622
426
 
623
- Uses the Vercel AI SDK Moonshot provider (`@ai-sdk/moonshotai`) on top of Strands `VercelModel`. Provider-specific settings `apiKey`, `baseURL`, `headers`, and `fetch` are picked up; other values are forwarded into the model config (`temperature`, `maxTokens`, `providerOptions`, etc.). Defaults to `MOONSHOT_API_KEY` from the environment when no `apiKey` is supplied. Moonshot reasoning models such as `kimi-k2-thinking` can be configured through `params.providerOptions.moonshotai`.
427
+ - `anthropic`: `apiKey`, optional `baseURL`, optional `headers`, optional `thinking`
428
+ - `azure`: optional `resourceName`, optional `baseURL`, optional `apiKey`, optional `headers`, optional `apiVersion`, optional `useDeploymentBasedUrls`
429
+ - `bedrock`: `region`, `accessKeyId`, `secretAccessKey`, optional `sessionToken`, optional `apiKey`
430
+ - `google`: `apiKey`
431
+ - `groq`: `apiKey`, optional `baseURL`, optional `headers`
432
+ - `minimax`: `apiKey`, optional `headers`, optional `thinking`
433
+ - `moonshot`: `apiKey`, optional `baseURL`, optional `headers`
434
+ - `ollama`: optional `baseURL`, optional `thinking`
435
+ - `openai`: `apiKey`, optional `baseURL`, optional `headers`
436
+ - `openrouter`: `apiKey`, optional `baseURL`, optional `headers`
437
+ - `xai`: `apiKey`, optional `baseURL`, optional `headers`
624
438
 
625
- ```json
626
- {
627
- "provider": "moonshot",
628
- "model": "kimi-k2.5",
629
- "params": {
630
- "apiKey": "...",
631
- "temperature": 0.7
632
- }
633
- }
634
- ```
439
+ Normalized LLM option fields:
635
440
 
636
- ### xAI
441
+ - `model`
442
+ - optional `temperature`
443
+ - optional `maxTokens`
637
444
 
638
- Uses the Vercel AI SDK xAI provider (`@ai-sdk/xai`) on top of Strands `VercelModel`. Provider-specific settings `apiKey`, `baseURL`, and `headers` are picked up; other values are forwarded into the model config (`temperature`, `maxTokens`, etc.). Defaults to `XAI_API_KEY` from the environment when no `apiKey` is supplied.
445
+ Notes:
639
446
 
640
- ```json
641
- {
642
- "provider": "xai",
643
- "model": "grok-4.20-non-reasoning",
644
- "params": {
645
- "apiKey": "...",
646
- "temperature": 0.7
647
- }
648
- }
649
- ```
447
+ - Google maps normalized `maxTokens` to the SDK's `maxOutputTokens` internally.
448
+ - Azure uses the Vercel AI SDK `@ai-sdk/azure` provider. Set the LLM `model` to your Azure deployment name, not the raw OpenAI model id.
449
+ - Ollama maps normalized `temperature` into Ollama `options.temperature`.
450
+ - MiniMax uses the Anthropic-compatible endpoint `https://api.minimax.io/anthropic` automatically.
451
+ - Moonshot defaults `baseURL` to `https://api.moonshot.ai/v1` when it is omitted.
452
+ - OpenRouter defaults `baseURL` to `https://openrouter.ai/api/v1` when it is omitted, and model names are usually provider-qualified ids such as `anthropic/claude-3.5-sonnet`.
453
+ - Bedrock can rely on the AWS default credential chain when explicit credentials are not provided.
650
454
 
651
455
  ## MCP Configuration
652
456
 
@@ -788,6 +592,19 @@ Run typecheck:
788
592
  npm run typecheck
789
593
  ```
790
594
 
595
+ Build the project:
596
+
597
+ ```bash
598
+ npm run build
599
+ ```
600
+
601
+ After making any code change, run both verification steps:
602
+
603
+ ```bash
604
+ npm run typecheck
605
+ npm run build
606
+ ```
607
+
791
608
  ## License
792
609
 
793
610
  MIT. See `LICENSE`.
@@ -31,8 +31,8 @@ export function buildSessionConfigOptions(config, agent) {
31
31
  description: (() => {
32
32
  const resolved = config.resolveLlm(m.name);
33
33
  return resolved
34
- ? `${m.options.provider} -> ${resolved.options.provider}/${resolved.options.model}`
35
- : `${m.options.provider}/${m.options.model}`;
34
+ ? `${m.provider} -> ${resolved.provider}/${resolved.llmOptions.model}`
35
+ : `${m.provider}/${m.options.model}`;
36
36
  })(),
37
37
  })),
38
38
  },
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/acp/sessions/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/acp/sessions/options.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ const KNOWN_TOOL_KINDS = new Map([
8
8
  ["list_directory", "read"],
9
9
  ["directory_tree", "read"],
10
10
  ["move_file", "move"],
11
- ["search_files", "search"],
11
+ ["grep", "search"],
12
12
  ["get_file_info", "read"],
13
13
  ["shell", "execute"],
14
14
  ["sleep", "other"],
@@ -1 +1 @@
1
- {"version":3,"file":"tool-kind.js","sourceRoot":"","sources":["../../../src/acp/utils/tool-kind.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAmB;IACjD,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAC/B,CAAC,YAAY,EAAE,MAAM,CAAC;IACtB,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAC5B,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC1B,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC1B,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,cAAc,EAAE,QAAQ,CAAC;IAC1B,CAAC,eAAe,EAAE,MAAM,CAAC;IACzB,CAAC,OAAO,EAAE,SAAS,CAAC;IACpB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,KAAK,EAAE,OAAO,CAAC;IAChB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,YAAY,EAAE,QAAQ,CAAC;IACxB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,eAAe,EAAE,OAAO,CAAC;IAC1B,CAAC,cAAc,EAAE,OAAO,CAAC;IACzB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC7B,CAAC,cAAc,EAAE,OAAO,CAAC;CAC1B,CAAC,CAAC;AAEH,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAEnC,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,OAAO,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,QAAgB,EAChB,IAAsB;IAEtB,MAAM,IAAI,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACvC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QAC/B,OAAO,GAAG,QAAQ,KAAK,IAAI,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"tool-kind.js","sourceRoot":"","sources":["../../../src/acp/utils/tool-kind.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAmB;IACjD,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAC/B,CAAC,YAAY,EAAE,MAAM,CAAC;IACtB,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAC5B,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC1B,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC1B,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,MAAM,EAAE,QAAQ,CAAC;IAClB,CAAC,eAAe,EAAE,MAAM,CAAC;IACzB,CAAC,OAAO,EAAE,SAAS,CAAC;IACpB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,KAAK,EAAE,OAAO,CAAC;IAChB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,YAAY,EAAE,QAAQ,CAAC;IACxB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,eAAe,EAAE,OAAO,CAAC;IAC1B,CAAC,cAAc,EAAE,OAAO,CAAC;IACzB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC7B,CAAC,cAAc,EAAE,OAAO,CAAC;CAC1B,CAAC,CAAC;AAEH,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAEnC,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,OAAO,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,QAAgB,EAChB,IAAsB;IAEtB,MAAM,IAAI,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACvC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QAC/B,OAAO,GAAG,QAAQ,KAAK,IAAI,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -7,7 +7,7 @@ const KNOWN_TOOL_LOCATION_KEYS = new Map([
7
7
  ["list_directory", ["path"]],
8
8
  ["directory_tree", ["path"]],
9
9
  ["move_file", ["source", "destination"]],
10
- ["search_files", ["path"]],
10
+ ["grep", ["path"]],
11
11
  ["get_file_info", ["path"]],
12
12
  ]);
13
13
  /** ACP `locations` extracted only from known core filesystem tools. */
@@ -1 +1 @@
1
- {"version":3,"file":"tool-locations.js","sourceRoot":"","sources":["../../../src/acp/utils/tool-locations.ts"],"names":[],"mappings":"AAEA,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAA4B;IAClE,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACxC,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC;CAC5B,CAAC,CAAC;AAEH,uEAAuE;AACvE,MAAM,UAAU,0BAA0B,CACxC,QAAgB,EAChB,KAAc;IAEd,MAAM,IAAI,GAAG,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;gBACrB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"tool-locations.js","sourceRoot":"","sources":["../../../src/acp/utils/tool-locations.ts"],"names":[],"mappings":"AAEA,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAA4B;IAClE,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACxC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC;CAC5B,CAAC,CAAC;AAEH,uEAAuE;AACvE,MAAM,UAAU,0BAA0B,CACxC,QAAgB,EAChB,KAAc;IAEd,MAAM,IAAI,GAAG,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;gBACrB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC"}
package/dist/chat/app.js CHANGED
@@ -227,9 +227,9 @@ function listModelsText(config) {
227
227
  const marker = entry.name === current ? "*" : "-";
228
228
  const resolved = config.resolveLlm(entry.name);
229
229
  if (!resolved) {
230
- return `${marker} ${entry.name} (${entry.options.provider}/${entry.options.model})`;
230
+ return `${marker} ${entry.name} (${entry.provider}/${entry.options.model})`;
231
231
  }
232
- return `${marker} ${entry.name} (${entry.options.provider} -> ${resolved.options.provider}/${resolved.options.model})`;
232
+ return `${marker} ${entry.name} (${entry.provider} -> ${resolved.provider}/${resolved.llmOptions.model})`;
233
233
  });
234
234
  return [
235
235
  `Current model: ${current}`,
@@ -436,21 +436,6 @@ export function ChatApp({ agent, config, sessionId, manager, registry, approvals
436
436
  const removeLine = useCallback((id) => {
437
437
  setLines((prev) => prev.filter((line) => line.id !== id));
438
438
  }, []);
439
- const moveLineToEnd = useCallback((id) => {
440
- setLines((prev) => {
441
- const index = prev.findIndex((line) => line.id === id);
442
- if (index === -1 || index === prev.length - 1) {
443
- return prev;
444
- }
445
- const next = [...prev];
446
- const [line] = next.splice(index, 1);
447
- if (!line) {
448
- return prev;
449
- }
450
- next.push(line);
451
- return next;
452
- });
453
- }, []);
454
439
  const replaceAssistantText = useCallback((text) => {
455
440
  const id = assistantLineIdRef.current;
456
441
  if (!id) {
@@ -579,8 +564,9 @@ export function ChatApp({ agent, config, sessionId, manager, registry, approvals
579
564
  })),
580
565
  });
581
566
  try {
582
- const provider = await modelProviders[config.llm.provider]();
583
- agent.model = provider.create(config.llm.model, config.llm.params);
567
+ const resolved = config.llm;
568
+ const provider = await modelProviders[resolved.provider]();
569
+ agent.model = provider.create(resolved.providerOptions, resolved.llmOptions);
584
570
  }
585
571
  catch (error) {
586
572
  config.update({