@markusylisiurunen/tau 0.3.81 → 0.3.83
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 +1 -3
- package/dist/core/agent/agent_runtime.js +6 -4
- package/dist/core/agent/agent_runtime.js.map +1 -1
- package/dist/core/cli.js +2 -2
- package/dist/core/cli.js.map +1 -1
- package/dist/core/code_mode/models.js +61 -22
- package/dist/core/code_mode/models.js.map +1 -1
- package/dist/core/commands/registry.js +0 -22
- package/dist/core/commands/registry.js.map +1 -1
- package/dist/core/history/cli.js +48 -0
- package/dist/core/history/cli.js.map +1 -1
- package/dist/core/history/history_manager.js +9 -3
- package/dist/core/history/history_manager.js.map +1 -1
- package/dist/core/history/local_history_store.js +9 -2
- package/dist/core/history/local_history_store.js.map +1 -1
- package/dist/core/history/remote_history_client.js +18 -3
- package/dist/core/history/remote_history_client.js.map +1 -1
- package/dist/core/models/openrouter.js +17 -5
- package/dist/core/models/openrouter.js.map +1 -1
- package/dist/core/models/openrouter_decisions.js +16 -1
- package/dist/core/models/openrouter_decisions.js.map +1 -1
- package/dist/core/runtime/chat_runtime.js +2 -13
- package/dist/core/runtime/chat_runtime.js.map +1 -1
- package/dist/core/static/tau_docs/client-tools.md +53 -53
- package/dist/core/static/tau_docs/config-reference.md +46 -43
- package/dist/core/static/tau_docs/configuration.md +40 -36
- package/dist/core/static/tau_docs/credentials.md +32 -31
- package/dist/core/static/tau_docs/getting-started.md +28 -28
- package/dist/core/static/tau_docs/history.md +114 -79
- package/dist/core/static/tau_docs/image-generation.md +20 -18
- package/dist/core/static/tau_docs/index.md +30 -31
- package/dist/core/static/tau_docs/manifest.json +1 -0
- package/dist/core/static/tau_docs/models.md +17 -17
- package/dist/core/static/tau_docs/node-sdk.md +69 -72
- package/dist/core/static/tau_docs/nook.md +75 -69
- package/dist/core/static/tau_docs/openrouter.md +28 -13
- package/dist/core/static/tau_docs/ownership-and-scope.md +21 -23
- package/dist/core/static/tau_docs/pdf-unpacking.md +6 -6
- package/dist/core/static/tau_docs/personas.md +29 -27
- package/dist/core/static/tau_docs/prompts-and-project-context.md +41 -39
- package/dist/core/static/tau_docs/remote-sessions.md +38 -38
- package/dist/core/static/tau_docs/sdk-diff-review.md +16 -12
- package/dist/core/static/tau_docs/security.md +72 -72
- package/dist/core/static/tau_docs/session-protocol-methods.md +46 -91
- package/dist/core/static/tau_docs/session-protocol.md +54 -54
- package/dist/core/static/tau_docs/sessions.md +97 -107
- package/dist/core/static/tau_docs/skills.md +25 -20
- package/dist/core/static/tau_docs/speech-generation.md +5 -5
- package/dist/core/static/tau_docs/subagents.md +42 -44
- package/dist/core/static/tau_docs/telegram-projects.md +142 -0
- package/dist/core/static/tau_docs/telegram.md +65 -182
- package/dist/core/static/tau_docs/tools.md +72 -91
- package/dist/core/static/tau_docs/troubleshooting.md +94 -149
- package/dist/core/static/tau_docs/tui.md +124 -81
- package/dist/core/telegram/adapter.js +1 -6
- package/dist/core/telegram/adapter.js.map +1 -1
- package/dist/core/tool/image_generate.js +5 -17
- package/dist/core/tool/image_generate.js.map +1 -1
- package/dist/core/tool/openrouter.js +21 -2
- package/dist/core/tool/openrouter.js.map +1 -1
- package/dist/core/tools/catalog.js +0 -11
- package/dist/core/tools/catalog.js.map +1 -1
- package/dist/core/tools/tool_names.js +0 -6
- package/dist/core/tools/tool_names.js.map +1 -1
- package/dist/core/utils/gemini_transcription.js +103 -28
- package/dist/core/utils/gemini_transcription.js.map +1 -1
- package/dist/core/utils/model_stream.js +17 -1
- package/dist/core/utils/model_stream.js.map +1 -1
- package/dist/core/utils/user_metadata.js +0 -14
- package/dist/core/utils/user_metadata.js.map +1 -1
- package/dist/core/version.js +2 -2
- package/dist/diff_tool/app/dist/assets/{angular-html-BbLgbIhq.js → angular-html-x29PkEoY.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{angular-ts-DXk17TRM.js → angular-ts-CsWCqoCf.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{apl-BsvksCXR.js → apl-CEvdc7jl.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{astro-DH775E4V.js → astro-Cgi6YxH2.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{blade-Ck99Rm59.js → blade-B0pr7Zx6.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{c-DJpHqu5J.js → c-DDVLgtVy.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{chapel-Owff0Csy.js → chapel-Bk9M7Jej.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{cobol-Cv2gZuhO.js → cobol-DyEvnPuC.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{coffee-Bji0YCf_.js → coffee-Di2-m3Jq.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{cpp-DTjA_yFF.js → cpp-CWpAaUgO.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{crystal-Dd00NOeb.js → crystal-CUker9Zt.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{css-D44TN1V6.js → css-D4XpBIiJ.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{edge-CVmGSi2m.js → edge-CVxhhF7L.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{elixir-B8Mq7no2.js → elixir-B_FS9APl.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{elm-CXS0I3Z2.js → elm-1KyefTkH.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{erb-B9oDKaUo.js → erb-CCgO9dRW.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{git-rebase-DT-YFebH.js → git-rebase-D0VYo_oY.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{glimmer-js-s0DXlNjq.js → glimmer-js-Ce07ngjZ.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{glimmer-ts-QgEB5S2z.js → glimmer-ts-BmOM4djO.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{glsl-NA0icwbY.js → glsl-D-jkLYJ8.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{graphql-0_dOlfV0.js → graphql-DZOwJE5e.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{hack-D-mr7l1l.js → hack-Cgvn19h8.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{haml-B0-oQmz7.js → haml-JTmDSYQl.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{handlebars-Yq9bXpWN.js → handlebars-CChh7Dy5.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{html-B8bMmdRK.js → html-BKgzx_cb.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{html-derivative-BpxSlQb_.js → html-derivative-CdFl0BmX.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{http-hS_53mxt.js → http-DZeL7KvH.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{hurl-B2ST1kwl.js → hurl-CqKevOlQ.js} +1 -1
- package/dist/diff_tool/app/dist/assets/index-BXyr8GCM.js +341 -0
- package/dist/diff_tool/app/dist/assets/{java-D4mj0lZJ.js → java-Sq3MCkId.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{javascript-wC7rrKiV.js → javascript-CHZB4Nse.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{jinja-DbQ3o87F.js → jinja-C4ucJVla.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{jison-CrE9FdvP.js → jison-D3mprebA.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{json-xjicDyWN.js → json-DgPfCYJ1.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{jsx-m28lXojQ.js → jsx-BG-Tx0cw.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{julia-19xkOmop.js → julia-B1GnFeUC.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{just-Cf7OorTr.js → just-_MZzo0MF.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{latex-DDb7GQOy.js → latex-DI0kqjQy.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{liquid-DHOuQ0rf.js → liquid-BtMAPeHl.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{lua-BGyIvonw.js → lua-CFxaP0To.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{marko-DB5OqI1C.js → marko-BIJocuFI.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{mdc-DTyNMupO.js → mdc-BAgrdjTH.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{nginx-DfF0fMYD.js → nginx-DE-3CsYn.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{nim-BbwsXuZD.js → nim-DOxeXLhb.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{org-BkOBBl1f.js → org-KTfP0tHA.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{perl-BTXTOl4K.js → perl-BH-NxpgK.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{php-DIMVQWiA.js → php-vuiVEXZK.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{pug-B_nrb4dJ.js → pug-VlIlTMUy.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{qml-1PXi8G8Z.js → qml-k6wTtGG-.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{r-CJrAkc2Z.js → r-Ccjcb2zh.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{razor-DgPUftNd.js → razor-BNhYgSCv.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{regexp-C2hS8XvL.js → regexp-C4LFejPu.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{rst-CDouhKnc.js → rst-DXLxI-UJ.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{ruby-CAjKW1uO.js → ruby-BPuL4jDV.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{sas-qAHkHLc1.js → sas-B3Yz8snb.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{scss-Bfx2Ydid.js → scss-B2AJ5vpk.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{shellscript-Bu76R8y2.js → shellscript-zyDexxnC.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{shellsession-BU8BL0oL.js → shellsession-C8b8xluk.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{soy-FRl8ozP-.js → soy-DKWe_XML.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{sql-BacQgsEs.js → sql-uEbz-Epf.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{stata-B9kkG-ET.js → stata-DieRPmHY.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{surrealql-qvETr7iY.js → surrealql-Dbk3Sp1P.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{svelte-B0z1MgHc.js → svelte-CjPbRmkM.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{templ-DTnPshKb.js → templ-Do_f5vc4.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{tex-Cosab9_H.js → tex-UjLP4qUm.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{ts-tags-DNYvLFUH.js → ts-tags-5L2FutA6.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{tsx-Dstq6j1a.js → tsx-B1pNtpUr.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{twig-BzqZdwaX.js → twig-O41Vg_IM.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{typescript-YOQ_oE25.js → typescript-Bj9uwnnJ.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{typst-DTffwfpc.js → typst-DsibO7oD.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{vue-D4OMj_C5.js → vue-DPhaEurv.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{vue-html-kT4WrHGK.js → vue-html-DDV9NSy1.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{vue-vine-CxeapeMO.js → vue-vine-Dh4jOifx.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{xml-DWVpuurg.js → xml-DtIulkQk.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{xsl-C0ciup5a.js → xsl-DoWtb58Z.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{yaml-98Fvyfpc.js → yaml-CZC-l1Dg.js} +1 -1
- package/dist/diff_tool/app/dist/index.html +1 -1
- package/dist/history/worker/index.js +87 -83
- package/dist/history/worker/index.js.map +1 -1
- package/dist/host/local_session_host.js +24 -318
- package/dist/host/local_session_host.js.map +1 -1
- package/dist/host/session_host.js.map +1 -1
- package/dist/host/session_protocol_handler.js +0 -98
- package/dist/host/session_protocol_handler.js.map +1 -1
- package/dist/main.js +6 -7
- package/dist/main.js.map +1 -1
- package/dist/protocol/index.d.ts +1 -1
- package/dist/protocol/index.js.map +1 -1
- package/dist/protocol/session_protocol.d.ts +3 -28
- package/dist/protocol/session_protocol.js +1 -56
- package/dist/protocol/session_protocol.js.map +1 -1
- package/dist/sdk/index.d.ts +1 -1
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/session.js +0 -20
- package/dist/sdk/session.js.map +1 -1
- package/dist/sdk/types.d.ts +1 -7
- package/dist/store/session_snapshot_migrations.js +72 -1
- package/dist/store/session_snapshot_migrations.js.map +1 -1
- package/dist/tui/session_chat_controller.js +14 -30
- package/dist/tui/session_chat_controller.js.map +1 -1
- package/dist/tui/ui/footer.js +4 -9
- package/dist/tui/ui/footer.js.map +1 -1
- package/package.json +9 -9
- package/dist/core/session/goal.js +0 -54
- package/dist/core/session/goal.js.map +0 -1
- package/dist/core/tools/goal.js +0 -167
- package/dist/core/tools/goal.js.map +0 -1
- package/dist/diff_tool/app/dist/assets/index-CBT_sNIz.js +0 -340
- package/dist/nook/README.md +0 -123
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# Troubleshooting
|
|
2
2
|
|
|
3
|
-
Tau
|
|
3
|
+
Most Tau problems become clear once you know which part is failing. The same path can be a laptop path, a host path, or an execution environment path, and a configuration change may need a session reload, a client restart, a host restart, or a new session.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Start from the symptom. Keep checks narrow, keep saved state intact, and never paste configuration, environments, saved sessions, databases, or transcripts into diagnostics.
|
|
6
6
|
|
|
7
7
|
## Start with the installed command and owner
|
|
8
8
|
|
|
9
|
-
Use the help
|
|
9
|
+
Use the help of the executable that is actually failing:
|
|
10
10
|
|
|
11
11
|
```sh
|
|
12
12
|
tau --help
|
|
@@ -17,24 +17,24 @@ tau nook --help
|
|
|
17
17
|
tau telegram --help
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
Help
|
|
20
|
+
Help describes that installed binary, and `tau_docs` describes the host's installed version. An attached TUI, a remote host, and deployed history or Nook 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
21
|
|
|
22
|
-
For a local startup, `tau --debug`
|
|
22
|
+
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
23
|
|
|
24
24
|
```sh
|
|
25
25
|
cd /path/that-should-own-the-session
|
|
26
26
|
tau --debug
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
Add `--persona <exact-id>`
|
|
29
|
+
Add `--persona <exact-id>` to check one persona. The output includes the complete project context sent to the model, so keep it private and do not use it to dump configuration. It cannot inspect a running remote host, a hosted environment, or an attached client.
|
|
30
30
|
|
|
31
|
-
Inside the TUI, `/help` shows
|
|
31
|
+
Inside the TUI, `/help` shows the commands, loaded skills, and context file paths of the current session. `/reload` asks the host to load session content again.
|
|
32
32
|
|
|
33
33
|
## A configuration change has no effect
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
Find what reads the setting, using [ownership and scope](ownership-and-scope.md). Session content and host tools come from the execution environment and the host. Themes, speech, and TUI client tools come from the client. History and hosted environment connections belong to the host. Telegram routing and workspaces come from the runner's own configuration.
|
|
36
36
|
|
|
37
|
-
Confirm that
|
|
37
|
+
Confirm that part's machine, `cwd`, home, and tool paths. In an attached session, these checks report the execution environment, not the laptop:
|
|
38
38
|
|
|
39
39
|
```text
|
|
40
40
|
!!pwd
|
|
@@ -42,134 +42,132 @@ Confirm that component's machine, `cwd`, home, and tool path. In an attached ses
|
|
|
42
42
|
!!command -v git
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
The global level is skipped when the relevant `cwd` is outside home. Every project level on the path applies, with rules that depend on the field. Read the warnings and [configuration](configuration.md) for these common causes:
|
|
46
46
|
|
|
47
|
-
- a nearer
|
|
47
|
+
- a nearer value, object, or `enabledClientTools` list replaced the broader one;
|
|
48
48
|
- a merging field kept keys from another level;
|
|
49
49
|
- a relative path resolved from the level that declared it;
|
|
50
|
-
- an invalid nearer value was skipped,
|
|
51
|
-
- a misspelled
|
|
50
|
+
- an invalid nearer value was skipped, so a broader value still applies; or
|
|
51
|
+
- a misspelled field was removed without a warning.
|
|
52
52
|
|
|
53
|
-
Validate JSON without
|
|
53
|
+
Validate JSON without printing it:
|
|
54
54
|
|
|
55
55
|
```sh
|
|
56
56
|
node -e 'JSON.parse(require("node:fs").readFileSync(process.argv[1], "utf8"))' \
|
|
57
57
|
/path/to/config.json
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
Run `tau --debug` from the intended directory for a new local startup. For a running session, run `/reload` while idle and read every warning.
|
|
61
61
|
|
|
62
|
-
| Change
|
|
62
|
+
| Change | How to apply |
|
|
63
63
|
| --- | --- |
|
|
64
|
-
|
|
|
65
|
-
| Theme,
|
|
66
|
-
| Host environment,
|
|
67
|
-
| Default persona or environment
|
|
64
|
+
| Session configuration and content | `/reload` while idle |
|
|
65
|
+
| Theme, speech, or TUI client tools | Restart `tau` or `tau attach` |
|
|
66
|
+
| Host environment, `apiKeys`, history, hosted environments, listener, or Tau version | Restart the host |
|
|
67
|
+
| Default persona or execution environment | Create a new session if it must change |
|
|
68
68
|
| Telegram config, routing, speech, or workspaces | Restart the runner |
|
|
69
69
|
|
|
70
|
-
## `/reload` is unavailable, refused, or
|
|
70
|
+
## `/reload` is unavailable, refused, or not enough
|
|
71
71
|
|
|
72
|
-
`/reload` is a TUI command
|
|
72
|
+
`/reload` is a TUI command for the current session. It is refused while a turn or another conflicting operation is running. Wait for the turn to finish, or interrupt it, and run the command again.
|
|
73
73
|
|
|
74
|
-
Reload updates
|
|
74
|
+
Reload updates configuration, personas, prompts, skills, `AGENTS.md` context, and host tools for later turns. It does not:
|
|
75
75
|
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
-
|
|
80
|
-
- update
|
|
81
|
-
-
|
|
76
|
+
- change the execution environment, its `cwd`, or its home;
|
|
77
|
+
- reload an attached client's themes, speech settings, or tools;
|
|
78
|
+
- read environment variables again in a running process;
|
|
79
|
+
- reload the host's history service or hosted environment settings;
|
|
80
|
+
- update Tau's code or built-in documentation; or
|
|
81
|
+
- change subagents that are already running.
|
|
82
82
|
|
|
83
|
-
A
|
|
83
|
+
A turn keeps the persona, model settings, tools, and policies it started with. Reasoning changes and reloads do not affect the running turn or its steering. A queued message uses the settings current when it starts. If behavior seems unchanged, let a new turn start after the reload before deciding the change failed.
|
|
84
84
|
|
|
85
|
-
Protocol and SDK clients can call `session.reload` directly,
|
|
85
|
+
Protocol and SDK clients can call `session.reload` directly, with the same rules.
|
|
86
86
|
|
|
87
87
|
## A persona, prompt, skill, model, or theme is missing
|
|
88
88
|
|
|
89
|
-
Session
|
|
89
|
+
Session content comes from the execution environment, and themes come from the TUI. Check the exact discovery path and the `/reload` warnings.
|
|
90
90
|
|
|
91
91
|
### Persona
|
|
92
92
|
|
|
93
|
-
For a new local session, run `tau --debug --persona <exact-id>`. The
|
|
93
|
+
For a new local session, run `tau --debug --persona <exact-id>`. The filename must match `id`, and `provider`, `model`, and a non-empty prompt body are required. Startup IDs are exact and case-sensitive. See [personas](personas.md).
|
|
94
94
|
|
|
95
95
|
### Prompt
|
|
96
96
|
|
|
97
|
-
Run `/reload` after
|
|
97
|
+
Run `/reload` after adding, removing, or renaming a prompt or changing its label. The body is read each time the prompt is used, so using it fails if the file has since become unreadable or invalid. `/prompt:<id>` only fills the editor. See [prompts and project context](prompts-and-project-context.md).
|
|
98
98
|
|
|
99
99
|
### Skill
|
|
100
100
|
|
|
101
|
-
Use `/help` to
|
|
101
|
+
Use `/help` to see loaded skills. A skill needs `SKILL.md` in uppercase, valid frontmatter, a lowercase name with dashes, and a matching directory name. At one level, `.tau/skills` wins over `.agents/skills`, and nearer levels win overall.
|
|
102
102
|
|
|
103
|
-
Every persona
|
|
103
|
+
Every persona can use all discovered skills. The trigger decides when the agent opens one. `allowed-tools` is ignored. See [skills](skills.md).
|
|
104
104
|
|
|
105
105
|
### Model
|
|
106
106
|
|
|
107
|
-
Providers must be known and model IDs are exact and case-sensitive. Check warnings for unknown
|
|
107
|
+
Providers must be known, and model IDs are exact and case-sensitive. Check warnings for unknown providers or models. `tau --debug --persona <id>` shows how a local startup resolves the model, and a small request confirms the endpoint, account, and credentials. Refresh the catalog and reload while idle. See [models](models.md).
|
|
108
108
|
|
|
109
109
|
### Theme
|
|
110
110
|
|
|
111
|
-
Check the exact built-in theme ID and the client
|
|
111
|
+
Check the exact built-in theme ID and the client's `defaultTheme`. Use `/theme:<id>` for the current run, or restart the TUI to apply a new default. A remote host's theme does not affect attached clients.
|
|
112
112
|
|
|
113
113
|
## A tool or subagent is unavailable
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
Work out which kind of tool is missing before changing configuration.
|
|
116
116
|
|
|
117
|
-
For a
|
|
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. Nook is the exception: it also needs `nook` configuration.
|
|
118
118
|
|
|
119
|
-
For
|
|
119
|
+
For subagents, check three things:
|
|
120
120
|
|
|
121
|
-
1. The main persona
|
|
122
|
-
2. A requested
|
|
123
|
-
3. Fewer than eight
|
|
121
|
+
1. The main persona has `spawn_agent` and any other subagent tools needed.
|
|
122
|
+
2. A requested model exactly matches an entry in the launch allowlist.
|
|
123
|
+
3. Fewer than eight subagents are running.
|
|
124
124
|
|
|
125
|
-
|
|
125
|
+
A running subagent keeps its model, tools, and working directory after a reload. Recovery does not restore subagents, so old IDs cannot receive follow-ups after a host restart. Use `list_agents` to see live subagents. See [subagents](subagents.md).
|
|
126
126
|
|
|
127
|
-
|
|
127
|
+
If `tau_docs` is missing, the problem is the host's installation or version, not a persona. Check the host package and restart it.
|
|
128
128
|
|
|
129
129
|
## A command client tool is missing or fails
|
|
130
130
|
|
|
131
|
-
A
|
|
131
|
+
A command client tool exists only while its client observes the session. On the client side, check:
|
|
132
132
|
|
|
133
|
-
1. The definition is in
|
|
134
|
-
2. The entry is valid and has
|
|
135
|
-
3. The nearest project `enabledClientTools` includes the exact case-sensitive name, or
|
|
133
|
+
1. The definition is in global configuration on the client machine, and the client's `cwd` is inside home.
|
|
134
|
+
2. The entry is valid and its schema has an object root.
|
|
135
|
+
3. The nearest project `enabledClientTools` includes the exact, case-sensitive name, or no project sets the field and `defaultEnabled` applies.
|
|
136
136
|
4. The TUI was not started with `--no-client-tools`.
|
|
137
|
-
5. No other
|
|
137
|
+
5. No other client and no host tool uses the same name.
|
|
138
138
|
6. The client was restarted or reconnected after the configuration change.
|
|
139
139
|
|
|
140
|
-
Unknown selection
|
|
140
|
+
Unknown names in the selection are ignored, and an empty `enabledClientTools` selects none. `/reload` does not refresh client tools.
|
|
141
141
|
|
|
142
|
-
For
|
|
142
|
+
For failures, find which side failed. Launch, permission, `PATH`, timeout, stderr, framing, and nonzero-exit errors come from the client machine. Errors from `executionEnvironment.exec` come from the session machine. The executable runs directly, without a shell, with the client process's directory and environment.
|
|
143
143
|
|
|
144
|
-
|
|
144
|
+
When the client detaches, its tools disappear and running calls are cancelled. Reconnecting does not resume the earlier process. See [client tools](client-tools.md).
|
|
145
145
|
|
|
146
146
|
## A credential is reported missing or rejected
|
|
147
147
|
|
|
148
|
-
Find the process
|
|
148
|
+
Find the process that makes the request:
|
|
149
149
|
|
|
150
|
-
| Operation
|
|
151
|
-
|
|
|
152
|
-
| Model, host `web`, `history`, or `nook`
|
|
153
|
-
| `/listen`, `/speak`, or TUI client
|
|
154
|
-
| Telegram bot or transcription
|
|
155
|
-
| `tau nook`, `tau history`, or
|
|
156
|
-
| Fly Sprite
|
|
150
|
+
| Operation | Where the credential belongs |
|
|
151
|
+
| --- | --- |
|
|
152
|
+
| Model calls, host `web`, `history`, or `nook` | Host |
|
|
153
|
+
| `/listen`, `/speak`, or TUI client tools | Client |
|
|
154
|
+
| Telegram bot or transcription | Runner |
|
|
155
|
+
| `tau nook`, `tau history`, or `tau tool` commands | The machine running the command |
|
|
156
|
+
| Fly Sprite connection | Host startup configuration |
|
|
157
157
|
|
|
158
|
-
A laptop
|
|
158
|
+
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
159
|
|
|
160
|
-
Never print the secret, environment, or whole configuration.
|
|
160
|
+
Never print the secret, the environment, or the whole configuration. Check the expected source privately, read the error message, and make one small request. See [credentials](credentials.md).
|
|
161
161
|
|
|
162
162
|
## A Codex account cannot be selected
|
|
163
163
|
|
|
164
|
-
Run this on the session host, not an attached client:
|
|
164
|
+
Run this on the session host, not on an attached client:
|
|
165
165
|
|
|
166
166
|
```sh
|
|
167
167
|
tau auth list
|
|
168
168
|
```
|
|
169
169
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
Use the supported commands for the condition shown:
|
|
170
|
+
It shows stored accounts, which one is active, refresh status, and usage windows, without showing tokens. Fix the problem with these commands:
|
|
173
171
|
|
|
174
172
|
```sh
|
|
175
173
|
tau auth login codex
|
|
@@ -177,112 +175,59 @@ tau auth use codex --account developer@example.com
|
|
|
177
175
|
tau auth logout codex --account developer@example.com
|
|
178
176
|
```
|
|
179
177
|
|
|
180
|
-
|
|
178
|
+
Log in again when credentials have expired or refresh failed. Choose an account with `auth use`. Logging out the active account leaves none active, and Tau never switches accounts because of usage or failures. A new selection applies to later requests in every session, not to requests already in progress.
|
|
181
179
|
|
|
182
|
-
Do not edit `~/.config/tau/auth.json`; the auth commands
|
|
180
|
+
Do not edit `~/.config/tau/auth.json`; the auth commands handle updates and permissions.
|
|
183
181
|
|
|
184
182
|
## Bash prints unexpected text, prompts, or reports no TTY
|
|
185
183
|
|
|
186
|
-
Every
|
|
184
|
+
Every command runs in a fresh non-interactive login Bash in the execution environment. Test startup with `!!bash -lc 'printf ok'`. Check `/etc/profile`, the first user login file, `BASH_ENV`, and any `.bashrc` they source. A file that prints, reads stdin, prompts, sets up the terminal, or exits affects every command.
|
|
187
185
|
|
|
188
|
-
Use
|
|
186
|
+
Use flags that avoid prompts. Set up credentials beforehand, configure Git and SSH to work without prompts, and avoid editors and tools that need a terminal. Aliases, variables, `cd`, and functions do not carry over between calls, so pass `workingDirectory` or write a complete command each time.
|
|
189
187
|
|
|
190
|
-
|
|
188
|
+
In local environments, Tau removes inherited variables with credential-like names. If a command needs authentication, use that tool's own non-interactive credential setup instead of passing the whole environment through. Hosted environments use their own environment.
|
|
191
189
|
|
|
192
190
|
## WebSocket attachment is unauthorized or unsafe
|
|
193
191
|
|
|
194
|
-
Confirm that client and server use the same token
|
|
192
|
+
Confirm that client and server use the same token. `--auth-token` wins when given; otherwise `TAU_WS_AUTH_TOKEN` can supply it on either side. Check that it is set without logging its value.
|
|
195
193
|
|
|
196
|
-
Tau sends the token as the `tau_token`
|
|
194
|
+
Tau sends the token as the `tau_token` query parameter. A reverse proxy must pass through the query string and the WebSocket upgrade, and should remove query strings from its logs. A rejected token shows up in the client as an unexpected WebSocket close, so compare with the server's or proxy's logs.
|
|
197
195
|
|
|
198
|
-
Tau does not
|
|
196
|
+
Tau does not handle TLS. Use `wss://` behind a trusted TLS reverse proxy, or keep the server on loopback and use an SSH tunnel. Run without a token only where every client that can connect is trusted with full session access.
|
|
199
197
|
|
|
200
|
-
If attachment reports an unsupported protocol version or invalid
|
|
198
|
+
If attachment reports an unsupported protocol version or an invalid message, upgrade host and client to the same Tau release and restart both. Do not downgrade a host that may have saved sessions in a newer format.
|
|
201
199
|
|
|
202
200
|
## Remote attach uses the wrong directory or cannot create a session
|
|
203
201
|
|
|
204
|
-
For `tau attach --new`, `--cwd` must be an absolute path inside the
|
|
202
|
+
For `tau attach --new`, `--cwd` must be an absolute path inside the chosen execution environment. With the default local kind, it is a path on the host, not on the attaching machine. Tau does not create the directory, clone a repository, or detect repository attributes.
|
|
205
203
|
|
|
206
|
-
For Fly Sprite
|
|
204
|
+
For a Fly Sprite session, check on the host that:
|
|
207
205
|
|
|
208
|
-
-
|
|
209
|
-
- its
|
|
210
|
-
- the named Sprite
|
|
211
|
-
- the absolute
|
|
212
|
-
- the configured
|
|
206
|
+
- `flySprites` is set in the host's startup configuration;
|
|
207
|
+
- its token is available to the host process;
|
|
208
|
+
- the named Sprite exists;
|
|
209
|
+
- the absolute `cwd` exists in the Sprite; and
|
|
210
|
+
- the configured `home` matches the account you intend to use.
|
|
213
211
|
|
|
214
|
-
Changing
|
|
212
|
+
Changing the Sprite connection or its token requires a host restart. `/reload` cannot change a session's environment or fix a missing target.
|
|
215
213
|
|
|
216
|
-
Without `--session` or `--new`, attach needs a TTY for its selector
|
|
214
|
+
Without `--session` or `--new`, attach needs a TTY for its selector, so pass one of them in scripts. Local `--persona` flags are not attach options. Set the host's default for new sessions, or switch with `/persona:<id>` while idle.
|
|
217
215
|
|
|
218
216
|
## A session is missing, interrupted, or will not recover
|
|
219
217
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
Recovery returns idle, aborts unfinished turns, cancels running maintenance, removes live subagents, and blocks an active goal. Review the last assistant and tools, then safely check `!!pwd` and `!!git status --short`. Resume a goal only after understanding the stop. Retry continues current history without rerunning completed tools automatically.
|
|
223
|
-
|
|
224
|
-
A WebSocket client disconnect does not interrupt the long-running host; server shutdown does. Closing a local TUI shuts down its owned host, so interrupted recovery is expected.
|
|
225
|
-
|
|
226
|
-
A newer storage version requires that Tau version or later. For invalid JSON, snapshot, or ID errors, preserve the file and exact error, stop competing hosts, and investigate normal recovery. Do not edit or delete it first. Newer Tau migrates supported older documents automatically.
|
|
227
|
-
|
|
228
|
-
## History is unavailable, empty, or not current
|
|
229
|
-
|
|
230
|
-
History is host-owned and independent of session snapshots. Its default database is in the host home, and a failure warns without stopping the session. Check the host user and home, permissions, free space, Node version, and unexpected competing processes. Restart the host after correction. Do not open, edit, replace, or delete SQLite files as an initial repair.
|
|
231
|
-
|
|
232
|
-
The `history` tool appears only when the active persona selects it. Its agent-facing description requires one documentation-only call when the API documentation is not already visible, then reuses the visible documentation for later calls. If the tool is missing, fix the persona and reload. The tool is intended only for requests or active instructions that directly call for historical transcripts.
|
|
233
|
-
|
|
234
|
-
With remote History configured, queries use the remote collection while local SQLite remains the durable first write and outbox. Replication is asynchronous. An empty result can mean the wrong host/home, filters, endpoint, deployment credential, network path, or pending replication. Restart the host after changing the global target or environment, then run one narrow query.
|
|
235
|
-
|
|
236
|
-
Do not inspect outbox rows, databases, keys, or unrelated transcripts. Removing remote configuration does not erase replicated data. See [history](history.md).
|
|
237
|
-
|
|
238
|
-
## Nook is missing, unauthorized, or serving the wrong visibility
|
|
239
|
-
|
|
240
|
-
The model-facing tool needs both `nook` in the active persona and effective session configuration. Fix the execution-environment level, `/reload` while idle, and start a later turn. Subagents cannot receive Nook.
|
|
241
|
-
|
|
242
|
-
The CLI instead uses the invoking machine's configuration and credentials. A laptop command does not prove a remote host tool works. Start with installed `tau nook --help` and `tau nook list`; the latter uses effective configured credentials and reports URLs and visibility without printing credential values.
|
|
243
|
-
|
|
244
|
-
For `401` or Access failures, verify the domain, client id, secret source, service-auth policy, and the deployed Worker's Access team domain and audience. Access must protect only `https://<domain>/__nook/*`, with the Cookie Path Attribute disabled. Private-browser redirect loops usually indicate Access or cookie configuration.
|
|
245
|
-
|
|
246
|
-
Deploys are private unless `--public` is supplied. Public assets are anonymous and public browser KV is anonymously writable. If visibility is wrong, verify with `list` and redeploy reviewed content without `--public`. Rotate exposed credentials immediately. Use deliberate `delete` only when taking the site offline is intended. KV survives redeploy, so remove sensitive KV with supported commands.
|
|
247
|
-
|
|
248
|
-
Copy needs an existing empty destination. Static deploys require `index.html`, reject hidden files and symlinks, and reserve `/__nook`. Setup and destroy also require noninteractive Wrangler authentication. Compare the [Nook](nook.md) page and installed help with the deployed Worker version before upgrading or changing infrastructure.
|
|
249
|
-
|
|
250
|
-
## Telegram ignores messages or selects the wrong project
|
|
251
|
-
|
|
252
|
-
The Telegram runner uses the JSON file passed to `--config-file`, not a Tau project `config.json`. Relative workspace and project paths resolve from that file's directory. Restart the runner after editing it.
|
|
253
|
-
|
|
254
|
-
If a private message is ignored, check both `allowedChatIds` and `allowedUserIds`. An omitted list does not restrict private access by that dimension. If a group message is ignored, the group id must be in `allowedChatIds`, the triggering message must explicitly mention the bot, and the sender must pass `allowedUserIds` when that list is configured.
|
|
255
|
-
|
|
256
|
-
Messages in an allowed group that do not trigger the bot can be buffered as context for the next mentioned turn, including attachments, audio transcripts, and processing errors. Confirm that this sharing is intended before broadening a chat allowlist.
|
|
257
|
-
|
|
258
|
-
Each bot can restrict `allowedProjectIds`. `/use_<project>` changes the preference for future `/new` sessions but does not move the active session. Use `/status` to distinguish the active session's project from the saved preference.
|
|
259
|
-
|
|
260
|
-
Runner startup config errors name every invalid bot or project field. Use `tau telegram --help`, validate JSON syntax without printing the file, and fix all reported references, persona suffixes, project kinds, or allowlist IDs before restarting. Keep the file private because it contains bot tokens.
|
|
261
|
-
|
|
262
|
-
## Telegram workspace preparation or recovery fails
|
|
263
|
-
|
|
264
|
-
Repository projects need runner-side `gh`, Git, network access, and noninteractive credentials. Check `repo`, `ref`, workspace-root permissions and space, and `workingDirectory` after checkout. Tau maintains a bare cache and can reinitialize it when the repository changes. Do not delete caches or workspaces first; preserve logs and fix access or configuration.
|
|
265
|
-
|
|
266
|
-
Persistent-directory projects require the configured directory to exist and intentionally share it across sessions. Recovery rejects a stored `cwd` that differs from current configuration. Restore the mapping or create a new session in the new directory, rather than editing state.
|
|
267
|
-
|
|
268
|
-
Tau reconstructs missing managed workspaces. A preserved repository or composite workspace is reused as-is: recovery does not reprovision it or rewrite generated composite metadata from the current Telegram project configuration. New and reconstructed repositories may run executable `.tau/scripts/provision` asynchronously after the session is available. Failure notifies chats but leaves the session usable. Fix the script or dependencies, then run it manually only when its contract allows, or create a fresh session to provision again.
|
|
269
|
-
|
|
270
|
-
Recovery needs the same `workspaceRoot`, project definitions, host home, and Tau sessions. Inspect runner logs and `/status`. Do not edit runner state, project preferences, snapshots, or managed workspaces to force a match.
|
|
271
|
-
|
|
272
|
-
## Telegram audio or attachment processing fails
|
|
273
|
-
|
|
274
|
-
Telegram audio transcription uses Gemini and needs `GEMINI_API_KEY` or `apiKeys.google`. Set the credential for the runner process and restart it after changing the environment or configured key.
|
|
275
|
-
|
|
276
|
-
Distinguish download, materialization, format, and transcription errors. The reply or runner log states which stage failed. Confirm Telegram can deliver the file to the bot, the attachment type is supported, the runner can write its temporary directory, and Gemini accepts the media type. Do not log media bytes or transcripts merely to prove they exist.
|
|
218
|
+
The selector shows only sessions the host can load and reconnect. Confirm that the machine, OS user, home, Tau version, hosted environment settings, and target match the ones that created the session. Another user's `~/.config/tau/sessions` is a separate store. Restore missing settings, credentials, directories, or Sprites. Never edit session files to change the target or `cwd`.
|
|
277
219
|
|
|
278
|
-
|
|
220
|
+
A recovered session is idle. Unfinished turns are recorded as aborted, running maintenance is cancelled, and subagents are gone. Look at the last assistant message and tool results, then check `!!pwd` and `!!git status --short`. Retry continues from the current history without running completed tools again.
|
|
279
221
|
|
|
280
|
-
|
|
222
|
+
A WebSocket client disconnecting does not interrupt a long-running host, but a server shutdown does. Closing a local TUI shuts down its host, so recovering an interrupted turn is expected there.
|
|
281
223
|
|
|
282
|
-
|
|
224
|
+
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.
|
|
283
225
|
|
|
284
|
-
|
|
226
|
+
## History, Nook, or Telegram
|
|
285
227
|
|
|
286
|
-
|
|
228
|
+
These features have their own troubleshooting sections:
|
|
287
229
|
|
|
288
|
-
|
|
230
|
+
- [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
|
+
- [Telegram](telegram.md#troubleshooting): ignored messages, project selection, audio, voice replies, and late or missing replies.
|
|
233
|
+
- [Telegram projects and workspaces](telegram-projects.md#troubleshooting): repository preparation, provisioning, and workspace recovery.
|