ur-agent 1.68.18 → 1.69.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/CHANGELOG.md +14 -808
- package/README.md +4 -5
- package/dist/cli.js +5036 -9919
- package/docs/VALIDATION.md +1 -1
- package/documentation/app.js +0 -91
- package/documentation/index.html +1 -1
- package/extensions/jetbrains-ur/build.gradle.kts +1 -1
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +2 -13
- package/dist/sdk/index.cjs +0 -189
- package/dist/sdk/index.d.ts +0 -68
- package/dist/sdk/index.js +0 -149
- package/technical/01-architecture.md +0 -148
- package/technical/02-cli-reference.md +0 -227
- package/technical/03-slash-commands.md +0 -318
- package/technical/04-tools.md +0 -283
- package/technical/05-providers-and-models.md +0 -195
- package/technical/06-configuration.md +0 -428
- package/technical/07-memory-and-context.md +0 -175
- package/technical/08-skills-plugins-workflows.md +0 -211
- package/technical/09-multi-agent.md +0 -327
- package/technical/10-headless-automation-eval.md +0 -441
- package/technical/11-integrations.md +0 -157
- package/technical/12-security-sandbox-stability.md +0 -288
- package/technical/13-research.md +0 -129
- package/technical/14-sessions.md +0 -177
- package/technical/README.md +0 -43
|
@@ -1,318 +0,0 @@
|
|
|
1
|
-
# 03 — Slash Command Reference
|
|
2
|
-
|
|
3
|
-
Source of truth: `src/commands.ts` (registry) and each command definition.
|
|
4
|
-
Sections 1–13 describe the standard npm registry unless a row is explicitly labelled
|
|
5
|
-
internal, conditional, or unavailable. Sections 14–15 inventory source-only commands so
|
|
6
|
-
source presence is never mistaken for shipped capability. Descriptions and argument hints
|
|
7
|
-
come from command definitions. Aliases are shown in parentheses. Commands of type `local`
|
|
8
|
-
are also runnable from the shell as `ur <command>` only when wired in `src/main.tsx`
|
|
9
|
-
(see doc 02).
|
|
10
|
-
Registry integrity tests require unique invocation tokens, non-empty descriptions, valid
|
|
11
|
-
names/aliases, loadable implementations, and coverage in this document.
|
|
12
|
-
|
|
13
|
-
Command types: **prompt** = expands to model input · **local** = runs locally, prints text ·
|
|
14
|
-
**jsx** = interactive Ink dialog.
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## 1. Session & conversation
|
|
19
|
-
|
|
20
|
-
| Command | Type | What it does | Example |
|
|
21
|
-
|---|---|---|---|
|
|
22
|
-
| `/clear` (`/reset`, `/new`) | local | Clear history, free context | `/clear` |
|
|
23
|
-
| `/compact [instructions]` | local | Summarize + clear; keeps a summary in context | `/compact keep the API design decisions` |
|
|
24
|
-
| `/resume [id or search]` (`/continue`) | jsx | Resume a previous conversation | `/resume auth refactor` |
|
|
25
|
-
| `/rename [name]` | jsx | Rename the current conversation | `/rename payment-bug` |
|
|
26
|
-
| `/tag <tag-name>` | internal | Toggle a searchable tag on this session (`USER_TYPE=ant`) | — |
|
|
27
|
-
| `/branch [name]` (`/fork`) | jsx | Branch the conversation at this point | `/branch try-other-approach` |
|
|
28
|
-
| `/rewind` (`/checkpoint`) | local | Restore code and/or conversation to a previous checkpoint | `/rewind` |
|
|
29
|
-
| `/undo` | local | Restore the most recently edited file to its pre-edit (last turn) content; deletes a file the last edit created | `/undo` |
|
|
30
|
-
| `/thread share\|list` (`/threads`) | local | Share a session transcript as a local web page on the artifacts server | `/thread share` |
|
|
31
|
-
| `/export [filename]` | jsx | Export conversation to file or clipboard | `/export session.md` |
|
|
32
|
-
| `/import-session <path>` | local | Import a session transcript exported from another machine so it can be resumed here | `/import-session ~/Downloads/session.jsonl` |
|
|
33
|
-
| `/copy` | jsx | Copy the last response to the clipboard | `/copy` |
|
|
34
|
-
| `/btw <question>` | jsx | Quick side question without derailing the main thread | `/btw what does SIGPIPE mean?` |
|
|
35
|
-
| `/exit` (`/quit`) | jsx | Exit the REPL | `/exit` |
|
|
36
|
-
| `/session` (`/remote`) | conditional jsx | Show remote session URL + QR code only in remote-session builds | — |
|
|
37
|
-
| `/desktop` (`/app`) | conditional jsx | Continue this session in UR Desktop on macOS or Windows x64 | `/desktop` |
|
|
38
|
-
| `/summary` | internal | Summarize conversation (internal builds) | — |
|
|
39
|
-
|
|
40
|
-
## 2. Context & memory
|
|
41
|
-
|
|
42
|
-
| Command | Type | What it does | Example |
|
|
43
|
-
|---|---|---|---|
|
|
44
|
-
| `/context` | jsx | Visualize context usage as a colored grid | `/context` |
|
|
45
|
-
| `/files` | internal | List files currently in context (`USER_TYPE=ant`) | — |
|
|
46
|
-
| `/memory` | jsx | Edit memory files (UR.md, UR.local.md, auto-memory) | `/memory` |
|
|
47
|
-
| `/remember <text>` | local | Save a fact/preference to memory | `/remember we deploy from the release branch only` |
|
|
48
|
-
| `/memory-suggest` (`/suggest-memory`) | local | Propose durable facts from this session that are not already remembered | `/memory-suggest --turns 50` |
|
|
49
|
-
| `/forget <text>` | local | Remove memory notes matching text | `/forget release branch` |
|
|
50
|
-
| `/memory-retention` (`/retention`) | local | Show/set/prune memory retention policy (`--ttl-days`, `--max-entries`, `--decay-days`) | `/memory-retention set --ttl-days 90` |
|
|
51
|
-
| `/semantic-memory` (`/memory-index`) | local | Build and search a project-local lexical memory index; Ollama embeddings are provided separately by `/knowledge --embeddings` | `/semantic-memory search "auth token rotation"` |
|
|
52
|
-
| `/context-pack` (`/ctx-pack`, `/project-manifest`) | local | Scan repo architecture, remember decisions/constraints, compress project context under `.ur/` | `/context-pack remember --type decision --text "we use fastify"` |
|
|
53
|
-
| `/wiki generate\|map\|install-hook\|status` (`/repo-wiki`) | local | Living repo wiki + prompt-injected repo map; post-merge hook keeps both fresh | `/wiki generate` |
|
|
54
|
-
| `/knowledge` (`/kb`) | local | Curated knowledge base with provenance: add/remove/build/search/list/prune/status (`--embeddings`) | `/knowledge add src/auth/jwt.ts --note "token flow"` then `/knowledge search "refresh token"` |
|
|
55
|
-
| `/add-dir <path>` | jsx | Add another working directory | `/add-dir ../shared-lib` |
|
|
56
|
-
| `/init` | prompt | Analyze the codebase and generate the UR.md project memory file | `/init` |
|
|
57
|
-
|
|
58
|
-
## 3. Models & providers
|
|
59
|
-
|
|
60
|
-
| Command | Type | What it does | Example |
|
|
61
|
-
|---|---|---|---|
|
|
62
|
-
| `/model [model]` | jsx | Pick the session model | `/model qwen2.5-coder:7b` |
|
|
63
|
-
| `/provider [provider]` | jsx | Pick/inspect the model provider | `/provider ollama` |
|
|
64
|
-
| `/connect [status\|provider\|logout p]` | local | Connect a provider account or store an API key | `/connect openrouter --key sk-or-…` |
|
|
65
|
-
| `/model-doctor [model]` (`/model-capabilities`) | local | Probe local Ollama models for agent capabilities (tool calls, context, speed) | `/model-doctor llama3.3` |
|
|
66
|
-
| `/model-route <task>` (`/model-pick`) | local | Recommend best model for a task from cheap/strong/default pools | `/model-route "large refactor across 40 files"` |
|
|
67
|
-
| `/local-first` (`/offline-readiness`, `/local`) | local | Report readiness for no-cloud/offline/lab environments | `/local-first --json` |
|
|
68
|
-
| `/effort [low\|medium\|high\|max\|auto]` | jsx | Set model effort level | `/effort high` |
|
|
69
|
-
| `/fast [on\|off]` | jsx, unavailable | The command explains that this external-provider build has no hosted fast serving tier | `/fast` |
|
|
70
|
-
| `/advisor [<model>\|off]` | conditional | Hidden unless first-party advisor beta support and its runtime feature configuration are both enabled | — |
|
|
71
|
-
| `/escalate plan\|run\|oracle\|policy "<task>"` | local | Run on a fast model, auto-escalate hard steps to an oracle model | `/escalate run "prove this lock-free queue is correct" --oracle gpt-5.5` |
|
|
72
|
-
| `/route <task>` (`/intent`) | local | Classify a task → recommend subagent + collaboration pattern | `/route "find why login 500s"` |
|
|
73
|
-
| `/login` / `/logout` | jsx | UR account sign-in/out (hidden for 3P-service users) | `/login` |
|
|
74
|
-
| `/upgrade` | jsx | Upgrade plan for higher limits | `/upgrade` |
|
|
75
|
-
| `/extra-usage` | jsx | Configure extra usage past plan limits | `/extra-usage` |
|
|
76
|
-
| `/rate-limit-options` | jsx | Options shown when rate-limited | `/rate-limit-options` |
|
|
77
|
-
| `/usage` | jsx | Show plan usage limits | `/usage` |
|
|
78
|
-
| `/cost` | local | Total cost + duration of the session | `/cost` |
|
|
79
|
-
| `/stats` | jsx | Usage statistics and activity | `/stats` |
|
|
80
|
-
| `/insights` | prompt | Generate a report analyzing your UR sessions | `/insights` |
|
|
81
|
-
|
|
82
|
-
## 4. Agents & multi-agent
|
|
83
|
-
|
|
84
|
-
| Command | Type | What it does | Example |
|
|
85
|
-
|---|---|---|---|
|
|
86
|
-
| `/agents` | jsx | Manage agent (subagent) configurations | `/agents` |
|
|
87
|
-
| `/skills` | jsx | Browse installed skills and their source/trust metadata | `/skills` |
|
|
88
|
-
| `/agent-inspect` (`/inspect-agents`) | local | Per-subagent timeline: spawns, prompts, results, verdicts, tools, tokens | `/agent-inspect --file transcript.jsonl` |
|
|
89
|
-
| `/agent-task status\|diff\|pr` (`/task-pr`) | local | Task state, git diff status, PR handoff (`--create --draft --base`) | `/agent-task pr --create --base main` |
|
|
90
|
-
| `/agent-templates [list\|install]` | local | Install reusable project agent templates | `/agent-templates install reviewer` |
|
|
91
|
-
| `/agent-features [init]` (`/agent-roadmap`) | local | Show/initialize agent feature expansion scaffolds | `/agent-features --json` |
|
|
92
|
-
| `/agent-trends` (`/trends`) | local | UR coverage of current agent-tech trends | `/agent-trends` |
|
|
93
|
-
| `/bg run\|fanout\|list\|status\|logs\|attach\|steer\|kill` (`/background-agent`) | local | Detached local background agents with bounded live steering; PR creation requires an isolated worktree | `/bg steer bg_123 --message "run the parser tests"` |
|
|
94
|
-
| `/crew create\|plan\|add\|run\|…` (`/crews`) | local | Lead agent splits a goal into a shared task board; workers claim and run tasks | `/crew create cleanup --goal "remove dead code" --workers 3 --worktrees` |
|
|
95
|
-
| `/arena "<task>"` (`/best-of`) | local | N agents attempt the same task in isolated worktrees; judge picks (optionally applies) the winner | `/arena "optimize image pipeline" --agents 3 --apply` |
|
|
96
|
-
| `/pattern [list\|show\|run\|install]` (`/patterns`) | local | Multi-agent collaboration patterns: PEER, DOE, concurrent, handoff, debate, parallel | `/pattern run debate "should we adopt tRPC?" --execute` |
|
|
97
|
-
| `/goal add\|list\|resume\|…` (`/goals`) | local | Long-horizon objectives persisting across sessions | `/goal add v2-launch --objective "ship v2" --workflow release` |
|
|
98
|
-
| `/task start\|run\|pr\|list\|status` | local | Worktree-per-task sessions with PR handoff | `/task start rate-limiter --worktree` |
|
|
99
|
-
| `/worktree list\|status\|clean` (`/worktrees`) | local | Manage agent worktrees | `/worktree clean` |
|
|
100
|
-
| `/role-mode list\|show\|install` (`/roles`) | local | Built-in role modes (Architect, Code, Debug, Ask) installed as scoped agents | `/role-mode install architect` |
|
|
101
|
-
| `/mode [code\|research\|debug\|browser\|image\|video\|data]` | local | Switch working mode | `/mode research` |
|
|
102
|
-
|
|
103
|
-
## 5. Automation, workflows & specs
|
|
104
|
-
|
|
105
|
-
| Command | Type | What it does | Example |
|
|
106
|
-
|---|---|---|---|
|
|
107
|
-
| `/workflow init\|list\|show\|validate\|graph\|plan\|run\|approve\|next\|done\|reset` (`/wf`) | local | Declarative agent workflows with dependency, approval, and verification gates | `/workflow approve release publish` |
|
|
108
|
-
| `/agent-ci init\|validate\|workflow\|run` | local | Policy-gated agents in isolated CI worktrees with bounded patch artifacts | `/agent-ci init` |
|
|
109
|
-
| `/automation list\|create\|show\|run\|run-due\|enable\|disable\|delete\|install\|uninstall\|status\|daemon` (`/automations`) | local | Project-local scheduled automations and resident launchd/systemd/cron scheduler management | `/automation create nightly --schedule "0 3 * * *" --prompt "run tests and report"` |
|
|
110
|
-
| `/spec init\|generate\|approve\|next\|run\|verify\|…` (`/specs`) | local | Spec-driven development: requirements → design → tasks in `.ur/specs`, executed task-by-task with proof gates | `/spec init checkout --goal "one-click checkout"` |
|
|
111
|
-
| `/trigger parse\|run --file payload.json` (`/mention`) | local | Parse GitHub/Slack webhook payload → optionally launch a headless run | `/trigger run --file payload.json --source github --keyword /ur` |
|
|
112
|
-
| `/cloud run\|list\|sync\|environments\|show\|logs\|steer\|cancel\|apply` | local | Detached tasks: verified local best-of-N, or managed candidates selected only from PASS results with safe review branches | `/cloud run "speed up parser" --attempts 3` |
|
|
113
|
-
| `/recipe init\|list\|run` (`/recipes`) | local | Structured-output playbooks: child session must return schema-valid JSON (one repair round) | `/recipe run triage "login 500s"` |
|
|
114
|
-
| `/exec [prompts...]` | local | Non-interactive prompt runs with deterministic planning, a live task board, bounded parallel agents, strict verification, and optional per-prompt worktrees; `--no-*` flags disable each orchestration layer | `/exec "fix lint errors" "update snapshots" --concurrency 2` |
|
|
115
|
-
| `/ci-loop` (`/heal`) | local | Run build/test command in an explicit cwd, fix failures, rerun until green or prove cannot-fix | `/ci-loop --command "bun test" --cwd ./packages/app --max-attempts 3` |
|
|
116
|
-
| `/test-first [run\|detect\|install]` (`/quality-loop`, `/tf-loop`) | local | Detect stack, run compile/test/lint loops, install edit-time verify gates | `/test-first run --max-attempts 3` |
|
|
117
|
-
| `/eval init\|list\|validate\|run\|report\|compare\|route\|gate\|dashboard\|runs\|builtin\|leaderboard\|bench` (`/evals`) | local | Isolated evals, trajectory grading, reliability reports, benchmark adapters, and CI gates | `/eval run my-suite --model llama3.3 --repeat 3` |
|
|
118
|
-
| `/sdk info\|init` (`/embed`) | local | Show headless/programmatic usage; scaffold TS/Python SDK examples | `/sdk init` |
|
|
119
|
-
| `/toolsmith <name> <python\|bash\|node\|go\|rust>` | local | Scaffold a local helper tool under `.ur/tools`, run via UR with approval | `/toolsmith csv-differ python` |
|
|
120
|
-
| `/skill list\|show\|run\|approve\|reset\|init\|keygen\|verify\|sign` | local | Execute tool-bounded skills, resume explicit approval gates, and manage Ed25519 provenance/trust | `/skill verify deploy-checklist --require-trusted` |
|
|
121
|
-
| `/create-skill <name> [: description]` (`/new-skill`) | local | Scaffold a new SKILL.md | `/create-skill release-notes : draft release notes --project` |
|
|
122
|
-
|
|
123
|
-
## 6. Code quality & verification
|
|
124
|
-
|
|
125
|
-
| Command | Type | What it does | Example |
|
|
126
|
-
|---|---|---|---|
|
|
127
|
-
| `/review` | prompt | Review a pull request | `/review 128` |
|
|
128
|
-
| `/ultrareview` | prompt | Deep multi-pass review | `/ultrareview` |
|
|
129
|
-
| `/verify` | prompt | Spawn the verification subagent on current state | `/verify` |
|
|
130
|
-
| `/diff` | jsx | View uncommitted changes and per-turn diffs | `/diff` |
|
|
131
|
-
| `/pr-comments` | prompt | Fetch comments from a GitHub PR | `/pr-comments` |
|
|
132
|
-
| `/repo-edit index\|search\|rename\|move\|organize-imports\|unused\|callers` (`/reliable-edit`) | local | Indexed search and compiler-aware edits; rename/move/import organization preview by default, mutate only through `apply rename …` or explicit `--apply`, and return nonzero after rollback on a failed apply | `/repo-edit rename getUser --to fetchUser --check "bun test"` |
|
|
133
|
-
| `/code-index build\|watch\|search\|status\|repo` (`/codeindex`) | local | Local semantic code index (embeddings via Ollama) | `/code-index search "retry with backoff"` |
|
|
134
|
-
| `/guardrails list\|init\|validate\|check` (`/guardrail`) | local | Standalone evaluator for declarative regex/contains/PII/LLM rules and tripwires; not a universal tool-output enforcement hook | `/guardrails check "email me at x@y.z" --phase output` |
|
|
135
|
-
| `/claim-ledger add\|list\|validate` (`/claims`) | local | Atomic, fail-closed claim-to-source ledger; `validate` checks record structure, not whether external sources still exist | `/claim-ledger add --claim "p99 < 200ms" --source file:benchmarks/latest.json` |
|
|
136
|
-
| `/selftest [run\|list]` (`/drills`) | local | End-to-end drills that spawn the shipped binary against real directories, plus the prompts for drills needing a live model; exits non-zero on failure | `/selftest run` |
|
|
137
|
-
| `/memory-integrity [verify\|record\|quarantine]` (`/mem-verify`) | local | Tamper-evidence for the file-backed memory stores: detects files modified, deleted outside UR, or dropped in by something else; `quarantine` moves suspect files aside | `/memory-integrity verify --store all` |
|
|
138
|
-
| `/sources [--check "<span>"] [--flagged]` | local | Every untrusted block that entered this session (web fetch, MCP result) with source, size, digest and injection signals; `--check` traces a span back to the source containing it, or reports it was not grounded in anything fetched | `/sources --check "the release gate runs bun test"` |
|
|
139
|
-
| `/grade-trajectory --file <t.jsonl>` (`/grade`) | local | Grade a run on how it worked — unverified changes, edits to unread files, destructive commands, loops on identical failures — and exit non-zero below `--min-score` | `/grade-trajectory --file run.jsonl --min-score 70` |
|
|
140
|
-
| `/artifacts list\|show\|serve\|add\|capture-diff\|capture-tests\|approve\|reject\|feedback\|delete` (`/artifact`) | local | Reviewable deliverables under `.ur/artifacts` with approval flow + local web viewer | `/artifacts capture-diff --title "auth refactor"` then `/artifacts serve --port 7777` |
|
|
141
|
-
| `/audit export\|verify` | local | Hash-chained audit trail (JSONL/CSV) with tamper verification | `/audit export --format csv --out audit.csv` |
|
|
142
|
-
| `/evidence [n]` | local | Stability evidence/action ledger | `/evidence 20` |
|
|
143
|
-
| `/actions [n]` | local | Recent stability action log | `/actions 10` |
|
|
144
|
-
| `/learn run\|stats\|apply\|playbooks …` | local | Mine proof-backed outcomes, review learned playbook candidates, and run only explicitly approved workflows | `/learn playbooks mine --min-runs 3` |
|
|
145
|
-
| `/commit` | prompt (internal) | Create a git commit | `/commit` |
|
|
146
|
-
| `/commit-push-pr` | prompt (internal) | Commit, push, open PR | `/commit-push-pr` |
|
|
147
|
-
|
|
148
|
-
## 7. Security suite
|
|
149
|
-
|
|
150
|
-
| Command | Type | What it does | Example |
|
|
151
|
-
|---|---|---|---|
|
|
152
|
-
| `/security scan\|code\|secrets\|threat-model\|vuln\|scope\|status\|rules\|report` | local | Umbrella security toolkit | `/security secrets` |
|
|
153
|
-
| `/security-review` (`/secure-review`, `/sec-review`) | prompt | Audit code in an isolated worktree, fix low-risk issues, and report findings without publishing | `/security-review` |
|
|
154
|
-
| `/scope` | local | Define/approve an authorized security test scope | `/scope set local` |
|
|
155
|
-
| `/threat-model` | local | STRIDE/ATT&CK threat model | `/threat-model` |
|
|
156
|
-
| `/vuln` | local | Dependency vulnerability audit (OSV) | `/vuln` |
|
|
157
|
-
| `/ir` | local | Incident-response collection (read-only) | `/ir` |
|
|
158
|
-
| `/compliance` | local | OWASP / SSDF / CIS compliance mapping | `/compliance` |
|
|
159
|
-
| `/playbook` | local | Show/run a defensive security playbook | `/playbook` |
|
|
160
|
-
| `/harden` | local | System hardening checks (read-only) | `/harden` |
|
|
161
|
-
| `/kali` | local | Detect installed Kali/security tools (read-only) | `/kali` |
|
|
162
|
-
| `/lab` | local | Create a safe local security lab | `/lab` |
|
|
163
|
-
| `/safety status\|init\|check` (`/safety-policy`) | local | Project shell-safety policy (`.ur/safety-policy.json`); evaluate risky commands | `/safety check --command "rm -rf build"` |
|
|
164
|
-
| `/sandbox [status\|check\|init\|eval\|exclude]` | jsx | Interactive sandbox settings plus text status, dependency, policy, approval-level, and exclusion actions | `/sandbox eval "curl https://example.com"` |
|
|
165
|
-
| `/permissions` (`/allowed-tools`) | jsx | Manage allow/deny tool permission rules | `/permissions` |
|
|
166
|
-
| `/permission-profile [list\|use <name>\|clear]` (`/profile`) | local | List, switch, or clear the active named permission profile | `/permission-profile use reviewing` |
|
|
167
|
-
| `/privacy-settings` | jsx | View/update privacy settings | `/privacy-settings` |
|
|
168
|
-
|
|
169
|
-
## 8. Research & analysis
|
|
170
|
-
|
|
171
|
-
| Command | Type | What it does | Example |
|
|
172
|
-
|---|---|---|---|
|
|
173
|
-
| `/research [note]` | local | Add/list research notes | `/research vector DBs comparison started` |
|
|
174
|
-
| `/paper [title or path]` | local | Add/list research papers | `/paper attention-is-all-you-need.pdf` |
|
|
175
|
-
| `/cite [citation]` | local | Add/list citations | `/cite Vaswani et al. 2017` |
|
|
176
|
-
| `/graph [entity] [text]` | local | Typed research collections for papers/claims/methods/datasets; no relation edges are inferred | `/graph claim "RoPE beats ALiBi at 128k"` |
|
|
177
|
-
| `/read <file>` | local | Read a text-like file into context | `/read notes/design.md` |
|
|
178
|
-
| `/summarize <file>` | local | Read a file for summarization | `/summarize RFC.md` |
|
|
179
|
-
| `/analyze <file>` | local | Read a file for analysis | `/analyze profiler-output.json` |
|
|
180
|
-
| `/search <query>` | local | Search workspace files for text | `/search "TODO(auth)"` |
|
|
181
|
-
| `/index` | local | Build a workspace file index (`.ur/index`) | `/index` |
|
|
182
|
-
| `/convert <file> <target>` | local | Report available conversion dependencies and the requested conversion; it does not execute the converter itself | `/convert report.md pdf` |
|
|
183
|
-
| `/pdf <file> [pages] [task]` | local | Deps-aware PDF text/metadata extraction (pdftotext) | `/pdf spec.pdf 2-7` |
|
|
184
|
-
| `/image <file> [task]` | local | Show file metadata and run bounded Tesseract OCR when installed; use an attached image/vision model for visual reasoning | `/image screenshot.png` |
|
|
185
|
-
| `/video <file\|url> [task]` | local | Show local `ffprobe` metadata or remote dependency advice; it does not analyze frames | `/video demo.mp4` |
|
|
186
|
-
| `/youtube <url> [task]` | local | Fetch bounded YouTube metadata with `yt-dlp`; it does not fetch or summarize a transcript | `/youtube https://youtu.be/…` |
|
|
187
|
-
|
|
188
|
-
## 9. Integrations
|
|
189
|
-
|
|
190
|
-
| Command | Type | What it does | Example |
|
|
191
|
-
|---|---|---|---|
|
|
192
|
-
| `/mcp [enable\|disable [server]]` | jsx | Manage MCP servers interactively | `/mcp` |
|
|
193
|
-
| `/plugin` (`/plugins`, `/marketplace`) | jsx | Manage installed and marketplace plugins | `/plugin` |
|
|
194
|
-
| `/reload-plugins` | local | Activate pending plugin changes in the current session | `/reload-plugins` |
|
|
195
|
-
| `/ide open\|status\|doctor\|config <editor>\|diff …` | jsx | IDE integrations, inline diff bundles | `/ide status` |
|
|
196
|
-
| `/acp serve\|stdio\|stop\|status` | local | Agent Client Protocol stdio agent and separate UR HTTP JSON-RPC server | `/acp serve --port 9100` |
|
|
197
|
-
| `/a2a-card [base-url]` (`/agent-card`) | local | Print UR Card metadata for A2A discovery | `/a2a-card https://myhost:8765` |
|
|
198
|
-
| `/chrome` | jsx | UR-in-Chrome (browser extension) settings | `/chrome` |
|
|
199
|
-
| `/browser <url\|task>` | local | Dependency/advice command that reports Playwright or Chrome availability; it does not itself drive the page | `/browser https://localhost:3000` |
|
|
200
|
-
| `/browser-qa list\|validate\|run` | local | Browser QA replay fixtures | `/browser-qa run login-flow` |
|
|
201
|
-
| `/desktop-qa init\|list\|validate\|run\|schema\|doctor` (`/qa-desktop`) | local | Bounded Electron fixtures with teardown, masked screenshots, and raw recordings only when selector masking is off | `/desktop-qa run smoke.json` |
|
|
202
|
-
| `/install-slack-app` | local | Open the UR Slack marketplace installation page; the user completes installation in the browser | `/install-slack-app` |
|
|
203
|
-
| `/remote-control [name]` (`/rc`) | conditional jsx | Connect terminal for remote-control (mobile/web) sessions; `BRIDGE_MODE` build only, absent from the standard npm bundle | `/remote-control` |
|
|
204
|
-
| `/remote-env` | conditional jsx | Default remote environment for teleport sessions; requires a UR subscriber, allowed remote-session policy, and network access | `/remote-env` |
|
|
205
|
-
| `/web-setup` | conditional jsx | Set up UR on the web (GitHub account link); `CCR_REMOTE_SETUP` build only, absent from the standard npm bundle | `/web-setup` |
|
|
206
|
-
| `/devcontainer status\|init\|exec` (`/exec-target`) | local | Reproducible container execution target for commands and ci-loop | `/devcontainer exec -- npm test` |
|
|
207
|
-
| `/connect` | local | (see Models & providers) | — |
|
|
208
|
-
|
|
209
|
-
## 10. Project & environment info
|
|
210
|
-
|
|
211
|
-
| Command | Type | What it does | Example |
|
|
212
|
-
|---|---|---|---|
|
|
213
|
-
| `/project` | local | Project summary (workspace + DNA) | `/project` |
|
|
214
|
-
| `/workspace init\|add\|task\|show\|validate\|run\|status\|verify\|pr-plan\|rollback-plan` | local | Coordinate dependency-aware tasks across isolated worktrees in multiple repositories | `/workspace run release --max-concurrency 4` |
|
|
215
|
-
| `/dna` | local | Detect language/package-manager/build/test/lint, save to `.ur` | `/dna` |
|
|
216
|
-
| `/os` | local | OS, shell, runtime, detected tools | `/os` |
|
|
217
|
-
| `/env` | internal | Environment dump (internal builds) | — |
|
|
218
|
-
| `/ur-init` | local | Generate the `.ur` asset folder (docs, superpowers, brainstorming, memory, prompts) | `/ur-init` |
|
|
219
|
-
| `/ur-doctor` | local | Full health check: OS, tools, Ollama, `.ur`, MCP, Playwright | `/ur-doctor` |
|
|
220
|
-
| `/doctor` | jsx | Diagnose installation and settings | `/doctor` |
|
|
221
|
-
| `/status` | jsx | Version, model, account, connectivity, tool statuses | `/status` |
|
|
222
|
-
| `/release-notes` | local | View changelog | `/release-notes` |
|
|
223
|
-
|
|
224
|
-
## 11. UI, terminal & input
|
|
225
|
-
|
|
226
|
-
| Command | Type | What it does | Example |
|
|
227
|
-
|---|---|---|---|
|
|
228
|
-
| `/config` (`/settings`) | jsx | Open the config panel | `/config` |
|
|
229
|
-
| `/theme` | jsx | Change color theme | `/theme` |
|
|
230
|
-
| `/color <color\|default>` | jsx | Prompt-bar color for this session | `/color magenta` |
|
|
231
|
-
| `/vim` | local | Toggle Vim editing mode | `/vim` |
|
|
232
|
-
| `/keybindings` | local | Open/create the keybindings file | `/keybindings` |
|
|
233
|
-
| `/terminal-setup` | jsx | Configure terminal (Shift+Enter etc.) | `/terminal-setup` |
|
|
234
|
-
| `/statusline` | prompt | Configure the status line | `/statusline show model and git branch` |
|
|
235
|
-
| `/output-style` | jsx | Deprecated → use `/config` | — |
|
|
236
|
-
| `/hooks` | jsx | View hook configurations | `/hooks` |
|
|
237
|
-
| `/help` | jsx | Help and available commands | `/help` |
|
|
238
|
-
| `/feedback [report]` (`/bug`) | jsx | Submit feedback | `/feedback` |
|
|
239
|
-
| `/plan [open\|description]` | jsx | Enter plan mode / view session plan | `/plan add caching layer` |
|
|
240
|
-
| `/passes` | conditional jsx | Passes UI when cached account eligibility allows it | `/passes` |
|
|
241
|
-
| `/tasks` (`/bashes`) | jsx | List/manage background tasks | `/tasks` |
|
|
242
|
-
| `/think-back` / `/thinkback-play` | conditional jsx/local | Year-in-review animation when its runtime feature configuration is enabled; `thinkback-play` is hidden and called by the flow | `/think-back` |
|
|
243
|
-
| `/voice` | local | Toggle shipped voice input; availability still requires UR OAuth, microphone access, an audio backend, and the runtime kill-switch | `/voice` |
|
|
244
|
-
| `/speak <text>` (`/say`) | local | Read text aloud with the system speech synthesiser (`--voice`, `--rate`) | `/speak build finished` |
|
|
245
|
-
| `/computer screenshot\|click\|type` (`/desktop-control`) | local | Desktop control; state-changing actions require `--yes` | `/computer screenshot ~/shot.png` |
|
|
246
|
-
| `/heapdump` | local | Dump JS heap to ~/Desktop (debugging) | `/heapdump` |
|
|
247
|
-
| `/trace` | local | Inspect recent turns: roles, tool calls | `/trace` |
|
|
248
|
-
|
|
249
|
-
## 12. Stability & reliability
|
|
250
|
-
|
|
251
|
-
| Command | Type | What it does | Example |
|
|
252
|
-
|---|---|---|---|
|
|
253
|
-
| `/stability metrics\|firewall\|why <error>\|policy\|evidence\|actions\|cooldown` | local | Inspect the tool-action ledger, calculate stability flags, and rank likely causes; this command reports policy diagnostics but does not control the core query loop | `/stability why "ECONNRESET"` |
|
|
254
|
-
| `/actions`, `/evidence` | local | (see §6) | — |
|
|
255
|
-
|
|
256
|
-
## 13. Bundled skills (standard invocable prompts)
|
|
257
|
-
|
|
258
|
-
Registered in `src/skills/bundled/` at startup:
|
|
259
|
-
|
|
260
|
-
| Skill | What it does | Example |
|
|
261
|
-
|---|---|---|
|
|
262
|
-
| `/batch` | Research + plan a large change, then execute across 5–30 parallel local worktrees; asks before final integration tests and does not publish | `/batch migrate all API handlers to zod validation` |
|
|
263
|
-
| `/debug` | Enable/read the current session debug log and diagnose runtime issues | `/debug provider request stalled` |
|
|
264
|
-
| `/debug-v2` (`/debug2`, `/bugfix`) | Reproduce, root-cause, and fix a bug in an isolated worktree; ask before the full suite and keep publishing explicit | `/debug-v2 login 500s when password has emoji` |
|
|
265
|
-
| `/refactor` | Safe, test-backed refactor in a worktree; ask before the full suite and keep publishing explicit | `/refactor extract retry logic into a helper` |
|
|
266
|
-
| `/benchmark` (`/bench`, `/perf`) | Add/run benchmarks in a worktree; ask before the full sequence and keep publishing explicit | `/benchmark the JSON parser hot path` |
|
|
267
|
-
| `/dockerize` | Add Dockerfile, compose, health checks, and .dockerignore in a worktree; keep publishing explicit | `/dockerize` |
|
|
268
|
-
| `/security-review` | Audit code in a worktree, fix low-risk issues, and report findings without publishing | `/security-review` |
|
|
269
|
-
| `/latex-paper` (`/latex`) | Generate/compile a LaTeX paper with a build script; ask before final verification and keep publishing explicit | `/latex-paper systems paper skeleton` |
|
|
270
|
-
| `/paper-implementation` (`/implement-paper`) | Implement an algorithm/system from a paper or URL with tests and notes; keep publishing explicit | `/paper-implementation https://arxiv.org/abs/… ` |
|
|
271
|
-
| `/remember <text>` | The standard build's local command persists an explicit note; no-argument use lists project notes | `/remember keep release commits signed` |
|
|
272
|
-
| `/simplify` | Review changed code for reuse/quality/efficiency, apply fixes | `/simplify` |
|
|
273
|
-
| `/update-config` | Configure settings.json/hooks via natural language | `/update-config allow npm commands without prompting` |
|
|
274
|
-
| `/ur-in-chrome` | Chrome-extension driving skill (auto-enabled when configured) | — |
|
|
275
|
-
| `/verify` | Verify a change end-to-end using the verification prompt | `/verify` |
|
|
276
|
-
|
|
277
|
-
Defined skill modules that are not standard invocable commands:
|
|
278
|
-
`/loop` (`AGENT_TRIGGERS`), `/schedule` (`AGENT_TRIGGERS_REMOTE`), `/ur-api`
|
|
279
|
-
(`BUILDING_UR_APPS`), `/skillify` and the auto-memory review variant of `/remember`
|
|
280
|
-
(internal), `/keybindings-help` (`userInvocable: false`), `/lorem-ipsum` and `/stuck`
|
|
281
|
-
(internal), and `/dream`, `/hunter`, `/run` (their respective build gates).
|
|
282
|
-
|
|
283
|
-
## 14. Internal-only commands (`USER_TYPE=ant`, stripped from external builds)
|
|
284
|
-
|
|
285
|
-
`/backfill-sessions`, `/break-cache`, `/bughunter`, `/commit`, `/commit-push-pr`, `/ctx_viz`,
|
|
286
|
-
`/good-ur`, `/issue`, `/init-verifiers`, `/force-snip`, `/mock-limits`, `/bridge-kick`,
|
|
287
|
-
`/version`, `/ultraplan`, `/subscribe-pr`, `/reset-limits`, `/onboarding`, `/share`,
|
|
288
|
-
`/summary`, `/teleport`, `/ant-trace`, `/perf-issue`, `/env`, `/oauth-refresh`,
|
|
289
|
-
`/debug-tool-call`, `/autofix-pr`, `/tag`, `/files`, `/skillify`.
|
|
290
|
-
|
|
291
|
-
## 15. Feature-gated commands
|
|
292
|
-
|
|
293
|
-
Compiled in only when the corresponding `feature(...)` flag is on:
|
|
294
|
-
`/proactive`, `/brief`, `/assistant` (KAIROS) · `/remote-control` (BRIDGE_MODE) ·
|
|
295
|
-
`/voice` (VOICE_MODE, enabled in the standard bundle) · `/workflows` (WORKFLOW_SCRIPTS) ·
|
|
296
|
-
`/web-setup` (CCR_REMOTE_SETUP) ·
|
|
297
|
-
`/peers` (UDS_INBOX) · `/fork` (FORK_SUBAGENT) · `/buddy` (BUDDY) · `/torch` (TORCH) ·
|
|
298
|
-
`/loop` (AGENT_TRIGGERS) · `/schedule` (AGENT_TRIGGERS_REMOTE) · `/ur-api`
|
|
299
|
-
(BUILDING_UR_APPS). `/session` requires remote mode and `/think-back` requires its
|
|
300
|
-
runtime feature configuration; neither is in the default external registry.
|
|
301
|
-
|
|
302
|
-
## 16. Custom command sources
|
|
303
|
-
|
|
304
|
-
Beyond built-ins, slash commands are loaded from (see doc 08 for formats):
|
|
305
|
-
- **Skills**: native `.ur/skills/<name>/SKILL.md` / `~/.ur/skills/` and
|
|
306
|
-
cross-client `.agents/skills/<name>/SKILL.md` / `~/.agents/skills/`
|
|
307
|
-
- **Plugins**: commands and skills contributed by installed plugins (`(plugin-name)` prefix in help)
|
|
308
|
-
- **Workflows**: each workflow in `.ur/workflows/` becomes a command (feature-gated)
|
|
309
|
-
- **MCP prompts**: MCP servers exposing prompts appear as commands (`MCP_SKILLS` gate for model-invocable)
|
|
310
|
-
|
|
311
|
-
`src/commands.ts` resolves the seven static sources in this priority:
|
|
312
|
-
bundled skills → built-in plugin skills → user/project skill directories →
|
|
313
|
-
workflow commands → plugin commands → plugin skills → built-ins. Dynamic
|
|
314
|
-
skills are inserted immediately before built-ins. The first source to claim a
|
|
315
|
-
canonical token wins; later conflicting commands are omitted and only
|
|
316
|
-
conflicting aliases are removed from otherwise distinct commands. MCP prompts
|
|
317
|
-
are held in `AppState.mcp.commands` and filtered separately; they are not an
|
|
318
|
-
eighth entry in `loadAllCommands()`.
|
package/technical/04-tools.md
DELETED
|
@@ -1,283 +0,0 @@
|
|
|
1
|
-
# 04 — Tool Reference (model-invocable tools)
|
|
2
|
-
|
|
3
|
-
Source of truth: `src/tools.ts:getAllBaseTools()` and each `src/tools/<Name>Tool/`.
|
|
4
|
-
Tools are what the model calls during a turn. The pool is assembled per-session
|
|
5
|
-
(`assembleToolPool`): built-ins + MCP tools, deny-rule filtered, deduped, sorted for
|
|
6
|
-
prompt-cache stability. `--tools`, `--allowedTools`, `--disallowedTools`, and
|
|
7
|
-
`/permissions` rules shape this pool.
|
|
8
|
-
|
|
9
|
-
"Example" below shows a natural-language request that causes the agent to use the tool —
|
|
10
|
-
users don't call tools directly.
|
|
11
|
-
|
|
12
|
-
## Core file & search tools
|
|
13
|
-
|
|
14
|
-
| Tool | Purpose | Key inputs | Example request |
|
|
15
|
-
|---|---|---|---|
|
|
16
|
-
| `Read` | Read a file (text, images, notebooks) | `file_path`, `offset`, `limit` | "Open src/auth.ts and explain the login flow" |
|
|
17
|
-
| `Write` | Create/overwrite a file | `file_path`, `content` | "Create a README for this package" |
|
|
18
|
-
| `Edit` | Exact string replacement in a file | `file_path`, `old_string`, `new_string`, `replace_all` | "Rename this variable in that file" |
|
|
19
|
-
| `NotebookEdit` | Replace/insert/delete Jupyter cells | `notebook_path`, `cell_id`, `new_source` | "Fix the broken cell in analysis.ipynb" |
|
|
20
|
-
| `Glob` | Fast filename pattern matching | `pattern`, `path` | "Find all *.test.ts files" |
|
|
21
|
-
| `Grep` | Regex content search (ripgrep-backed) | `pattern`, `path`, `glob`, output modes | "Where is refreshToken referenced?" |
|
|
22
|
-
| `CodeSearch` | Semantic code search over the local embedding index — auto-enabled when a built index exists (`ur code-index build`); `UR_CODE_INDEX=off` disables | `query` | "Find code that debounces user input" |
|
|
23
|
-
| `Bash` | Run shell commands; supports background tasks, sandboxing, safety checks (`src/tools/BashTool/bashSecurity.ts`); commands with unterminated quotes are rejected pre-execution with an actionable diagnostic (errorCode 11, heredoc guidance) | `command`, `timeout`, `run_in_background`, sandbox overrides | "Run the test suite" |
|
|
24
|
-
| `PowerShell` | Windows PowerShell variant (Windows plus `UR_CODE_USE_POWERSHELL_TOOL=1` in the external build) | same shape as Bash | — |
|
|
25
|
-
|
|
26
|
-
## Web & network tools
|
|
27
|
-
|
|
28
|
-
| Tool | Purpose | Key inputs | Example request |
|
|
29
|
-
|---|---|---|---|
|
|
30
|
-
| `WebFetch` | Fetch a public HTTP(S) URL → markdown → analyze with a small model; DNS and every redirect are checked against private/reserved addresses | `url`, `prompt` | "Summarize this blog post: https://…" |
|
|
31
|
-
| `Computer` | Desktop control: screenshot (read-only), click, type. Clicks are bounds-checked against real screen geometry and state-changing actions always ask. macOS/Linux only | action-specific coordinates, text, or output path | "Take a screenshot of the desktop" |
|
|
32
|
-
| `WebSearch` | Provider-side web search. The current runtime gate exposes it for every non-Ollama provider (`getAPIProvider() === 'foundry'`) and hides it on the default Ollama backend; actual server-tool support still depends on the selected provider/model | `query`, optional `allowed_domains` or `blocked_domains` (mutually exclusive) | "Search for the fastify v5 migration guide" |
|
|
33
|
-
| `Api` | Direct public HTTP(S) calls with JSON extraction; private targets, unsafe redirects, oversized responses, GET bodies, and silent sensitive-header sends are rejected/confirmed | `url`, `method`, `headers`, `body`, `timeout` (≤300s), `extract` (dotted path) | "Call GET https://api.github.com/repos/x/y and give me .stargazers_count" |
|
|
34
|
-
| `Browser` | Guarded public-URL fetch plus a persistent Playwright session for goto/click/type/screenshot/evaluate. Requires `UR_BROWSER_TOOL=1` or `WEB_BROWSER_TOOL=1`; `fetch` needs no browser process, while interactive actions require the externalized `playwright-core` dependency and an installed Chromium/Chrome executable | `url`, `action`, `selector`, `text`, `expression` | "Open the public staging UI, click Login, screenshot the result" |
|
|
35
|
-
|
|
36
|
-
## Dev-workflow tools
|
|
37
|
-
|
|
38
|
-
| Tool | Purpose | Key inputs | Example request |
|
|
39
|
-
|---|---|---|---|
|
|
40
|
-
| `GitHub` | GitHub operations without leaving the agent; PR/issue creation always enters the permission path and requires non-interactive title/body input | `action`: `pr_list`, `pr_view`, `pr_create`, `issue_list`, `issue_create`, `repo_view`, `search_code`; `repo`, `title`, `body`, `head`, `base`, `number`, `query`, `draft`, `limit` | "Open a draft PR for this branch against main" |
|
|
41
|
-
| `Docker` | Container operations | `action`: `ps`, `build`, `run`, `exec`, `logs`, `stop`, `rm`, `compose_up`, `compose_down`; `image`, `container`, `command`, `file`, `detach` | "Build the image and start compose" |
|
|
42
|
-
| `TestRunner` | Run project tests through the Bash permission/sandbox/hook path with auto-detected or explicit command | `command`, `pattern`, `timeout` (≤600s), `watch` | "Run only the auth tests" |
|
|
43
|
-
| `Database` | SQL against sqlite/postgres/mysql/duckdb; read-only mode is enforced by both classification and each database engine | `connection`, `database`, `query`, `readonly` (default true) | "How many rows are in users.db's sessions table?" |
|
|
44
|
-
| `LSP` | Language-server queries: goToDefinition, findReferences, hover, documentSymbol… (needs `ENABLE_LSP_TOOL=1`) | operation + position | "Find all references of parseConfig" |
|
|
45
|
-
|
|
46
|
-
## Planning, tasks & interaction
|
|
47
|
-
|
|
48
|
-
| Tool | Purpose | Example request |
|
|
49
|
-
|---|---|---|
|
|
50
|
-
| `TodoWrite` | Maintain the session todo list | (agent tracks multi-step work) |
|
|
51
|
-
| `TaskCreate` / `TaskGet` / `TaskUpdate` / `TaskList` | Structured task list v2 (dependencies, atomic claims/statuses/numeric ordering) — replaces TodoWrite when the todo-v2 runtime gate is enabled | "Track these five subtasks" |
|
|
52
|
-
| `EnterPlanMode` / `ExitPlanMode` | Enter/leave plan mode; plan approval flow | "Plan first, then implement" |
|
|
53
|
-
| `AskUserQuestion` | Multiple-choice questions to the user | (agent asks when blocked on a decision) |
|
|
54
|
-
| `TaskOutput` / `TaskStop` | Read output of / stop a background task | "Kill the dev server you started" |
|
|
55
|
-
| `EnterWorktree` / `ExitWorktree` | Move the session into/out of an isolated git worktree (worktree mode) | "Do this in a scratch worktree" |
|
|
56
|
-
| `SendUserMessage` | KAIROS/KAIROS_BRIEF build-only mid-turn brief; not present in the standard npm build | — |
|
|
57
|
-
|
|
58
|
-
Task tracking and plan mode are separate state machines. Creating an ordered
|
|
59
|
-
`TaskCreate`/`TodoWrite` list does not enter plan mode; `ExitPlanMode` is valid
|
|
60
|
-
only after `EnterPlanMode` (or `/plan`) has successfully made the active mode
|
|
61
|
-
`plan`. Plan approval may change that mode before permission-edited input is
|
|
62
|
-
revalidated; the executor labels that second validation as post-permission so
|
|
63
|
-
the already-validated exit can finish, while new out-of-mode calls still fail.
|
|
64
|
-
`ExitPlanMode` is exempt from the implementation task-list gate because it is
|
|
65
|
-
the approval/control transition that precedes implementation. Its own plan-mode
|
|
66
|
-
validation remains authoritative, so the exemption does not make a stale
|
|
67
|
-
second exit valid.
|
|
68
|
-
|
|
69
|
-
For non-trivial work, the task list uses one record per cohesive outcome with
|
|
70
|
-
an observable done check rather than one omnibus record. Genuine single-outcome
|
|
71
|
-
work remains one task; files, commands, and tiny mechanical steps are not
|
|
72
|
-
artificial task boundaries. Dependency edges represent only real ordering
|
|
73
|
-
constraints. Mutually independent tasks with no conflicting shared mutations
|
|
74
|
-
can be delegated together, while dependent or conflicting work stays
|
|
75
|
-
sequential.
|
|
76
|
-
|
|
77
|
-
The proactive model lifecycle is explicit:
|
|
78
|
-
`TaskCreate` → inspect successful result → `TaskUpdate(in_progress)` → inspect
|
|
79
|
-
successful result → `Write`/`Edit`/mutating `Bash`/worker. Task setup and its
|
|
80
|
-
dependent mutation are never one parallel batch. A feature-rich one-file build
|
|
81
|
-
is non-trivial even if implementation uses one `Write`; classification follows
|
|
82
|
-
the requested outcomes and verification burden, not the file or tool-call
|
|
83
|
-
count. Approved-plan handoffs require task creation as their next
|
|
84
|
-
state-changing action, and Ollama/Kimi receives the same ordered rule in its
|
|
85
|
-
compact tool-discipline section. If earlier tasks are all terminal, the model
|
|
86
|
-
must create a new cohesive outcome or reopen the relevant task before new
|
|
87
|
-
workspace work.
|
|
88
|
-
|
|
89
|
-
The runtime gate accepts an actionable `pending` or `in_progress` record; the
|
|
90
|
-
stricter model-facing sequence keeps status truthful before work begins.
|
|
91
|
-
`TodoWrite` is the equivalent single-call setup in legacy/headless pools, with
|
|
92
|
-
the selected item already `in_progress`. Partial Task V2 exposure never masks
|
|
93
|
-
an available `TodoWrite`. Bare/simple, REPL-simple, coordinator, custom-agent,
|
|
94
|
-
and override-prompt paths retain a usable planner and capability-aware task
|
|
95
|
-
contract, so the gate never instructs those modes to call a missing tool.
|
|
96
|
-
If a user explicitly filters every planner from a custom tool pool, runtime
|
|
97
|
-
fails closed and tells the user to enable Task V2/`TodoWrite` or explicitly
|
|
98
|
-
disable the gate; it never tells the model to call a tool that is absent.
|
|
99
|
-
|
|
100
|
-
Task IDs remain strings in storage and tool output. Model inputs for
|
|
101
|
-
`TaskCreate` dependencies and `TaskGet`/`TaskUpdate` identifiers may also use a
|
|
102
|
-
positive safe-integer JSON number; the tool boundary normalizes it to the
|
|
103
|
-
canonical decimal string. Zero, negative, fractional, non-finite, Boolean, and
|
|
104
|
-
precision-losing numeric IDs are rejected.
|
|
105
|
-
|
|
106
|
-
The Kimi/Ollama compatibility parser applies the same task schema instead of a
|
|
107
|
-
smaller parallel implementation. A clearly delimited bare `TaskCreate` object
|
|
108
|
-
may contain `blocks`, `blockedBy`, `addBlocks`, or `addBlockedBy`; a bare
|
|
109
|
-
`TaskUpdate` accepts the live terminal `failed` and `skipped` statuses as well
|
|
110
|
-
as numeric IDs. IDs are normalized to canonical strings, while unknown fields,
|
|
111
|
-
invalid IDs/statuses, ambiguous prose, and unavailable tools fail closed.
|
|
112
|
-
|
|
113
|
-
Task-gate recovery names the tracking surface that is actually present:
|
|
114
|
-
interactive Task V2 sessions use `TaskCreate`, while default headless sessions
|
|
115
|
-
use `TodoWrite`. It never instructs a model to recover by calling a tool absent
|
|
116
|
-
from that runtime. Runtime inspection tracks actionable and total user tasks
|
|
117
|
-
separately: an all-terminal list is reported truthfully and the model is told
|
|
118
|
-
to reopen or create the cohesive remaining task. Real Edit/Bash mutations stay
|
|
119
|
-
gated. One simple `open <loopback-http(s)-URL>` Bash preview is exempt only
|
|
120
|
-
from the task-list gate; remote/file URLs, flags, shell composition, expansion,
|
|
121
|
-
redirection, backgrounding, sandbox overrides, and permission-time rewrites to
|
|
122
|
-
mutating commands fail closed. The preview command remains a Bash side effect
|
|
123
|
-
and still follows normal permission, sandbox, and plan-worker rules.
|
|
124
|
-
|
|
125
|
-
Control-plane operations that establish or tear down tracking cannot depend on
|
|
126
|
-
an already-actionable task: `TeamCreate`, `TeamDelete`, `TaskStop`/`KillShell`,
|
|
127
|
-
and structured team shutdown/plan-response messages are narrow task-gate
|
|
128
|
-
exceptions. Their own schemas, mode checks, active-member checks, and normal
|
|
129
|
-
permissions remain authoritative. Loading a `Skill` and taking a desktop
|
|
130
|
-
screenshot are read-only wrappers; downstream skill actions, desktop
|
|
131
|
-
click/type, API/database/browser/MCP mutations, and future tools classified
|
|
132
|
-
state-changing at runtime remain task-gated.
|
|
133
|
-
|
|
134
|
-
Syntax verification has the same task-gate-only separation. A strictly parsed
|
|
135
|
-
`node --check <single-file>` or the bounded HTML checker that reads one file,
|
|
136
|
-
constructs but never invokes its first `<script>` body, and prints only a fixed
|
|
137
|
-
syntax result may run after a task-free one-shot Write. Generic `node -e`,
|
|
138
|
-
additional statements or invocation, mismatched files, flags, redirects,
|
|
139
|
-
expansion, backgrounding, sandbox overrides, and permission-time rewrites do
|
|
140
|
-
not qualify. Node remains non-read-only for Bash permission and sandbox
|
|
141
|
-
purposes, so this compatibility path cannot become a general execution bypass.
|
|
142
|
-
|
|
143
|
-
Task tracking no longer equates "not safe to auto-approve" with "changes the
|
|
144
|
-
workspace." Tools may expose a separate `isTaskListReadOnly` classification;
|
|
145
|
-
permissions, sandboxing, concurrency, and read-only planning agents still use
|
|
146
|
-
the stricter `isReadOnly` result. Bash uses the task-only classification for
|
|
147
|
-
known read commands and generic capability inspection: exact help/version
|
|
148
|
-
queries, `command -v`/`which`-style presence checks, and import-only Python
|
|
149
|
-
probes for any syntactically valid module name. This is category-based rather
|
|
150
|
-
than a module allowlist. Arbitrary interpreter statements, output redirects
|
|
151
|
-
outside `/dev/null`, background execution, sandbox overrides, simulated edits,
|
|
152
|
-
unknown commands, and permission-time rewrites to mutations remain gated.
|
|
153
|
-
|
|
154
|
-
Task completion also protects that lifecycle boundary. When the final
|
|
155
|
-
actionable `in_progress` task has a successful `Write`/`Edit`/`MultiEdit`/
|
|
156
|
-
`NotebookEdit` after its recorded start but no later successful inspection,
|
|
157
|
-
runtime, test, shell, or delegated-check result, `TaskUpdate(completed)` is
|
|
158
|
-
soft-deferred: it returns a non-error explanation and leaves the same task
|
|
159
|
-
`in_progress`. The model verifies and retries completion instead of creating a
|
|
160
|
-
duplicate task or discovering an all-terminal dead end on the next corrective
|
|
161
|
-
Edit. The guard is evidence-based and conservative: missing/compacted history,
|
|
162
|
-
non-file work, and intermediate tasks are not guessed into a deferred state.
|
|
163
|
-
|
|
164
|
-
Live plan mode also treats setup of the exact current session plan artifact as
|
|
165
|
-
planning infrastructure rather than implementation. `Write` creates the plan
|
|
166
|
-
file's parent automatically, but weak models may first emit `mkdir -p` for that
|
|
167
|
-
exact parent or the bounded `ls ... || mkdir -p ... && ls ...` check. Only those
|
|
168
|
-
exact-path shapes bypass the task-list requirement; Bash permission and sandbox
|
|
169
|
-
checks still apply, and a hook rewrite, sibling path, extra command, expansion,
|
|
170
|
-
background launch, or sandbox override fails closed at the final boundary.
|
|
171
|
-
|
|
172
|
-
`AskUserQuestion` exposes a request-only model schema: one top-level
|
|
173
|
-
`questions` array with 1–4 complete question objects, each containing
|
|
174
|
-
`question`, a header of at most 12 characters, and 2–8 labeled choices.
|
|
175
|
-
Descriptions are optional and are never fabricated from labels. The runtime
|
|
176
|
-
accepts only lossless compatibility forms such as string choices and recognized
|
|
177
|
-
question-text aliases; it does not turn arbitrary prose or flat option rows into
|
|
178
|
-
invented questions. More than four blocking decisions are asked in later
|
|
179
|
-
rounds. The sole presentation-only repair compacts a safe explicit header of at
|
|
180
|
-
most 500 characters to one bounded first-word chip when it exceeds 12
|
|
181
|
-
characters. The question, options, labels, descriptions, previews, metadata,
|
|
182
|
-
and selection mode remain byte-for-byte unchanged. Control/ANSI-bearing or
|
|
183
|
-
grossly oversized headers still fail validation.
|
|
184
|
-
|
|
185
|
-
One narrow end-turn recovery exists for weak models that clearly attempted this
|
|
186
|
-
tool but failed to emit a native call. On an interactive main-agent turn with
|
|
187
|
-
no existing tool use, the runtime may recover either one canonical
|
|
188
|
-
`questions` object at the very end of a reasoning block that explicitly says
|
|
189
|
-
to invoke `AskUserQuestion`, or one standalone Markdown decision menu with
|
|
190
|
-
exactly one bold question, 2–8 bold labeled options with descriptions, and a
|
|
191
|
-
terminal instruction to select an option. The recovered object must pass the
|
|
192
|
-
live `AskUserQuestion` schema unchanged except for that same deterministic
|
|
193
|
-
UI-header compaction before the normal tool executor opens the UI. JSON repair,
|
|
194
|
-
question/choice truncation, duplicate/ambiguous candidates, casual “A or B?”
|
|
195
|
-
prose, examples, incomplete menus, background workers, headless sessions, and
|
|
196
|
-
unavailable/disabled tools all fail closed.
|
|
197
|
-
|
|
198
|
-
Answers and annotations are not model input fields. They are accepted only
|
|
199
|
-
during post-permission validation after the interactive UI has returned one
|
|
200
|
-
non-empty answer for every question; an unchanged generic approval cannot
|
|
201
|
-
produce a successful “user answered” result. The UI uses prototype-safe records,
|
|
202
|
-
provides a real custom `Other` path for both ordinary and preview questions,
|
|
203
|
-
and does not count selecting `Other` itself as an answer. HTML-configured
|
|
204
|
-
previews are escaped into an inert preformatted-text wrapper rather than
|
|
205
|
-
executed as model-provided markup.
|
|
206
|
-
|
|
207
|
-
## Multi-agent tools
|
|
208
|
-
|
|
209
|
-
The table below separates the ordinary Agent/Skill tools from coordination
|
|
210
|
-
tools that require an explicit runtime/build gate. Internal overlay modules
|
|
211
|
-
that export `null` are compile-time placeholders, are never added to the tool
|
|
212
|
-
pool, and are not supported user-facing tools.
|
|
213
|
-
|
|
214
|
-
| Tool | Purpose | Example request |
|
|
215
|
-
|---|---|---|
|
|
216
|
-
| `Agent` | Spawn a subagent (built-in types: `general-purpose`, `Explore`, `Plan`, `verification`, `statusline-setup`, `ur-code-guide`, plus user agents from `/agents` and `.ur/agents/`) | "Use a subagent to survey how errors are handled repo-wide" |
|
|
217
|
-
| `SendMessage` | Message another running agent/teammate; useful only while swarm mode is enabled | (agent coordination) |
|
|
218
|
-
| `TeamCreate` / `TeamDelete` | Create/remove agent teams (swarm mode, `isAgentSwarmsEnabled`) | "Spin up a team for this migration" |
|
|
219
|
-
| `Skill` | Invoke a skill programmatically (model-triggered skills) | "Use the dockerize skill" |
|
|
220
|
-
|
|
221
|
-
## Scheduling (nonstandard builds)
|
|
222
|
-
|
|
223
|
-
| Tool | Gate | Purpose |
|
|
224
|
-
|---|---|---|
|
|
225
|
-
| `CronCreate` / `CronDelete` / `CronList` | AGENT_TRIGGERS | Local scheduled jobs (used by `/loop`, `/automation`) |
|
|
226
|
-
| `RemoteTrigger` | AGENT_TRIGGERS_REMOTE | Manage scheduled remote agents via API |
|
|
227
|
-
| `Sleep` | PROACTIVE/KAIROS overlay | The public-source overlay currently exports `null`; do not treat the environment name as a usable tool |
|
|
228
|
-
|
|
229
|
-
## MCP & discovery
|
|
230
|
-
|
|
231
|
-
| Tool | Purpose |
|
|
232
|
-
|---|---|
|
|
233
|
-
| `ListMcpResourcesTool` / `ReadMcpResourceTool` | List/read resources exposed by connected MCP servers |
|
|
234
|
-
| `mcp__<server>__<tool>` | Every connected MCP server's tools join the pool under this naming |
|
|
235
|
-
| `ToolSearch` | When the tool pool is large, less-used tools are deferred; this searches and loads their schemas on demand |
|
|
236
|
-
|
|
237
|
-
## Internal / special
|
|
238
|
-
|
|
239
|
-
| Tool | Gate | Purpose |
|
|
240
|
-
|---|---|---|
|
|
241
|
-
| `Config` | USER_TYPE=ant | Get/set UR settings programmatically |
|
|
242
|
-
| `REPL` | internal overlay | The public-source overlay currently exports `null`; `UR_CODE_REPL` alone cannot enable it |
|
|
243
|
-
| `StructuredOutput` | synthetic | Enforces structured output schemas in headless runs |
|
|
244
|
-
|
|
245
|
-
`ListPeers`, `Workflow`, `Monitor`, `PushNotification`, `SendUserFile`,
|
|
246
|
-
`SubscribePR`, `Tungsten`, `SuggestBackgroundPR`, `CtxInspect`,
|
|
247
|
-
`TerminalCapture`, `WebBrowser`, `Snip`, `overflow_test`, and
|
|
248
|
-
`VerifyPlanExecution` are internal overlay names only. Their public-source
|
|
249
|
-
modules are inert placeholders and they are intentionally excluded from the
|
|
250
|
-
supported tool reference rather than presented as partial implementations.
|
|
251
|
-
|
|
252
|
-
## Permission model interaction
|
|
253
|
-
|
|
254
|
-
Every tool call passes through the permission layer (`src/utils/permissions/`,
|
|
255
|
-
`src/hooks/useCanUseTool.tsx`):
|
|
256
|
-
1. Deny rules (`/permissions`, settings `permissions.deny`) — blanket-denied tools are
|
|
257
|
-
stripped from the pool before the model even sees them (`filterToolsByDenyRules`).
|
|
258
|
-
2. Allow rules auto-approve matching calls (e.g. `Bash(git:*)`).
|
|
259
|
-
3. Otherwise the user is prompted; `--dangerously-skip-permissions` bypasses (guarded by
|
|
260
|
-
org policy `skipDangerousModePermissionPrompt` / policyLimits).
|
|
261
|
-
4. Bash additionally runs command safety analysis (`bashSecurity.ts`, destructive-command
|
|
262
|
-
warnings, project safety policy from `/safety`) and optional OS sandboxing
|
|
263
|
-
(`src/utils/sandbox`, `/sandbox` command, `sandbox` settings).
|
|
264
|
-
|
|
265
|
-
File Edit/Write/NotebookEdit require the exact content snapshot the model read,
|
|
266
|
-
not only a modification timestamp. Full and ranged reads are compared at the
|
|
267
|
-
final write boundary, preventing same-timestamp external replacements from
|
|
268
|
-
being overwritten.
|
|
269
|
-
|
|
270
|
-
`Write` requires `file_path` and the complete literal `content` in the same
|
|
271
|
-
structured call. Prose outside the call is never treated as file content, and a
|
|
272
|
-
missing-content failure states that no file was written instead of fabricating
|
|
273
|
-
the intended file.
|
|
274
|
-
|
|
275
|
-
`Edit` remains fail-closed rather than applying a fuzzy replacement to similar
|
|
276
|
-
code. When an exact contiguous `old_string` is absent, its bounded error points
|
|
277
|
-
to the most distinctive verified matching line when one exists, rather than an
|
|
278
|
-
unrelated generic delimiter, and tells the model to re-read that region, use a
|
|
279
|
-
smaller current 2–4-line anchor, split distant HTML/CSS/JavaScript sections, and
|
|
280
|
-
never retry the unchanged call. One narrow idempotent case returns success
|
|
281
|
-
without writing: a non-`replace_all` deletion-only edit whose `new_string` is
|
|
282
|
-
already present uniquely and whose larger `old_string` is absent. General
|
|
283
|
-
stale, fuzzy, empty-replacement, and ambiguous matches still fail.
|