@markusylisiurunen/tau 0.3.91 → 0.3.93
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/core/cli.js +0 -3
- package/dist/core/cli.js.map +1 -1
- package/dist/core/code_mode/sdk.js +0 -1
- package/dist/core/code_mode/sdk.js.map +1 -1
- package/dist/core/config/content_loader.js +1 -3
- package/dist/core/config/content_loader.js.map +1 -1
- package/dist/core/config/index.js +1 -1
- package/dist/core/config/index.js.map +1 -1
- package/dist/core/config/schema.js +0 -67
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/index.js +0 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/models/openrouter.js +6 -0
- package/dist/core/models/openrouter.js.map +1 -1
- package/dist/core/personas.js +30 -4
- package/dist/core/personas.js.map +1 -1
- package/dist/core/static/tau_docs/config-reference.md +0 -24
- package/dist/core/static/tau_docs/configuration.md +1 -1
- package/dist/core/static/tau_docs/credentials.md +3 -18
- package/dist/core/static/tau_docs/index.md +0 -1
- package/dist/core/static/tau_docs/manifest.json +0 -1
- package/dist/core/static/tau_docs/openrouter.md +1 -0
- package/dist/core/static/tau_docs/personas.md +4 -4
- package/dist/core/static/tau_docs/security.md +6 -18
- package/dist/core/static/tau_docs/subagents.md +0 -1
- package/dist/core/static/tau_docs/tools.md +6 -8
- package/dist/core/static/tau_docs/troubleshooting.md +10 -12
- package/dist/core/static/tau_docs/tui.md +1 -0
- package/dist/core/subagents/claude_code_runner.mjs +43 -43
- package/dist/core/subagents/registry.js +1 -2
- package/dist/core/subagents/registry.js.map +1 -1
- package/dist/core/subagents/types.js +1 -2
- package/dist/core/subagents/types.js.map +1 -1
- package/dist/core/telegram/workspace.js +1 -1
- package/dist/core/telegram/workspace.js.map +1 -1
- package/dist/core/tools/code.js +0 -3
- package/dist/core/tools/code.js.map +1 -1
- package/dist/core/tools/presentation.js +1 -2
- package/dist/core/tools/presentation.js.map +1 -1
- package/dist/core/tools/tool_names.js +1 -3
- package/dist/core/tools/tool_names.js.map +1 -1
- package/dist/core/utils/speech.js +6 -2
- package/dist/core/utils/speech.js.map +1 -1
- package/dist/core/version.js +1 -1
- package/dist/diff_tool/app/dist/assets/{core-DVIaxTZj.js → core-DaUcjNBm.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{highlights-BKf96Xcr.js → highlights-ey_YWY7Q.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{index-DKDNDuYd.js → index-B7CqEx6P.js} +19 -19
- package/dist/diff_tool/app/dist/assets/langs-BAlu0Oiy.js +1 -0
- package/dist/diff_tool/app/dist/assets/{shiki-DmA--L4w.js → shiki-BDtWTy6K.js} +2 -2
- package/dist/diff_tool/app/dist/assets/{stream-tokenizer-5ezp0vCr.js → stream-tokenizer-Dpnp6Te1.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{themes-BNoMSXBX.js → themes-snQUZ0v5.js} +2 -2
- package/dist/diff_tool/app/dist/index.html +1 -1
- package/dist/main.js +0 -23
- package/dist/main.js.map +1 -1
- package/package.json +4 -5
- package/dist/core/code_mode/nook.js +0 -226
- package/dist/core/code_mode/nook.js.map +0 -1
- package/dist/core/nook/cli.js +0 -258
- package/dist/core/nook/cli.js.map +0 -1
- package/dist/core/nook/client.js +0 -372
- package/dist/core/nook/client.js.map +0 -1
- package/dist/core/nook/deploy.js +0 -152
- package/dist/core/nook/deploy.js.map +0 -1
- package/dist/core/nook/index.js +0 -5
- package/dist/core/nook/index.js.map +0 -1
- package/dist/core/nook/setup.js +0 -429
- package/dist/core/nook/setup.js.map +0 -1
- package/dist/core/nook/validation.js +0 -164
- package/dist/core/nook/validation.js.map +0 -1
- package/dist/core/static/code_mode/nook/documentation.md +0 -144
- package/dist/core/static/code_mode/nook/sandbox_runner.mjs +0 -1
- package/dist/core/static/tau_docs/nook.md +0 -270
- package/dist/diff_tool/app/dist/assets/langs-D3RgqfNW.js +0 -1
- package/dist/nook/worker/index.js +0 -1175
- package/dist/nook/worker/index.js.map +0 -1
|
@@ -30,7 +30,6 @@ Project and global content can change which persona ids exist. A configured defa
|
|
|
30
30
|
| `subagents` | Object | Global, project | Most-specific `launchModels` list | Session runtime; `/reload` or new session |
|
|
31
31
|
| `modelSystemNotices` | String map | Global, project | Merge by model target | Session runtime; `/reload`, affects later inputs |
|
|
32
32
|
| `flySprites` | Object | Global, project | Merge connection fields | Host startup; host restart |
|
|
33
|
-
| `nook` | Object | Global, project | Most-specific complete object | Host tool runtime; `/reload` or new session |
|
|
34
33
|
| `history` | Object | Global only | One global object | Host startup; host restart |
|
|
35
34
|
| `mcpServers` | Object keyed by server name | Global and project | Merge names; nearer entry replaces | Host startup; host restart |
|
|
36
35
|
|
|
@@ -180,29 +179,6 @@ Speech uses Eleven v4 Turbo, the delivery note `[Brisk but relaxed, speaking nat
|
|
|
180
179
|
|
|
181
180
|
The TUI reads these speech settings from its own client configuration, including project configuration discovered from its startup directory, also when attached to a remote host. It does not load vocabulary from the remote session's repository. Telegram reads it from the runner's startup configuration, not from session workspaces. Restart the respective process after changes. This setting does not affect the explicit voices supplied to `tau tool speech-generate`.
|
|
182
181
|
|
|
183
|
-
### `nook`
|
|
184
|
-
|
|
185
|
-
Connection details for one existing Nook deployment:
|
|
186
|
-
|
|
187
|
-
| Nested field | Type | Required | Contract |
|
|
188
|
-
| --- | --- | --- | --- |
|
|
189
|
-
| `domain` | Non-empty string | Yes | DNS hostname, optionally supplied as a plain `http://` or `https://` origin with no port, path, query, credentials, or fragment |
|
|
190
|
-
| `accessClientId` | Non-empty string | No | Cloudflare Access service-token client id |
|
|
191
|
-
| `accessClientSecret` | Non-empty string | No | Inline service-token secret |
|
|
192
|
-
| `accessClientSecretEnv` | Non-empty string | No | Host environment variable containing the secret |
|
|
193
|
-
|
|
194
|
-
```json
|
|
195
|
-
{
|
|
196
|
-
"nook": {
|
|
197
|
-
"domain": "apps.example.com",
|
|
198
|
-
"accessClientId": "8f0c...access",
|
|
199
|
-
"accessClientSecretEnv": "NOOK_ACCESS_CLIENT_SECRET"
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
Tau normalizes the domain to a lowercase hostname. A non-empty value from `accessClientSecretEnv` wins over `accessClientSecret`. The `nook` tool is available only when the active persona allows it and the effective configuration contains this object. See [Nook](nook.md).
|
|
205
|
-
|
|
206
182
|
### `history`
|
|
207
183
|
|
|
208
184
|
A global-only remote history target:
|
|
@@ -180,7 +180,7 @@ The Telegram runner loads its speech provider and its runner config at startup.
|
|
|
180
180
|
|
|
181
181
|
**Editing the host's files for a hosted environment.** A hosted execution environment has its own project files and home. Put project `.tau` content on that environment, not at a similar path on the host.
|
|
182
182
|
|
|
183
|
-
**Expecting nested objects to deep-merge.** A nearer `mcpServers` entry replaces the whole entry with the same name, including its credentials
|
|
183
|
+
**Expecting nested objects to deep-merge.** A nearer `mcpServers` entry replaces the whole entry with the same name, including its credentials. Repeat every setting the entry needs.
|
|
184
184
|
|
|
185
185
|
**Expecting `/reload` to restart the client or server.** Reload affects only the current session. Restart the process that reads the setting at startup.
|
|
186
186
|
|
|
@@ -15,7 +15,6 @@ The host makes model calls and runs services such as web search and remote histo
|
|
|
15
15
|
| OpenAI Codex OAuth accounts | Session host home |
|
|
16
16
|
| Exa-backed `web.search` and `web.fetch` | Session host |
|
|
17
17
|
| Remote history replication and queries | Session host |
|
|
18
|
-
| Nook host tool | Session host |
|
|
19
18
|
| Fly Sprite API | Session host startup |
|
|
20
19
|
| `/listen` and `/speak` | TUI client |
|
|
21
20
|
| Telegram transcription and voice responses | Telegram runner |
|
|
@@ -113,9 +112,9 @@ tau auth logout codex --account developer@example.com
|
|
|
113
112
|
|
|
114
113
|
Every new request reads the current auth storage, in every session. Switching accounts takes effect without a host restart and does not affect a request already in progress.
|
|
115
114
|
|
|
116
|
-
## History
|
|
115
|
+
## History indirection
|
|
117
116
|
|
|
118
|
-
History
|
|
117
|
+
History can name environment variables instead of embedding secrets in configuration.
|
|
119
118
|
|
|
120
119
|
Remote history is global-only configuration:
|
|
121
120
|
|
|
@@ -136,20 +135,6 @@ History resolves its API key in this order:
|
|
|
136
135
|
|
|
137
136
|
If `history` is configured but no key is found, the host fails to start. Without `history`, history stays on the host machine. See [history](history.md) for service behavior.
|
|
138
137
|
|
|
139
|
-
A Nook Access service token uses an ID plus a secret:
|
|
140
|
-
|
|
141
|
-
```json
|
|
142
|
-
{
|
|
143
|
-
"nook": {
|
|
144
|
-
"domain": "apps.example.net",
|
|
145
|
-
"accessClientId": "service-token-id.access",
|
|
146
|
-
"accessClientSecretEnv": "NOOK_ACCESS_CLIENT_SECRET"
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
If the variable named by `accessClientSecretEnv` has a non-empty value, it wins over inline `accessClientSecret`. Otherwise Tau uses the inline value. The process that performs the Nook operation reads the secret: the host for the session tool, and the CLI process for `tau nook` commands. Nook setup and destroy also accept the command flags and environment variables listed in [Nook](nook.md). See [Nook](nook.md).
|
|
152
|
-
|
|
153
138
|
## Hosted execution credentials
|
|
154
139
|
|
|
155
140
|
The Fly Sprite connection is host configuration. It must be in place when the host starts, before a client asks for a Sprite session. The connection needs a token:
|
|
@@ -174,7 +159,7 @@ Check a credential by using it, without printing its value:
|
|
|
174
159
|
- Run `tau auth list` to check Codex identities, the active account, refresh status, and usage windows.
|
|
175
160
|
- Restart the process that uses `apiKeys` after changing them.
|
|
176
161
|
- Make a small request with the intended persona to verify model authentication and endpoint access.
|
|
177
|
-
- After setting Exa, speech, history,
|
|
162
|
+
- After setting Exa, speech, history, or Fly credentials, use that feature. If a credential is missing, the error names where Tau looks for it.
|
|
178
163
|
- For remote sessions, first confirm which machine is the host and which process runs the feature.
|
|
179
164
|
|
|
180
165
|
Do not check by printing the environment, `config.json`, or `auth.json` into a transcript. If a secret ends up in shell history, logs, a session, or version control, rotate it at the provider and replace it. Broader handling guidance is in [security](security.md) and failure checks are in [troubleshooting](troubleshooting.md).
|
|
@@ -35,7 +35,6 @@ These pages describe how to install, configure, operate, and integrate the versi
|
|
|
35
35
|
- [Sessions](sessions.md): creating sessions, turns, queueing, compaction, rewind, recovery, and storage.
|
|
36
36
|
- [Remote sessions](remote-sessions.md): `serve`, `attach`, remote paths, and authentication.
|
|
37
37
|
- [History](history.md): searchable local history, optional remote replication, and the history tool.
|
|
38
|
-
- [Nook](nook.md): setting up and running the optional static mini-app platform.
|
|
39
38
|
- [Telegram](telegram.md): running the Telegram runner, bot access, chat commands, attachments, and recovery.
|
|
40
39
|
- [Telegram projects and workspaces](telegram-projects.md): repository, persistent-directory, and composite projects, workspace lifecycle, and provision hooks.
|
|
41
40
|
|
|
@@ -30,6 +30,7 @@ Every request needs an exact `--model` ID from this table. There is no default,
|
|
|
30
30
|
| `decisions` | `typesafe/jev-1.14` | Questions about text, structured state, or images; use for high-volume decisions when cost is the priority | Not supported |
|
|
31
31
|
| `chat` | `google/gemini-3.8-flash` | Text, images, audio, video; first choice for audio/video and image-heavy analysis | `low`, `medium`, `high` |
|
|
32
32
|
| `chat` | `openai/gpt-6-luna` | Text and images; cheap everyday extraction, summarization, and routine questions | `none`, `low`, `medium`, `high`, `xhigh`, `max` |
|
|
33
|
+
| `chat` | `openai/gpt-6.1-terra` | Text and images; efficient visual reasoning, writing, and everyday coding | `low`, `medium`, `high`, `xhigh`, `max` |
|
|
33
34
|
| `chat` | `openai/gpt-6.1-sol` | Text and images; coding, debugging, technical reasoning | `low`, `medium`, `high`, `xhigh`, `max` |
|
|
34
35
|
| `chat` | `anthropic/claude-opus-5.5` | Text and images; premium generalist for writing, synthesis, difficult reasoning, and second opinions | `low`, `medium`, `high`, `xhigh`, `max` |
|
|
35
36
|
|
|
@@ -10,7 +10,7 @@ Built-in personas are generated from Tau's current model catalog. Most model fam
|
|
|
10
10
|
|
|
11
11
|
The Opus 5.5 chat and coder personas are available only when `anthropic/claude-opus-5-5` is present in the effective model catalog. The Sonnet 5.5 variants (`sonnet-5.5-chat` and `sonnet-5.5-coder`) likewise require `anthropic/claude-sonnet-5-5`.
|
|
12
12
|
|
|
13
|
-
GPT-6.1 Sol, GPT-6 Luna, and GPT-6 Astra have API and ChatGPT variants for chat and coding. Fast ChatGPT variants use priority service and are available only for coding. They are available only when the effective catalog contains the matching model ID (`gpt-6.1-sol`, `gpt-6-luna`, or `gpt-6-astra`) for the corresponding provider.
|
|
13
|
+
GPT-6.1 Sol, GPT-6.1 Terra, GPT-6 Luna, and GPT-6 Astra have API and ChatGPT variants for chat and coding. Fast ChatGPT variants use priority service and are available only for coding. They are available only when the effective catalog contains the matching model ID (`gpt-6.1-sol`, `gpt-6.1-terra`, `gpt-6-luna`, or `gpt-6-astra`) for the corresponding provider.
|
|
14
14
|
|
|
15
15
|
All built-in personas default to medium reasoning. The startup default is `sonnet-5.5-coder`.
|
|
16
16
|
|
|
@@ -97,12 +97,12 @@ Every persona can use all discovered skills. If a custom persona omits `tools`,
|
|
|
97
97
|
|
|
98
98
|
The selectable tool names are:
|
|
99
99
|
|
|
100
|
-
- `bash`, `write`, `edit`, `view_image`, `web`, `
|
|
100
|
+
- `bash`, `write`, `edit`, `view_image`, `web`, `history`, `mcp`, and `models`;
|
|
101
101
|
- `spawn_agent`, `send_input_to_agent`, `wait_for_agents`, `list_agents`, and `interrupt_agent`.
|
|
102
102
|
|
|
103
|
-
Names such as `web`, `
|
|
103
|
+
Names such as `web`, `history`, `mcp`, and `models` enable capabilities inside the `code` tool, and `bash` also enables `tau.bash`. Tau builds the `code` tool from whichever of these capabilities are selected and usable.
|
|
104
104
|
|
|
105
|
-
A `tools` list replaces the defaults. Names are lowercased and duplicates removed. An unknown name makes the persona invalid. `tools: []` gives the persona none of these tools. The built-in `tau_docs` tool is always available, independent of this list. `
|
|
105
|
+
A `tools` list replaces the defaults. Names are lowercased and duplicates removed. An unknown name makes the persona invalid. `tools: []` gives the persona none of these tools. The built-in `tau_docs` tool is always available, independent of this list. `mcp` works only when the host has enabled MCP servers. [Tools](tools.md) explains eligibility and ownership.
|
|
106
106
|
|
|
107
107
|
## Selecting a persona
|
|
108
108
|
|
|
@@ -30,7 +30,7 @@ Trusting a repository therefore means trusting this content. Before using a repo
|
|
|
30
30
|
|
|
31
31
|
- persona system prompts, tool lists, and model launch allowlists;
|
|
32
32
|
- skill instructions and any scripts they direct the agent to run;
|
|
33
|
-
- project configuration that sets
|
|
33
|
+
- project configuration that sets model notices or hosted-environment connections;
|
|
34
34
|
- `enabledClientTools`, which can turn on commands from your global configuration; and
|
|
35
35
|
- provision scripts or other repository automation used by integrations such as Telegram.
|
|
36
36
|
|
|
@@ -46,7 +46,7 @@ A Tau host that runs models refreshes compatible provider catalogs from `pi.dev`
|
|
|
46
46
|
|
|
47
47
|
## Keep secrets with the process that needs them
|
|
48
48
|
|
|
49
|
-
Most model and service credentials belong on the host, because the host makes model calls, web searches,
|
|
49
|
+
Most model and service credentials belong on the host, because the host makes model calls, performs web searches, and replicates history. TUI speech credentials and command client tool credentials belong on the client. Telegram bot, transcription, and voice credentials belong to the Telegram runner. Credentials for hosted execution environments belong in the host's startup configuration.
|
|
50
50
|
|
|
51
51
|
When attached to a remote host, a credential exported on the laptop does not reach the host. Putting a host credential into the execution environment's shell would needlessly expose it to every process there. See [credentials](credentials.md) for which source wins.
|
|
52
52
|
|
|
@@ -57,12 +57,11 @@ Never put credentials in:
|
|
|
57
57
|
- committed project files;
|
|
58
58
|
- persona, prompt, skill, `AGENTS.md`, or model-notice text;
|
|
59
59
|
- Bash command lines likely to enter shell history or process listings;
|
|
60
|
-
- tool results, session messages, issue comments, or debug output
|
|
61
|
-
- Nook static assets or browser KV.
|
|
60
|
+
- tool results, session messages, issue comments, or debug output.
|
|
62
61
|
|
|
63
62
|
Do not debug authentication by printing an environment, a configuration file, `auth.json`, or a service response that includes headers. Check that the expected source is set up for the right process, then run a small operation that uses it. `tau auth list` shows Codex account identities and status without showing tokens.
|
|
64
63
|
|
|
65
|
-
If a credential appears in a session, log, shell history, repository,
|
|
64
|
+
If a credential appears in a session, log, shell history, repository, Telegram message, or history, treat it as exposed. First revoke or rotate it at the provider. Then replace the stored value through configuration or the auth command, restart the process that uses it if needed, and delete the exposed copy where retention rules allow. Redacting the copy does not replace rotation.
|
|
66
65
|
|
|
67
66
|
## Understand environment sanitization
|
|
68
67
|
|
|
@@ -161,16 +160,6 @@ With global `history` configuration, entries are still written to local SQLite f
|
|
|
161
160
|
|
|
162
161
|
Before turning on remote history, confirm who runs the service, its retention policy and region, who holds access keys, and which projects may be sent. One service key can search the whole shared collection. Rotate it if exposed. Removing the configuration does not delete data that was already copied. See [history](history.md) for storage and service behavior.
|
|
163
162
|
|
|
164
|
-
## Treat Nook output as published content
|
|
165
|
-
|
|
166
|
-
Nook deploys static files to HTTPS URLs. Deployments are private by default, and `--public` makes a site's files reachable by anyone. Review the built output, not just the source, before deploying. Static files must never contain provider keys, source maps with secrets, private configuration, or data that should stay on the execution environment.
|
|
167
|
-
|
|
168
|
-
Each site has a JSON KV store for the browser that survives redeploys. On a public site, anyone can read and write it. On a private site, it requires a Cloudflare Access identity, but it is still application data that every allowed user and the site's code can read. It is not a place for credentials.
|
|
169
|
-
|
|
170
|
-
Cloudflare Access should protect only the `/__nook/*` control plane at the root. Public site paths must stay reachable without Access, while private sites sign in through `/__nook/auth`. The Nook Worker validates Access JWTs; service-token headers only get a request past Access. Follow the exact Access application, audience, cookie, and service token setup in [Nook](nook.md).
|
|
171
|
-
|
|
172
|
-
The Nook session tool and the `tau nook` CLI can deploy, delete, copy, and change KV without asking for confirmation. The model's JavaScript never receives Access credentials, but Tau uses them for the Nook API calls the program makes.
|
|
173
|
-
|
|
174
163
|
## Edit configuration without widening authority accidentally
|
|
175
164
|
|
|
176
165
|
A configuration change can redirect network traffic, expose tools, or send credentials somewhere new. Follow these steps:
|
|
@@ -196,7 +185,6 @@ Tau's internal files hold the state it needs to recover. They are not configurat
|
|
|
196
185
|
- `~/.config/tau/history.sqlite` and its SQLite side files;
|
|
197
186
|
- Telegram runner session and project-preference state;
|
|
198
187
|
- managed Telegram workspaces or repository caches as a first-line repair;
|
|
199
|
-
- code-mode or compaction temporary files as if they were durable state
|
|
200
|
-
- Nook R2 or Durable Object records outside supported Nook operations.
|
|
188
|
+
- code-mode or compaction temporary files as if they were durable state.
|
|
201
189
|
|
|
202
|
-
Use `tau auth` for Codex accounts, TUI or session protocol operations for sessions, configuration for behavior, and the documented commands for history
|
|
190
|
+
Use `tau auth` for Codex accounts, TUI or session protocol operations for sessions, configuration for behavior, and the documented commands for history. If recovery reports corruption, keep the original data, stop any other process writing to it, write down the exact error and Tau version, and investigate through normal recovery before trying any repair that deletes data.
|
|
@@ -37,7 +37,6 @@ write
|
|
|
37
37
|
edit
|
|
38
38
|
view_image
|
|
39
39
|
web
|
|
40
|
-
nook
|
|
41
40
|
history
|
|
42
41
|
mcp
|
|
43
42
|
models
|
|
@@ -48,9 +47,9 @@ list_agents
|
|
|
48
47
|
interrupt_agent
|
|
49
48
|
```
|
|
50
49
|
|
|
51
|
-
A custom persona that omits `tools` gets `bash`, `write`, `edit`, `view_image`, `web`, `
|
|
50
|
+
A custom persona that omits `tools` gets `bash`, `write`, `edit`, `view_image`, `web`, `history`, `mcp`, and `models`, plus the five subagent tools. Built-in personas get the same set.
|
|
52
51
|
|
|
53
|
-
`web`, `history`, `
|
|
52
|
+
`web`, `history`, `mcp`, and `models` are not separate tools. Each enables a namespace inside the single `code` tool. `bash` enables both the Bash tools and `tau.bash` inside `code`. Tau adds `code` whenever at least one usable capability is selected; `code` itself cannot be listed. A namespace the persona does not select is missing from the `code` API and its documentation.
|
|
54
53
|
|
|
55
54
|
An empty list turns off every selectable tool:
|
|
56
55
|
|
|
@@ -60,7 +59,7 @@ tools: []
|
|
|
60
59
|
|
|
61
60
|
`tau_docs` stays available. The list also has no effect on client tools, which attached clients offer on their own.
|
|
62
61
|
|
|
63
|
-
|
|
62
|
+
Missing credentials can make calls fail, but do not remove the tool. Persona configuration is covered in [personas](personas.md).
|
|
64
63
|
|
|
65
64
|
## Tau documentation
|
|
66
65
|
|
|
@@ -143,7 +142,7 @@ Each guide covers setup, input, examples, outputs, and failures. Run `tau tool -
|
|
|
143
142
|
|
|
144
143
|
## Code-mode composition
|
|
145
144
|
|
|
146
|
-
`code` runs a one-off JavaScript program that combines the enabled capabilities: `tau.web`, `tau.history`, `tau.
|
|
145
|
+
`code` runs a one-off JavaScript program that combines the enabled capabilities: `tau.web`, `tau.history`, `tau.mcp`, `tau.bash`, and `tau.models`. The Bash, write, edit, and image tools stay available as separate tools.
|
|
147
146
|
|
|
148
147
|
### Documentation and output
|
|
149
148
|
|
|
@@ -159,7 +158,7 @@ The guide covers runtime rules, capabilities, and examples. The agent reads each
|
|
|
159
158
|
printText(await tau.docs("web"));
|
|
160
159
|
```
|
|
161
160
|
|
|
162
|
-
The agent does not re-read documentation it has already seen. MCP tool descriptions
|
|
161
|
+
The agent does not re-read documentation it has already seen. MCP tool descriptions are read separately. Programs do not need to print intermediate results.
|
|
163
162
|
|
|
164
163
|
`printText` accepts only strings; objects and arrays throw a `TypeError`. The agent selects relevant fields and explicitly formats concise plain text to save tokens. `JSON.stringify` is reserved for cases where the structure matters or machine-readable JSON is requested, with fields selected first instead of dumping whole responses.
|
|
165
164
|
|
|
@@ -184,7 +183,6 @@ Programs have no direct access to files, processes, environment variables, crede
|
|
|
184
183
|
|
|
185
184
|
- `tau.web`: metadata discovery, Exa search, and fetching page content. Search uses Auto with Dynamic Highlights to select evidence across results. An optional `objective` (1–4,096 nonblank characters) describes the broader task and facts to extract. Results include a `notices` array with retrieval qualifications such as relaxed query restrictions; each notice retains its `code`, `path`, `message`, and optional `details`. The agent prints notices alongside selected search results. The agent prefers local data, dedicated CLIs, first-party APIs, and structured sources over scraping web pages. For GitHub it uses `gh` or a Git checkout where suitable. Metadata discovery works without an Exa key; search and content fetching need one.
|
|
186
185
|
- `tau.history`: read-only search and paginated transcripts. The agent uses it only when explicitly told to look at past sessions. It treats past content as data and never follows instructions in it. See [history](history.md).
|
|
187
|
-
- `tau.nook`: deploying sites, templates, and each site's JSON KV store. The agent uses it when the user asks to publish or manage Nook. Before writing an app, the agent reads `tau.nook.skill()` in a separate call that only prints documentation. See [Nook](nook.md).
|
|
188
186
|
- `tau.mcp`: finding and calling tools and resources on configured MCP servers. When the persona allows MCP, enabled server names and optional configured descriptions are visible in the initial tool definition, before any tool call. Disabled servers and connection settings are omitted. These summaries guide discovery and do not grant permission to act. The agent reads each tool's description and schema before calling it. Connections are shared and opened on first use, and calls that change data are never retried. An `isError` result is returned as data, while protocol failures throw. MCP server configuration and trust rules apply. See [configuration reference](config-reference.md#mcpservers) and [security](security.md#trust-mcp-servers).
|
|
189
187
|
- `tau.bash`: `run`, `start`, `list`, `read`, `wait`, and `stop`. `run` returns stdout, stderr, and exit and termination fields, capturing up to 24 MiB. Beyond that it keeps the end, so check `truncated` before parsing. Optional UTF-8 `stdin` is limited to 16 MiB and closed after writing. Without `stdin` the command has no stdin at all, while `""` gives it an empty one. `start` takes no stdin. Background jobs are the same jobs as the Bash tools', with the same output limits. Jobs survive the program ending and interruption, while foreground commands are cancelled. The shell rules above apply.
|
|
190
188
|
- `tau.models`: lists a fixed set of OpenRouter models and runs standalone chats or typed decisions with them. These calls do not see the session's conversation or tools. Chat media can be paths on the agent's machine or inline padded base64 with a matching MIME type. Credentials stay on the host. Provider usage data is returned, but these charges are not included in the session's cost or usage logs. Requests can be cancelled and are never retried automatically. Limits on input, models, media, responses, and requests are the same as in [OpenRouter](openrouter.md). Check whether a response completed or was refused instead of assuming it is a full answer.
|
|
@@ -193,7 +191,7 @@ SDK and command client tools built on code mode use the same sandbox functions a
|
|
|
193
191
|
|
|
194
192
|
## Subagent tools
|
|
195
193
|
|
|
196
|
-
A subagent gets each of `bash`, `write`, `edit`, `view_image`, `web`, `history`, `
|
|
194
|
+
A subagent gets each of `bash`, `write`, `edit`, `view_image`, `web`, `history`, `mcp`, and `models` that the main persona also has, plus `tau_docs`. It never gets the subagent tools or client tools. Its Bash and file tools start in the subagent's working directory. [Subagents](subagents.md#tools) has the details.
|
|
197
195
|
|
|
198
196
|
## Client-owned tools
|
|
199
197
|
|
|
@@ -13,11 +13,10 @@ tau --help
|
|
|
13
13
|
tau attach --help
|
|
14
14
|
tau auth --help
|
|
15
15
|
tau history --help
|
|
16
|
-
tau nook --help
|
|
17
16
|
tau telegram --help
|
|
18
17
|
```
|
|
19
18
|
|
|
20
|
-
Help describes that installed binary, and `tau_docs` describes the host's installed version. An attached TUI, a remote host, and deployed history
|
|
19
|
+
Help describes that installed binary, and `tau_docs` describes the host's installed version. An attached TUI, a remote host, and deployed history services can each run a different version, so the host's documentation may not match an older client's flags or a separately deployed service.
|
|
21
20
|
|
|
22
21
|
For a local startup, `tau --debug` loads configuration and content from the current directory, prints warnings and catalog information, and exits without opening the TUI:
|
|
23
22
|
|
|
@@ -114,7 +113,7 @@ Check the exact built-in theme ID and the client's `defaultTheme`. Use `/theme:<
|
|
|
114
113
|
|
|
115
114
|
Work out which kind of tool is missing before changing configuration.
|
|
116
115
|
|
|
117
|
-
For a host tool, check the active persona's `tools` list. A list replaces the defaults. Run `tau --debug --persona <id>` for a new local session, or reload the current session while idle. Missing credentials make a tool fail but usually do not remove it.
|
|
116
|
+
For a host tool, check the active persona's `tools` list. A list replaces the defaults. Run `tau --debug --persona <id>` for a new local session, or reload the current session while idle. Missing credentials make a tool fail but usually do not remove it.
|
|
118
117
|
|
|
119
118
|
For subagents, check three things:
|
|
120
119
|
|
|
@@ -147,13 +146,13 @@ When the client detaches, its tools disappear and running calls are cancelled. R
|
|
|
147
146
|
|
|
148
147
|
Find the process that makes the request:
|
|
149
148
|
|
|
150
|
-
| Operation
|
|
151
|
-
|
|
|
152
|
-
| Model calls, host `web`,
|
|
153
|
-
| `/listen`, `/speak`, or TUI client tools | Client
|
|
154
|
-
| Telegram bot or transcription
|
|
155
|
-
| `tau
|
|
156
|
-
| Fly Sprite connection
|
|
149
|
+
| Operation | Where the credential belongs |
|
|
150
|
+
| ---------------------------------------- | ------------------------------- |
|
|
151
|
+
| Model calls, host `web`, or `history` | Host |
|
|
152
|
+
| `/listen`, `/speak`, or TUI client tools | Client |
|
|
153
|
+
| Telegram bot or transcription | Runner |
|
|
154
|
+
| `tau history` or `tau tool` commands | The machine running the command |
|
|
155
|
+
| Fly Sprite connection | Host startup configuration |
|
|
157
156
|
|
|
158
157
|
A variable set on the laptop does not reach a remote host. After changing environment variables or `apiKeys`, restart the process that uses them. `apiKeys` in a project file are rejected; check the process's environment and its global configuration.
|
|
159
158
|
|
|
@@ -223,11 +222,10 @@ A WebSocket client disconnecting does not interrupt a long-running host, but a s
|
|
|
223
222
|
|
|
224
223
|
A session saved in a newer storage format needs that Tau version or later. Newer Tau versions upgrade supported older sessions automatically. For invalid JSON, snapshot, or ID errors, keep the file and the exact error, stop other hosts using the same store, and investigate through normal recovery. Do not edit or delete the file first.
|
|
225
224
|
|
|
226
|
-
## History
|
|
225
|
+
## History or Telegram
|
|
227
226
|
|
|
228
227
|
These features have their own troubleshooting sections:
|
|
229
228
|
|
|
230
229
|
- [History](history.md#troubleshooting): missing API key, service errors, sessions missing from remote search, and local history failures.
|
|
231
|
-
- [Nook](nook.md#common-errors): configuration, Access and authorization errors, wrong visibility, and deploy rejections.
|
|
232
230
|
- [Telegram](telegram.md#troubleshooting): ignored messages, project selection, audio, voice replies, and late or missing replies.
|
|
233
231
|
- [Telegram projects and workspaces](telegram-projects.md#troubleshooting): repository preparation, provisioning, and workspace recovery.
|
|
@@ -262,6 +262,7 @@ Transcription uses Gemini and needs `GEMINI_API_KEY` or `apiKeys.google`. The TU
|
|
|
262
262
|
- Longer responses are split into balanced parts, each aiming for at most two minutes of speech.
|
|
263
263
|
- The source and rewritten text are limited to 10,000 Unicode characters, and generation stops after 32 MiB of raw audio.
|
|
264
264
|
- Voice lookups and synthesis requests have a two-minute deadline.
|
|
265
|
+
- The rewrite turns paths, commands, and formatting into spoken prose. It reads a link's label instead of its address, and refers to a bare address as a link. When the address points to an issue or pull request, the rewrite names it by number, such as "issue 620". The rewrite is model-generated, so an address may occasionally still be read aloud.
|
|
265
266
|
|
|
266
267
|
See [`speech` configuration](config-reference.md#speech) for the default Maisie and Caleb voices and for choosing your own.
|
|
267
268
|
|