one-code-extension 0.3.0 → 0.3.1
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 +111 -94
- package/docs/guide/README.md +2 -2
- package/docs/guide/bring-your-claude-code-setup.md +7 -5
- package/docs/guide/configuration.md +5 -3
- package/docs/guide/differences-from-claude-code.md +12 -10
- package/docs/guide/doctor.md +5 -3
- package/docs/guide/hooks.md +7 -5
- package/docs/guide/installation.md +8 -6
- package/docs/guide/permissions-modes-and-auto-mode.md +24 -22
- package/docs/guide/providers-and-models.md +12 -10
- package/docs/guide/reference.md +4 -2
- package/docs/guide/sessions-and-context.md +5 -3
- package/docs/guide/skills-plugins-and-mcp.md +7 -5
- package/docs/guide/subagents-and-workflows.md +13 -11
- package/docs/guide/tasks-and-background-work.md +10 -8
- package/docs/guide/terminal-interface.md +6 -4
- package/docs/guide/tools.md +5 -3
- package/docs/guide/troubleshooting.md +12 -10
- package/package.json +1 -1
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Permissions, modes, and auto mode
|
|
2
2
|
|
|
3
|
+
[← One Code user guide](README.md)
|
|
4
|
+
|
|
3
5
|
Every tool call the model makes passes through One Code's permission gate
|
|
4
6
|
before it runs. This page explains the permission modes, how to switch
|
|
5
7
|
between them, how to write rules, what the approval prompt offers, and how
|
|
@@ -16,7 +18,7 @@ For each tool call, the gate checks the following in order:
|
|
|
16
18
|
1. **Protected paths.** A write to a protected file or directory (see
|
|
17
19
|
[Protected paths](#protected-paths)) is never approved automatically. In
|
|
18
20
|
auto mode it goes to the classifier; in other modes it prompts you.
|
|
19
|
-
Allow rules
|
|
21
|
+
Allow rules don't cover protected paths.
|
|
20
22
|
2. **`deny` rules.** A matching `deny` rule blocks the call. `deny` always
|
|
21
23
|
wins.
|
|
22
24
|
3. **`ask` rules.** A matching `ask` rule prompts you, even in a mode that
|
|
@@ -96,7 +98,7 @@ Add `global` at the end to save it for every repository instead:
|
|
|
96
98
|
```
|
|
97
99
|
|
|
98
100
|
To review the current mode and every loaded rule, including which project
|
|
99
|
-
rules are trusted and which rules
|
|
101
|
+
rules are trusted and which rules couldn't be parsed, run `/permissions`.
|
|
100
102
|
|
|
101
103
|
Rules One Code adds are saved under `~/.onecode`, never under `~/.claude`.
|
|
102
104
|
|
|
@@ -104,7 +106,7 @@ Rules One Code adds are saved under `~/.onecode`, never under `~/.claude`.
|
|
|
104
106
|
|
|
105
107
|
A mode sets the default answer for actions no rule covers. **Auto is the
|
|
106
108
|
default**, matching Claude Code: a classifier approves routine actions and
|
|
107
|
-
stops risky ones, so you
|
|
109
|
+
stops risky ones, so you're not prompted for every step.
|
|
108
110
|
|
|
109
111
|
| Mode | Badge | What it does |
|
|
110
112
|
|---|---|---|
|
|
@@ -121,7 +123,7 @@ changes.
|
|
|
121
123
|
### Cycle modes with ctrl+q
|
|
122
124
|
|
|
123
125
|
Press **ctrl+q** to cycle through manual, accept edits, plan, and auto.
|
|
124
|
-
Two modes join the cycle only under conditions:
|
|
126
|
+
Two modes join the cycle only under certain conditions:
|
|
125
127
|
|
|
126
128
|
- **Auto** appears only when a model that can run the classifier is
|
|
127
129
|
available. With no provider connected, the cycle skips it.
|
|
@@ -130,7 +132,7 @@ Two modes join the cycle only under conditions:
|
|
|
130
132
|
**Don't ask** is never in the cycle; reach it with the `--permission-mode`
|
|
131
133
|
flag or a settings file.
|
|
132
134
|
|
|
133
|
-
Claude Code cycles modes with shift+tab. One Code
|
|
135
|
+
Claude Code cycles modes with shift+tab. One Code can't use that key
|
|
134
136
|
because pi reserves it for the reasoning-effort dial. On Windows and WSL,
|
|
135
137
|
pi's own default keybindings also use ctrl+q to queue a follow-up message.
|
|
136
138
|
If the two conflict there, change pi's binding in its keybindings file.
|
|
@@ -160,12 +162,12 @@ Claude Code settings files. Merge this into the existing object:
|
|
|
160
162
|
}
|
|
161
163
|
```
|
|
162
164
|
|
|
163
|
-
The scopes
|
|
165
|
+
The scopes aren't equal:
|
|
164
166
|
|
|
165
167
|
- **User scope** (`~/.claude/settings.json`) and **managed settings** can
|
|
166
168
|
set any mode.
|
|
167
169
|
- **Project scope** (`.claude/settings.json` and `.claude/settings.local.json`)
|
|
168
|
-
can set `default`, `acceptEdits`, `plan`, or `dontAsk`. It
|
|
170
|
+
can set `default`, `acceptEdits`, `plan`, or `dontAsk`. It can't set
|
|
169
171
|
`auto` or `bypassPermissions`; a checked-in file must not be able to turn
|
|
170
172
|
off approvals for whoever clones it.
|
|
171
173
|
- A `defaultMode` in `~/.onecode/settings.json` has no effect.
|
|
@@ -198,7 +200,7 @@ and these choices:
|
|
|
198
200
|
- **No, tell the agent what to do differently.** Deny it, with an optional
|
|
199
201
|
note that is passed to the model as the reason.
|
|
200
202
|
|
|
201
|
-
The "don't ask again" option
|
|
203
|
+
The "don't ask again" option isn't offered for protected paths, for writes
|
|
202
204
|
that the auto-mode safety floor caught, or in auto mode. Session grants never
|
|
203
205
|
apply in auto mode and are cleared when the session ends.
|
|
204
206
|
|
|
@@ -226,7 +228,7 @@ check and always goes to the classifier.
|
|
|
226
228
|
## Protected paths
|
|
227
229
|
|
|
228
230
|
Writes to these paths are never approved automatically in any mode other
|
|
229
|
-
than bypass, and allow rules
|
|
231
|
+
than bypass, and allow rules don't cover them.
|
|
230
232
|
|
|
231
233
|
Protected directories, including everything inside them:
|
|
232
234
|
|
|
@@ -300,11 +302,11 @@ shows the plan. Nothing runs until you choose. The choices are:
|
|
|
300
302
|
5. **Keep planning.** No mode change; the model refines the plan file.
|
|
301
303
|
|
|
302
304
|
The initial highlight is the option that restores your previous mode, or
|
|
303
|
-
manual mode when that
|
|
305
|
+
manual mode when that isn't offered. It never lands on a more permissive
|
|
304
306
|
option by default. Press the number of a choice to pick it directly, or
|
|
305
307
|
**Esc** to keep planning.
|
|
306
308
|
|
|
307
|
-
In a non-interactive run there
|
|
309
|
+
In a non-interactive run there's no one to approve, so `exit_plan_mode`
|
|
308
310
|
refuses and the session stays in plan mode with the plan on disk.
|
|
309
311
|
|
|
310
312
|
## Auto mode
|
|
@@ -317,20 +319,20 @@ classifier.
|
|
|
317
319
|
|
|
318
320
|
- Actions a deterministic analysis proves safe. Read-only shell commands
|
|
319
321
|
inside the working directory are the common case. This analysis can only
|
|
320
|
-
ever conclude "safe"; anything it
|
|
322
|
+
ever conclude "safe"; anything it can't parse or recognize goes to the
|
|
321
323
|
classifier rather than through.
|
|
322
324
|
- Edits and writes to files inside the project that are not credential
|
|
323
325
|
files, not protected paths, and not files that run code on their own
|
|
324
326
|
(build wrappers, CI workflows, editor auto-run configuration).
|
|
325
327
|
- Deleting or resetting files inside the project **when git can recover
|
|
326
328
|
them**. A tracked, committed file can be restored, so removing it is
|
|
327
|
-
approved. An untracked or modified file
|
|
329
|
+
approved. An untracked or modified file can't, so removing it goes to
|
|
328
330
|
the classifier. Claude Code trusts the whole project directory here; One
|
|
329
331
|
Code checks recoverability first.
|
|
330
332
|
|
|
331
333
|
### What goes to the classifier
|
|
332
334
|
|
|
333
|
-
Everything else: destructive commands git
|
|
335
|
+
Everything else: destructive commands git can't undo, anything that
|
|
334
336
|
reaches outside the project, network-affecting commands, writes to
|
|
335
337
|
protected paths, and reads outside the working directory.
|
|
336
338
|
|
|
@@ -342,21 +344,21 @@ The classifier is Claude Code's two-stage ruleset, embedded verbatim:
|
|
|
342
344
|
stated intent and the allow list, and either approves or blocks with a
|
|
343
345
|
named rule.
|
|
344
346
|
|
|
345
|
-
Verdicts are checked before they
|
|
347
|
+
Verdicts are checked before they're acted on. A block must cite a real
|
|
346
348
|
rule from the ruleset. An approval based on intent must quote your own
|
|
347
|
-
words from the conversation. A classifier that
|
|
348
|
-
out, or returns something unparseable blocks the action; a gate that
|
|
349
|
+
words from the conversation. A classifier that can't be reached, times
|
|
350
|
+
out, or returns something unparseable blocks the action; a gate that can't
|
|
349
351
|
consult its classifier approves nothing.
|
|
350
352
|
|
|
351
353
|
A blocked action is reported to the model with the reason so it can choose
|
|
352
|
-
a safer route. You
|
|
354
|
+
a safer route. You're not prompted per action while auto mode runs. After
|
|
353
355
|
repeated blocks in a row, auto mode pauses and the next action prompts you;
|
|
354
356
|
approving it resumes auto mode.
|
|
355
357
|
|
|
356
358
|
Allow rules that are broad enough to pre-approve arbitrary execution, such
|
|
357
359
|
as `Bash(*)`, a wildcarded interpreter, or a rule that allows delegation to
|
|
358
|
-
subagents, are suspended in auto mode so they
|
|
359
|
-
Session grants from the approval prompt
|
|
360
|
+
subagents, are suspended in auto mode so they can't bypass the classifier.
|
|
361
|
+
Session grants from the approval prompt don't apply in auto mode either.
|
|
360
362
|
|
|
361
363
|
### The classifier model
|
|
362
364
|
|
|
@@ -427,13 +429,13 @@ One Code's security model is the permission gate plus auto mode, not an
|
|
|
427
429
|
assumption that the model behaves. Read these facts before you leave a
|
|
428
430
|
session unattended:
|
|
429
431
|
|
|
430
|
-
- **There
|
|
432
|
+
- **There's no operating-system sandbox.** The gate decides whether a
|
|
431
433
|
command runs; nothing constrains what an approved command can touch. For
|
|
432
434
|
an OS-level wall, run One Code inside a container. The gate and the
|
|
433
435
|
container work together.
|
|
434
436
|
- **Bypass mode bypasses everything**, including protected paths. Claude
|
|
435
437
|
Code keeps its protected-path checks active even under
|
|
436
|
-
`--dangerously-skip-permissions`; One Code
|
|
438
|
+
`--dangerously-skip-permissions`; One Code doesn't.
|
|
437
439
|
- **Auto mode is the default without a first-run consent step**, and
|
|
438
440
|
without the OS sandbox Claude Code pairs its own auto default with.
|
|
439
441
|
- **A weak classifier is a weaker boundary.** Automatic selection applies a
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Providers and models
|
|
2
2
|
|
|
3
|
+
[← One Code user guide](README.md)
|
|
4
|
+
|
|
3
5
|
One Code talks to each model provider natively, so you choose the provider
|
|
4
6
|
and the model, and you can change either one during a session. This page
|
|
5
7
|
covers connecting a provider, storing a key, switching models, how One Code
|
|
@@ -31,8 +33,8 @@ Two providers hand out free models you can try at no cost:
|
|
|
31
33
|
a key, or sign in from inside One Code with no key copying. Free models
|
|
32
34
|
carry a `:free` suffix, such as `nvidia/nemotron-3-ultra-550b-a55b:free`.
|
|
33
35
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
pi stores credentials in its agent directory (`~/.onecode/agent/` under
|
|
37
|
+
the bundled app). `/logout` removes them.
|
|
36
38
|
|
|
37
39
|
## Store keys as environment variables
|
|
38
40
|
|
|
@@ -100,10 +102,10 @@ otherwise to the matching class within your provider (`haiku` the cheapest
|
|
|
100
102
|
capable model, `sonnet` the cheapest Sonnet-class model, `opus` and `fable`
|
|
101
103
|
your main model). They never switch providers.
|
|
102
104
|
|
|
103
|
-
Capability is judged by tier (see the next section).
|
|
104
|
-
|
|
105
|
-
model released more than a year after its vendor's newest
|
|
106
|
-
|
|
105
|
+
Capability is judged by tier (see the next section). One Code excludes
|
|
106
|
+
models that can't call tools, have no price, or are a generation behind: a
|
|
107
|
+
model released more than a year after its vendor's newest drops one tier,
|
|
108
|
+
and one more than two years behind never gets picked automatically.
|
|
107
109
|
Provider aliases such as `:free` or `:online` variants are skipped.
|
|
108
110
|
|
|
109
111
|
### Measured selection with Artificial Analysis
|
|
@@ -148,8 +150,8 @@ the system prompt to match:
|
|
|
148
150
|
| Cheap | Haiku-class models and comparable "flash", "mini", or "small" models. | The verbose prompt Claude Code gives Haiku. |
|
|
149
151
|
| Tiny | Sub-Haiku models. | The verbose prompt plus extra scaffolding and the `grep`, `find`, and `ls` tools. |
|
|
150
152
|
|
|
151
|
-
The tier is derived from the model's name, release date, and price. You
|
|
152
|
-
|
|
153
|
+
The tier is derived from the model's name, release date, and price. You
|
|
154
|
+
don't configure it; set `CC_PROMPT_TIER` to force one when you want to
|
|
153
155
|
experiment. `/doctor report` shows the tier in use.
|
|
154
156
|
|
|
155
157
|
## Web search on providers without a search API
|
|
@@ -161,7 +163,7 @@ API, in this order:
|
|
|
161
163
|
|
|
162
164
|
1. **Brave Search**, when `BRAVE_SEARCH_API_KEY` is set.
|
|
163
165
|
2. **Tavily**, when `TAVILY_API_KEY` is set.
|
|
164
|
-
3. **Exa's free keyless endpoint**, when neither key is set. It
|
|
166
|
+
3. **Exa's free keyless endpoint**, when neither key is set. It's
|
|
165
167
|
rate-limited and best-effort, so One Code warns you the first time a
|
|
166
168
|
session uses it and labels every result that came from it.
|
|
167
169
|
|
|
@@ -187,7 +189,7 @@ so. Web fetch works on every provider; it never depends on a search API.
|
|
|
187
189
|
- Some models reject request options others accept (a temperature, a
|
|
188
190
|
reasoning setting). One Code sends minimal options to its side calls for
|
|
189
191
|
this reason, and a side call that still fails does so loudly: a
|
|
190
|
-
classifier that
|
|
192
|
+
classifier that can't answer blocks the action; a reader that fails
|
|
191
193
|
returns the raw page.
|
|
192
194
|
- Interactive sessions request the provider's extended prompt cache (one
|
|
193
195
|
hour on Anthropic). Subagents and one-shot runs use the short default.
|
package/docs/guide/reference.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Command and keyboard reference
|
|
2
2
|
|
|
3
|
+
[← One Code user guide](README.md)
|
|
4
|
+
|
|
3
5
|
A lookup for every slash command, keyboard shortcut, command-line flag,
|
|
4
6
|
environment variable, and file location. Each entry points to the page
|
|
5
7
|
that explains it.
|
|
@@ -122,7 +124,7 @@ Rebind keys in pi's keybindings file; see pi's documentation.
|
|
|
122
124
|
## Command-line flags
|
|
123
125
|
|
|
124
126
|
`onecode` forwards every flag to pi except `--version` and `doctor`. On the
|
|
125
|
-
extension
|
|
127
|
+
extension install, use `pi` in place of `onecode`.
|
|
126
128
|
|
|
127
129
|
| Flag | What it does |
|
|
128
130
|
|---|---|
|
|
@@ -157,7 +159,7 @@ Set these before launching.
|
|
|
157
159
|
|---|---|
|
|
158
160
|
| `ONECODE_STATE_DIR` | Where One Code keeps its state (default `~/.onecode`). Independent of pi's agent directory. |
|
|
159
161
|
| `ONECODE_NO_UPDATE_CHECK=1` | Skip the daily update check. |
|
|
160
|
-
| `ONECODE_DEBUG=1` | Report when a pi-internal patch in the bundled app
|
|
162
|
+
| `ONECODE_DEBUG=1` | Report when a pi-internal patch in the bundled app didn't apply. |
|
|
161
163
|
| `AA_API_KEY` | Artificial Analysis key for measured model selection. |
|
|
162
164
|
| `BRAVE_SEARCH_API_KEY`, `TAVILY_API_KEY` | Web-search fallback keys. |
|
|
163
165
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Sessions and context
|
|
2
2
|
|
|
3
|
+
[← One Code user guide](README.md)
|
|
4
|
+
|
|
3
5
|
This page covers what One Code puts into the model's context, how it keeps
|
|
4
6
|
long sessions within the context window, what it remembers between
|
|
5
7
|
sessions, and how to continue or branch a session.
|
|
@@ -82,7 +84,7 @@ full transcript if it needs a detail.
|
|
|
82
84
|
Run `/compact` to compact at any time; you can pass instructions about what
|
|
83
85
|
the summary should focus on. Compaction that happens because the context is
|
|
84
86
|
full is more expensive than a manual or threshold compaction, because it
|
|
85
|
-
|
|
87
|
+
can't reuse the cached prefix of the conversation.
|
|
86
88
|
|
|
87
89
|
Set `CC_COMPACTION=0` to use pi's own summary instead.
|
|
88
90
|
|
|
@@ -107,7 +109,7 @@ turn it off.
|
|
|
107
109
|
|
|
108
110
|
Interactive sessions ask the provider for an extended cache lifetime (one
|
|
109
111
|
hour on Anthropic; provider-dependent elsewhere), so a pause between turns
|
|
110
|
-
|
|
112
|
+
doesn't re-send the whole conversation. Subagents, workflow agents, and
|
|
111
113
|
`-p` or `--mode json` runs use the provider's short default. Set
|
|
112
114
|
`PI_CACHE_RETENTION` yourself to take over the choice. The footer shows the
|
|
113
115
|
cache-hit rate of the latest turn.
|
|
@@ -121,7 +123,7 @@ Each session gets a scratchpad directory under the system temp directory,
|
|
|
121
123
|
named by project and session. The model is told to use it for temporary
|
|
122
124
|
files instead of `/tmp`; writes there need no approval.
|
|
123
125
|
|
|
124
|
-
Tool output larger than 50 KB
|
|
126
|
+
Tool output larger than 50 KB isn't truncated. It's written to a file
|
|
125
127
|
under the session directory, and the model receives the path, the size,
|
|
126
128
|
and a 2 KB preview in a `<persisted-output>` block, so it can read the part
|
|
127
129
|
it needs.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Skills, plugins, and MCP
|
|
2
2
|
|
|
3
|
+
[← One Code user guide](README.md)
|
|
4
|
+
|
|
3
5
|
One Code runs Agent Skills, Claude Code plugins, and MCP servers from your
|
|
4
6
|
existing configuration. This page covers using each and the panels that
|
|
5
7
|
manage them.
|
|
@@ -23,7 +25,7 @@ command, as in Claude Code: `/simplify`, `/code-review`, or any skill from
|
|
|
23
25
|
arguments. Plugin skills keep their plugin prefix and are run as
|
|
24
26
|
`/skill:<plugin>:<name>`. pi's `/skill:<name>` form works for every skill.
|
|
25
27
|
|
|
26
|
-
A skill's slash command
|
|
28
|
+
A skill's slash command isn't created when the name is already taken by a
|
|
27
29
|
built-in command, a `.claude/commands/` template, or another skill.
|
|
28
30
|
|
|
29
31
|
### Manage skills
|
|
@@ -57,7 +59,7 @@ A skill of the same name in your own `.claude/skills/` takes precedence.
|
|
|
57
59
|
### Skills not bundled
|
|
58
60
|
|
|
59
61
|
The bundle omits the Claude Code skills that depend on services One Code
|
|
60
|
-
|
|
62
|
+
doesn't have:
|
|
61
63
|
|
|
62
64
|
| Group | Skills omitted |
|
|
63
65
|
|---|---|
|
|
@@ -113,7 +115,7 @@ servers, agents, and hooks load on the next session, and the panel says so
|
|
|
113
115
|
when you close it.
|
|
114
116
|
|
|
115
117
|
Marketplace sources are git repositories and local paths. Version pinning,
|
|
116
|
-
npm or pip sources, and dependency resolution
|
|
118
|
+
npm or pip sources, and dependency resolution aren't implemented.
|
|
117
119
|
|
|
118
120
|
## MCP servers
|
|
119
121
|
|
|
@@ -144,7 +146,7 @@ appears as disabled in `/mcp`; choosing Enable there approves it.
|
|
|
144
146
|
Claude Code's `enabledMcpjsonServers`, `disabledMcpjsonServers`, and
|
|
145
147
|
`enableAllProjectMcpServers` settings are honored from
|
|
146
148
|
`~/.claude/settings.json`, and from `.claude/settings.local.json` when that
|
|
147
|
-
file
|
|
149
|
+
file isn't tracked by git. They are never honored from a checked-in
|
|
148
150
|
`.claude/settings.json`, which would let a repository approve its own
|
|
149
151
|
servers.
|
|
150
152
|
|
|
@@ -154,7 +156,7 @@ stderr.
|
|
|
154
156
|
### Use MCP tools
|
|
155
157
|
|
|
156
158
|
Each server's tools appear to the model as `mcp__<server>__<tool>` and load
|
|
157
|
-
on demand, so a server with many tools
|
|
159
|
+
on demand, so a server with many tools doesn't bloat the prompt. Servers
|
|
158
160
|
also expose resources, which the model can list and read.
|
|
159
161
|
|
|
160
162
|
A permission rule naming `mcp__<server>` covers every tool of that server.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Subagents and workflows
|
|
2
2
|
|
|
3
|
+
[← One Code user guide](README.md)
|
|
4
|
+
|
|
3
5
|
One Code delegates work in two ways: subagents for tasks that deserve their
|
|
4
6
|
own context window, and `ultracode` workflows for fanning a large job out
|
|
5
7
|
across many agents at once.
|
|
@@ -33,7 +35,7 @@ the `explore` agent". What happens next:
|
|
|
33
35
|
- **The run starts in the background.** The model receives a task id at
|
|
34
36
|
once and keeps working. The subagent's report arrives as a notification
|
|
35
37
|
when it finishes, mid-turn if the model is still busy, or as a new turn
|
|
36
|
-
if it
|
|
38
|
+
if it's idle. In a `-p` or `--mode json` run, the subagent runs to
|
|
37
39
|
completion instead and the report is returned inline.
|
|
38
40
|
- **You can keep talking to the model** while agents run.
|
|
39
41
|
- **Subagents go through your permission gate.** A subagent's tool calls
|
|
@@ -47,14 +49,14 @@ the `explore` agent". What happens next:
|
|
|
47
49
|
Two options change how a subagent runs:
|
|
48
50
|
|
|
49
51
|
- **Fork.** A forked subagent inherits the whole conversation so far, for a
|
|
50
|
-
task that needs everything you
|
|
52
|
+
task that needs everything you've built up. Forks run on the main
|
|
51
53
|
model and can only be started from the main conversation. Depth is
|
|
52
54
|
limited: the main conversation can start a subagent, and that subagent
|
|
53
55
|
one more, but no further.
|
|
54
56
|
- **Worktree isolation.** The subagent gets its own git worktree, branched
|
|
55
57
|
from `HEAD`, so it can edit files without colliding with your working
|
|
56
58
|
tree or other agents. A worktree the agent left unchanged is removed;
|
|
57
|
-
otherwise it
|
|
59
|
+
otherwise it's kept and its path reported.
|
|
58
60
|
|
|
59
61
|
### Choose the subagent model
|
|
60
62
|
|
|
@@ -90,7 +92,7 @@ agent.
|
|
|
90
92
|
### Follow agents live
|
|
91
93
|
|
|
92
94
|
While agents run, the panel below the editor shows a tree: `main` first,
|
|
93
|
-
then each agent with its type, what it
|
|
95
|
+
then each agent with its type, what it's doing right now ("Reading
|
|
94
96
|
src/index.ts", "Running a command"), its elapsed time, and its token count.
|
|
95
97
|
Nested agents appear under their parent. A finished agent stays for a few
|
|
96
98
|
seconds.
|
|
@@ -125,23 +127,23 @@ JavaScript script that fans the work out across many agents in parallel,
|
|
|
125
127
|
then runs it with the `workflow` tool.
|
|
126
128
|
|
|
127
129
|
The keyword arms the turn it appears in. A message you queue while the
|
|
128
|
-
model is still working
|
|
130
|
+
model is still working doesn't arm the next turn. For a longer stretch of
|
|
129
131
|
this kind of work, turn the mode on with `/effort ultracode`: it sets the
|
|
130
132
|
reasoning effort to `xhigh` and keeps workflow orchestration armed until
|
|
131
|
-
you change the effort again. The footer shows `✦ ultracode` while it
|
|
133
|
+
you change the effort again. The footer shows `✦ ultracode` while it's
|
|
132
134
|
armed.
|
|
133
135
|
|
|
134
136
|
### How a workflow runs
|
|
135
137
|
|
|
136
|
-
- The script runs in a separate thread, so a runaway script
|
|
138
|
+
- The script runs in a separate thread, so a runaway script can't freeze
|
|
137
139
|
the interface. A script that stops making progress is stopped after a
|
|
138
140
|
few seconds; a run is capped at 30 minutes.
|
|
139
141
|
- The run goes to the background and the model gets a run id. Progress
|
|
140
142
|
shows in a strip below the editor (**↓** to focus it, **Enter** to open,
|
|
141
143
|
**x** to stop) and in `/workflows`.
|
|
142
144
|
- Every completed agent call is journaled. Re-running a workflow with
|
|
143
|
-
`resumeFromRunId` replays the calls whose inputs
|
|
144
|
-
cost and runs only what differs. A background run
|
|
145
|
+
`resumeFromRunId` replays the calls whose inputs didn't change at no
|
|
146
|
+
cost and runs only what differs. A background run doesn't survive the
|
|
145
147
|
end of a session, but its journal does.
|
|
146
148
|
- A script can carry an output-token target. Once the target is reached,
|
|
147
149
|
new and queued agent calls stop; agents already running finish and can
|
|
@@ -183,11 +185,11 @@ the current run's script there.
|
|
|
183
185
|
`/effort` sets how much reasoning the model spends: `off`, `minimal`,
|
|
184
186
|
`low`, `medium`, `high`, `xhigh`, `max`, or `ultracode`. A bare `/effort`
|
|
185
187
|
opens a slider (**←** and **→** or **h** and **l** move, **Enter** confirms).
|
|
186
|
-
Levels the current model
|
|
188
|
+
Levels the current model doesn't support are skipped. **shift+tab** cycles
|
|
187
189
|
the plain levels; cycling away from `xhigh` while ultracode is armed turns
|
|
188
190
|
ultracode off.
|
|
189
191
|
|
|
190
192
|
Changing the effort re-caches the conversation, so the next request costs
|
|
191
|
-
more than usual. `/effort`
|
|
193
|
+
more than usual. `/effort` doesn't save the level across restarts; to
|
|
192
194
|
save one, open pi's `/thinking` picker and press **ctrl+s**, or pass
|
|
193
195
|
`--thinking <level>` at launch.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Tasks and background work
|
|
2
2
|
|
|
3
|
+
[← One Code user guide](README.md)
|
|
4
|
+
|
|
3
5
|
One Code keeps long-running work out of the model's way. This page covers
|
|
4
6
|
the structured task list, background shells, monitors, scheduled
|
|
5
7
|
wake-ups, and how the results of background work reach the model.
|
|
@@ -22,8 +24,8 @@ summary line and up to 12 tasks: `✔` for completed, `◼` for in progress,
|
|
|
22
24
|
| `/tasks show` | Shows it again. |
|
|
23
25
|
|
|
24
26
|
The list is stored inside the session, so it survives a resume and follows
|
|
25
|
-
the branch you
|
|
26
|
-
a while during a long task, it
|
|
27
|
+
the branch you're on in `/tree`. If the model hasn't touched the list for
|
|
28
|
+
a while during a long task, it's reminded that the list exists.
|
|
27
29
|
|
|
28
30
|
## Background shells
|
|
29
31
|
|
|
@@ -55,14 +57,14 @@ session is told which ones.
|
|
|
55
57
|
The `monitor` tool watches a long-running command, or a WebSocket URL, and
|
|
56
58
|
turns each line of output (or each message) into an event. Events are
|
|
57
59
|
batched and delivered to the model as notifications: at most once a second
|
|
58
|
-
while the model is idle, once every ten seconds while it
|
|
59
|
-
noisy process
|
|
60
|
+
while the model is idle, once every ten seconds while it's working, so a
|
|
61
|
+
noisy process doesn't flood the conversation.
|
|
60
62
|
|
|
61
63
|
A monitor runs until its command exits or its timeout passes (five minutes
|
|
62
64
|
by default, one hour at most), or for the whole session when started as
|
|
63
65
|
persistent. The model can stop it with `task_stop`.
|
|
64
66
|
|
|
65
|
-
A monitor
|
|
67
|
+
A monitor isn't auto-approved, because it runs a shell command; the
|
|
66
68
|
permission gate treats it like `bash`.
|
|
67
69
|
|
|
68
70
|
## Scheduled wake-ups and loops
|
|
@@ -77,7 +79,7 @@ permission gate treats it like `bash`.
|
|
|
77
79
|
- **Self-paced.** `/loop watch the CI run` with no interval lets the model
|
|
78
80
|
choose when to check next. It uses the `schedule_wakeup` tool, which
|
|
79
81
|
schedules one wake-up at a time between one minute and one hour ahead.
|
|
80
|
-
The model is told to pick a delay that matches what it
|
|
82
|
+
The model is told to pick a delay that matches what it's waiting for,
|
|
81
83
|
and to stop the loop when the task is done.
|
|
82
84
|
|
|
83
85
|
`/loop status` (or a bare `/loop`) reports the current loop. `/loop stop`
|
|
@@ -100,7 +102,7 @@ Background work reports back through notifications:
|
|
|
100
102
|
merged into one message.
|
|
101
103
|
- After you interrupt a turn, notifications are held and attached to your
|
|
102
104
|
next prompt instead of starting a turn on their own.
|
|
103
|
-
- Each notification is framed as an automated event, so the model
|
|
105
|
+
- Each notification is framed as an automated event, so the model doesn't
|
|
104
106
|
mistake it for something you said or approved.
|
|
105
107
|
|
|
106
108
|
## Non-interactive runs
|
|
@@ -108,4 +110,4 @@ Background work reports back through notifications:
|
|
|
108
110
|
In `-p` and `--mode json` runs nothing can run in the background, because
|
|
109
111
|
the process exits when the turn settles. Background shells, monitors,
|
|
110
112
|
subagents, and workflows run to completion and return their output
|
|
111
|
-
directly. `/loop` and `schedule_wakeup`
|
|
113
|
+
directly. `/loop` and `schedule_wakeup` don't fire.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# The terminal interface
|
|
2
2
|
|
|
3
|
+
[← One Code user guide](README.md)
|
|
4
|
+
|
|
3
5
|
This page describes what you see on screen and how to move around it: the
|
|
4
6
|
banner, the status line, the working indicator, the panels below the
|
|
5
7
|
editor, the dialogs, and the themes.
|
|
@@ -70,8 +72,8 @@ Set `CC_FOOTER=0` to keep pi's footer.
|
|
|
70
72
|
## The panel below the editor
|
|
71
73
|
|
|
72
74
|
One panel below the editor holds the background-shell manager and the
|
|
73
|
-
live subagent tree. It appears when there
|
|
74
|
-
when there
|
|
75
|
+
live subagent tree. It appears when there's something to show and hides
|
|
76
|
+
when there isn't.
|
|
75
77
|
|
|
76
78
|
- Press **↓** from an empty editor to focus it. If background shells exist,
|
|
77
79
|
the first **↓** lands on the shells chip; a second **↓** moves to the
|
|
@@ -85,7 +87,7 @@ when there is not.
|
|
|
85
87
|
**Enter** closes the view.
|
|
86
88
|
|
|
87
89
|
The panel's own footer names the keys that apply at each stage. Mouse-wheel
|
|
88
|
-
scrolling
|
|
90
|
+
scrolling deliberately isn't enabled in the transcript view, because
|
|
89
91
|
turning on mouse reporting would take over the terminal's native scrolling
|
|
90
92
|
and text selection for the whole session.
|
|
91
93
|
|
|
@@ -132,7 +134,7 @@ and [Plan mode](permissions-modes-and-auto-mode.md#plan-mode).
|
|
|
132
134
|
|
|
133
135
|
**ctrl+c** closes any panel.
|
|
134
136
|
|
|
135
|
-
PgUp and PgDn
|
|
137
|
+
PgUp and PgDn don't reach these panels in full-screen mode, because pi uses
|
|
136
138
|
them for its own scrollback; use the keys the panel's footer names.
|
|
137
139
|
|
|
138
140
|
## Full-screen mode
|
package/docs/guide/tools.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Tools
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[← One Code user guide](README.md)
|
|
4
|
+
|
|
5
|
+
The model works by calling tools. You don't type tool names; you describe
|
|
4
6
|
the task and the model chooses. This page lists every tool One Code gives
|
|
5
7
|
the model, what each does, what you see when it runs, and how Claude Code's
|
|
6
8
|
tool names map onto them.
|
|
@@ -55,7 +57,7 @@ Some command shapes are refused before they run, with a message that steers
|
|
|
55
57
|
the model to a better route:
|
|
56
58
|
|
|
57
59
|
- A foreground command that starts with `sleep`, or a polling loop that
|
|
58
|
-
sleeps, when the wait
|
|
60
|
+
sleeps, when the wait isn't provably short. The model is told to use
|
|
59
61
|
`run_in_background` or `monitor` instead.
|
|
60
62
|
- A command that would orphan a process (`nohup`, `setsid`, or a trailing
|
|
61
63
|
`&` with no `wait`).
|
|
@@ -131,7 +133,7 @@ deferred until needed. `list_mcp_resources`, `read_mcp_resource`, and
|
|
|
131
133
|
|
|
132
134
|
`tool_search` loads deferred tools. The model passes exact names
|
|
133
135
|
(`select:monitor,task_output`), a required term (`+notebook`), or free
|
|
134
|
-
keywords. If the model calls a tool it
|
|
136
|
+
keywords. If the model calls a tool it hasn't loaded yet, the call fails
|
|
135
137
|
and the model is steered to `tool_search`.
|
|
136
138
|
|
|
137
139
|
## Behavior in non-interactive runs
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Troubleshooting
|
|
2
2
|
|
|
3
|
+
[← One Code user guide](README.md)
|
|
4
|
+
|
|
3
5
|
Symptoms you might hit, what causes them, and what to do.
|
|
4
6
|
|
|
5
7
|
## Start with the doctor
|
|
@@ -38,9 +40,9 @@ pins pi itself.
|
|
|
38
40
|
pi it runs on are out of step. On the bundled app, reinstall it. On your own
|
|
39
41
|
pi, run `pi update --extensions`.
|
|
40
42
|
|
|
41
|
-
**The stock pi first-run wizard
|
|
43
|
+
**The stock pi first-run wizard didn't appear.** The bundled app seeds
|
|
42
44
|
pi's settings with the One Code theme, quiet startup, and full-screen mode
|
|
43
|
-
on first run, so there
|
|
45
|
+
on first run, so there's nothing to ask.
|
|
44
46
|
|
|
45
47
|
## Permissions
|
|
46
48
|
|
|
@@ -57,7 +59,7 @@ check `/permissions`: an `ask` rule prompts in every mode.
|
|
|
57
59
|
|
|
58
60
|
**An allow rule I wrote has no effect in auto mode.** Broad execution rules
|
|
59
61
|
(`Bash(*)`, wildcarded interpreters, delegation rules) are suspended in
|
|
60
|
-
auto mode so they
|
|
62
|
+
auto mode so they can't bypass the classifier. Session grants from the
|
|
61
63
|
approval prompt are also ignored there. Narrow the rule or switch to
|
|
62
64
|
accept-edits or manual mode.
|
|
63
65
|
|
|
@@ -66,7 +68,7 @@ may not select auto or bypass mode. Set it in `~/.claude/settings.json`
|
|
|
66
68
|
or pass `--permission-mode auto`.
|
|
67
69
|
|
|
68
70
|
**`defaultMode` in `~/.onecode/settings.json` does nothing.** The
|
|
69
|
-
permission loader
|
|
71
|
+
permission loader doesn't read that key from One Code's file. Use a Claude
|
|
70
72
|
Code settings file or the flag.
|
|
71
73
|
|
|
72
74
|
**The model is denied a write to `.claude/settings.json`.** The auto-mode
|
|
@@ -80,12 +82,12 @@ allow rules, or use auto mode with a provider that can run the classifier.
|
|
|
80
82
|
## Auto-mode classifier
|
|
81
83
|
|
|
82
84
|
**Actions are blocked with a message about the classifier being
|
|
83
|
-
unavailable.** The classifier model
|
|
85
|
+
unavailable.** The classifier model couldn't be reached or returned
|
|
84
86
|
nothing usable; the gate fails closed. Check `/auto-mode config` for the
|
|
85
87
|
model in use, and `/doctor report` for provider credentials. Set
|
|
86
88
|
`CC_AUTO_MODE_DEBUG=1` to see each verdict on stderr.
|
|
87
89
|
|
|
88
|
-
**The classifier approves or blocks something it
|
|
90
|
+
**The classifier approves or blocks something it shouldn't.** Choose a
|
|
89
91
|
stronger classifier with `/auto-mode model <provider/model-id>`. A
|
|
90
92
|
Haiku-class classifier is a measurably weaker boundary than a Sonnet-class
|
|
91
93
|
one.
|
|
@@ -122,7 +124,7 @@ to a rate-limited endpoint. Set `BRAVE_SEARCH_API_KEY` or
|
|
|
122
124
|
`/doctor report` for install hints.
|
|
123
125
|
|
|
124
126
|
**TypeScript diagnostics fail with a message about `lib/tsserver.js`.**
|
|
125
|
-
TypeScript 7's native compiler
|
|
127
|
+
TypeScript 7's native compiler doesn't ship that file, and
|
|
126
128
|
`typescript-language-server` needs it. Install a TypeScript 5.x development
|
|
127
129
|
dependency in the project.
|
|
128
130
|
|
|
@@ -139,7 +141,7 @@ Authenticate. Tokens are stored under `~/.onecode/mcp-auth/`.
|
|
|
139
141
|
|
|
140
142
|
## Hooks
|
|
141
143
|
|
|
142
|
-
**A project's hooks
|
|
144
|
+
**A project's hooks don't run.** They need one-time approval at startup.
|
|
143
145
|
Restart the session and accept, or check
|
|
144
146
|
`~/.onecode/hooks/project-approvals.json`.
|
|
145
147
|
|
|
@@ -152,10 +154,10 @@ Restart the session and accept, or check
|
|
|
152
154
|
**My background shells are gone after `/clear`.** Background work ends
|
|
153
155
|
with the session. The new session lists what was stopped.
|
|
154
156
|
|
|
155
|
-
**A resumed session is in a different permission mode.** Modes
|
|
157
|
+
**A resumed session is in a different permission mode.** Modes aren't
|
|
156
158
|
saved with the session. Pass `--permission-mode` or set a default.
|
|
157
159
|
|
|
158
|
-
**The `/effort` level reset after a restart.** `/effort`
|
|
160
|
+
**The `/effort` level reset after a restart.** `/effort` doesn't save the
|
|
159
161
|
level. Open pi's `/thinking` picker and press **ctrl+s** to save a startup
|
|
160
162
|
default, or pass `--thinking <level>` at launch.
|
|
161
163
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "one-code-extension",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "One Code as a pi package — the Claude Code experience on your own pi install: ported system prompt, Claude-Code-format permissions, .claude/ compatibility, ToolSearch-style deferred tools, and system-reminder steering. For the bundled app, install `@one-ai/one-code` instead.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi",
|