hoomanjs 1.29.2 → 1.30.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 +216 -69
- package/dist/acp/acp-agent.d.ts +5 -5
- package/dist/acp/acp-agent.js +55 -54
- package/dist/acp/acp-agent.js.map +1 -1
- package/dist/acp/approvals.d.ts +3 -3
- package/dist/acp/approvals.js +73 -115
- package/dist/acp/approvals.js.map +1 -1
- package/dist/acp/sessions/options.js +11 -25
- package/dist/acp/sessions/options.js.map +1 -1
- package/dist/acp/utils/tool-kind.js +1 -5
- package/dist/acp/utils/tool-kind.js.map +1 -1
- package/dist/chat/app.d.ts +5 -1
- package/dist/chat/app.js +322 -202
- package/dist/chat/app.js.map +1 -1
- package/dist/chat/approvals.d.ts +4 -3
- package/dist/chat/approvals.js +11 -45
- package/dist/chat/approvals.js.map +1 -1
- package/dist/chat/components/ChatMessage.d.ts +1 -2
- package/dist/chat/components/ChatMessage.js +4 -5
- package/dist/chat/components/ChatMessage.js.map +1 -1
- package/dist/chat/components/EmptyChatBanner.js +2 -3
- package/dist/chat/components/EmptyChatBanner.js.map +1 -1
- package/dist/chat/components/StatusBar.js +6 -2
- package/dist/chat/components/StatusBar.js.map +1 -1
- package/dist/chat/components/ThoughtEvent.d.ts +6 -0
- package/dist/chat/components/ThoughtEvent.js +30 -0
- package/dist/chat/components/ThoughtEvent.js.map +1 -0
- package/dist/chat/components/ToolEvent.js +1 -1
- package/dist/chat/components/ToolEvent.js.map +1 -1
- package/dist/chat/components/Transcript.d.ts +7 -2
- package/dist/chat/components/Transcript.js +6 -2
- package/dist/chat/components/Transcript.js.map +1 -1
- package/dist/chat/components/markdown/BlockRenderer.js +7 -7
- package/dist/chat/components/markdown/BlockRenderer.js.map +1 -1
- package/dist/chat/components/markdown/MarkdownMessage.js +1 -1
- package/dist/chat/components/markdown/MarkdownMessage.js.map +1 -1
- package/dist/chat/components/shared.js +2 -0
- package/dist/chat/components/shared.js.map +1 -1
- package/dist/chat/index.d.ts +4 -0
- package/dist/chat/index.js +17 -3
- package/dist/chat/index.js.map +1 -1
- package/dist/chat/steering.d.ts +20 -0
- package/dist/chat/steering.js +67 -0
- package/dist/chat/steering.js.map +1 -0
- package/dist/chat/types.d.ts +5 -1
- package/dist/cli.js +91 -13
- package/dist/cli.js.map +1 -1
- package/dist/configure/app.d.ts +1 -1
- package/dist/configure/app.js +581 -303
- package/dist/configure/app.js.map +1 -1
- package/dist/configure/components/MenuScreen.d.ts +4 -2
- package/dist/configure/components/MenuScreen.js +33 -6
- package/dist/configure/components/MenuScreen.js.map +1 -1
- package/dist/configure/components/SelectMenuItem.d.ts +1 -0
- package/dist/configure/components/SelectMenuItem.js +19 -10
- package/dist/configure/components/SelectMenuItem.js.map +1 -1
- package/dist/configure/index.js +4 -2
- package/dist/configure/index.js.map +1 -1
- package/dist/configure/types.d.ts +14 -12
- package/dist/configure/utils.d.ts +2 -0
- package/dist/configure/utils.js +21 -2
- package/dist/configure/utils.js.map +1 -1
- package/dist/core/agent/index.d.ts +3 -3
- package/dist/core/agent/index.js +20 -25
- package/dist/core/agent/index.js.map +1 -1
- package/dist/core/agent/mode-aware-tool-registry.js +2 -1
- package/dist/core/agent/mode-aware-tool-registry.js.map +1 -1
- package/dist/core/approvals/intervention.d.ts +34 -0
- package/dist/core/approvals/intervention.js +94 -0
- package/dist/core/approvals/intervention.js.map +1 -0
- package/dist/core/config.d.ts +49 -28
- package/dist/core/config.js +85 -26
- package/dist/core/config.js.map +1 -1
- package/dist/core/context/index.d.ts +11 -2
- package/dist/core/context/index.js +54 -4
- package/dist/core/context/index.js.map +1 -1
- package/dist/core/context/model-extractor.d.ts +13 -0
- package/dist/core/context/model-extractor.js +98 -0
- package/dist/core/context/model-extractor.js.map +1 -0
- package/dist/core/index.d.ts +6 -2
- package/dist/core/index.js +6 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/mcp/config.d.ts +28 -0
- package/dist/core/mcp/index.d.ts +5 -3
- package/dist/core/mcp/index.js +4 -2
- package/dist/core/mcp/index.js.map +1 -1
- package/dist/core/mcp/manager.d.ts +14 -1
- package/dist/core/mcp/manager.js +76 -4
- package/dist/core/mcp/manager.js.map +1 -1
- package/dist/core/mcp/oauth/callback-server.d.ts +16 -0
- package/dist/core/mcp/oauth/callback-server.js +134 -0
- package/dist/core/mcp/oauth/callback-server.js.map +1 -0
- package/dist/core/mcp/oauth/identity.d.ts +9 -0
- package/dist/core/mcp/oauth/identity.js +31 -0
- package/dist/core/mcp/oauth/identity.js.map +1 -0
- package/dist/core/mcp/oauth/index.d.ts +11 -0
- package/dist/core/mcp/oauth/index.js +15 -0
- package/dist/core/mcp/oauth/index.js.map +1 -0
- package/dist/core/mcp/oauth/provider.d.ts +43 -0
- package/dist/core/mcp/oauth/provider.js +203 -0
- package/dist/core/mcp/oauth/provider.js.map +1 -0
- package/dist/core/mcp/oauth/service.d.ts +29 -0
- package/dist/core/mcp/oauth/service.js +139 -0
- package/dist/core/mcp/oauth/service.js.map +1 -0
- package/dist/core/mcp/oauth/store.d.ts +14 -0
- package/dist/core/mcp/oauth/store.js +86 -0
- package/dist/core/mcp/oauth/store.js.map +1 -0
- package/dist/core/mcp/oauth/types.d.ts +87 -0
- package/dist/core/mcp/oauth/types.js +45 -0
- package/dist/core/mcp/oauth/types.js.map +1 -0
- package/dist/core/mcp/types.d.ts +56 -0
- package/dist/core/mcp/types.js +3 -0
- package/dist/core/mcp/types.js.map +1 -1
- package/dist/core/memory/file-store.d.ts +24 -0
- package/dist/core/memory/file-store.js +151 -0
- package/dist/core/memory/file-store.js.map +1 -0
- package/dist/core/memory/index.d.ts +2 -5
- package/dist/core/memory/index.js +2 -3
- package/dist/core/memory/index.js.map +1 -1
- package/dist/core/memory/runtime.d.ts +4 -0
- package/dist/core/memory/runtime.js +37 -0
- package/dist/core/memory/runtime.js.map +1 -0
- package/dist/core/models/anthropic.js +24 -1
- package/dist/core/models/anthropic.js.map +1 -1
- package/dist/core/models/moonshot.js +33 -1
- package/dist/core/models/moonshot.js.map +1 -1
- package/dist/core/modes/definitions.d.ts +19 -0
- package/dist/core/modes/definitions.js +99 -0
- package/dist/core/modes/definitions.js.map +1 -0
- package/dist/core/modes/index.d.ts +3 -0
- package/dist/core/modes/index.js +4 -0
- package/dist/core/modes/index.js.map +1 -0
- package/dist/core/modes/registry.d.ts +9 -0
- package/dist/core/modes/registry.js +57 -0
- package/dist/core/modes/registry.js.map +1 -0
- package/dist/core/modes/schema.d.ts +5 -0
- package/dist/core/modes/schema.js +6 -0
- package/dist/core/modes/schema.js.map +1 -0
- package/dist/core/prompts/agents/research.md +8 -8
- package/dist/core/prompts/bundled.d.ts +3 -0
- package/dist/core/prompts/bundled.js +14 -0
- package/dist/core/prompts/bundled.js.map +1 -0
- package/dist/core/prompts/environment.d.ts +0 -1
- package/dist/core/prompts/environment.js +0 -2
- package/dist/core/prompts/environment.js.map +1 -1
- package/dist/core/prompts/index.d.ts +1 -4
- package/dist/core/prompts/index.js +1 -7
- package/dist/core/prompts/index.js.map +1 -1
- package/dist/core/prompts/modes/agent.md +3 -0
- package/dist/core/prompts/modes/ask.md +5 -3
- package/dist/core/prompts/modes/plan.md +2 -2
- package/dist/core/prompts/session-mode-appendix.d.ts +3 -9
- package/dist/core/prompts/session-mode-appendix.js +32 -69
- package/dist/core/prompts/session-mode-appendix.js.map +1 -1
- package/dist/core/prompts/static/environment.md +2 -2
- package/dist/core/prompts/static/init.md +25 -0
- package/dist/core/prompts/static/memory.md +9 -123
- package/dist/core/prompts/static/planning.md +1 -1
- package/dist/core/prompts/static/skills.md +6 -5
- package/dist/core/prompts/static/subagents.md +2 -2
- package/dist/core/prompts/static/web-search.md +2 -1
- package/dist/core/prompts/system.js +8 -22
- package/dist/core/prompts/system.js.map +1 -1
- package/dist/core/skills/built-in/hooman-config/SKILL.md +105 -32
- package/dist/core/skills/built-in/hooman-skills/SKILL.md +1 -1
- package/dist/core/skills/index.d.ts +1 -0
- package/dist/core/skills/index.js +1 -0
- package/dist/core/skills/index.js.map +1 -1
- package/dist/core/skills/plugin.d.ts +7 -0
- package/dist/core/skills/plugin.js +40 -0
- package/dist/core/skills/plugin.js.map +1 -0
- package/dist/core/state/agent-app-state.d.ts +1 -1
- package/dist/core/state/agent-app-state.js +1 -1
- package/dist/core/state/session-mode.d.ts +2 -9
- package/dist/core/state/session-mode.js +4 -12
- package/dist/core/state/session-mode.js.map +1 -1
- package/dist/core/state/tool-approvals.d.ts +4 -8
- package/dist/core/state/tool-approvals.js +14 -76
- package/dist/core/state/tool-approvals.js.map +1 -1
- package/dist/core/subagents/index.d.ts +3 -0
- package/dist/core/subagents/index.js +4 -0
- package/dist/core/subagents/index.js.map +1 -0
- package/dist/core/subagents/research.d.ts +16 -0
- package/dist/core/subagents/research.js +58 -0
- package/dist/core/subagents/research.js.map +1 -0
- package/dist/core/{agents → subagents}/runner.d.ts +6 -5
- package/dist/core/{agents → subagents}/runner.js +8 -10
- package/dist/core/subagents/runner.js.map +1 -0
- package/dist/core/{agents/tools.d.ts → subagents/tool.d.ts} +6 -6
- package/dist/core/{agents/tools.js → subagents/tool.js} +14 -16
- package/dist/core/subagents/tool.js.map +1 -0
- package/dist/core/tools/plan.js +2 -6
- package/dist/core/tools/plan.js.map +1 -1
- package/dist/core/tools/time.js +1 -1
- package/dist/core/tools/time.js.map +1 -1
- package/dist/core/utils/browser.d.ts +1 -0
- package/dist/core/utils/browser.js +25 -0
- package/dist/core/utils/browser.js.map +1 -0
- package/dist/core/utils/paths.d.ts +2 -4
- package/dist/core/utils/paths.js +2 -4
- package/dist/core/utils/paths.js.map +1 -1
- package/dist/daemon/approvals.d.ts +2 -2
- package/dist/daemon/approvals.js +51 -56
- package/dist/daemon/approvals.js.map +1 -1
- package/dist/daemon/index.js +9 -6
- package/dist/daemon/index.js.map +1 -1
- package/dist/exec/approvals.d.ts +2 -4
- package/dist/exec/approvals.js +16 -48
- package/dist/exec/approvals.js.map +1 -1
- package/dist/index.d.ts +13 -18
- package/dist/index.js +9 -11
- package/dist/index.js.map +1 -1
- package/package.json +5 -18
- package/dist/chat/components/ScrollView.d.ts +0 -106
- package/dist/chat/components/ScrollView.js +0 -80
- package/dist/chat/components/ScrollView.js.map +0 -1
- package/dist/chat/components/TranscriptViewport.d.ts +0 -9
- package/dist/chat/components/TranscriptViewport.js +0 -124
- package/dist/chat/components/TranscriptViewport.js.map +0 -1
- package/dist/core/agents/definitions.d.ts +0 -12
- package/dist/core/agents/definitions.js +0 -20
- package/dist/core/agents/definitions.js.map +0 -1
- package/dist/core/agents/index.d.ts +0 -4
- package/dist/core/agents/index.js +0 -5
- package/dist/core/agents/index.js.map +0 -1
- package/dist/core/agents/registry.d.ts +0 -5
- package/dist/core/agents/registry.js +0 -84
- package/dist/core/agents/registry.js.map +0 -1
- package/dist/core/agents/runner.js.map +0 -1
- package/dist/core/agents/tools.js.map +0 -1
- package/dist/core/inference/embedder.d.ts +0 -26
- package/dist/core/inference/embedder.js +0 -85
- package/dist/core/inference/embedder.js.map +0 -1
- package/dist/core/inference/index.d.ts +0 -9
- package/dist/core/inference/index.js +0 -13
- package/dist/core/inference/index.js.map +0 -1
- package/dist/core/inference/loader.d.ts +0 -16
- package/dist/core/inference/loader.js +0 -129
- package/dist/core/inference/loader.js.map +0 -1
- package/dist/core/inference/reranker.d.ts +0 -28
- package/dist/core/inference/reranker.js +0 -66
- package/dist/core/inference/reranker.js.map +0 -1
- package/dist/core/memory/brain.d.ts +0 -25
- package/dist/core/memory/brain.js +0 -137
- package/dist/core/memory/brain.js.map +0 -1
- package/dist/core/memory/database.d.ts +0 -4
- package/dist/core/memory/database.js +0 -87
- package/dist/core/memory/database.js.map +0 -1
- package/dist/core/memory/tools.d.ts +0 -16
- package/dist/core/memory/tools.js +0 -110
- package/dist/core/memory/tools.js.map +0 -1
- package/dist/core/memory/types.d.ts +0 -11
- package/dist/core/memory/types.js +0 -2
- package/dist/core/memory/types.js.map +0 -1
- package/dist/core/prompts/skills.d.ts +0 -15
- package/dist/core/prompts/skills.js +0 -92
- package/dist/core/prompts/skills.js.map +0 -1
- package/dist/core/prompts/static/wiki.md +0 -25
- package/dist/core/wiki/converters.d.ts +0 -12
- package/dist/core/wiki/converters.js +0 -73
- package/dist/core/wiki/converters.js.map +0 -1
- package/dist/core/wiki/database.d.ts +0 -39
- package/dist/core/wiki/database.js +0 -177
- package/dist/core/wiki/database.js.map +0 -1
- package/dist/core/wiki/index.d.ts +0 -7
- package/dist/core/wiki/index.js +0 -5
- package/dist/core/wiki/index.js.map +0 -1
- package/dist/core/wiki/storage.d.ts +0 -38
- package/dist/core/wiki/storage.js +0 -206
- package/dist/core/wiki/storage.js.map +0 -1
- package/dist/core/wiki/tools.d.ts +0 -5
- package/dist/core/wiki/tools.js +0 -32
- package/dist/core/wiki/tools.js.map +0 -1
package/README.md
CHANGED
|
@@ -36,10 +36,10 @@ It gives you a practical toolkit to build and run agent workflows:
|
|
|
36
36
|
- MCP server support via `stdio`, `streamable-http`, and `sse`
|
|
37
37
|
- MCP server `instructions` support: server-provided instructions are appended to the agent system prompt
|
|
38
38
|
- MCP channel notifications: `hooman daemon` subscribes to servers that advertise `hooman/channel`
|
|
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
|
-
- Toolkit-oriented architecture with configurable tools, prompts,
|
|
42
|
+
- Toolkit-oriented architecture with configurable tools, prompts, and transports
|
|
43
43
|
- Interactive terminal UI for chat and configuration
|
|
44
44
|
|
|
45
45
|
## Requirements
|
|
@@ -54,7 +54,7 @@ Fastest way to get started without cloning the repo:
|
|
|
54
54
|
|
|
55
55
|
```bash
|
|
56
56
|
npx hoomanjs configure
|
|
57
|
-
npx hoomanjs
|
|
57
|
+
npx hoomanjs
|
|
58
58
|
|
|
59
59
|
# or install globally
|
|
60
60
|
npm i -g hoomanjs
|
|
@@ -64,13 +64,13 @@ Or with Bun:
|
|
|
64
64
|
|
|
65
65
|
```bash
|
|
66
66
|
bunx hoomanjs configure
|
|
67
|
-
bunx hoomanjs
|
|
67
|
+
bunx hoomanjs
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
Recommended first run:
|
|
71
71
|
|
|
72
72
|
1. Run `hooman configure` to choose your LLM provider and model.
|
|
73
|
-
2. Start chatting with `hooman chat
|
|
73
|
+
2. Start chatting with `hooman` (same as `hooman chat`).
|
|
74
74
|
3. Use `hooman exec "your prompt"` for one-off tasks.
|
|
75
75
|
|
|
76
76
|
## Must have
|
|
@@ -148,6 +148,12 @@ hooman exec "Map the architecture" --mode ask
|
|
|
148
148
|
|
|
149
149
|
Start an interactive stateful chat session.
|
|
150
150
|
|
|
151
|
+
```bash
|
|
152
|
+
hooman
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Equivalent explicit form:
|
|
156
|
+
|
|
151
157
|
```bash
|
|
152
158
|
hooman chat
|
|
153
159
|
```
|
|
@@ -180,10 +186,11 @@ hooman chat --mode ask
|
|
|
180
186
|
|
|
181
187
|
`exec`, `chat`, and `daemon` accept **`-m` / `--mode`** with:
|
|
182
188
|
|
|
183
|
-
- **`
|
|
189
|
+
- **`agent`** (default): normal tool surface and approvals.
|
|
190
|
+
- **`plan`**: planning workflow with a reduced tool surface plus `enter_plan_mode` / `exit_plan_mode`.
|
|
184
191
|
- **`ask`**: read-oriented, narrower surface (similar to interactive **plan** mode) but **without** `enter_plan_mode` / `exit_plan_mode`.
|
|
185
192
|
|
|
186
|
-
In **`chat`**, `/mode` can
|
|
193
|
+
In **`chat`**, `/mode` can switch between **agent**, **ask**, and **plan**. **ACP** sessions can set `hooman.sessionMode` to `agent`, `plan`, or `ask`.
|
|
187
194
|
|
|
188
195
|
### `hooman daemon`
|
|
189
196
|
|
|
@@ -233,17 +240,9 @@ Runtime tool and prompt switches are controlled from `config.json`:
|
|
|
233
240
|
- `tools.filesystem.enabled`
|
|
234
241
|
- `tools.shell.enabled`
|
|
235
242
|
- `tools.sleep.enabled`
|
|
236
|
-
- `tools.
|
|
237
|
-
- Memory and wiki embedding model URI is fixed in code as `DEFAULT_EMBED_MODEL` in `src/core/config.ts` (not configurable in `config.json`).
|
|
238
|
-
- Local embed GPU selection uses **`HOOMAN_LLAMA_GPU`**: unset defaults to **`auto`** (CI forces CPU off); use `false`, `off`, `none`, `disable`, `disabled`, or `0` for CPU-only; or `metal`, `vulkan`, or `cuda` for an explicit backend. Optional **`HOOMAN_EMBED_CONTEXT_SIZE`** caps embedding context length (tokens).
|
|
239
|
-
- `tools.wiki.enabled`
|
|
240
|
-
- `tools.agents.enabled` (enables built-in `run_agents` tool)
|
|
243
|
+
- `tools.agents.enabled` (enables built-in `run_subagents` tool)
|
|
241
244
|
- `tools.agents.concurrency` (defaults to `3` when omitted on load; a freshly generated default `config.json` uses `2`)
|
|
242
245
|
|
|
243
|
-
Long-term memory uses **SQLite + sqlite-vec** at `$HOOMAN_HOME/memory.sqlite` and **local GGUF embeddings** via `node-llama-cpp` (model cache under `$HOOMAN_HOME/.models`). The same **sqlite-vec** native extension requirements apply (see the `sqlite-vec` package and your platform notes).
|
|
244
|
-
|
|
245
|
-
With **`tools.wiki.enabled`**, the agent gets **`wiki_search`** only: semantic retrieval over the indexed knowledge base. Data lives under `$HOOMAN_HOME/wiki/` with chunks and vectors in **`$HOOMAN_HOME/wiki/content.sqlite`**. The first embed may download the configured GGUF model into `$HOOMAN_HOME/.models`. Documents are ingested as **PDF** (via **OpenDataLoader PDF**, which needs **Java 11+** on `PATH`) or **DOCX** (via **mammoth**).
|
|
246
|
-
|
|
247
246
|
### `hooman configure`
|
|
248
247
|
|
|
249
248
|
Open the Ink configuration workflow.
|
|
@@ -275,7 +274,7 @@ ACP notes:
|
|
|
275
274
|
- ACP loads MCP servers passed on `session/new` and `session/load`, in addition to Hooman's local `mcp.json`
|
|
276
275
|
- ACP `session/new` and `session/load` support `_meta.userId` and `_meta.systemPrompt`
|
|
277
276
|
- when `_meta.systemPrompt` is provided, it is appended to the agent system prompt with a section break
|
|
278
|
-
- session configuration includes `hooman.sessionMode` (`
|
|
277
|
+
- session configuration includes `hooman.sessionMode` (`agent`, `plan`, or `ask`); see [Session mode](#session-mode)
|
|
279
278
|
|
|
280
279
|
## Configuration Layout
|
|
281
280
|
|
|
@@ -287,10 +286,7 @@ Hooman stores its data in:
|
|
|
287
286
|
|
|
288
287
|
Important files and folders:
|
|
289
288
|
|
|
290
|
-
- `config.json` - app name,
|
|
291
|
-
- `memory.sqlite` - long-term memory vectors + rows (created when memory tools are used)
|
|
292
|
-
- `.models/` - downloaded GGUF embedding weights (memory + wiki embedders)
|
|
293
|
-
- `wiki/content.sqlite` - wiki document store and semantic chunk index (when wiki is used)
|
|
289
|
+
- `config.json` - app name, reusable provider configs, model configs, tool flags, and compaction
|
|
294
290
|
- `instructions.md` - system instructions used to build the agent prompt
|
|
295
291
|
- `mcp.json` - MCP server definitions
|
|
296
292
|
- `skills/` - installed skills
|
|
@@ -299,16 +295,25 @@ Important files and folders:
|
|
|
299
295
|
|
|
300
296
|
## Example `config.json`
|
|
301
297
|
|
|
302
|
-
The on-disk shape uses a non-empty **`llms`** array
|
|
298
|
+
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.
|
|
303
299
|
|
|
304
300
|
```json
|
|
305
301
|
{
|
|
306
302
|
"name": "Hooman",
|
|
303
|
+
"providers": [
|
|
304
|
+
{
|
|
305
|
+
"name": "ollama-local",
|
|
306
|
+
"options": {
|
|
307
|
+
"provider": "ollama",
|
|
308
|
+
"params": {}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
],
|
|
307
312
|
"llms": [
|
|
308
313
|
{
|
|
309
314
|
"name": "Default",
|
|
310
315
|
"options": {
|
|
311
|
-
"provider": "ollama",
|
|
316
|
+
"provider": "ollama-local",
|
|
312
317
|
"model": "gemma4:e4b",
|
|
313
318
|
"params": {}
|
|
314
319
|
},
|
|
@@ -346,12 +351,6 @@ The on-disk shape uses a non-empty **`llms`** array: each item has `name`, `opti
|
|
|
346
351
|
"sleep": {
|
|
347
352
|
"enabled": true
|
|
348
353
|
},
|
|
349
|
-
"memory": {
|
|
350
|
-
"enabled": false
|
|
351
|
-
},
|
|
352
|
-
"wiki": {
|
|
353
|
-
"enabled": false
|
|
354
|
-
},
|
|
355
354
|
"agents": {
|
|
356
355
|
"enabled": true,
|
|
357
356
|
"concurrency": 2
|
|
@@ -366,7 +365,9 @@ The on-disk shape uses a non-empty **`llms`** array: each item has `name`, `opti
|
|
|
366
365
|
|
|
367
366
|
Tool approvals are session-scoped and are not persisted in `config.json`.
|
|
368
367
|
|
|
369
|
-
|
|
368
|
+
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.
|
|
369
|
+
|
|
370
|
+
Supported `providers[].options.provider` values registered in this release (see `src/core/models/index.ts`):
|
|
370
371
|
|
|
371
372
|
- `anthropic`
|
|
372
373
|
- `bedrock`
|
|
@@ -395,9 +396,26 @@ Good default for local usage. Example:
|
|
|
395
396
|
|
|
396
397
|
```json
|
|
397
398
|
{
|
|
398
|
-
"
|
|
399
|
-
|
|
400
|
-
|
|
399
|
+
"providers": [
|
|
400
|
+
{
|
|
401
|
+
"name": "ollama-local",
|
|
402
|
+
"options": {
|
|
403
|
+
"provider": "ollama",
|
|
404
|
+
"params": {}
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
],
|
|
408
|
+
"llms": [
|
|
409
|
+
{
|
|
410
|
+
"name": "Default",
|
|
411
|
+
"options": {
|
|
412
|
+
"provider": "ollama-local",
|
|
413
|
+
"model": "gemma4:e4b",
|
|
414
|
+
"params": {}
|
|
415
|
+
},
|
|
416
|
+
"default": true
|
|
417
|
+
}
|
|
418
|
+
]
|
|
401
419
|
}
|
|
402
420
|
```
|
|
403
421
|
|
|
@@ -409,11 +427,28 @@ Example:
|
|
|
409
427
|
|
|
410
428
|
```json
|
|
411
429
|
{
|
|
412
|
-
"
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
430
|
+
"providers": [
|
|
431
|
+
{
|
|
432
|
+
"name": "openai",
|
|
433
|
+
"options": {
|
|
434
|
+
"provider": "openai",
|
|
435
|
+
"params": {
|
|
436
|
+
"apiKey": "..."
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
],
|
|
441
|
+
"llms": [
|
|
442
|
+
{
|
|
443
|
+
"name": "GPT-5",
|
|
444
|
+
"options": {
|
|
445
|
+
"provider": "openai",
|
|
446
|
+
"model": "gpt-5",
|
|
447
|
+
"params": {}
|
|
448
|
+
},
|
|
449
|
+
"default": true
|
|
450
|
+
}
|
|
451
|
+
]
|
|
417
452
|
}
|
|
418
453
|
```
|
|
419
454
|
|
|
@@ -425,12 +460,30 @@ Uses Strands **AnthropicModel** (Anthropic Messages API). `apiKey` or `authToken
|
|
|
425
460
|
|
|
426
461
|
```json
|
|
427
462
|
{
|
|
428
|
-
"
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
463
|
+
"providers": [
|
|
464
|
+
{
|
|
465
|
+
"name": "anthropic",
|
|
466
|
+
"options": {
|
|
467
|
+
"provider": "anthropic",
|
|
468
|
+
"params": {
|
|
469
|
+
"apiKey": "..."
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
],
|
|
474
|
+
"llms": [
|
|
475
|
+
{
|
|
476
|
+
"name": "Claude Sonnet",
|
|
477
|
+
"options": {
|
|
478
|
+
"provider": "anthropic",
|
|
479
|
+
"model": "claude-sonnet-4-20250514",
|
|
480
|
+
"params": {
|
|
481
|
+
"temperature": 0.7
|
|
482
|
+
}
|
|
483
|
+
},
|
|
484
|
+
"default": true
|
|
485
|
+
}
|
|
486
|
+
]
|
|
434
487
|
}
|
|
435
488
|
```
|
|
436
489
|
|
|
@@ -440,15 +493,33 @@ Uses Strands `GoogleModel` on top of `@google/genai`. Top-level options like `ap
|
|
|
440
493
|
|
|
441
494
|
```json
|
|
442
495
|
{
|
|
443
|
-
"
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
496
|
+
"providers": [
|
|
497
|
+
{
|
|
498
|
+
"name": "google",
|
|
499
|
+
"options": {
|
|
500
|
+
"provider": "google",
|
|
501
|
+
"params": {
|
|
502
|
+
"apiKey": "..."
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
],
|
|
507
|
+
"llms": [
|
|
508
|
+
{
|
|
509
|
+
"name": "Gemini Flash",
|
|
510
|
+
"options": {
|
|
511
|
+
"provider": "google",
|
|
512
|
+
"model": "gemini-2.5-flash",
|
|
513
|
+
"params": {
|
|
514
|
+
"temperature": 0.7,
|
|
515
|
+
"maxOutputTokens": 2048,
|
|
516
|
+
"topP": 0.9,
|
|
517
|
+
"topK": 40
|
|
518
|
+
}
|
|
519
|
+
},
|
|
520
|
+
"default": true
|
|
521
|
+
}
|
|
522
|
+
]
|
|
452
523
|
}
|
|
453
524
|
```
|
|
454
525
|
|
|
@@ -458,22 +529,40 @@ Supports `region`, `clientConfig`, and optional `apiKey`, with all other values
|
|
|
458
529
|
|
|
459
530
|
```json
|
|
460
531
|
{
|
|
461
|
-
"
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
532
|
+
"providers": [
|
|
533
|
+
{
|
|
534
|
+
"name": "bedrock-dev",
|
|
535
|
+
"options": {
|
|
536
|
+
"provider": "bedrock",
|
|
537
|
+
"params": {
|
|
538
|
+
"region": "us-east-1",
|
|
539
|
+
"clientConfig": {
|
|
540
|
+
"profile": "dev",
|
|
541
|
+
"maxAttempts": 3,
|
|
542
|
+
"credentials": {
|
|
543
|
+
"accessKeyId": "AKIA...",
|
|
544
|
+
"secretAccessKey": "...",
|
|
545
|
+
"sessionToken": "..."
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
}
|
|
472
549
|
}
|
|
473
|
-
}
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
550
|
+
}
|
|
551
|
+
],
|
|
552
|
+
"llms": [
|
|
553
|
+
{
|
|
554
|
+
"name": "Claude Sonnet",
|
|
555
|
+
"options": {
|
|
556
|
+
"provider": "bedrock-dev",
|
|
557
|
+
"model": "anthropic.claude-sonnet-4-20250514-v1:0",
|
|
558
|
+
"params": {
|
|
559
|
+
"temperature": 0.7,
|
|
560
|
+
"maxTokens": 1024
|
|
561
|
+
}
|
|
562
|
+
},
|
|
563
|
+
"default": true
|
|
564
|
+
}
|
|
565
|
+
]
|
|
477
566
|
}
|
|
478
567
|
```
|
|
479
568
|
|
|
@@ -481,6 +570,31 @@ You can also rely on the AWS default credential chain (recommended) by setting e
|
|
|
481
570
|
|
|
482
571
|
### Groq
|
|
483
572
|
|
|
573
|
+
### Anthropic
|
|
574
|
+
|
|
575
|
+
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.
|
|
576
|
+
|
|
577
|
+
For MiniMax specifically:
|
|
578
|
+
|
|
579
|
+
- Use `baseURL: "https://api.minimax.io/anthropic"`.
|
|
580
|
+
- `MiniMax-M3` can emit visible thinking blocks when you set `thinking: { "type": "adaptive" }`.
|
|
581
|
+
- `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.
|
|
582
|
+
|
|
583
|
+
```json
|
|
584
|
+
{
|
|
585
|
+
"provider": "anthropic",
|
|
586
|
+
"model": "MiniMax-M3",
|
|
587
|
+
"params": {
|
|
588
|
+
"apiKey": "...",
|
|
589
|
+
"baseURL": "https://api.minimax.io/anthropic",
|
|
590
|
+
"thinking": { "type": "adaptive" },
|
|
591
|
+
"temperature": 1
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
```
|
|
595
|
+
|
|
596
|
+
### Groq
|
|
597
|
+
|
|
484
598
|
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.
|
|
485
599
|
|
|
486
600
|
```json
|
|
@@ -526,6 +640,8 @@ Uses the Vercel AI SDK xAI provider (`@ai-sdk/xai`) on top of Strands `VercelMod
|
|
|
526
640
|
|
|
527
641
|
## MCP Configuration
|
|
528
642
|
|
|
643
|
+
Detailed design notes for planned OAuth-enabled remote MCP support live in [docs/mcp-oauth-design.md](docs/mcp-oauth-design.md).
|
|
644
|
+
|
|
529
645
|
`mcp.json` is stored as:
|
|
530
646
|
|
|
531
647
|
```json
|
|
@@ -568,6 +684,25 @@ Uses the Vercel AI SDK xAI provider (`@ai-sdk/xai`) on top of Strands `VercelMod
|
|
|
568
684
|
}
|
|
569
685
|
```
|
|
570
686
|
|
|
687
|
+
### Example OAuth-capable remote server
|
|
688
|
+
|
|
689
|
+
```json
|
|
690
|
+
{
|
|
691
|
+
"mcpServers": {
|
|
692
|
+
"linear": {
|
|
693
|
+
"type": "streamable-http",
|
|
694
|
+
"url": "https://example.com/mcp",
|
|
695
|
+
"oauth": {
|
|
696
|
+
"enabled": true,
|
|
697
|
+
"clientId": "optional-pre-registered-client",
|
|
698
|
+
"scopes": ["read", "write"],
|
|
699
|
+
"callbackPort": 19876
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
```
|
|
705
|
+
|
|
571
706
|
### Example SSE server
|
|
572
707
|
|
|
573
708
|
```json
|
|
@@ -588,6 +723,10 @@ Uses the Vercel AI SDK xAI provider (`@ai-sdk/xai`) on top of Strands `VercelMod
|
|
|
588
723
|
|
|
589
724
|
- MCP server `instructions` from the protocol `initialize` response are appended to Hooman's system prompt, after local `instructions.md` and session-specific prompt overrides.
|
|
590
725
|
- Hooman reads these instructions automatically from connected MCP servers when building the agent.
|
|
726
|
+
- Remote MCP OAuth helpers are available via:
|
|
727
|
+
- `hooman mcp auth <server>`
|
|
728
|
+
- `hooman mcp logout <server>`
|
|
729
|
+
- `hooman mcp auth-status`
|
|
591
730
|
- `hooman daemon` subscribes to MCP servers that advertise the experimental `hooman/channel` capability (always on; there is no opt-out flag).
|
|
592
731
|
- Hooman also reads `hooman/user`, `hooman/session`, and `hooman/thread` capability paths so daemon turns preserve origin metadata from the source channel.
|
|
593
732
|
- When a matching notification is received, Hooman uses `params.content` as the prompt if it is a string; otherwise it JSON-stringifies the notification params and sends that to the agent.
|
|
@@ -603,7 +742,15 @@ Skills are installed under:
|
|
|
603
742
|
~/.hooman/skills
|
|
604
743
|
```
|
|
605
744
|
|
|
606
|
-
|
|
745
|
+
At runtime, Hooman uses the Strands `AgentSkills` plugin to load:
|
|
746
|
+
|
|
747
|
+
- bundled built-in skills shipped with Hooman
|
|
748
|
+
- user-installed skills under `~/.hooman/skills`
|
|
749
|
+
|
|
750
|
+
The local skills folder is treated as a parent directory of skill subdirectories, where each installed skill should live in its own folder containing `SKILL.md`.
|
|
751
|
+
|
|
752
|
+
When a session starts, the plugin injects available skill metadata into the system prompt and exposes the `skills` tool so the model can activate a skill and load its full instructions on demand.
|
|
753
|
+
|
|
607
754
|
The configure workflow can:
|
|
608
755
|
|
|
609
756
|
- search the public skills catalog
|
package/dist/acp/acp-agent.d.ts
CHANGED
|
@@ -39,9 +39,9 @@ export declare class AcpAgent implements AgentContract {
|
|
|
39
39
|
newSession(params: Parameters<AgentContract["newSession"]>[0]): Promise<{
|
|
40
40
|
sessionId: `${string}-${string}-${string}-${string}-${string}`;
|
|
41
41
|
modes: {
|
|
42
|
-
currentModeId: "
|
|
42
|
+
currentModeId: "agent";
|
|
43
43
|
availableModes: {
|
|
44
|
-
id: "
|
|
44
|
+
id: "agent";
|
|
45
45
|
name: string;
|
|
46
46
|
description: string;
|
|
47
47
|
}[];
|
|
@@ -51,9 +51,9 @@ export declare class AcpAgent implements AgentContract {
|
|
|
51
51
|
}>;
|
|
52
52
|
loadSession(params: Parameters<NonNullable<AgentContract["loadSession"]>>[0]): Promise<{
|
|
53
53
|
modes: {
|
|
54
|
-
currentModeId: "
|
|
54
|
+
currentModeId: "agent";
|
|
55
55
|
availableModes: {
|
|
56
|
-
id: "
|
|
56
|
+
id: "agent";
|
|
57
57
|
name: string;
|
|
58
58
|
description: string;
|
|
59
59
|
}[];
|
|
@@ -63,7 +63,7 @@ export declare class AcpAgent implements AgentContract {
|
|
|
63
63
|
}>;
|
|
64
64
|
cancel(params: Parameters<AgentContract["cancel"]>[0]): Promise<void>;
|
|
65
65
|
prompt(params: Parameters<AgentContract["prompt"]>[0]): Promise<{
|
|
66
|
-
stopReason: "cancelled" | "
|
|
66
|
+
stopReason: "cancelled" | "refusal" | "end_turn";
|
|
67
67
|
}>;
|
|
68
68
|
}
|
|
69
69
|
export declare function runAcpStdio(): Promise<void>;
|