hoomanjs 1.40.0 → 1.40.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/acp/acp-agent.js +0 -5
- package/dist/acp/acp-agent.js.map +1 -1
- package/dist/acp/utils/tool-kind.js +0 -1
- package/dist/acp/utils/tool-kind.js.map +1 -1
- package/dist/chat/app.js +24 -32
- package/dist/chat/app.js.map +1 -1
- package/dist/chat/components/StatusBar.js +12 -12
- package/dist/chat/components/StatusBar.js.map +1 -1
- package/dist/chat/index.d.ts +0 -1
- package/dist/chat/index.js +0 -2
- package/dist/chat/index.js.map +1 -1
- package/dist/cli.js +4 -10
- package/dist/cli.js.map +1 -1
- package/dist/core/agent/index.js +1 -2
- package/dist/core/agent/index.js.map +1 -1
- package/dist/core/modes/definitions.js +0 -2
- package/dist/core/modes/definitions.js.map +1 -1
- package/dist/core/prompts/harness/behaviour.md +3 -15
- package/dist/core/prompts/harness/communication.md +3 -16
- package/dist/core/prompts/harness/execution.md +6 -13
- package/dist/core/prompts/harness/guardrails.md +6 -12
- package/dist/core/prompts/static/daemon.md +4 -18
- package/dist/core/prompts/static/environment.md +2 -7
- package/dist/core/prompts/static/fetch.md +4 -30
- package/dist/core/prompts/static/identity.md +4 -19
- package/dist/core/prompts/static/planning.md +1 -9
- package/dist/core/prompts/static/subagents.md +4 -29
- package/dist/core/prompts/static/thinking.md +4 -24
- package/dist/core/prompts/static/todo.md +6 -32
- package/dist/core/prompts/system.js +0 -4
- package/dist/core/prompts/system.js.map +1 -1
- package/dist/core/sessions/lazy-session-manager.js +0 -2
- package/dist/core/sessions/lazy-session-manager.js.map +1 -1
- package/dist/core/skills/built-in/hooman-channels/SKILL.md +11 -148
- package/dist/core/skills/built-in/hooman-channels/channels.md +117 -0
- package/dist/core/skills/built-in/hooman-coding/SKILL.md +49 -44
- package/dist/core/skills/built-in/hooman-coding/debugging.md +26 -0
- package/dist/core/skills/built-in/hooman-coding/new-project.md +23 -0
- package/dist/core/skills/built-in/hooman-config/SKILL.md +19 -257
- package/dist/core/skills/built-in/hooman-config/providers.md +154 -0
- package/dist/core/skills/built-in/hooman-config/search.md +39 -0
- package/dist/core/skills/built-in/hooman-mcp/SKILL.md +22 -153
- package/dist/core/skills/built-in/hooman-skills/SKILL.md +10 -146
- package/dist/core/skills/built-in/hooman-skills/authoring.md +80 -0
- package/dist/core/state/tool-approvals.js +0 -2
- package/dist/core/state/tool-approvals.js.map +1 -1
- package/dist/core/tools/index.d.ts +0 -1
- package/dist/core/tools/index.js +0 -1
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/sleep.js +1 -1
- package/dist/core/tools/sleep.js.map +1 -1
- package/dist/daemon/index.d.ts +1 -1
- package/dist/daemon/index.js +1 -11
- package/dist/daemon/index.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/core/prompts/static/bye.md +0 -15
- package/dist/core/prompts/static/sleep.md +0 -20
- package/dist/core/state/exit-request.d.ts +0 -14
- package/dist/core/state/exit-request.js +0 -16
- package/dist/core/state/exit-request.js.map +0 -1
- package/dist/core/tools/bye.d.ts +0 -4
- package/dist/core/tools/bye.js +0 -23
- package/dist/core/tools/bye.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: hooman-config
|
|
3
|
-
description: Read and update Hooman's own config.json and instructions.md
|
|
3
|
+
description: Read and update Hooman's own ~/.hooman/config.json and instructions.md. Use when the user asks about Hooman's config, custom instructions, agent name, model providers, LLMs/models, API keys, reasoning options, web search settings, tool or prompt toggles, or compaction. Not for MCP servers (use hooman-mcp), channel integrations (hooman-channels), or installed skills (hooman-skills).
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Hooman Config
|
|
@@ -14,6 +14,13 @@ Use this skill when the user asks you to inspect, explain, or change Hooman's ow
|
|
|
14
14
|
- User instructions: `~/.hooman/instructions.md`.
|
|
15
15
|
- This skill does not cover `mcp.json`, installed skill directories, or bundled skill files.
|
|
16
16
|
|
|
17
|
+
## Reference Files
|
|
18
|
+
|
|
19
|
+
Read these files (next to this SKILL.md) only when the task needs the details they cover:
|
|
20
|
+
|
|
21
|
+
- `providers.md` — full `providers`/`llms` shapes, all supported provider ids, per-provider option and `reasoning` details, and worked examples. Read it before adding or changing any provider or LLM entry.
|
|
22
|
+
- `search.md` — the `search` section shape, supported search providers, and per-provider notes. Read it before enabling or changing web search.
|
|
23
|
+
|
|
17
24
|
## Effective Runtime View
|
|
18
25
|
|
|
19
26
|
Use `hooman config` to inspect the merged runtime `config.json` for
|
|
@@ -25,10 +32,11 @@ overlays walked from git root to the current directory). The command prints full
|
|
|
25
32
|
|
|
26
33
|
1. Read the existing JSON first. Preserve user values, comments are not supported, and secrets such as API keys may be present.
|
|
27
34
|
2. Make the smallest JSON edit that satisfies the request. Do not rewrite unrelated sections or normalize formatting beyond valid pretty JSON.
|
|
28
|
-
3. `name`, `providers`, and `llms` are required. `providers` stores shared credentials/config, and `llms` must be a **non-empty array** of entries that reference provider names (see
|
|
35
|
+
3. `name`, `providers`, and `llms` are required. `providers` stores shared credentials/config, and `llms` must be a **non-empty array** of entries that reference provider names (see `providers.md`). `search`, `prompts`, `tools`, and `compaction` are optional in input, but Hooman expands them with defaults when loading.
|
|
29
36
|
4. Unknown keys are unsupported and may be dropped when Hooman parses and persists the config.
|
|
30
37
|
5. `tools` only manages built-in runtime toggles exposed in `config.json`.
|
|
31
38
|
6. Any change to `config.json` or `instructions.md` requires restarting the running Hooman agent/session before it takes effect. In an interactive `chat` session, running the `/config` command applies this automatically: it reloads config and re-bootstraps the session on exit.
|
|
39
|
+
7. When editing `providers` or `llms`, preserve unrelated entries and API keys unless the user asks to remove or replace them.
|
|
32
40
|
|
|
33
41
|
## Full Config Shape
|
|
34
42
|
|
|
@@ -85,228 +93,25 @@ This is the default shape Hooman writes when `~/.hooman/config.json` is missing:
|
|
|
85
93
|
}
|
|
86
94
|
```
|
|
87
95
|
|
|
96
|
+
Hooman fills all optional sections with defaults on load and persist, so a minimal valid config is just `name`, `providers`, and `llms`.
|
|
97
|
+
|
|
88
98
|
## Top-Level Options
|
|
89
99
|
|
|
90
100
|
- `name`: non-empty display name for the agent.
|
|
91
|
-
- `providers`: required reusable provider definitions. Each entry has `name`, runtime `provider`, and provider-specific `options`.
|
|
92
|
-
- `llms`: required non-empty list of named LLM configs. Each entry has `name`, provider reference `provider`, model `options`, and `default`.
|
|
93
|
-
- `search`: optional web search config; defaults to disabled Brave.
|
|
101
|
+
- `providers`: required reusable provider definitions. Each entry has `name`, runtime `provider`, and provider-specific `options`. Supported runtime providers: `anthropic`, `azure`, `bedrock`, `google`, `groq`, `minimax`, `moonshot`, `ollama`, `openai`, `openrouter`, `xai` — details in `providers.md`.
|
|
102
|
+
- `llms`: required non-empty list of named LLM configs. Each entry has `name`, provider reference `provider`, model `options` (`model`, optional `temperature`, optional `maxTokens`), and `default` (mark exactly one entry `true`). Details in `providers.md`.
|
|
103
|
+
- `search`: optional web search config; defaults to disabled Brave. Details in `search.md`.
|
|
94
104
|
- `prompts`: optional built-in static prompt toggles; omitted fields default to `true`. Custom user instructions live in `~/.hooman/instructions.md`.
|
|
95
105
|
- `tools`: optional tool toggles and tool-specific settings.
|
|
96
106
|
- `compaction`: optional context compaction settings. `ratio` must be `0..1`; `keep` must be a non-negative integer.
|
|
97
107
|
|
|
98
|
-
## LLMs array
|
|
99
|
-
|
|
100
|
-
Each element of `llms` has:
|
|
101
|
-
|
|
102
|
-
- `name`: non-empty label for this entry.
|
|
103
|
-
- `provider`: provider reference name. It must match one of the entries in top-level `providers`.
|
|
104
|
-
- `options.model`: model id passed to the resolved runtime provider.
|
|
105
|
-
- `options.temperature`: optional normalized temperature override.
|
|
106
|
-
- `options.maxTokens`: optional normalized output token limit.
|
|
107
|
-
- `default`: boolean; mark one entry `"default": true` for the active model.
|
|
108
|
-
|
|
109
|
-
## Providers array
|
|
110
|
-
|
|
111
|
-
Each element of `providers` has:
|
|
112
|
-
|
|
113
|
-
- `name`: non-empty reference name used by `llms[].provider`.
|
|
114
|
-
- `provider`: runtime provider id such as `"openai"`, `"bedrock"`, or `"ollama"`.
|
|
115
|
-
- `options`: provider-specific shared settings such as API keys, base URL, headers, region, or AWS credentials.
|
|
116
|
-
|
|
117
|
-
Supported `providers[].provider` values:
|
|
118
|
-
|
|
119
|
-
```json
|
|
120
|
-
[
|
|
121
|
-
"anthropic",
|
|
122
|
-
"azure",
|
|
123
|
-
"bedrock",
|
|
124
|
-
"google",
|
|
125
|
-
"groq",
|
|
126
|
-
"minimax",
|
|
127
|
-
"moonshot",
|
|
128
|
-
"ollama",
|
|
129
|
-
"openai",
|
|
130
|
-
"openrouter",
|
|
131
|
-
"xai"
|
|
132
|
-
]
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
Common shape:
|
|
136
|
-
|
|
137
|
-
```json
|
|
138
|
-
{
|
|
139
|
-
"providers": [
|
|
140
|
-
{
|
|
141
|
-
"name": "Anthropic",
|
|
142
|
-
"provider": "anthropic",
|
|
143
|
-
"options": {
|
|
144
|
-
"apiKey": "..."
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
],
|
|
148
|
-
"llms": [
|
|
149
|
-
{
|
|
150
|
-
"name": "Claude Sonnet",
|
|
151
|
-
"provider": "Anthropic",
|
|
152
|
-
"options": {
|
|
153
|
-
"model": "claude-sonnet-4-20250514",
|
|
154
|
-
"temperature": 0.2,
|
|
155
|
-
"maxTokens": 4096
|
|
156
|
-
},
|
|
157
|
-
"default": true
|
|
158
|
-
}
|
|
159
|
-
]
|
|
160
|
-
}
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
Provider notes:
|
|
164
|
-
|
|
165
|
-
- `anthropic`: provider `options` support `apiKey`, optional `baseURL`, optional `headers`, and optional `reasoning` (an object with optional `effort` — `"minimal"`, `"low"`, `"medium"`, `"high"` — and optional `display` — `"summarized"` or `"omitted"`). Providing `reasoning` enables extended thinking (sent as `thinking: { type: "enabled", budget_tokens }`); `effort` defaults to `"medium"` and maps to an explicit budget (`minimal`→1024, `low`→2048, `medium`→4096, `high`→8192). When thinking is enabled Hooman drops any custom `temperature` (Anthropic requires it unset/`1`). `display` is for Bedrock Claude (via an Anthropic-compatible proxy) and MiniMax only: newer Bedrock Claude models (e.g. Opus 4.7+) hide reasoning by default and reject `type: "enabled"`, so set `display: "summarized"` to reveal reasoning — this switches the request to `thinking: { type: "adaptive", display }` with `output_config.effort` (`minimal`→`low`, else passthrough). Do NOT set `display` for the native Anthropic API (api.anthropic.com); it rejects `adaptive`/`display`/`output_config`. Omit `reasoning` to keep thinking off. LLM `options` support `model`, `temperature`, and `maxTokens`.
|
|
166
|
-
- `azure`: provider `options` support optional `resourceName`, optional `baseURL`, optional `apiKey`, optional `headers`, optional `apiVersion`, optional `useDeploymentBasedUrls`, and optional `reasoning` (an object with optional `effort` — `"minimal"`, `"low"`, `"medium"`, `"high"` — and optional `summary` — `"auto"`, `"concise"`, `"detailed"`, `"none"`). `reasoning` uses the Azure OpenAI Responses API; only reasoning-capable deployments honor it. LLM `options` support `model`, `temperature`, and `maxTokens`. The `model` value should be your Azure deployment name.
|
|
167
|
-
- `bedrock`: provider `options` support `region`, `accessKeyId`, `secretAccessKey`, `sessionToken`, optional `apiKey`, and optional `reasoning` (an object with optional `effort` and optional `display` — `"summarized"` or `"omitted"`). Providing `reasoning` enables extended thinking on supported models (e.g. Claude); because Bedrock's Converse API requires a budget, `effort` (default `"medium"`) maps to `budget_tokens` (`minimal`→1024, `low`→2048, `medium`→4096, `high`→8192). Ensure the LLM `maxTokens` exceeds the budget. Newer Bedrock Claude (e.g. Opus 4.7+) hide reasoning by default and reject `type: "enabled"`; set `display: "summarized"` to reveal it — this switches to `thinking: { type: "adaptive", display }` with `output_config.effort` (`minimal`→`low`, else passthrough) sent via `additionalRequestFields`. LLM `options` support `model`, `temperature`, and `maxTokens`.
|
|
168
|
-
- `google`: provider `options` support `apiKey` and optional `reasoning` (an object with optional `effort`). Setting `reasoning.effort` enables Gemini thinking with a dynamic budget (`thinkingConfig: { includeThoughts: true, thinkingBudget: -1 }`). LLM `options` support `model`, `temperature`, and `maxTokens` (Hooman maps this to the Google SDK's `maxOutputTokens` internally).
|
|
169
|
-
- `groq`: provider `options` support `apiKey`, optional `baseURL`, optional `headers`, and optional `reasoning` (an object with optional `effort`). `reasoning.effort` maps to Groq's `reasoning_effort` (`minimal`→`low`) and streams reasoning via `reasoning_format: "parsed"`. Only reasoning models honor it. LLM `options` support `model`, `temperature`, and `maxTokens`.
|
|
170
|
-
- `minimax`: provider `options` support `apiKey`, optional `headers`, and optional `reasoning` (an object with optional `effort` — `"minimal"`, `"low"`, `"medium"`, `"high"` — and optional `display` — `"summarized"` or `"omitted"`). Providing `reasoning` enables thinking, normalized to MiniMax's `thinking: { type: "adaptive", budget_tokens }`; `effort` defaults to `"medium"` and maps to an explicit budget (`minimal`→1024, `low`→2048, `medium`→4096, `high`→8192). Setting `display` switches to `thinking: { type: "adaptive", display }` with `output_config.effort` instead of a budget. Omit `reasoning` to keep thinking off. Hooman routes this through the Anthropic-compatible MiniMax endpoint automatically.
|
|
171
|
-
- `moonshot`: provider `options` support `apiKey`, optional `baseURL`, optional `headers`, and optional `reasoning` (an object with optional `effort`). Setting `reasoning.effort` enables Kimi thinking (`thinking: { type: "enabled" }`). Served through the reasoning-aware openai-compatible adapter, so Kimi's `reasoning_content` is surfaced as thinking. When `baseURL` is omitted, Hooman defaults it to `https://api.moonshot.ai/v1`. To reach Kimi through an OpenAI-compatible proxy (e.g. LiteLLM), use this provider with `baseURL` set to the proxy's `/v1` endpoint — the `openai` provider's Chat adapter would otherwise drop Kimi's reasoning.
|
|
172
|
-
- `ollama`: provider `options` support optional `baseURL` and optional `reasoning` (an object with optional `effort`). Setting `reasoning.effort` enables thinking, mapped to Ollama's `think` level (`minimal`/`low`→`"low"`, `medium`→`"medium"`, `high`→`"high"`). LLM `options` support `model`, `temperature`, and `maxTokens`.
|
|
173
|
-
- `openai`: provider `options` support `apiKey`, optional `baseURL`, optional `headers`, optional `api` (`"responses"` or `"chat"`, defaults to `"responses"`), and optional `reasoning` (an object with optional `effort` — `"minimal"`, `"low"`, `"medium"`, `"high"` — and optional `summary` — `"auto"` (default), `"concise"`, `"detailed"`, `"none"`). LLM `options` support `model`, `temperature`, and `maxTokens`. Use `"responses"` (the default) to surface model reasoning/thinking; set `"chat"` for OpenAI-compatible endpoints/proxies that do not implement the Responses API. Reasoning summaries stream only on the Responses API, and some models (e.g. GPT-5) require `reasoning.effort` of `"medium"` or higher to emit them; set `reasoning.summary` to `"none"` for non-reasoning models that reject the `reasoning` parameter. Note: `"chat"` mode does NOT surface reasoning (the Chat adapter drops `reasoning_content`); for a proxy that only exposes thinking via chat `reasoning_content` (e.g. Kimi/Moonshot), use the `moonshot` or `openrouter` provider instead. Also note the Responses API may return an empty reasoning item for non-OpenAI backends behind a proxy (they won't stream summary text).
|
|
174
|
-
- `openrouter`: provider `options` support `apiKey`, optional `baseURL`, optional `headers`, and optional `reasoning` (an object with optional `effort`). Served through the reasoning-aware openai-compatible adapter, so `reasoning`/`reasoning_content` deltas are surfaced as thinking. `reasoning.effort` maps to `reasoning_effort`, which OpenRouter normalizes for reasoning models. LLM `options` support `model`, `temperature`, and `maxTokens`. The `model` value is usually a provider-qualified OpenRouter model id such as `anthropic/claude-3.5-sonnet`.
|
|
175
|
-
- `xai`: provider `options` support `apiKey`, optional `baseURL`, optional `headers`, and optional `reasoning` (an object with optional `effort`). `reasoning.effort` maps to xAI's `reasoning_effort` (`low`/`high`; `minimal`/`low`→`low`, `medium`/`high`→`high`). Only reasoning models (e.g. grok-3-mini) honor it. LLM `options` support `model`, `temperature`, and `maxTokens`.
|
|
176
|
-
|
|
177
|
-
Examples:
|
|
178
|
-
|
|
179
|
-
```json
|
|
180
|
-
{
|
|
181
|
-
"providers": [
|
|
182
|
-
{
|
|
183
|
-
"name": "MiniMax",
|
|
184
|
-
"provider": "minimax",
|
|
185
|
-
"options": {
|
|
186
|
-
"apiKey": "..."
|
|
187
|
-
}
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
"name": "Kimi",
|
|
191
|
-
"provider": "moonshot",
|
|
192
|
-
"options": {
|
|
193
|
-
"apiKey": "..."
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
],
|
|
197
|
-
"llms": [
|
|
198
|
-
{
|
|
199
|
-
"name": "MiniMax M3",
|
|
200
|
-
"provider": "MiniMax",
|
|
201
|
-
"options": {
|
|
202
|
-
"model": "MiniMax-M3"
|
|
203
|
-
},
|
|
204
|
-
"default": true
|
|
205
|
-
},
|
|
206
|
-
{
|
|
207
|
-
"name": "Kimi K2.7 Code",
|
|
208
|
-
"provider": "Kimi",
|
|
209
|
-
"options": {
|
|
210
|
-
"model": "kimi-k2.7-code"
|
|
211
|
-
},
|
|
212
|
-
"default": false
|
|
213
|
-
}
|
|
214
|
-
]
|
|
215
|
-
}
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
```json
|
|
219
|
-
{
|
|
220
|
-
"providers": [
|
|
221
|
-
{
|
|
222
|
-
"name": "Bedrock",
|
|
223
|
-
"provider": "bedrock",
|
|
224
|
-
"options": {
|
|
225
|
-
"region": "us-west-2",
|
|
226
|
-
"accessKeyId": "AKIA...",
|
|
227
|
-
"secretAccessKey": "...",
|
|
228
|
-
"sessionToken": "..."
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
],
|
|
232
|
-
"llms": [
|
|
233
|
-
{
|
|
234
|
-
"name": "Claude Sonnet",
|
|
235
|
-
"provider": "Bedrock",
|
|
236
|
-
"options": {
|
|
237
|
-
"model": "anthropic.claude-sonnet-4-20250514-v1:0",
|
|
238
|
-
"temperature": 0.2,
|
|
239
|
-
"maxTokens": 4096
|
|
240
|
-
},
|
|
241
|
-
"default": true
|
|
242
|
-
}
|
|
243
|
-
]
|
|
244
|
-
}
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
When editing `providers` or `llms`, preserve unrelated entries and API keys unless the user asks to remove or replace them.
|
|
248
|
-
|
|
249
|
-
## Search
|
|
250
|
-
|
|
251
|
-
`search.provider` must be `"brave"`, `"exa"`, `"firecrawl"`, `"litellm"`, `"serper"`, or `"tavily"`.
|
|
252
|
-
|
|
253
|
-
```json
|
|
254
|
-
{
|
|
255
|
-
"search": {
|
|
256
|
-
"enabled": true,
|
|
257
|
-
"provider": "brave",
|
|
258
|
-
"brave": {
|
|
259
|
-
"apiKey": "..."
|
|
260
|
-
},
|
|
261
|
-
"exa": {
|
|
262
|
-
"apiKey": "..."
|
|
263
|
-
},
|
|
264
|
-
"firecrawl": {
|
|
265
|
-
"apiKey": "..."
|
|
266
|
-
},
|
|
267
|
-
"litellm": {
|
|
268
|
-
"baseURL": "https://your-litellm-host",
|
|
269
|
-
"apiKey": "sk-...",
|
|
270
|
-
"tool": "perplexity-search"
|
|
271
|
-
},
|
|
272
|
-
"serper": {
|
|
273
|
-
"apiKey": "..."
|
|
274
|
-
},
|
|
275
|
-
"tavily": {
|
|
276
|
-
"apiKey": "..."
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
Hooman calls Exa through the official **`exa-js`** SDK ([Exa search API](https://exa.ai/docs/reference/search-api-guide-for-coding-agents)).
|
|
283
|
-
|
|
284
|
-
Hooman calls Firecrawl through **`@mendable/firecrawl-js`** ([Firecrawl search API](https://docs.firecrawl.dev/api-reference/endpoint/search)).
|
|
285
|
-
|
|
286
|
-
The `litellm` provider calls a [LiteLLM](https://docs.litellm.ai/docs/search/) proxy's Perplexity-compatible `POST {baseURL}/v1/search/{tool}` endpoint using the virtual key as `apiKey`. It requires `baseURL`, `apiKey`, and `tool` (the `search_tool_name` registered on the proxy). The actual upstream search provider (perplexity, tavily, exa, brave, etc.) is chosen by the proxy config, so no provider API key is stored in Hooman.
|
|
287
|
-
|
|
288
|
-
Defaults: `enabled: false`, `provider: "brave"`, all provider API keys unset.
|
|
289
|
-
|
|
290
108
|
## Prompts
|
|
291
109
|
|
|
292
|
-
Each prompt toggle is optional and defaults to `true`. Coding and software-engineering guidance is not a config toggle; it lives in the built-in **hooman-coding** skill and is loaded when relevant (see the system prompt skills section).
|
|
293
|
-
|
|
294
|
-
```json
|
|
295
|
-
{
|
|
296
|
-
"prompts": {
|
|
297
|
-
"behaviour": true,
|
|
298
|
-
"communication": true,
|
|
299
|
-
"execution": true,
|
|
300
|
-
"guardrails": true
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
```
|
|
304
|
-
|
|
305
|
-
Set a prompt to `false` only when the user explicitly wants to omit that harness section.
|
|
110
|
+
Each prompt toggle (`behaviour`, `communication`, `execution`, `guardrails`) is optional and defaults to `true`. Set one to `false` only when the user explicitly wants to omit that harness section. Coding and software-engineering guidance is not a config toggle; it lives in the built-in **hooman-coding** skill and is loaded when relevant (see the system prompt skills section).
|
|
306
111
|
|
|
307
112
|
## Tools
|
|
308
113
|
|
|
309
|
-
Simple toggles:
|
|
114
|
+
Simple toggles, all enabled by default:
|
|
310
115
|
|
|
311
116
|
```json
|
|
312
117
|
{
|
|
@@ -321,27 +126,11 @@ Simple toggles:
|
|
|
321
126
|
}
|
|
322
127
|
```
|
|
323
128
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
```json
|
|
327
|
-
{
|
|
328
|
-
"tools": {
|
|
329
|
-
"subagents": {
|
|
330
|
-
"enabled": true
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
Defaults: `todo`, `fetch`, `filesystem`, `shell`, `sleep`, and `subagents` enabled. MCP servers and installed skills are not controlled by these toggles; do not inspect or edit them for this skill.
|
|
337
|
-
|
|
338
|
-
`subagents`: the default file Hooman writes when `config.json` is missing includes `tools.subagents.enabled: true`. If `tools` or `tools.subagents` is omitted, the merged config still defaults this toggle to enabled.
|
|
129
|
+
MCP servers and installed skills are not controlled by these toggles; do not inspect or edit them for this skill.
|
|
339
130
|
|
|
340
131
|
## Instructions
|
|
341
132
|
|
|
342
|
-
`~/.hooman/instructions.md` contains the user's custom instructions. Read or edit it only when the user asks about Hooman instructions, custom instructions, persistent guidance, or agent behavior that belongs outside `config.json`.
|
|
343
|
-
|
|
344
|
-
Keep instruction edits focused and preserve existing wording unless the user asks for a rewrite.
|
|
133
|
+
`~/.hooman/instructions.md` contains the user's custom instructions. Read or edit it only when the user asks about Hooman instructions, custom instructions, persistent guidance, or agent behavior that belongs outside `config.json`. Keep instruction edits focused and preserve existing wording unless the user asks for a rewrite.
|
|
345
134
|
|
|
346
135
|
## Compaction
|
|
347
136
|
|
|
@@ -356,30 +145,3 @@ Keep instruction edits focused and preserve existing wording unless the user ask
|
|
|
356
145
|
|
|
357
146
|
- `ratio`: target fraction of context after compaction, from `0` to `1`.
|
|
358
147
|
- `keep`: minimum number of recent turns/message groups to preserve verbatim.
|
|
359
|
-
|
|
360
|
-
## Minimal Valid Config
|
|
361
|
-
|
|
362
|
-
```json
|
|
363
|
-
{
|
|
364
|
-
"name": "Hooman",
|
|
365
|
-
"providers": [
|
|
366
|
-
{
|
|
367
|
-
"name": "Ollama",
|
|
368
|
-
"provider": "ollama",
|
|
369
|
-
"options": {}
|
|
370
|
-
}
|
|
371
|
-
],
|
|
372
|
-
"llms": [
|
|
373
|
-
{
|
|
374
|
-
"name": "Default",
|
|
375
|
-
"provider": "Ollama",
|
|
376
|
-
"options": {
|
|
377
|
-
"model": "gemma4:e4b"
|
|
378
|
-
},
|
|
379
|
-
"default": true
|
|
380
|
-
}
|
|
381
|
-
]
|
|
382
|
-
}
|
|
383
|
-
```
|
|
384
|
-
|
|
385
|
-
Hooman fills all optional sections with defaults on load and persist.
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# Hooman Providers And LLMs Reference
|
|
2
|
+
|
|
3
|
+
Detailed provider-specific options for `~/.hooman/config.json` `providers` and `llms`.
|
|
4
|
+
|
|
5
|
+
## LLMs array
|
|
6
|
+
|
|
7
|
+
Each element of `llms` has:
|
|
8
|
+
|
|
9
|
+
- `name`: non-empty label for this entry.
|
|
10
|
+
- `provider`: provider reference name. It must match one of the entries in top-level `providers`.
|
|
11
|
+
- `options.model`: model id passed to the resolved runtime provider.
|
|
12
|
+
- `options.temperature`: optional normalized temperature override.
|
|
13
|
+
- `options.maxTokens`: optional normalized output token limit.
|
|
14
|
+
- `default`: boolean; mark one entry `"default": true` for the active model.
|
|
15
|
+
|
|
16
|
+
## Providers array
|
|
17
|
+
|
|
18
|
+
Each element of `providers` has:
|
|
19
|
+
|
|
20
|
+
- `name`: non-empty reference name used by `llms[].provider`.
|
|
21
|
+
- `provider`: runtime provider id such as `"openai"`, `"bedrock"`, or `"ollama"`.
|
|
22
|
+
- `options`: provider-specific shared settings such as API keys, base URL, headers, region, or AWS credentials.
|
|
23
|
+
|
|
24
|
+
Supported `providers[].provider` values:
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
[
|
|
28
|
+
"anthropic",
|
|
29
|
+
"azure",
|
|
30
|
+
"bedrock",
|
|
31
|
+
"google",
|
|
32
|
+
"groq",
|
|
33
|
+
"minimax",
|
|
34
|
+
"moonshot",
|
|
35
|
+
"ollama",
|
|
36
|
+
"openai",
|
|
37
|
+
"openrouter",
|
|
38
|
+
"xai"
|
|
39
|
+
]
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Common shape:
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"providers": [
|
|
47
|
+
{
|
|
48
|
+
"name": "Anthropic",
|
|
49
|
+
"provider": "anthropic",
|
|
50
|
+
"options": {
|
|
51
|
+
"apiKey": "..."
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"llms": [
|
|
56
|
+
{
|
|
57
|
+
"name": "Claude Sonnet",
|
|
58
|
+
"provider": "Anthropic",
|
|
59
|
+
"options": {
|
|
60
|
+
"model": "claude-sonnet-4-20250514",
|
|
61
|
+
"temperature": 0.2,
|
|
62
|
+
"maxTokens": 4096
|
|
63
|
+
},
|
|
64
|
+
"default": true
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Provider notes
|
|
71
|
+
|
|
72
|
+
- `anthropic`: provider `options` support `apiKey`, optional `baseURL`, optional `headers`, and optional `reasoning` (an object with optional `effort` — `"minimal"`, `"low"`, `"medium"`, `"high"` — and optional `display` — `"summarized"` or `"omitted"`). Providing `reasoning` enables extended thinking (sent as `thinking: { type: "enabled", budget_tokens }`); `effort` defaults to `"medium"` and maps to an explicit budget (`minimal`→1024, `low`→2048, `medium`→4096, `high`→8192). When thinking is enabled Hooman drops any custom `temperature` (Anthropic requires it unset/`1`). `display` is for Bedrock Claude (via an Anthropic-compatible proxy) and MiniMax only: newer Bedrock Claude models (e.g. Opus 4.7+) hide reasoning by default and reject `type: "enabled"`, so set `display: "summarized"` to reveal reasoning — this switches the request to `thinking: { type: "adaptive", display }` with `output_config.effort` (`minimal`→`low`, else passthrough). Do NOT set `display` for the native Anthropic API (api.anthropic.com); it rejects `adaptive`/`display`/`output_config`. Omit `reasoning` to keep thinking off. LLM `options` support `model`, `temperature`, and `maxTokens`.
|
|
73
|
+
- `azure`: provider `options` support optional `resourceName`, optional `baseURL`, optional `apiKey`, optional `headers`, optional `apiVersion`, optional `useDeploymentBasedUrls`, and optional `reasoning` (an object with optional `effort` — `"minimal"`, `"low"`, `"medium"`, `"high"` — and optional `summary` — `"auto"`, `"concise"`, `"detailed"`, `"none"`). `reasoning` uses the Azure OpenAI Responses API; only reasoning-capable deployments honor it. LLM `options` support `model`, `temperature`, and `maxTokens`. The `model` value should be your Azure deployment name.
|
|
74
|
+
- `bedrock`: provider `options` support `region`, `accessKeyId`, `secretAccessKey`, `sessionToken`, optional `apiKey`, and optional `reasoning` (an object with optional `effort` and optional `display` — `"summarized"` or `"omitted"`). Providing `reasoning` enables extended thinking on supported models (e.g. Claude); because Bedrock's Converse API requires a budget, `effort` (default `"medium"`) maps to `budget_tokens` (`minimal`→1024, `low`→2048, `medium`→4096, `high`→8192). Ensure the LLM `maxTokens` exceeds the budget. Newer Bedrock Claude (e.g. Opus 4.7+) hide reasoning by default and reject `type: "enabled"`; set `display: "summarized"` to reveal it — this switches to `thinking: { type: "adaptive", display }` with `output_config.effort` (`minimal`→`low`, else passthrough) sent via `additionalRequestFields`. LLM `options` support `model`, `temperature`, and `maxTokens`.
|
|
75
|
+
- `google`: provider `options` support `apiKey` and optional `reasoning` (an object with optional `effort`). Setting `reasoning.effort` enables Gemini thinking with a dynamic budget (`thinkingConfig: { includeThoughts: true, thinkingBudget: -1 }`). LLM `options` support `model`, `temperature`, and `maxTokens` (Hooman maps this to the Google SDK's `maxOutputTokens` internally).
|
|
76
|
+
- `groq`: provider `options` support `apiKey`, optional `baseURL`, optional `headers`, and optional `reasoning` (an object with optional `effort`). `reasoning.effort` maps to Groq's `reasoning_effort` (`minimal`→`low`) and streams reasoning via `reasoning_format: "parsed"`. Only reasoning models honor it. LLM `options` support `model`, `temperature`, and `maxTokens`.
|
|
77
|
+
- `minimax`: provider `options` support `apiKey`, optional `headers`, and optional `reasoning` (an object with optional `effort` — `"minimal"`, `"low"`, `"medium"`, `"high"` — and optional `display` — `"summarized"` or `"omitted"`). Providing `reasoning` enables thinking, normalized to MiniMax's `thinking: { type: "adaptive", budget_tokens }`; `effort` defaults to `"medium"` and maps to an explicit budget (`minimal`→1024, `low`→2048, `medium`→4096, `high`→8192). Setting `display` switches to `thinking: { type: "adaptive", display }` with `output_config.effort` instead of a budget. Omit `reasoning` to keep thinking off. Hooman routes this through the Anthropic-compatible MiniMax endpoint automatically.
|
|
78
|
+
- `moonshot`: provider `options` support `apiKey`, optional `baseURL`, optional `headers`, and optional `reasoning` (an object with optional `effort`). Setting `reasoning.effort` enables Kimi thinking (`thinking: { type: "enabled" }`). Served through the reasoning-aware openai-compatible adapter, so Kimi's `reasoning_content` is surfaced as thinking. When `baseURL` is omitted, Hooman defaults it to `https://api.moonshot.ai/v1`. To reach Kimi through an OpenAI-compatible proxy (e.g. LiteLLM), use this provider with `baseURL` set to the proxy's `/v1` endpoint — the `openai` provider's Chat adapter would otherwise drop Kimi's reasoning.
|
|
79
|
+
- `ollama`: provider `options` support optional `baseURL` and optional `reasoning` (an object with optional `effort`). Setting `reasoning.effort` enables thinking, mapped to Ollama's `think` level (`minimal`/`low`→`"low"`, `medium`→`"medium"`, `high`→`"high"`). LLM `options` support `model`, `temperature`, and `maxTokens`.
|
|
80
|
+
- `openai`: provider `options` support `apiKey`, optional `baseURL`, optional `headers`, optional `api` (`"responses"` or `"chat"`, defaults to `"responses"`), and optional `reasoning` (an object with optional `effort` — `"minimal"`, `"low"`, `"medium"`, `"high"` — and optional `summary` — `"auto"` (default), `"concise"`, `"detailed"`, `"none"`). LLM `options` support `model`, `temperature`, and `maxTokens`. Use `"responses"` (the default) to surface model reasoning/thinking; set `"chat"` for OpenAI-compatible endpoints/proxies that do not implement the Responses API. Reasoning summaries stream only on the Responses API, and some models (e.g. GPT-5) require `reasoning.effort` of `"medium"` or higher to emit them; set `reasoning.summary` to `"none"` for non-reasoning models that reject the `reasoning` parameter. Note: `"chat"` mode does NOT surface reasoning (the Chat adapter drops `reasoning_content`); for a proxy that only exposes thinking via chat `reasoning_content` (e.g. Kimi/Moonshot), use the `moonshot` or `openrouter` provider instead. Also note the Responses API may return an empty reasoning item for non-OpenAI backends behind a proxy (they won't stream summary text).
|
|
81
|
+
- `openrouter`: provider `options` support `apiKey`, optional `baseURL`, optional `headers`, and optional `reasoning` (an object with optional `effort`). Served through the reasoning-aware openai-compatible adapter, so `reasoning`/`reasoning_content` deltas are surfaced as thinking. `reasoning.effort` maps to `reasoning_effort`, which OpenRouter normalizes for reasoning models. LLM `options` support `model`, `temperature`, and `maxTokens`. The `model` value is usually a provider-qualified OpenRouter model id such as `anthropic/claude-3.5-sonnet`.
|
|
82
|
+
- `xai`: provider `options` support `apiKey`, optional `baseURL`, optional `headers`, and optional `reasoning` (an object with optional `effort`). `reasoning.effort` maps to xAI's `reasoning_effort` (`low`/`high`; `minimal`/`low`→`low`, `medium`/`high`→`high`). Only reasoning models (e.g. grok-3-mini) honor it. LLM `options` support `model`, `temperature`, and `maxTokens`.
|
|
83
|
+
|
|
84
|
+
## Examples
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"providers": [
|
|
89
|
+
{
|
|
90
|
+
"name": "MiniMax",
|
|
91
|
+
"provider": "minimax",
|
|
92
|
+
"options": {
|
|
93
|
+
"apiKey": "..."
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"name": "Kimi",
|
|
98
|
+
"provider": "moonshot",
|
|
99
|
+
"options": {
|
|
100
|
+
"apiKey": "..."
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"llms": [
|
|
105
|
+
{
|
|
106
|
+
"name": "MiniMax M3",
|
|
107
|
+
"provider": "MiniMax",
|
|
108
|
+
"options": {
|
|
109
|
+
"model": "MiniMax-M3"
|
|
110
|
+
},
|
|
111
|
+
"default": true
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"name": "Kimi K2.7 Code",
|
|
115
|
+
"provider": "Kimi",
|
|
116
|
+
"options": {
|
|
117
|
+
"model": "kimi-k2.7-code"
|
|
118
|
+
},
|
|
119
|
+
"default": false
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
```json
|
|
126
|
+
{
|
|
127
|
+
"providers": [
|
|
128
|
+
{
|
|
129
|
+
"name": "Bedrock",
|
|
130
|
+
"provider": "bedrock",
|
|
131
|
+
"options": {
|
|
132
|
+
"region": "us-west-2",
|
|
133
|
+
"accessKeyId": "AKIA...",
|
|
134
|
+
"secretAccessKey": "...",
|
|
135
|
+
"sessionToken": "..."
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
],
|
|
139
|
+
"llms": [
|
|
140
|
+
{
|
|
141
|
+
"name": "Claude Sonnet",
|
|
142
|
+
"provider": "Bedrock",
|
|
143
|
+
"options": {
|
|
144
|
+
"model": "anthropic.claude-sonnet-4-20250514-v1:0",
|
|
145
|
+
"temperature": 0.2,
|
|
146
|
+
"maxTokens": 4096
|
|
147
|
+
},
|
|
148
|
+
"default": true
|
|
149
|
+
}
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
When editing `providers` or `llms`, preserve unrelated entries and API keys unless the user asks to remove or replace them.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Hooman Search Config Reference
|
|
2
|
+
|
|
3
|
+
`search.provider` must be `"brave"`, `"exa"`, `"firecrawl"`, `"litellm"`, `"serper"`, or `"tavily"`.
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
{
|
|
7
|
+
"search": {
|
|
8
|
+
"enabled": true,
|
|
9
|
+
"provider": "brave",
|
|
10
|
+
"brave": {
|
|
11
|
+
"apiKey": "..."
|
|
12
|
+
},
|
|
13
|
+
"exa": {
|
|
14
|
+
"apiKey": "..."
|
|
15
|
+
},
|
|
16
|
+
"firecrawl": {
|
|
17
|
+
"apiKey": "..."
|
|
18
|
+
},
|
|
19
|
+
"litellm": {
|
|
20
|
+
"baseURL": "https://your-litellm-host",
|
|
21
|
+
"apiKey": "sk-...",
|
|
22
|
+
"tool": "perplexity-search"
|
|
23
|
+
},
|
|
24
|
+
"serper": {
|
|
25
|
+
"apiKey": "..."
|
|
26
|
+
},
|
|
27
|
+
"tavily": {
|
|
28
|
+
"apiKey": "..."
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Notes:
|
|
35
|
+
|
|
36
|
+
- Hooman calls Exa through the official **`exa-js`** SDK ([Exa search API](https://exa.ai/docs/reference/search-api-guide-for-coding-agents)).
|
|
37
|
+
- Hooman calls Firecrawl through **`@mendable/firecrawl-js`** ([Firecrawl search API](https://docs.firecrawl.dev/api-reference/endpoint/search)).
|
|
38
|
+
- The `litellm` provider calls a [LiteLLM](https://docs.litellm.ai/docs/search/) proxy's Perplexity-compatible `POST {baseURL}/v1/search/{tool}` endpoint using the virtual key as `apiKey`. It requires `baseURL`, `apiKey`, and `tool` (the `search_tool_name` registered on the proxy). The actual upstream search provider (perplexity, tavily, exa, brave, etc.) is chosen by the proxy config, so no provider API key is stored in Hooman.
|
|
39
|
+
- Defaults: `enabled: false`, `provider: "brave"`, all provider API keys unset.
|