one-code-extension 0.1.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -0
- package/README.md +200 -172
- package/agents/explore.md +9 -6
- package/agents/general-purpose.md +1 -1
- package/agents/plan.md +6 -4
- package/docs/guide/README.md +52 -0
- package/docs/guide/bring-your-claude-code-setup.md +126 -0
- package/docs/guide/configuration.md +171 -0
- package/docs/guide/differences-from-claude-code.md +150 -0
- package/docs/guide/doctor.md +86 -0
- package/docs/guide/hooks.md +109 -0
- package/docs/guide/installation.md +124 -0
- package/docs/guide/permissions-modes-and-auto-mode.md +450 -0
- package/docs/guide/providers-and-models.md +194 -0
- package/docs/guide/reference.md +224 -0
- package/docs/guide/sessions-and-context.md +190 -0
- package/docs/guide/skills-plugins-and-mcp.md +176 -0
- package/docs/guide/subagents-and-workflows.md +193 -0
- package/docs/guide/tasks-and-background-work.md +111 -0
- package/docs/guide/terminal-interface.md +155 -0
- package/docs/guide/tools.md +175 -0
- package/docs/guide/troubleshooting.md +175 -0
- package/extensions/ask-user/index.ts +65 -71
- package/extensions/ask-user/questions.ts +15 -28
- package/extensions/ask-user/widget.ts +533 -0
- package/extensions/auto-mode/actions.ts +9 -26
- package/extensions/auto-mode/classifier-prompt.ts +127 -0
- package/extensions/auto-mode/classifier.ts +305 -227
- package/extensions/auto-mode/config.ts +279 -77
- package/extensions/auto-mode/defaults.ts +17 -60
- package/extensions/auto-mode/instructions.ts +2 -1
- package/extensions/auto-mode/model-picker.ts +53 -31
- package/extensions/auto-mode/model-select.ts +153 -82
- package/extensions/auto-mode/paths.ts +13 -1
- package/extensions/auto-mode/pause.ts +8 -0
- package/extensions/auto-mode/prompt.ts +205 -238
- package/extensions/auto-mode/recoverability.ts +229 -0
- package/extensions/auto-mode/rules.ts +92 -75
- package/extensions/auto-mode/safety-floor.ts +43 -12
- package/extensions/auto-mode/sensitive.ts +11 -0
- package/extensions/auto-mode/setup-run.ts +245 -0
- package/extensions/auto-mode/setup.ts +235 -0
- package/extensions/auto-mode/shell-analysis.ts +332 -26
- package/extensions/auto-mode/transcript.ts +102 -0
- package/extensions/background/index.ts +256 -43
- package/extensions/background/monitor-batch.ts +58 -0
- package/extensions/background/registry.ts +9 -0
- package/extensions/background/wakeup.ts +45 -0
- package/extensions/bash/background.ts +47 -22
- package/extensions/bash/guards.ts +229 -0
- package/extensions/bash/index.ts +81 -19
- package/extensions/branding/index.ts +44 -18
- package/extensions/branding/startup.ts +23 -8
- package/extensions/claude-compat/index.ts +17 -2
- package/extensions/claude-context/index.ts +41 -12
- package/extensions/clear/index.ts +27 -0
- package/extensions/compaction/fit.ts +121 -0
- package/extensions/compaction/index.ts +176 -71
- package/extensions/compaction/prompt.ts +21 -1
- package/extensions/context-budget/budget.ts +61 -0
- package/extensions/context-budget/index.ts +66 -0
- package/extensions/context-management/index.ts +40 -16
- package/extensions/doctor/build.ts +226 -0
- package/extensions/doctor/cli.ts +99 -0
- package/extensions/doctor/compat.ts +532 -0
- package/extensions/doctor/dependencies.ts +186 -0
- package/extensions/doctor/fix-prompt.ts +125 -0
- package/extensions/doctor/index.ts +308 -0
- package/extensions/doctor/models.ts +231 -0
- package/extensions/doctor/presets.ts +208 -0
- package/extensions/doctor/report.ts +189 -0
- package/extensions/doctor/update-lookup.ts +46 -0
- package/extensions/doctor/viewer.ts +124 -0
- package/extensions/effort/index.ts +41 -4
- package/extensions/effort/slider.ts +33 -2
- package/extensions/file-tracker/index.ts +143 -20
- package/extensions/file-tracker/replay.ts +46 -0
- package/extensions/file-tracker/tracker.ts +51 -4
- package/extensions/footer/footer-line.ts +207 -0
- package/extensions/footer/index.ts +152 -0
- package/extensions/footer/pr.ts +53 -0
- package/extensions/hooks/executor.ts +57 -20
- package/extensions/hooks/formatter-notice.ts +76 -0
- package/extensions/hooks/index.ts +314 -73
- package/extensions/hooks/matcher.ts +35 -1
- package/extensions/hooks/plugin-hooks.ts +3 -3
- package/extensions/hooks/protocol.ts +58 -0
- package/extensions/hooks/subagent-bridge.ts +77 -0
- package/extensions/hooks/trust.ts +15 -4
- package/extensions/init/index.ts +26 -0
- package/extensions/init/prompt.ts +40 -0
- package/extensions/interrupted/index.ts +35 -0
- package/extensions/interrupted/line.ts +9 -0
- package/extensions/lib/abort.ts +15 -0
- package/extensions/lib/agent-loader.ts +183 -0
- package/extensions/lib/anthropic-payload.ts +15 -0
- package/extensions/lib/atomic-write.ts +56 -0
- package/extensions/lib/bridge-watch.ts +20 -0
- package/extensions/lib/cache-retention.ts +60 -0
- package/extensions/lib/capability-index.ts +466 -0
- package/extensions/lib/claude-context.ts +318 -27
- package/extensions/lib/claude-settings.ts +64 -0
- package/extensions/lib/consent-preview.ts +30 -0
- package/extensions/lib/deferred.ts +144 -13
- package/extensions/lib/favorites.ts +43 -0
- package/extensions/lib/fetch-timeout.ts +15 -0
- package/extensions/lib/frontmatter.ts +31 -0
- package/extensions/lib/git.ts +44 -2
- package/extensions/lib/hook-gate.ts +90 -0
- package/extensions/lib/interrupt.ts +94 -0
- package/extensions/lib/mcp-overrides.ts +61 -0
- package/extensions/lib/mcp-share.ts +25 -0
- package/extensions/lib/mcp-status.ts +34 -0
- package/extensions/lib/memory.ts +41 -6
- package/extensions/lib/model-facts.generated.json +2480 -0
- package/extensions/lib/model-facts.ts +162 -0
- package/extensions/lib/model-policy.ts +145 -189
- package/extensions/lib/model-tier.ts +480 -64
- package/extensions/lib/model-unusable.ts +37 -0
- package/extensions/lib/notifications.ts +320 -1
- package/extensions/lib/one-code-settings.ts +63 -0
- package/extensions/lib/original-command.ts +71 -0
- package/extensions/lib/package-version.ts +31 -0
- package/extensions/lib/paths.ts +39 -4
- package/extensions/lib/permission-gate.ts +192 -0
- package/extensions/lib/persisted-output.ts +18 -0
- package/extensions/lib/pi-ai-estimate.ts +160 -0
- package/extensions/lib/pi-version.ts +1 -1
- package/extensions/lib/plan-mode-channels.ts +11 -0
- package/extensions/lib/plugin-overrides.ts +24 -0
- package/extensions/lib/plugin-root.ts +44 -0
- package/extensions/lib/plugins.ts +233 -54
- package/extensions/lib/prefix-warm-gate.ts +157 -0
- package/extensions/lib/process-tree.ts +56 -0
- package/extensions/lib/reminders.ts +321 -68
- package/extensions/lib/scratchpad.ts +11 -8
- package/extensions/lib/session-lifecycle.ts +28 -0
- package/extensions/lib/settings-channels.ts +14 -0
- package/extensions/lib/shell-tasks.ts +54 -0
- package/extensions/lib/skill-overrides.ts +86 -0
- package/extensions/lib/skill-scan.ts +110 -0
- package/extensions/lib/text-width.ts +267 -0
- package/extensions/lib/tui-render.ts +281 -54
- package/extensions/lib/usage-bus.ts +75 -0
- package/extensions/lib/usage-tracker.ts +67 -0
- package/extensions/lib/worktree-isolation.ts +170 -0
- package/extensions/lsp/client.ts +69 -12
- package/extensions/lsp/format.ts +12 -2
- package/extensions/lsp/index.ts +273 -84
- package/extensions/lsp/install-hints.ts +43 -0
- package/extensions/lsp/keep-alive.ts +19 -0
- package/extensions/lsp/plugin-servers.ts +331 -0
- package/extensions/lsp/watcher.ts +157 -0
- package/extensions/mcp/announce.ts +99 -0
- package/extensions/mcp/client.ts +181 -22
- package/extensions/mcp/config.ts +55 -24
- package/extensions/mcp/index.ts +586 -86
- package/extensions/mcp/oauth/browser.ts +26 -0
- package/extensions/mcp/oauth/callback.ts +104 -0
- package/extensions/mcp/oauth/flow.ts +68 -0
- package/extensions/mcp/oauth/provider.ts +147 -0
- package/extensions/mcp/oauth/store.ts +86 -0
- package/extensions/mcp/panel/keys.ts +34 -0
- package/extensions/mcp/panel/model.ts +62 -0
- package/extensions/mcp/panel/render.ts +141 -0
- package/extensions/mcp/panel/state.ts +108 -0
- package/extensions/mcp/schema.ts +83 -6
- package/extensions/mcp/trust.ts +340 -0
- package/extensions/memory/entries.ts +163 -0
- package/extensions/memory/index.ts +119 -2
- package/extensions/memory/open-external.ts +97 -0
- package/extensions/memory/panel.ts +124 -0
- package/extensions/model-default/index.ts +74 -0
- package/extensions/notebook/index.ts +36 -18
- package/extensions/notebook/notebook.ts +110 -17
- package/extensions/permissions/index.ts +1012 -247
- package/extensions/permissions/matcher.ts +488 -57
- package/extensions/permissions/modes.ts +55 -7
- package/extensions/permissions/project-trust.ts +81 -0
- package/extensions/permissions/protected-paths.ts +16 -3
- package/extensions/permissions/rule-prose.ts +79 -0
- package/extensions/permissions/session-grant.ts +91 -0
- package/extensions/permissions/settings.ts +112 -33
- package/extensions/permissions/subagent-gate.ts +57 -0
- package/extensions/plan-mode/index.ts +143 -33
- package/extensions/plan-mode/reminder.ts +16 -19
- package/extensions/plan-mode/viewer.ts +40 -31
- package/extensions/plugins/counts.ts +68 -0
- package/extensions/plugins/index.ts +496 -32
- package/extensions/plugins/install/install.ts +167 -0
- package/extensions/plugins/install/paths.ts +23 -0
- package/extensions/plugins/install/registry.ts +72 -0
- package/extensions/plugins/marketplace/git.ts +103 -0
- package/extensions/plugins/marketplace/official.ts +36 -0
- package/extensions/plugins/marketplace/parse.ts +94 -0
- package/extensions/plugins/marketplace/registry.ts +60 -0
- package/extensions/plugins/marketplace/sync.ts +146 -0
- package/extensions/plugins/marketplace/types.ts +128 -0
- package/extensions/plugins/panel/keys.ts +52 -0
- package/extensions/plugins/panel/render.ts +315 -0
- package/extensions/plugins/panel/rows.ts +230 -0
- package/extensions/plugins/panel/state.ts +333 -0
- package/extensions/recap/index.ts +215 -0
- package/extensions/recap/prompt.ts +44 -0
- package/extensions/recap/scheduler.ts +87 -0
- package/extensions/search-tools/index.ts +0 -0
- package/extensions/search-tools/tools.ts +7 -5
- package/extensions/skill/index.ts +360 -34
- package/extensions/skill/invoke.ts +185 -0
- package/extensions/skill/listing.ts +21 -0
- package/extensions/skill/panel/keys.ts +41 -0
- package/extensions/skill/panel/render.ts +91 -0
- package/extensions/skill/panel/state.ts +115 -0
- package/extensions/spinner/index.ts +110 -0
- package/extensions/spinner/line.ts +51 -0
- package/extensions/spinner/verbs.ts +201 -0
- package/extensions/subagents/agents.ts +88 -44
- package/extensions/subagents/default-model.ts +62 -32
- package/extensions/subagents/delegation-steer.ts +23 -0
- package/extensions/subagents/hand-back-review.ts +67 -0
- package/extensions/subagents/index.ts +1545 -346
- package/extensions/subagents/live-runs.ts +293 -0
- package/extensions/subagents/model-select.ts +252 -82
- package/extensions/subagents/outcome.ts +90 -0
- package/extensions/subagents/panel-keys.ts +41 -0
- package/extensions/subagents/panel-render.ts +357 -0
- package/extensions/subagents/panel-widget.ts +330 -0
- package/extensions/subagents/pending-claim.ts +45 -0
- package/extensions/subagents/prose.ts +105 -0
- package/extensions/subagents/runner.ts +674 -0
- package/extensions/subagents/runs.ts +68 -1
- package/extensions/subagents/send-to-main-tool.ts +55 -0
- package/extensions/subagents/session-turns.ts +138 -0
- package/extensions/subagents/shell-panel.ts +198 -0
- package/extensions/subagents/usage.ts +16 -4
- package/extensions/subagents/worktree.ts +13 -0
- package/extensions/system-prompt/environment.ts +5 -3
- package/extensions/system-prompt/git-status.ts +93 -0
- package/extensions/system-prompt/index.ts +23 -1
- package/extensions/system-prompt/template.ts +34 -4
- package/extensions/system-prompt/tiers/common.ts +31 -6
- package/extensions/system-prompt/tiers/low.ts +13 -3
- package/extensions/system-prompt/tiers/mid.ts +21 -8
- package/extensions/system-reminder/index.ts +53 -9
- package/extensions/tasks/index.ts +65 -16
- package/extensions/tasks/store.ts +76 -3
- package/extensions/tool-search/announce.ts +42 -0
- package/extensions/tool-search/index.ts +136 -13
- package/extensions/turn-duration/index.ts +60 -0
- package/extensions/turn-duration/line.ts +22 -0
- package/extensions/turn-duration/span.ts +41 -0
- package/extensions/turn-duration/verbs.ts +24 -0
- package/extensions/web/backends.ts +421 -0
- package/extensions/web/index.ts +178 -21
- package/extensions/web-fetch/index.ts +74 -18
- package/extensions/web-fetch/summarize.ts +1 -1
- package/extensions/workflow/agent-session.ts +182 -112
- package/extensions/workflow/globals.ts +129 -106
- package/extensions/workflow/index.ts +343 -28
- package/extensions/workflow/records.ts +118 -0
- package/extensions/workflow/run-manager.ts +80 -31
- package/extensions/workflow/saved-workflows.ts +2 -1
- package/extensions/workflow/script-worker.mjs +110 -0
- package/extensions/workflow/types.ts +74 -8
- package/extensions/workflow/viewer.ts +562 -0
- package/extensions/workflow/vm-runtime.ts +118 -22
- package/extensions/workflow/widget.ts +126 -18
- package/extensions/worktree/guards.ts +240 -0
- package/extensions/worktree/index.ts +30 -5
- package/extensions/worktree/rewrite.ts +32 -16
- package/package.json +20 -10
- package/skills/code-review/SKILL.md +165 -0
- package/skills/fewer-permission-prompts/SKILL.md +61 -0
- package/skills/security-review/SKILL.md +178 -0
- package/skills/simplify/SKILL.md +70 -0
- package/themes/{one-code-light.json → onecode-light.json} +6 -1
- package/themes/{one-code.json → onecode.json} +6 -1
- package/types/app.d.ts +8 -1
- package/types/community-packages.d.ts +45 -2
- package/docs/decisions/auto-mode.md +0 -526
- package/docs/decisions/branding.md +0 -127
- package/docs/decisions/code-review-remediation.md +0 -106
- package/docs/decisions/compaction.md +0 -140
- package/docs/decisions/distribution.md +0 -168
- package/docs/decisions/hooks.md +0 -64
- package/docs/decisions/lsp.md +0 -58
- package/docs/decisions/mcp.md +0 -104
- package/docs/decisions/memory-state.md +0 -170
- package/docs/decisions/model-policy.md +0 -126
- package/docs/decisions/modes.md +0 -178
- package/docs/decisions/skills-plugins.md +0 -56
- package/docs/decisions/subagents-workflows.md +0 -225
- package/docs/decisions/system-prompt.md +0 -98
- package/docs/decisions/tools.md +0 -407
- package/docs/decisions/tui.md +0 -217
- package/docs/decisions.md +0 -148
- package/extensions/subagents/child.ts +0 -414
- package/extensions/subagents/rpc-turns.ts +0 -123
- package/extensions/todo/index.ts +0 -133
- package/extensions/workflow/permission-gate.ts +0 -71
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# Skills, plugins, and MCP
|
|
2
|
+
|
|
3
|
+
One Code runs Agent Skills, Claude Code plugins, and MCP servers from your
|
|
4
|
+
existing configuration. This page covers using each and the panels that
|
|
5
|
+
manage them.
|
|
6
|
+
|
|
7
|
+
## Skills
|
|
8
|
+
|
|
9
|
+
An Agent Skill is a packaged set of instructions for a kind of task. One
|
|
10
|
+
Code discovers skills from these places, in order of precedence:
|
|
11
|
+
|
|
12
|
+
1. `.claude/skills/` in the project
|
|
13
|
+
2. `~/.claude/skills/` and `~/.agents/skills/`
|
|
14
|
+
3. Skills from installed plugins
|
|
15
|
+
4. The bundled catalog
|
|
16
|
+
|
|
17
|
+
A skill of the same name earlier in the list wins.
|
|
18
|
+
|
|
19
|
+
The model calls a skill with the `skill` tool when a task matches its
|
|
20
|
+
description. You can also run one yourself by typing its name as a slash
|
|
21
|
+
command, as in Claude Code: `/simplify`, `/code-review`, or any skill from
|
|
22
|
+
`.claude/skills/`. Anything after the name is passed to the skill as
|
|
23
|
+
arguments. Plugin skills keep their plugin prefix and are run as
|
|
24
|
+
`/skill:<plugin>:<name>`. pi's `/skill:<name>` form works for every skill.
|
|
25
|
+
|
|
26
|
+
A skill's slash command is not created when the name is already taken by a
|
|
27
|
+
built-in command, a `.claude/commands/` template, or another skill.
|
|
28
|
+
|
|
29
|
+
### Manage skills
|
|
30
|
+
|
|
31
|
+
`/skills` opens the skills panel. Each skill has one of four states, which
|
|
32
|
+
control how the model sees it:
|
|
33
|
+
|
|
34
|
+
| State | Effect |
|
|
35
|
+
|---|---|
|
|
36
|
+
| On | The model sees the full description and can call the skill. |
|
|
37
|
+
| Name only | The model sees the name but not the description. |
|
|
38
|
+
| User only | You can run it as a command; the model does not see it. |
|
|
39
|
+
| Off | Not available to anyone. |
|
|
40
|
+
|
|
41
|
+
**↑** and **↓** move, **Enter** or **Space** cycle the state, **/**
|
|
42
|
+
searches, **t** sorts by name or state, **Esc** closes. Plugin skills are
|
|
43
|
+
managed from `/plugins` instead. States are saved under One Code's plugin
|
|
44
|
+
directory, never in the skill files.
|
|
45
|
+
|
|
46
|
+
### Bundled skills
|
|
47
|
+
|
|
48
|
+
Four of Claude Code's built-in skills ship with One Code:
|
|
49
|
+
|
|
50
|
+
- `simplify`: clean up recently changed code for clarity.
|
|
51
|
+
- `code-review`: review changes for correctness bugs.
|
|
52
|
+
- `security-review`: review changes for security issues.
|
|
53
|
+
- `fewer-permission-prompts`: scan your usage and propose an allowlist.
|
|
54
|
+
|
|
55
|
+
A skill of the same name in your own `.claude/skills/` takes precedence.
|
|
56
|
+
|
|
57
|
+
### Skills not bundled
|
|
58
|
+
|
|
59
|
+
The bundle omits the Claude Code skills that depend on services One Code
|
|
60
|
+
does not have:
|
|
61
|
+
|
|
62
|
+
| Group | Skills omitted |
|
|
63
|
+
|---|---|
|
|
64
|
+
| Hosted artifacts and design | `design`, `design-sync`, `dataviz`, the `artifact-*` guides, and the dashboard, report, table, explainer, plan, and whiteboard publishers. |
|
|
65
|
+
| Claude Code configuration, account, and desktop workflows | `update-config`, `keybindings-help`, `claude-in-chrome`, `debug`, `usage`, `explain-usage`, `setup-cowork`, `schedule` cloud routines, `batch`, and `claude-code-guide`. |
|
|
66
|
+
| Run-skill generation | `run` and `run-skill-generator`. Use project-local run skills instead. |
|
|
67
|
+
| API reference | `claude-api`. |
|
|
68
|
+
|
|
69
|
+
One Code provides `/init` and `/loop` itself. Commit and pull-request
|
|
70
|
+
workflows are available through the `commit-commands` plugin.
|
|
71
|
+
|
|
72
|
+
You can add your own skills under `.claude/skills/`. A skill that requires a
|
|
73
|
+
service or tool still needs that service or tool configured.
|
|
74
|
+
|
|
75
|
+
## Custom commands
|
|
76
|
+
|
|
77
|
+
Markdown files in `.claude/commands/` (project) and `~/.claude/commands/`
|
|
78
|
+
(user) become slash commands with the file's name, as in Claude Code.
|
|
79
|
+
`$ARGUMENTS` is replaced with what you type after the command. Plugin
|
|
80
|
+
commands are namespaced as `/<plugin>:<command>`, and may run shell
|
|
81
|
+
snippets from their body; oversized output is written to a file rather than
|
|
82
|
+
truncated.
|
|
83
|
+
|
|
84
|
+
## Plugins
|
|
85
|
+
|
|
86
|
+
A plugin bundles agents, skills, commands, hooks, MCP servers, and
|
|
87
|
+
language-server configuration. One Code picks up plugins installed under
|
|
88
|
+
`~/.claude/plugins` and makes their contents available, each namespaced by
|
|
89
|
+
plugin so names never collide with yours. The `enabledPlugins` key in your
|
|
90
|
+
Claude Code settings is honored.
|
|
91
|
+
|
|
92
|
+
Run `/plugins` to open the marketplace panel. Its four tabs are:
|
|
93
|
+
|
|
94
|
+
- **Discover**: browse plugins from your marketplaces. Type to search,
|
|
95
|
+
**Space** to install, **Enter** for details.
|
|
96
|
+
- **Installed**: see what is installed and turn plugins, or individual
|
|
97
|
+
skills within them, on or off. It works like `/skills`: **Enter** or
|
|
98
|
+
**Space** toggles the selected row, **v** opens its details, **e** and
|
|
99
|
+
**d** set it on or off, **u** uninstalls, **f** marks a favorite, and
|
|
100
|
+
**/** opens the search box (**Esc** leaves it). MCP servers have no
|
|
101
|
+
toggle, so **Enter** opens their details.
|
|
102
|
+
- **Marketplaces**: the sources plugins come from. **a** adds one (a GitHub
|
|
103
|
+
`owner/repo`, a git URL, or a local path), **u** refreshes, **d** removes.
|
|
104
|
+
- **Errors**: plugins that failed to load, and why.
|
|
105
|
+
|
|
106
|
+
**←** and **→** switch tabs; **Esc** closes.
|
|
107
|
+
|
|
108
|
+
Plugins you install through One Code go to One Code's own plugin directory
|
|
109
|
+
under its agent directory. Plugins Claude Code installed stay read-only;
|
|
110
|
+
turning one off writes to an overrides layer, never to `~/.claude`.
|
|
111
|
+
Installing or toggling a plugin takes effect for commands at once; its MCP
|
|
112
|
+
servers, agents, and hooks load on the next session, and the panel says so
|
|
113
|
+
when you close it.
|
|
114
|
+
|
|
115
|
+
Marketplace sources are git repositories and local paths. Version pinning,
|
|
116
|
+
npm or pip sources, and dependency resolution are not implemented.
|
|
117
|
+
|
|
118
|
+
## MCP servers
|
|
119
|
+
|
|
120
|
+
The Model Context Protocol (MCP) lets external servers provide tools and
|
|
121
|
+
resources to the model. One Code reads server definitions from:
|
|
122
|
+
|
|
123
|
+
- `.mcp.json` in the project (the nearest one, walking up to the
|
|
124
|
+
repository root)
|
|
125
|
+
- `~/.claude.json` (the `mcpServers` key)
|
|
126
|
+
- `.claude/settings.local.json`
|
|
127
|
+
- Installed plugins
|
|
128
|
+
|
|
129
|
+
Definitions may reference environment variables as `$VAR` or `${VAR}` in
|
|
130
|
+
the command, arguments, environment, URL, and headers; an unset variable
|
|
131
|
+
produces a warning. Stdio servers (`command`) and HTTP servers (`url`) are
|
|
132
|
+
verified; servers using server-sent events are untested.
|
|
133
|
+
|
|
134
|
+
### Approve a project's servers
|
|
135
|
+
|
|
136
|
+
Servers listed in a project's `.mcp.json` run only after you approve them.
|
|
137
|
+
On the first start in a project, One Code shows the servers found, with the
|
|
138
|
+
command each one runs, and offers to use this server, to use this and all
|
|
139
|
+
future servers in the project, or to decline. Approvals are stored in
|
|
140
|
+
`~/.onecode/mcp/project-approvals.json`, tied to the server's
|
|
141
|
+
configuration, so a changed command asks again. If you decline, the server
|
|
142
|
+
appears as disabled in `/mcp`; choosing Enable there approves it.
|
|
143
|
+
|
|
144
|
+
Claude Code's `enabledMcpjsonServers`, `disabledMcpjsonServers`, and
|
|
145
|
+
`enableAllProjectMcpServers` settings are honored from
|
|
146
|
+
`~/.claude/settings.json`, and from `.claude/settings.local.json` when that
|
|
147
|
+
file is not tracked by git. They are never honored from a checked-in
|
|
148
|
+
`.claude/settings.json`, which would let a repository approve its own
|
|
149
|
+
servers.
|
|
150
|
+
|
|
151
|
+
In non-interactive runs, unapproved servers are skipped with a note on
|
|
152
|
+
stderr.
|
|
153
|
+
|
|
154
|
+
### Use MCP tools
|
|
155
|
+
|
|
156
|
+
Each server's tools appear to the model as `mcp__<server>__<tool>` and load
|
|
157
|
+
on demand, so a server with many tools does not bloat the prompt. Servers
|
|
158
|
+
also expose resources, which the model can list and read.
|
|
159
|
+
|
|
160
|
+
A permission rule naming `mcp__<server>` covers every tool of that server.
|
|
161
|
+
|
|
162
|
+
### Manage servers
|
|
163
|
+
|
|
164
|
+
`/mcp` opens the server manager: servers grouped by source (user, project,
|
|
165
|
+
plugin), each with its status, tool and resource counts, and any warnings.
|
|
166
|
+
**Enter** on a server shows its details and a numbered action list:
|
|
167
|
+
|
|
168
|
+
- **Reconnect** restarts the connection.
|
|
169
|
+
- **Disable** stops the server and remembers that in `~/.onecode` (user
|
|
170
|
+
scope or per repository), so it stays disabled across sessions.
|
|
171
|
+
**Enable** reverses it.
|
|
172
|
+
- **Authenticate** appears for HTTP servers that need OAuth. It opens your
|
|
173
|
+
browser for sign-in; tokens are stored under `~/.onecode/mcp-auth/` with
|
|
174
|
+
owner-only permissions.
|
|
175
|
+
|
|
176
|
+
Press the action's number to run it, or **Esc** to go back.
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# Subagents and workflows
|
|
2
|
+
|
|
3
|
+
One Code delegates work in two ways: subagents for tasks that deserve their
|
|
4
|
+
own context window, and `ultracode` workflows for fanning a large job out
|
|
5
|
+
across many agents at once.
|
|
6
|
+
|
|
7
|
+
## Subagents
|
|
8
|
+
|
|
9
|
+
A subagent is a child agent with its own context window. It does its work
|
|
10
|
+
and returns a report, so the noise of an investigation stays out of your
|
|
11
|
+
main conversation.
|
|
12
|
+
|
|
13
|
+
### Where subagents come from
|
|
14
|
+
|
|
15
|
+
- Three ship with One Code: `general-purpose` (any task), `explore`
|
|
16
|
+
(read-only search), and `plan` (design an implementation plan).
|
|
17
|
+
- Markdown definitions in `.claude/agents/` (project) and
|
|
18
|
+
`~/.claude/agents/` (user), each setting an agent's model, tools, and
|
|
19
|
+
system prompt. A project definition wins over a user definition of the
|
|
20
|
+
same name.
|
|
21
|
+
- Plugins can add agents, namespaced by plugin.
|
|
22
|
+
- `fork`, a synthetic type that copies the current conversation.
|
|
23
|
+
|
|
24
|
+
Run `/agents` with no agents running to list the catalog with each agent's
|
|
25
|
+
tools.
|
|
26
|
+
|
|
27
|
+
### Run a subagent
|
|
28
|
+
|
|
29
|
+
The model delegates through the `Agent` tool. You steer it in plain
|
|
30
|
+
language: "use a subagent to find every call site", or "explore this with
|
|
31
|
+
the `explore` agent". What happens next:
|
|
32
|
+
|
|
33
|
+
- **The run starts in the background.** The model receives a task id at
|
|
34
|
+
once and keeps working. The subagent's report arrives as a notification
|
|
35
|
+
when it finishes, mid-turn if the model is still busy, or as a new turn
|
|
36
|
+
if it is idle. In a `-p` or `--mode json` run, the subagent runs to
|
|
37
|
+
completion instead and the report is returned inline.
|
|
38
|
+
- **You can keep talking to the model** while agents run.
|
|
39
|
+
- **Subagents go through your permission gate.** A subagent's tool calls
|
|
40
|
+
are decided by the same mode, rules, and classifier as the main session,
|
|
41
|
+
and a prompt it triggers is shown to you. Your hooks run inside subagents
|
|
42
|
+
too.
|
|
43
|
+
- **A finished agent can be messaged later.** The `SendMessage` tool
|
|
44
|
+
reaches a running agent live, or resumes a finished one from its saved
|
|
45
|
+
session. `list_agents` lists the session's agents and their status.
|
|
46
|
+
|
|
47
|
+
Two options change how a subagent runs:
|
|
48
|
+
|
|
49
|
+
- **Fork.** A forked subagent inherits the whole conversation so far, for a
|
|
50
|
+
task that needs everything you have built up. Forks run on the main
|
|
51
|
+
model and can only be started from the main conversation. Depth is
|
|
52
|
+
limited: the main conversation can start a subagent, and that subagent
|
|
53
|
+
one more, but no further.
|
|
54
|
+
- **Worktree isolation.** The subagent gets its own git worktree, branched
|
|
55
|
+
from `HEAD`, so it can edit files without colliding with your working
|
|
56
|
+
tree or other agents. A worktree the agent left unchanged is removed;
|
|
57
|
+
otherwise it is kept and its path reported.
|
|
58
|
+
|
|
59
|
+
### Choose the subagent model
|
|
60
|
+
|
|
61
|
+
Subagents and workflow agents can run on a different model or provider
|
|
62
|
+
from the main session. The default is chosen for you: the cheapest model on
|
|
63
|
+
your provider that meets the same capability floor auto mode's classifier
|
|
64
|
+
uses (a Sonnet-class model for a Sonnet-class or stronger session), never a
|
|
65
|
+
dearer one than your main model. When an Artificial Analysis key is
|
|
66
|
+
configured, measured coding ability is used for that floor; see
|
|
67
|
+
[Automatic model selection](providers-and-models.md#automatic-model-selection).
|
|
68
|
+
|
|
69
|
+
To set the default yourself:
|
|
70
|
+
|
|
71
|
+
| Command | Effect |
|
|
72
|
+
|---|---|
|
|
73
|
+
| `/subagent <provider/model-id>` | Save a default for subagents and workflow agents. Short aliases such as `sonnet` or `haiku` work too: by name when your provider has that model, otherwise as that class within your provider. |
|
|
74
|
+
| `/subagent inherit` | Use the main session's model. |
|
|
75
|
+
| `/subagent status` | Show the configured default, the model it resolves to, and where the setting came from. |
|
|
76
|
+
| `/subagent clear` | Remove the saved default and return to automatic selection. |
|
|
77
|
+
| `/subagent` | Open a model picker. |
|
|
78
|
+
|
|
79
|
+
The choice is saved to `~/.onecode/settings.json`. A saved choice is tied
|
|
80
|
+
to the provider it was made on; after switching providers, run
|
|
81
|
+
`/subagent status` and pick again if it no longer applies.
|
|
82
|
+
|
|
83
|
+
On a Claude session, Claude Code's `CLAUDE_CODE_SUBAGENT_MODEL` variable is
|
|
84
|
+
honored, from the environment or from the `env` block of your user or
|
|
85
|
+
managed settings. One Code's own setting wins when both are set.
|
|
86
|
+
|
|
87
|
+
An agent definition's own `model` field overrides the default for that
|
|
88
|
+
agent.
|
|
89
|
+
|
|
90
|
+
### Follow agents live
|
|
91
|
+
|
|
92
|
+
While agents run, the panel below the editor shows a tree: `main` first,
|
|
93
|
+
then each agent with its type, what it is doing right now ("Reading
|
|
94
|
+
src/index.ts", "Running a command"), its elapsed time, and its token count.
|
|
95
|
+
Nested agents appear under their parent. A finished agent stays for a few
|
|
96
|
+
seconds.
|
|
97
|
+
|
|
98
|
+
- Press **↓** from an empty editor to focus the rows (after the shells
|
|
99
|
+
chip, if background shells exist).
|
|
100
|
+
- **↑** and **↓** select an agent. **Enter** opens its live transcript.
|
|
101
|
+
- **x** stops the selected agent. **ctrl+x** then **ctrl+k** stops all of
|
|
102
|
+
them.
|
|
103
|
+
- In the transcript: **↑** and **↓** scroll, **PgUp** and **PgDn** page,
|
|
104
|
+
**Tab** moves to the next agent, **←** returns to the rows, **Enter**
|
|
105
|
+
closes the view.
|
|
106
|
+
|
|
107
|
+
`/agents` opens the panel on the newest agent.
|
|
108
|
+
|
|
109
|
+
## Git worktrees for the whole session
|
|
110
|
+
|
|
111
|
+
Separately from subagents, the model can move your whole session into an
|
|
112
|
+
isolated worktree with `enter_worktree`. It creates a worktree under
|
|
113
|
+
`.claude/worktrees/`, branched from your current `HEAD`. Every shell command
|
|
114
|
+
and relative path then resolves there, and your main working tree stays
|
|
115
|
+
untouched until `exit_worktree` leaves the worktree, keeping or removing
|
|
116
|
+
it. Removal is refused while there is uncommitted or unmerged work. Ask for
|
|
117
|
+
this when a task will make sweeping changes you want to review before
|
|
118
|
+
merging.
|
|
119
|
+
|
|
120
|
+
## Ultracode workflows
|
|
121
|
+
|
|
122
|
+
For a big job (a broad audit, a migration, a review worth double-checking),
|
|
123
|
+
include the word **`ultracode`** in your message. The model writes a short
|
|
124
|
+
JavaScript script that fans the work out across many agents in parallel,
|
|
125
|
+
then runs it with the `workflow` tool.
|
|
126
|
+
|
|
127
|
+
The keyword arms the turn it appears in. A message you queue while the
|
|
128
|
+
model is still working does not arm the next turn. For a longer stretch of
|
|
129
|
+
this kind of work, turn the mode on with `/effort ultracode`: it sets the
|
|
130
|
+
reasoning effort to `xhigh` and keeps workflow orchestration armed until
|
|
131
|
+
you change the effort again. The footer shows `✦ ultracode` while it is
|
|
132
|
+
armed.
|
|
133
|
+
|
|
134
|
+
### How a workflow runs
|
|
135
|
+
|
|
136
|
+
- The script runs in a separate thread, so a runaway script cannot freeze
|
|
137
|
+
the interface. A script that stops making progress is stopped after a
|
|
138
|
+
few seconds; a run is capped at 30 minutes.
|
|
139
|
+
- The run goes to the background and the model gets a run id. Progress
|
|
140
|
+
shows in a strip below the editor (**↓** to focus it, **Enter** to open,
|
|
141
|
+
**x** to stop) and in `/workflows`.
|
|
142
|
+
- Every completed agent call is journaled. Re-running a workflow with
|
|
143
|
+
`resumeFromRunId` replays the calls whose inputs did not change at no
|
|
144
|
+
cost and runs only what differs. A background run does not survive the
|
|
145
|
+
end of a session, but its journal does.
|
|
146
|
+
- A script can carry an output-token target. Once the target is reached,
|
|
147
|
+
new and queued agent calls stop; agents already running finish and can
|
|
148
|
+
land above it.
|
|
149
|
+
- Fan-out agents use the subagent default model, so a cheap subagent tier
|
|
150
|
+
keeps a large run affordable while the main conversation stays on a
|
|
151
|
+
frontier model.
|
|
152
|
+
- In a `-p` or `--mode json` run, the workflow runs to completion and
|
|
153
|
+
returns its result inline.
|
|
154
|
+
|
|
155
|
+
### The run viewer
|
|
156
|
+
|
|
157
|
+
`/workflows` opens the viewer: a list of phases, the agents in each phase,
|
|
158
|
+
and a detail pane with each agent's prompt and output, with a live ticker.
|
|
159
|
+
|
|
160
|
+
| Key | Action |
|
|
161
|
+
|---|---|
|
|
162
|
+
| **↑**, **↓** | Move. |
|
|
163
|
+
| **Enter** | Open a phase or agent; expand a truncated prompt. |
|
|
164
|
+
| **Tab** | Switch to another running workflow. |
|
|
165
|
+
| **PgUp**, **PgDn** | Scroll the detail pane. |
|
|
166
|
+
| **x** | Stop the running workflow. |
|
|
167
|
+
| **s** | Save the script to `.claude/workflows/<name>.js`. A second **s** confirms an overwrite. |
|
|
168
|
+
| **Esc** | Go up a level, then close. **q** closes at once. |
|
|
169
|
+
|
|
170
|
+
From the prompt, `/workflows stop <runId>` stops a run, `/workflows log
|
|
171
|
+
<runId>` prints its recent events, and `/workflows list` prints this
|
|
172
|
+
session's runs and the saved workflows.
|
|
173
|
+
|
|
174
|
+
### Save a workflow to reuse
|
|
175
|
+
|
|
176
|
+
Scripts in `.claude/workflows/` (project) or `~/.claude/workflows/` (user)
|
|
177
|
+
can be invoked by name instead of describing the job again. A project
|
|
178
|
+
script shadows a user script of the same name. The viewer's **s** key saves
|
|
179
|
+
the current run's script there.
|
|
180
|
+
|
|
181
|
+
## Reasoning effort
|
|
182
|
+
|
|
183
|
+
`/effort` sets how much reasoning the model spends: `off`, `minimal`,
|
|
184
|
+
`low`, `medium`, `high`, `xhigh`, `max`, or `ultracode`. A bare `/effort`
|
|
185
|
+
opens a slider (**←** and **→** or **h** and **l** move, **Enter** confirms).
|
|
186
|
+
Levels the current model does not support are skipped. **shift+tab** cycles
|
|
187
|
+
the plain levels; cycling away from `xhigh` while ultracode is armed turns
|
|
188
|
+
ultracode off.
|
|
189
|
+
|
|
190
|
+
Changing the effort re-caches the conversation, so the next request costs
|
|
191
|
+
more than usual. `/effort` does not save the level across restarts; to
|
|
192
|
+
save one, open pi's `/thinking` picker and press **ctrl+s**, or pass
|
|
193
|
+
`--thinking <level>` at launch.
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# Tasks and background work
|
|
2
|
+
|
|
3
|
+
One Code keeps long-running work out of the model's way. This page covers
|
|
4
|
+
the structured task list, background shells, monitors, scheduled
|
|
5
|
+
wake-ups, and how the results of background work reach the model.
|
|
6
|
+
|
|
7
|
+
## The task list
|
|
8
|
+
|
|
9
|
+
For multi-step work the model keeps a structured task list, using the
|
|
10
|
+
`task_create`, `task_get`, `task_list`, and `task_update` tools. Each task
|
|
11
|
+
has a subject, a description, a status (pending, in progress, or
|
|
12
|
+
completed), an optional owner, and dependencies on other tasks.
|
|
13
|
+
|
|
14
|
+
While the list has entries, a pinned widget below the transcript shows a
|
|
15
|
+
summary line and up to 12 tasks: `✔` for completed, `◼` for in progress,
|
|
16
|
+
`◻` for pending.
|
|
17
|
+
|
|
18
|
+
| Command | What it does |
|
|
19
|
+
|---|---|
|
|
20
|
+
| `/tasks` | Prints the full list. |
|
|
21
|
+
| `/tasks hide` | Hides the widget. |
|
|
22
|
+
| `/tasks show` | Shows it again. |
|
|
23
|
+
|
|
24
|
+
The list is stored inside the session, so it survives a resume and follows
|
|
25
|
+
the branch you are on in `/tree`. If the model has not touched the list for
|
|
26
|
+
a while during a long task, it is reminded that the list exists.
|
|
27
|
+
|
|
28
|
+
## Background shells
|
|
29
|
+
|
|
30
|
+
When the model runs a command with `run_in_background`, the command starts
|
|
31
|
+
detached and the model gets a task id at once. Output spools to a log file
|
|
32
|
+
under the session directory. When the command finishes, the model is
|
|
33
|
+
notified with the result, and it can read the output at any time with
|
|
34
|
+
`task_output` or stop the command with `task_stop`.
|
|
35
|
+
|
|
36
|
+
Running and recently finished shells appear in the panel below the editor:
|
|
37
|
+
|
|
38
|
+
1. Press **↓** from an empty editor to focus the shells chip.
|
|
39
|
+
2. Press **Enter** to open the Background list, which shows each shell's
|
|
40
|
+
status and command. **↑** and **↓** select, **x** stops the selected
|
|
41
|
+
shell, **Esc** goes back.
|
|
42
|
+
3. Press **Enter** on a shell to see its status, runtime, command, and a
|
|
43
|
+
live box with the last lines of output. **←** returns to the list;
|
|
44
|
+
**Esc**, **Enter**, or **Space** closes the section; **x** stops it.
|
|
45
|
+
|
|
46
|
+
A finished shell stays in the list for a minute. From the chip, a second
|
|
47
|
+
**↓** moves on to the subagent rows in the same panel.
|
|
48
|
+
|
|
49
|
+
The turn-duration line reports how many shells are still running when a
|
|
50
|
+
turn ends. When a session ends, running shells are stopped and the next
|
|
51
|
+
session is told which ones.
|
|
52
|
+
|
|
53
|
+
## Monitors
|
|
54
|
+
|
|
55
|
+
The `monitor` tool watches a long-running command, or a WebSocket URL, and
|
|
56
|
+
turns each line of output (or each message) into an event. Events are
|
|
57
|
+
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 is working, so a
|
|
59
|
+
noisy process does not flood the conversation.
|
|
60
|
+
|
|
61
|
+
A monitor runs until its command exits or its timeout passes (five minutes
|
|
62
|
+
by default, one hour at most), or for the whole session when started as
|
|
63
|
+
persistent. The model can stop it with `task_stop`.
|
|
64
|
+
|
|
65
|
+
A monitor is not auto-approved, because it runs a shell command; the
|
|
66
|
+
permission gate treats it like `bash`.
|
|
67
|
+
|
|
68
|
+
## Scheduled wake-ups and loops
|
|
69
|
+
|
|
70
|
+
`/loop` runs a task repeatedly. Two forms exist:
|
|
71
|
+
|
|
72
|
+
- **Fixed interval.** `/loop 5m check whether the deploy finished` runs the
|
|
73
|
+
task every five minutes. Intervals accept `s`, `m`, and `h`, and are
|
|
74
|
+
clamped between one minute and one hour. The first run happens
|
|
75
|
+
immediately. A tick that arrives while the model is still busy is
|
|
76
|
+
skipped, not queued.
|
|
77
|
+
- **Self-paced.** `/loop watch the CI run` with no interval lets the model
|
|
78
|
+
choose when to check next. It uses the `schedule_wakeup` tool, which
|
|
79
|
+
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 is waiting for,
|
|
81
|
+
and to stop the loop when the task is done.
|
|
82
|
+
|
|
83
|
+
`/loop status` (or a bare `/loop`) reports the current loop. `/loop stop`
|
|
84
|
+
ends it. Only one loop runs at a time, and loops end with the session.
|
|
85
|
+
|
|
86
|
+
## The background list
|
|
87
|
+
|
|
88
|
+
`/background` lists every background task in the session: monitors,
|
|
89
|
+
background shells, and background subagents, with their id, kind, status,
|
|
90
|
+
and start time. A small widget shows the count of running tasks that have
|
|
91
|
+
no panel of their own.
|
|
92
|
+
|
|
93
|
+
## How results reach the model
|
|
94
|
+
|
|
95
|
+
Background work reports back through notifications:
|
|
96
|
+
|
|
97
|
+
- A notification is delivered as soon as the model finishes its current
|
|
98
|
+
batch of tool calls, or starts a new turn if the model is idle.
|
|
99
|
+
- Notifications that arrive within a quarter of a second of each other are
|
|
100
|
+
merged into one message.
|
|
101
|
+
- After you interrupt a turn, notifications are held and attached to your
|
|
102
|
+
next prompt instead of starting a turn on their own.
|
|
103
|
+
- Each notification is framed as an automated event, so the model does not
|
|
104
|
+
mistake it for something you said or approved.
|
|
105
|
+
|
|
106
|
+
## Non-interactive runs
|
|
107
|
+
|
|
108
|
+
In `-p` and `--mode json` runs nothing can run in the background, because
|
|
109
|
+
the process exits when the turn settles. Background shells, monitors,
|
|
110
|
+
subagents, and workflows run to completion and return their output
|
|
111
|
+
directly. `/loop` and `schedule_wakeup` do not fire.
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# The terminal interface
|
|
2
|
+
|
|
3
|
+
This page describes what you see on screen and how to move around it: the
|
|
4
|
+
banner, the status line, the working indicator, the panels below the
|
|
5
|
+
editor, the dialogs, and the themes.
|
|
6
|
+
|
|
7
|
+
## The banner
|
|
8
|
+
|
|
9
|
+
The session opens with a One Code wordmark, the version, and a live line
|
|
10
|
+
showing the model, the permission mode, and the subagent model. Below it, a
|
|
11
|
+
hint line lists the keys worth knowing:
|
|
12
|
+
|
|
13
|
+
| Hint | Meaning |
|
|
14
|
+
|---|---|
|
|
15
|
+
| `/hotkeys` | pi's full key list. |
|
|
16
|
+
| `shift+tab` | Cycle reasoning effort. |
|
|
17
|
+
| `ctrl+q` | Cycle the permission mode. |
|
|
18
|
+
| `ctrl+t` | Show or hide thinking blocks. |
|
|
19
|
+
| `ctrl+o` | Expand a collapsed tool output. |
|
|
20
|
+
| `/` | List commands. |
|
|
21
|
+
| `!` | Run a shell command yourself. |
|
|
22
|
+
| `ultracode` | The keyword that turns on workflow orchestration for a turn. |
|
|
23
|
+
|
|
24
|
+
On a machine with no provider yet, the banner reads `model none` and a
|
|
25
|
+
notice points you at `/login`.
|
|
26
|
+
|
|
27
|
+
When pi's `quietStartup` setting is on (the bundled app turns it on), the
|
|
28
|
+
startup listing is compact: one line each for the instruction files in
|
|
29
|
+
context, the skills found, the saved workflows, and the themes.
|
|
30
|
+
|
|
31
|
+
Set `CC_NO_BANNER=1` to keep pi's own header.
|
|
32
|
+
|
|
33
|
+
## Prompt and transcript markers
|
|
34
|
+
|
|
35
|
+
Your input line starts with a `❯` marker and the model's replies with a `●`
|
|
36
|
+
bullet, as in Claude Code. Tool calls render as `● Tool(arguments)` with
|
|
37
|
+
the result on an indented `⎿` line. Thinking is collapsed behind
|
|
38
|
+
`✻ Thinking… (ctrl+t to expand)`.
|
|
39
|
+
|
|
40
|
+
Set `CC_NO_INPUT_MARKER=1` or `CC_NO_ASSISTANT_MARKER=1` to remove either
|
|
41
|
+
marker.
|
|
42
|
+
|
|
43
|
+
## The working indicator
|
|
44
|
+
|
|
45
|
+
While the model works, a spinner shows a random verb, the elapsed time, and
|
|
46
|
+
the tokens streamed so far, for example `✳ Cogitating… (12s · ↓ 843 tokens)`.
|
|
47
|
+
The clock runs from the start of the turn until it settles, through retries.
|
|
48
|
+
|
|
49
|
+
After the turn, a dim `✻ Cooked for 5m 12s` line reports the total time.
|
|
50
|
+
Set `CC_TURN_DURATION=0` to turn it off.
|
|
51
|
+
|
|
52
|
+
## The status line
|
|
53
|
+
|
|
54
|
+
The footer replaces pi's status line with One Code's own:
|
|
55
|
+
|
|
56
|
+
- **Left:** the working directory, the git branch, and the open pull
|
|
57
|
+
request number for that branch when the GitHub CLI is installed.
|
|
58
|
+
- **Right:** context usage as `used/window (percent)`, the session cost,
|
|
59
|
+
the cache-hit rate of the latest turn, the model, and the reasoning
|
|
60
|
+
effort. When ultracode is armed, the effort reads `✦ ultracode`.
|
|
61
|
+
|
|
62
|
+
The cost is all-in: it includes the main conversation plus every model call
|
|
63
|
+
One Code makes on the side, such as subagents, the auto-mode classifier,
|
|
64
|
+
web-fetch reader calls, and recaps. pi's own footer counts only the main
|
|
65
|
+
conversation. When the line is too narrow, the cache-hit rate goes first,
|
|
66
|
+
then the pull request, then the branch.
|
|
67
|
+
|
|
68
|
+
Set `CC_FOOTER=0` to keep pi's footer.
|
|
69
|
+
|
|
70
|
+
## The panel below the editor
|
|
71
|
+
|
|
72
|
+
One panel below the editor holds the background-shell manager and the
|
|
73
|
+
live subagent tree. It appears when there is something to show and hides
|
|
74
|
+
when there is not.
|
|
75
|
+
|
|
76
|
+
- Press **↓** from an empty editor to focus it. If background shells exist,
|
|
77
|
+
the first **↓** lands on the shells chip; a second **↓** moves to the
|
|
78
|
+
subagent rows. Otherwise the first **↓** lands on the first subagent.
|
|
79
|
+
- In the subagent rows, **↑** and **↓** select, **Enter** opens the
|
|
80
|
+
selected agent's live transcript, **x** stops it, **ctrl+x** then
|
|
81
|
+
**ctrl+k** stops every agent, and **Esc** leaves the panel. Typing any
|
|
82
|
+
other key returns to the editor.
|
|
83
|
+
- Inside a transcript, **↑** and **↓** scroll, **PgUp** and **PgDn** page,
|
|
84
|
+
**Tab** switches to the next agent, **←** returns to the row list, and
|
|
85
|
+
**Enter** closes the view.
|
|
86
|
+
|
|
87
|
+
The panel's own footer names the keys that apply at each stage. Mouse-wheel
|
|
88
|
+
scrolling is deliberately not enabled in the transcript view, because
|
|
89
|
+
turning on mouse reporting would take over the terminal's native scrolling
|
|
90
|
+
and text selection for the whole session.
|
|
91
|
+
|
|
92
|
+
Details of the shells section are in
|
|
93
|
+
[Background shells](tasks-and-background-work.md#background-shells); the
|
|
94
|
+
subagent view is in [Follow agents live](subagents-and-workflows.md#follow-agents-live).
|
|
95
|
+
|
|
96
|
+
## The question dialog
|
|
97
|
+
|
|
98
|
+
When the model asks structured questions with `ask_user_question`, a dialog
|
|
99
|
+
opens with one tab per question and a final Submit tab.
|
|
100
|
+
|
|
101
|
+
- **←**, **→**, **Tab**, and **shift+Tab** switch questions.
|
|
102
|
+
- **↑** and **↓** move between options. **Enter** selects one; a
|
|
103
|
+
single-choice question then advances to the next tab.
|
|
104
|
+
- A number key selects that option directly.
|
|
105
|
+
- Multiple-choice questions show checkboxes and a **Next** row to move on.
|
|
106
|
+
- Questions without option previews have an **Other** row for a typed
|
|
107
|
+
answer. Questions with previews show the preview beside the options and
|
|
108
|
+
take free text through a notes field, opened with **n**.
|
|
109
|
+
- **Chat about this**, the last row of every question, closes the dialog
|
|
110
|
+
and tells the model you want to discuss before answering.
|
|
111
|
+
- On the Submit tab, **Enter** submits, or jumps to the first unanswered
|
|
112
|
+
question. **Esc** cancels; nothing is submitted.
|
|
113
|
+
|
|
114
|
+
## Approval dialogs
|
|
115
|
+
|
|
116
|
+
The permission prompt and the plan-approval dialog are described in
|
|
117
|
+
[The approval prompt](permissions-modes-and-auto-mode.md#the-approval-prompt)
|
|
118
|
+
and [Plan mode](permissions-modes-and-auto-mode.md#plan-mode).
|
|
119
|
+
|
|
120
|
+
## Panels opened by commands
|
|
121
|
+
|
|
122
|
+
| Command | Panel | Keys |
|
|
123
|
+
|---|---|---|
|
|
124
|
+
| `/agents` | The live subagent panel, focused on the newest agent. | See the preceding section. |
|
|
125
|
+
| `/workflows` | The workflow run viewer. | **↑↓** select, **Enter** open, **Tab** next run, **x** stop, **s** save the script, **Esc** back or close. |
|
|
126
|
+
| `/skills` | The skills panel. | **↑↓** move, **Enter** or **Space** cycle a skill's state, **/** search, **t** sort, **Esc** close. |
|
|
127
|
+
| `/plugins` | The plugin marketplace, with Discover, Installed, Marketplaces, and Errors tabs. | **←→** or **Tab** switch tabs, **Esc** close. Discover: type to search, **Space** install, **Enter** view. Installed (like `/skills`): **Enter**/**Space** toggle, **v** view, **e**/**d** set, **u** uninstall, **f** favorite, **/** search. In a detail view: **Enter**/**Space**/**e**/**d** toggle, **u** uninstall, **i** install, **f** favorite. On Marketplaces: **a** add, **u** update, **d** remove. |
|
|
128
|
+
| `/mcp` | The MCP server manager. | **↑↓** navigate, **Enter** open a server or run an action, a digit picks a numbered action, **Esc** back or close. |
|
|
129
|
+
| `/doctor report` | The setup report. | **↑↓** or **j**/**k** scroll, **Space**/**b** page, **g**/**G** top and end, **f** run the checkup, **Esc** or **q** close. |
|
|
130
|
+
| `/memory` | The instruction and memory file picker. | **↑↓** move, **Enter** open, **Esc** close. |
|
|
131
|
+
| `/effort` | The reasoning-effort slider. | **←→** or **h**/**l** adjust, **Enter** confirm, **Esc** cancel. |
|
|
132
|
+
|
|
133
|
+
**ctrl+c** closes any panel.
|
|
134
|
+
|
|
135
|
+
PgUp and PgDn do not reach these panels in full-screen mode, because pi uses
|
|
136
|
+
them for its own scrollback; use the keys the panel's footer names.
|
|
137
|
+
|
|
138
|
+
## Full-screen mode
|
|
139
|
+
|
|
140
|
+
The bundled app runs in pi's full-screen mode, on the terminal's alternate
|
|
141
|
+
screen, and restores your terminal when you exit. On a plain pi
|
|
142
|
+
installation full-screen mode is opt-in; see
|
|
143
|
+
[Full-screen mode and themes](configuration.md#full-screen-mode-and-themes).
|
|
144
|
+
|
|
145
|
+
## Themes
|
|
146
|
+
|
|
147
|
+
Two themes ship: `onecode` (dark, the bundled app's default) and
|
|
148
|
+
`onecode-light`. Any other pi theme also works. See
|
|
149
|
+
[Full-screen mode and themes](configuration.md#full-screen-mode-and-themes)
|
|
150
|
+
for how to select one.
|
|
151
|
+
|
|
152
|
+
## Keyboard shortcuts
|
|
153
|
+
|
|
154
|
+
The full list of One Code and pi shortcuts is in the
|
|
155
|
+
[command and keyboard reference](reference.md#keyboard-shortcuts).
|