one-code-extension 0.4.1 → 0.6.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.
Files changed (439) hide show
  1. package/README.md +16 -5
  2. package/agents/general-purpose.md +2 -2
  3. package/docs/guide/README.md +2 -1
  4. package/docs/guide/bring-your-claude-code-setup.md +60 -9
  5. package/docs/guide/configuration.md +48 -14
  6. package/docs/guide/differences-from-claude-code.md +40 -28
  7. package/docs/guide/doctor.md +20 -13
  8. package/docs/guide/hooks.md +18 -3
  9. package/docs/guide/installation.md +26 -4
  10. package/docs/guide/permissions-modes-and-auto-mode.md +225 -49
  11. package/docs/guide/providers-and-models.md +137 -54
  12. package/docs/guide/reference.md +27 -15
  13. package/docs/guide/sessions-and-context.md +69 -16
  14. package/docs/guide/skills-plugins-and-mcp.md +57 -20
  15. package/docs/guide/subagents-and-workflows.md +95 -29
  16. package/docs/guide/tasks-and-background-work.md +101 -26
  17. package/docs/guide/terminal-interface.md +24 -12
  18. package/docs/guide/tools.md +46 -5
  19. package/docs/guide/troubleshooting.md +13 -9
  20. package/docs/guide/windows.md +58 -31
  21. package/extensions/artifacts/gallery.ts +227 -0
  22. package/extensions/artifacts/index.ts +288 -0
  23. package/extensions/artifacts/store.ts +570 -0
  24. package/extensions/artifacts/viewer.ts +199 -0
  25. package/extensions/ask-user/description.ts +67 -0
  26. package/extensions/ask-user/dialogs.ts +80 -0
  27. package/extensions/ask-user/index.ts +37 -33
  28. package/extensions/ask-user/questions.ts +32 -7
  29. package/extensions/ask-user/widget.ts +45 -25
  30. package/extensions/auto-mode/actions.ts +6 -0
  31. package/extensions/auto-mode/cache.ts +88 -0
  32. package/extensions/auto-mode/classifier-prompt.ts +5 -4
  33. package/extensions/auto-mode/classifier.ts +290 -65
  34. package/extensions/auto-mode/config.ts +72 -20
  35. package/extensions/auto-mode/decision-log.ts +2 -0
  36. package/extensions/auto-mode/defaults.ts +1 -1
  37. package/extensions/auto-mode/denials.ts +124 -0
  38. package/extensions/auto-mode/git-checkout-programs.ts +187 -0
  39. package/extensions/auto-mode/git-status-meta.ts +159 -0
  40. package/extensions/auto-mode/history.ts +189 -0
  41. package/extensions/auto-mode/instructions.ts +58 -52
  42. package/extensions/auto-mode/model-select.ts +159 -134
  43. package/extensions/auto-mode/paths.ts +57 -5
  44. package/extensions/auto-mode/pause.ts +57 -2
  45. package/extensions/auto-mode/prompt.ts +37 -21
  46. package/extensions/auto-mode/read-only-options.ts +724 -0
  47. package/extensions/auto-mode/resolved-paths-meta.ts +133 -0
  48. package/extensions/auto-mode/rules.ts +18 -1
  49. package/extensions/auto-mode/safety-floor.ts +361 -18
  50. package/extensions/auto-mode/setup-run.ts +20 -14
  51. package/extensions/auto-mode/shell-analysis.ts +764 -490
  52. package/extensions/auto-mode/shell-parse.ts +885 -0
  53. package/extensions/auto-mode/system-note.ts +33 -0
  54. package/extensions/auto-mode/transcript.ts +80 -51
  55. package/extensions/background/cron.ts +642 -0
  56. package/extensions/background/index.ts +614 -248
  57. package/extensions/background/loop-fire.ts +173 -0
  58. package/extensions/background/loop-preamble.ts +59 -0
  59. package/extensions/background/loop-skill.ts +163 -0
  60. package/extensions/background/monitor-batch.ts +53 -0
  61. package/extensions/background/noop-fold.ts +128 -0
  62. package/extensions/background/switch-guard.ts +56 -0
  63. package/extensions/background/wakeup.ts +178 -55
  64. package/extensions/bash/background.ts +53 -17
  65. package/extensions/bash/child.ts +7 -0
  66. package/extensions/bash/description.ts +188 -0
  67. package/extensions/bash/guards.ts +15 -67
  68. package/extensions/bash/index.ts +66 -35
  69. package/extensions/branding/compaction-keep.ts +63 -0
  70. package/extensions/branding/declined.ts +22 -0
  71. package/extensions/branding/index.ts +133 -9
  72. package/extensions/branding/prompt-editor.ts +53 -6
  73. package/extensions/branding/queued-edit.ts +31 -0
  74. package/extensions/branding/replaced-builtins.ts +68 -0
  75. package/extensions/branding/startup.ts +33 -71
  76. package/extensions/btw/index.ts +250 -78
  77. package/extensions/btw/panel.ts +228 -100
  78. package/extensions/btw/prompt.ts +41 -4
  79. package/extensions/cache-marks/index.ts +42 -0
  80. package/extensions/claude-compat/index.ts +7 -11
  81. package/extensions/claude-context/index.ts +436 -63
  82. package/extensions/compaction/cut.ts +157 -0
  83. package/extensions/compaction/index.ts +219 -75
  84. package/extensions/compaction/kept-thinking.ts +62 -0
  85. package/extensions/compaction/prompt.ts +15 -12
  86. package/extensions/context-budget/budget.ts +16 -2
  87. package/extensions/context-budget/index.ts +35 -15
  88. package/extensions/context-management/index.ts +36 -28
  89. package/extensions/doctor/build.ts +59 -8
  90. package/extensions/doctor/builtins.ts +84 -0
  91. package/extensions/doctor/cli.ts +7 -1
  92. package/extensions/doctor/compat.ts +88 -23
  93. package/extensions/doctor/dependencies.ts +41 -5
  94. package/extensions/doctor/fix-prompt.ts +9 -2
  95. package/extensions/doctor/index.ts +102 -58
  96. package/extensions/doctor/models.ts +102 -63
  97. package/extensions/doctor/presets.ts +42 -27
  98. package/extensions/doctor/report.ts +19 -2
  99. package/extensions/doctor/viewer.ts +49 -27
  100. package/extensions/effort/index.ts +141 -25
  101. package/extensions/effort/settings.ts +21 -0
  102. package/extensions/effort/slider.ts +24 -20
  103. package/extensions/exit/index.ts +32 -1
  104. package/extensions/file-tracker/index.ts +420 -42
  105. package/extensions/file-tracker/replay.ts +137 -24
  106. package/extensions/file-tracker/restore.ts +66 -0
  107. package/extensions/file-tracker/results.ts +66 -0
  108. package/extensions/file-tracker/shell-reads.ts +211 -0
  109. package/extensions/file-tracker/tracker.ts +45 -15
  110. package/extensions/footer/footer-line.ts +45 -24
  111. package/extensions/footer/index.ts +47 -2
  112. package/extensions/footer/pr.ts +34 -5
  113. package/extensions/hooks/compaction.ts +7 -0
  114. package/extensions/hooks/executor.ts +32 -30
  115. package/extensions/hooks/index.ts +209 -58
  116. package/extensions/hooks/matcher.ts +3 -0
  117. package/extensions/hooks/prompt-context.ts +59 -0
  118. package/extensions/hooks/protocol.ts +41 -3
  119. package/extensions/hooks/settings.ts +50 -19
  120. package/extensions/hooks/subagent-bridge.ts +2 -0
  121. package/extensions/hooks/trust.ts +26 -12
  122. package/extensions/idle-compact/index.ts +119 -0
  123. package/extensions/idle-compact/policy.ts +143 -0
  124. package/extensions/init/index.ts +11 -10
  125. package/extensions/init/prompt.ts +25 -32
  126. package/extensions/interrupted/index.ts +13 -1
  127. package/extensions/kept-thinking/index.ts +27 -0
  128. package/extensions/ledger/index.ts +46 -0
  129. package/extensions/ledger/wire.ts +154 -0
  130. package/extensions/lib/agent-cron.ts +146 -0
  131. package/extensions/lib/agent-loader.ts +18 -3
  132. package/extensions/lib/agent-view.ts +85 -0
  133. package/extensions/lib/anthropic-auth.ts +98 -0
  134. package/extensions/lib/anthropic-payload.ts +82 -1
  135. package/extensions/lib/anthropic-server-call.ts +230 -0
  136. package/extensions/lib/anthropic-server-tools.ts +485 -0
  137. package/extensions/lib/app-launch.mjs +94 -0
  138. package/extensions/lib/argument-hints.ts +190 -0
  139. package/extensions/lib/atomic-write.ts +6 -2
  140. package/extensions/lib/auto-memory.ts +75 -0
  141. package/extensions/lib/bash-parser.ts +84 -0
  142. package/extensions/lib/btw-fork.ts +93 -0
  143. package/extensions/lib/child-extensions.ts +52 -0
  144. package/extensions/lib/child-writes.ts +45 -0
  145. package/extensions/lib/claude-context.ts +515 -100
  146. package/extensions/lib/claude-external-includes.ts +68 -0
  147. package/extensions/lib/claude-id.ts +22 -0
  148. package/extensions/lib/claude-rules.ts +323 -0
  149. package/extensions/lib/claude-settings.ts +76 -4
  150. package/extensions/lib/compaction-boundary.ts +36 -0
  151. package/extensions/lib/compaction-keep.mjs +83 -0
  152. package/extensions/lib/config-mode.ts +112 -0
  153. package/extensions/lib/consent-dialogs.ts +63 -0
  154. package/extensions/lib/consent-preview.ts +5 -1
  155. package/extensions/lib/consent-stores.ts +48 -0
  156. package/extensions/lib/context-facts.ts +97 -0
  157. package/extensions/lib/covered-messages.ts +23 -0
  158. package/extensions/lib/deferred.ts +359 -25
  159. package/extensions/lib/dock-rows.ts +60 -0
  160. package/extensions/lib/empty-tool-result.ts +27 -0
  161. package/extensions/lib/environment-block.ts +76 -0
  162. package/extensions/lib/fetch-timeout.ts +24 -6
  163. package/extensions/{system-prompt → lib}/git-status.ts +51 -13
  164. package/extensions/lib/git.ts +75 -13
  165. package/extensions/lib/grammars/LICENSE-tree-sitter-bash +21 -0
  166. package/extensions/lib/grammars/README.md +2 -0
  167. package/extensions/lib/grammars/tree-sitter-bash.wasm +0 -0
  168. package/extensions/lib/guide-docs.ts +45 -0
  169. package/extensions/lib/headless-output.ts +46 -0
  170. package/extensions/lib/hook-gate.ts +7 -7
  171. package/extensions/lib/interrupt.ts +20 -4
  172. package/extensions/lib/key-input.ts +455 -0
  173. package/extensions/lib/keys.ts +14 -1
  174. package/extensions/lib/ledger/fold-memo.ts +49 -0
  175. package/extensions/lib/ledger/fold.ts +265 -0
  176. package/extensions/lib/ledger/layout.ts +72 -0
  177. package/extensions/lib/ledger/plan.ts +102 -0
  178. package/extensions/lib/ledger/records.ts +276 -0
  179. package/extensions/lib/ledger/state.ts +47 -0
  180. package/extensions/lib/ledger/validate.ts +141 -0
  181. package/extensions/lib/ledger/wire.ts +632 -0
  182. package/extensions/lib/local-command.ts +71 -19
  183. package/extensions/lib/mcp-overrides.ts +1 -1
  184. package/extensions/lib/mcp-share.ts +46 -0
  185. package/extensions/lib/memory-content.ts +146 -0
  186. package/extensions/lib/memory-index.ts +18 -0
  187. package/extensions/lib/memory.ts +134 -123
  188. package/extensions/lib/model-catalog/huggingface.json +178 -0
  189. package/extensions/lib/model-catalog/models-dev.json +18533 -0
  190. package/extensions/lib/model-catalog/openrouter.json +5050 -0
  191. package/extensions/lib/model-catalog-data.ts +513 -0
  192. package/extensions/lib/model-catalog.ts +462 -0
  193. package/extensions/lib/model-choice-warnings.ts +137 -0
  194. package/extensions/lib/model-pairings.ts +152 -0
  195. package/extensions/{auto-mode → lib}/model-picker.ts +26 -43
  196. package/extensions/lib/model-policy.ts +112 -15
  197. package/extensions/lib/model-tier.ts +283 -355
  198. package/extensions/lib/model-unusable.ts +1 -1
  199. package/extensions/lib/newer-model.ts +100 -0
  200. package/extensions/lib/notices.ts +87 -0
  201. package/extensions/lib/notifications.ts +357 -73
  202. package/extensions/lib/one-code-settings.ts +74 -8
  203. package/extensions/lib/open-browser.ts +63 -0
  204. package/extensions/lib/openrouter-generation.ts +94 -0
  205. package/extensions/lib/operation-deadline.ts +30 -0
  206. package/extensions/lib/original-command.ts +4 -4
  207. package/extensions/lib/package-version.ts +1 -1
  208. package/extensions/lib/panel-focus.ts +134 -0
  209. package/extensions/lib/paths.ts +17 -2
  210. package/extensions/lib/permission-gate.ts +72 -6
  211. package/extensions/lib/persisted-output.ts +60 -8
  212. package/extensions/lib/pi-ai-estimate.ts +19 -3
  213. package/extensions/lib/pi-version.ts +38 -2
  214. package/extensions/lib/plan-mode-channels.ts +42 -5
  215. package/extensions/lib/plugins.ts +26 -17
  216. package/extensions/lib/powershell-parse-script.ts +208 -0
  217. package/extensions/lib/powershell-parser.ts +344 -0
  218. package/extensions/lib/previous-mark.ts +101 -0
  219. package/extensions/lib/process-state.ts +48 -0
  220. package/extensions/lib/process-tree.ts +132 -8
  221. package/extensions/lib/prompt-options.ts +82 -0
  222. package/extensions/lib/queued-delivery.ts +44 -0
  223. package/extensions/lib/reminders.ts +370 -358
  224. package/extensions/lib/replaced-builtins.mjs +199 -0
  225. package/extensions/lib/replay-call.ts +70 -0
  226. package/extensions/lib/request-replay.ts +547 -0
  227. package/extensions/lib/scratchpad.ts +81 -14
  228. package/extensions/lib/send-now-channel.ts +7 -0
  229. package/extensions/lib/session-model-tier.ts +51 -0
  230. package/extensions/lib/session-work.ts +64 -0
  231. package/extensions/lib/settings-channels.ts +4 -4
  232. package/extensions/lib/shell-exit-semantics.ts +170 -0
  233. package/extensions/lib/shell-quote.ts +11 -0
  234. package/extensions/lib/shell-result.ts +70 -0
  235. package/extensions/lib/shell-spawn.ts +70 -6
  236. package/extensions/lib/shell-tool.ts +75 -25
  237. package/extensions/lib/side-call-cache.ts +124 -0
  238. package/extensions/lib/side-call-run.ts +96 -0
  239. package/extensions/lib/side-call-usage.ts +38 -0
  240. package/extensions/lib/side-call.ts +24 -1
  241. package/extensions/lib/single-flight.ts +18 -0
  242. package/extensions/lib/skill-body.ts +42 -0
  243. package/extensions/lib/skill-scan.ts +63 -24
  244. package/extensions/lib/spill-file.ts +140 -0
  245. package/extensions/lib/subagent-handback.ts +112 -0
  246. package/extensions/lib/system-role.ts +156 -0
  247. package/extensions/lib/terminal-text.ts +114 -0
  248. package/extensions/lib/text-width.ts +47 -16
  249. package/extensions/lib/timer-ops.ts +20 -0
  250. package/extensions/lib/tool-additions.ts +129 -0
  251. package/extensions/lib/tool-call-corruption.ts +134 -0
  252. package/extensions/lib/tool-path.ts +66 -0
  253. package/extensions/lib/tool-variants.ts +69 -0
  254. package/extensions/lib/tui-render.ts +255 -27
  255. package/extensions/lib/turn-budget-layout.ts +159 -0
  256. package/extensions/lib/update-check.mjs +15 -2
  257. package/extensions/lib/usage-bus.ts +1 -1
  258. package/extensions/lib/user-denial.ts +38 -0
  259. package/extensions/lib/workspace-channel.ts +16 -0
  260. package/extensions/lib/worktree-channel.ts +31 -3
  261. package/extensions/lib/worktree-isolation.ts +40 -10
  262. package/extensions/lsp/client.ts +8 -9
  263. package/extensions/lsp/index.ts +76 -12
  264. package/extensions/lsp/keep-alive.ts +1 -1
  265. package/extensions/lsp/trust.ts +119 -0
  266. package/extensions/lsp/watcher.ts +1 -1
  267. package/extensions/mcp/announce.ts +90 -43
  268. package/extensions/mcp/client.ts +161 -48
  269. package/extensions/mcp/config.ts +132 -8
  270. package/extensions/mcp/discovery.ts +19 -0
  271. package/extensions/mcp/index.ts +220 -121
  272. package/extensions/mcp/oauth/browser.ts +38 -17
  273. package/extensions/mcp/oauth/flow.ts +25 -17
  274. package/extensions/mcp/oauth/provider.ts +14 -8
  275. package/extensions/mcp/oauth/store.ts +34 -16
  276. package/extensions/mcp/panel/keys.ts +12 -11
  277. package/extensions/mcp/panel/render.ts +9 -6
  278. package/extensions/mcp/schema.ts +104 -5
  279. package/extensions/mcp/trust.ts +164 -73
  280. package/extensions/memory/entries.ts +23 -14
  281. package/extensions/memory/index.ts +134 -28
  282. package/extensions/memory/open-external.ts +33 -18
  283. package/extensions/memory/panel.ts +135 -26
  284. package/extensions/model-default/index.ts +86 -19
  285. package/extensions/newer-model/index.ts +31 -0
  286. package/extensions/notebook/description.ts +18 -0
  287. package/extensions/notebook/index.ts +6 -5
  288. package/extensions/notebook/notebook.ts +1 -1
  289. package/extensions/permissions/index.ts +1426 -398
  290. package/extensions/permissions/matcher.ts +425 -74
  291. package/extensions/permissions/modes.ts +11 -4
  292. package/extensions/permissions/panel/host.ts +130 -0
  293. package/extensions/permissions/panel/keys.ts +48 -0
  294. package/extensions/permissions/panel/render.ts +450 -0
  295. package/extensions/permissions/panel/state.ts +550 -0
  296. package/extensions/permissions/powershell-cmdlets.ts +198 -0
  297. package/extensions/permissions/powershell-paths.ts +197 -0
  298. package/extensions/permissions/powershell-rules.ts +207 -280
  299. package/extensions/permissions/powershell-tree.ts +557 -0
  300. package/extensions/permissions/project-trust.ts +27 -11
  301. package/extensions/permissions/protected-paths.ts +14 -2
  302. package/extensions/permissions/session-grant.ts +6 -0
  303. package/extensions/permissions/settings.ts +166 -31
  304. package/extensions/permissions/subagent-gate.ts +25 -0
  305. package/extensions/permissions/workspace.ts +78 -0
  306. package/extensions/plan-mode/index.ts +276 -92
  307. package/extensions/plan-mode/reminder.ts +89 -21
  308. package/extensions/plan-mode/run-state.ts +26 -0
  309. package/extensions/plan-mode/texts.ts +177 -0
  310. package/extensions/plan-mode/viewer.ts +92 -27
  311. package/extensions/plugins/counts.ts +3 -3
  312. package/extensions/plugins/index.ts +64 -46
  313. package/extensions/plugins/install/install.ts +16 -0
  314. package/extensions/plugins/marketplace/sync.ts +9 -3
  315. package/extensions/plugins/marketplace/types.ts +3 -1
  316. package/extensions/plugins/panel/keys.ts +21 -24
  317. package/extensions/plugins/panel/render.ts +12 -6
  318. package/extensions/plugins/shell-expand.ts +107 -0
  319. package/extensions/plugins/template.ts +32 -15
  320. package/extensions/powershell/child.ts +7 -0
  321. package/extensions/powershell/description.ts +38 -6
  322. package/extensions/powershell/guards.ts +1 -1
  323. package/extensions/powershell/index.ts +14 -7
  324. package/extensions/recap/index.ts +73 -71
  325. package/extensions/recap/prompt.ts +2 -2
  326. package/extensions/recap/scheduler.ts +3 -5
  327. package/extensions/search-tools/grep-merge.ts +39 -0
  328. package/extensions/search-tools/index.ts +0 -0
  329. package/extensions/send-now/chord.ts +62 -0
  330. package/extensions/send-now/index.ts +133 -0
  331. package/extensions/session-title/index.ts +3 -0
  332. package/extensions/session-title/title.ts +4 -1
  333. package/extensions/skill/announce.ts +30 -0
  334. package/extensions/skill/code-review.ts +97 -0
  335. package/extensions/skill/index.ts +469 -132
  336. package/extensions/skill/invoke.ts +118 -75
  337. package/extensions/skill/listing.ts +133 -9
  338. package/extensions/skill/panel/keys.ts +15 -16
  339. package/extensions/skill/panel/render.ts +5 -2
  340. package/extensions/skill/panel/state.ts +12 -1
  341. package/extensions/subagents/agent-args.ts +39 -0
  342. package/extensions/subagents/agent-description.ts +132 -0
  343. package/extensions/subagents/agents.ts +146 -31
  344. package/extensions/subagents/default-model.ts +2 -3
  345. package/extensions/subagents/delegation-steer.ts +4 -4
  346. package/extensions/subagents/fork-cache.ts +82 -0
  347. package/extensions/subagents/guide-agent.ts +189 -0
  348. package/extensions/subagents/hand-back-review.ts +3 -0
  349. package/extensions/subagents/index.ts +1594 -852
  350. package/extensions/subagents/live-runs.ts +26 -6
  351. package/extensions/subagents/model-select.ts +38 -25
  352. package/extensions/subagents/outcome.ts +5 -2
  353. package/extensions/subagents/panel-keys.ts +73 -31
  354. package/extensions/subagents/panel-render.ts +120 -96
  355. package/extensions/subagents/panel-widget.ts +60 -89
  356. package/extensions/subagents/parent-mode.ts +50 -0
  357. package/extensions/subagents/pending-claim.ts +18 -1
  358. package/extensions/subagents/runner.ts +135 -80
  359. package/extensions/subagents/runs.ts +44 -5
  360. package/extensions/subagents/send-to-main-tool.ts +1 -1
  361. package/extensions/subagents/session-turns.ts +32 -8
  362. package/extensions/subagents/shell-panel.ts +36 -178
  363. package/extensions/subagents/tasks-dialog.ts +170 -0
  364. package/extensions/subagents/viewport-mirror.ts +95 -0
  365. package/extensions/subagents/worktree.ts +57 -13
  366. package/extensions/system-prompt/environment.ts +19 -19
  367. package/extensions/system-prompt/idle-turn.ts +65 -0
  368. package/extensions/system-prompt/index.ts +165 -47
  369. package/extensions/system-prompt/template.ts +34 -51
  370. package/extensions/system-prompt/tiers/common.ts +23 -64
  371. package/extensions/system-prompt/tiers/frontier.ts +32 -11
  372. package/extensions/system-prompt/tiers/low.ts +67 -45
  373. package/extensions/system-prompt/tiers/mid.ts +96 -38
  374. package/extensions/system-reminder/index.ts +204 -70
  375. package/extensions/tasks/descriptions.ts +190 -0
  376. package/extensions/tasks/index.ts +120 -41
  377. package/extensions/tasks/store.ts +83 -16
  378. package/extensions/tool-call-corruption/child.ts +7 -0
  379. package/extensions/tool-call-corruption/index.ts +237 -0
  380. package/extensions/tool-search/index.ts +366 -144
  381. package/extensions/tool-style/index.ts +68 -10
  382. package/extensions/tool-style/write-description.ts +40 -0
  383. package/extensions/tool-style/write-render.ts +237 -0
  384. package/extensions/turn-duration/index.ts +7 -3
  385. package/extensions/turn-duration/line.ts +47 -4
  386. package/extensions/web/backends.ts +6 -9
  387. package/extensions/web/description.ts +50 -0
  388. package/extensions/web/index.ts +118 -53
  389. package/extensions/web/native-call.ts +15 -0
  390. package/extensions/web/native-results.ts +41 -0
  391. package/extensions/web-fetch/description.ts +42 -0
  392. package/extensions/web-fetch/extract.ts +53 -6
  393. package/extensions/web-fetch/index.ts +125 -76
  394. package/extensions/web-fetch/page-content.ts +19 -0
  395. package/extensions/web-fetch/response.ts +49 -0
  396. package/extensions/web-fetch/summarize.ts +9 -10
  397. package/extensions/workflow/agent-session.ts +108 -18
  398. package/extensions/workflow/args.ts +24 -0
  399. package/extensions/workflow/description.ts +67 -0
  400. package/extensions/workflow/globals.ts +17 -3
  401. package/extensions/workflow/index.ts +157 -162
  402. package/extensions/workflow/records.ts +1 -0
  403. package/extensions/workflow/run-manager.ts +33 -6
  404. package/extensions/workflow/saved-workflows.ts +3 -2
  405. package/extensions/workflow/types.ts +22 -1
  406. package/extensions/workflow/viewer.ts +54 -24
  407. package/extensions/workflow/widget.ts +20 -0
  408. package/extensions/worktree/descriptions.ts +91 -0
  409. package/extensions/worktree/guards.ts +316 -54
  410. package/extensions/worktree/index.ts +162 -44
  411. package/extensions/worktree/powershell-guards.ts +167 -0
  412. package/extensions/worktree/rewrite.ts +14 -16
  413. package/package.json +21 -7
  414. package/skills/artifact-design/SKILL.md +85 -0
  415. package/skills/code-review/SKILL.md +20 -20
  416. package/skills/code-review/cells/arguments-and-flags.md +19 -0
  417. package/skills/code-review/cells/high-3x5-recall-verify.md +137 -0
  418. package/skills/code-review/cells/high-8-inline.md +122 -0
  419. package/skills/code-review/cells/low-1-pass-max4.md +27 -0
  420. package/skills/code-review/cells/low-1-pass-min-files-4.md +28 -0
  421. package/skills/code-review/cells/max-5x5-verify-sweep.md +162 -0
  422. package/skills/code-review/cells/medium-3x5-verify.md +132 -0
  423. package/skills/code-review/cells/minimal-prompt.md +32 -0
  424. package/skills/code-review/cells/xhigh-10-inline-sweep.md +149 -0
  425. package/skills/code-review/cells/xhigh-5x5-verify-sweep.md +162 -0
  426. package/skills/fewer-permission-prompts/SKILL.md +1 -1
  427. package/skills/loop/SKILL.md +11 -0
  428. package/skills/security-review/SKILL.md +2 -5
  429. package/skills/simplify/SKILL.md +7 -5
  430. package/skills/workflow-authoring/SKILL.md +143 -0
  431. package/themes/onecode-light.json +1 -1
  432. package/themes/onecode.json +1 -1
  433. package/types/app.d.ts +58 -0
  434. package/types/community-packages.d.ts +26 -1
  435. package/extensions/auto-mode/recoverability.ts +0 -229
  436. package/extensions/lib/capability-index.ts +0 -466
  437. package/extensions/lib/model-facts.generated.json +0 -2675
  438. package/extensions/lib/model-facts.ts +0 -162
  439. package/extensions/tool-search/announce.ts +0 -42
@@ -26,7 +26,7 @@ that explains it.
26
26
  | `/workflows stop <runId>` | Stop a running workflow. | |
27
27
  | `/workflows log <runId>` | Print a run's recent events. | |
28
28
  | `/workflows list` | List this session's runs and the saved workflows. | |
29
- | `/effort [level]` | Set the reasoning effort (`off`, `minimal`, `low`, `medium`, `high`, `xhigh`, `max`, `ultracode`), or open the slider. | [Reasoning effort](subagents-and-workflows.md#reasoning-effort) |
29
+ | `/effort [level]` | Set the reasoning effort (`off`, `minimal`, `low`, `medium`, `high`, `xhigh`, `max`, `ultracode`, or `auto` to clear the saved level), or open the slider. | [Reasoning effort](subagents-and-workflows.md#reasoning-effort) |
30
30
  | `/skills` | Manage which skills the model sees. | [Skills](skills-plugins-and-mcp.md#manage-skills) |
31
31
  | `/<skill-name> [args]` | Run a skill. | [Skills](skills-plugins-and-mcp.md#skills) |
32
32
  | `/skill:<name>`, `/skill:<plugin>:<name>` | Run a skill by its full name. | |
@@ -35,18 +35,21 @@ that explains it.
35
35
  | `/plugins` | Browse, install, and toggle plugins and marketplaces. | [Plugins](skills-plugins-and-mcp.md#plugins) |
36
36
  | `/mcp` | Manage MCP servers: status, reconnect, authenticate, enable, disable. | [MCP servers](skills-plugins-and-mcp.md#manage-servers) |
37
37
  | `/lsp` | Show language-server status. | [Language servers](configuration.md#language-server-diagnostics) |
38
- | `/permissions` | Show the permission mode and every loaded rule. | [Permissions](permissions-modes-and-auto-mode.md) |
38
+ | `/permissions` | Open the permissions panel: approve calls auto mode denied, and manage rules, auto-mode rules, and workspace directories. | [Manage permissions in the panel](permissions-modes-and-auto-mode.md#manage-permissions-in-the-panel) |
39
+ | `/add-dir [path]` | Add a workspace directory, for this session or remembered. | [Workspace directories](permissions-modes-and-auto-mode.md#workspace-directories) |
39
40
  | `/allow <rule> [global]` | Save an allow rule for this repository, or for every repository with `global`. | [Add a rule](permissions-modes-and-auto-mode.md#add-a-rule-during-a-session) |
40
41
  | `/auto-mode`, `/auto-mode config` | Show the effective auto-mode configuration. | [Auto mode](permissions-modes-and-auto-mode.md#configure-auto-mode) |
41
42
  | `/auto-mode setup` | Draft and save an auto-mode configuration for this environment. | |
42
43
  | `/auto-mode defaults` | Show the built-in environment description. | |
43
- | `/auto-mode model [provider/model-id\|clear]` | Choose or clear the classifier model. | |
44
- | `/memory` | Open an instruction file or the memory folder. | [Memory](sessions-and-context.md#memory) |
45
- | `/tasks`, `/tasks hide`, `/tasks show` | Print the task list, or hide and show its widget. | [Tasks](tasks-and-background-work.md#the-task-list) |
44
+ | `/auto-mode model [provider/model-id\|clear]` | Choose the classifier model, or go back to the automatic pick. | [The classifier model](permissions-modes-and-auto-mode.md#the-classifier-model) |
45
+ | `/memory` | Open an instruction file or the memory folder, turn auto-memory on or off, or switch config sources. | [Memory](sessions-and-context.md#memory) |
46
+ | `/config` | Change this project's external instruction import approval. | [External instruction imports](sessions-and-context.md#external-instruction-imports) |
47
+ | `/artifacts` | Pick a saved artifact to open, save to `~/Downloads`, or delete, or open the gallery. | [Artifacts](tools.md#artifacts) |
48
+ | `/tasks` | List background shells, running agents and the agents you've viewed; open or stop one. | [Talk to an agent](subagents-and-workflows.md#talk-to-an-agent) |
46
49
  | `/background` | List background tasks. | [Background](tasks-and-background-work.md#the-background-list) |
47
- | `/loop <interval> <task>` | Repeat a task at a fixed interval (`30s`, `5m`, `1h`). | [Loops](tasks-and-background-work.md#scheduled-wake-ups-and-loops) |
50
+ | `/loop <interval> <task>` | Repeat a task at a fixed interval (`5m`, `2h`, `1d`, or `… every 20m`). Ask the model to stop it. | [Loops](tasks-and-background-work.md#scheduled-wake-ups-and-loops) |
48
51
  | `/loop <task>` | Repeat a task, letting the model choose the pace. | |
49
- | `/loop status`, `/loop stop` | Report or end the loop. | |
52
+ | `/loop`, `/loop <interval>` | Run the autonomous check, or the tasks in `.claude/loop.md`, on a loop. | |
50
53
  | `/tools-deferred` | List deferred tools and whether each is loaded. | [Tools](tools.md#eager-and-deferred-tools) |
51
54
  | `/init` | Have the model write a `CLAUDE.md` for the project. | [CLAUDE.md](bring-your-claude-code-setup.md#project-instructions-claudemd) |
52
55
  | `/clear` | Start a new session (pi's `/new`); the model is told. | [Sessions](sessions-and-context.md#start-over) |
@@ -103,19 +106,22 @@ The ones you will use most; `/hotkeys` shows all of them.
103
106
  |---|---|
104
107
  | **shift+tab** | Cycle the thinking level. |
105
108
  | **ctrl+t** | Show or hide thinking blocks. |
109
+ | **alt+t** (**ctrl+\\** on macOS) | Show or hide the task list. |
106
110
  | **ctrl+o** | Expand or collapse a tool's output. |
107
111
  | **ctrl+p**, **shift+ctrl+p** | Cycle models forward or backward. |
108
112
  | **ctrl+l** | Open the model picker. |
109
113
  | **Esc** | Interrupt the model. |
110
114
  | **ctrl+c** | Clear the editor; press twice to exit. |
111
115
  | **ctrl+d** | Exit when the editor is empty. |
116
+ | **Enter** while the model works | Queue a message. It reaches the model once the running tool calls finish. |
117
+ | **ctrl+x ctrl+s** | Send queued messages now: interrupt the running turn and send them, with anything in the editor, as your next prompt. Running tools are cancelled. |
112
118
  | **alt+enter** (**ctrl+q** on Windows and WSL) | Queue a follow-up message while the model works. |
113
119
  | **alt+↑** | Restore queued messages to the editor. |
114
120
  | **ctrl+g** | Edit the prompt in your external editor. |
115
121
  | **ctrl+v** | Paste an image or text. |
116
122
  | **shift+enter**, **ctrl+j** | Insert a newline. |
117
- | **ctrl+x** | Copy the last reply. |
118
- | **PgUp**, **PgDn**, **Home**, **End** | Scroll the transcript in full-screen mode. |
123
+ | **ctrl+x** | Copy the last reply. While the model works with a message queued or typed, it starts **ctrl+x ctrl+s** instead. |
124
+ | **PgUp**, **PgDn**, **ctrl+home**, **ctrl+end** | Scroll the transcript in full-screen mode. On pi before 1.0.3, **Home** and **End** jump to the top and bottom instead. |
119
125
  | **ctrl+shift+f** | Search the transcript in full-screen mode. |
120
126
  | **!** at the start of a line | Run a shell command yourself. |
121
127
 
@@ -139,10 +145,11 @@ extension install, use `pi` in place of `onecode`.
139
145
  | `--no-session` | Do not save this session. |
140
146
  | `--permission-mode <mode>` | Start in `default`, `acceptEdits`, `plan`, `auto`, `bypassPermissions`, or `dontAsk`. |
141
147
  | `--dangerously-skip-permissions` | Start in bypass mode. |
148
+ | `--add-dir <paths>` | Add workspace directories for this run, separated by `:` (`;` on Windows). |
142
149
  | `--model <provider/id>` | Start on a model. Add `:<level>` to set thinking. |
143
150
  | `--thinking <level>` | Start at a thinking level. |
144
- | `--provider <name>`, `--api-key <key>` | Choose a provider and supply a key for this run. |
145
- | `--tui-mode fullscreen` | Full-screen interface (the default under the app). |
151
+ | `--provider <name>`, `--api-key <key>` | Choose a provider and supply a key for this run. On pi 1.0 and later, `--provider` needs `--model` too. |
152
+ | `--tui-mode fullscreen`, `--tui-mode regular` | Full-screen interface (the default under the app and on pi 1.0 and later), or the terminal's normal screen with its scrollback. |
146
153
  | `--tools <list>` | Restrict the tools available. |
147
154
  | `-e <source>` | Load an extra extension. |
148
155
  | `--offline` | Skip network checks, including the update check. |
@@ -158,9 +165,9 @@ Set these before launching.
158
165
  | Variable | Effect |
159
166
  |---|---|
160
167
  | `ONECODE_STATE_DIR` | Where One Code keeps its state (default `~/.onecode`). Independent of pi's agent directory. |
168
+ | `ONECODE_AGENT_DIR` | pi's agent directory under the bundled app (default `~/.onecode/agent`). |
161
169
  | `ONECODE_NO_UPDATE_CHECK=1` | Skip the daily update check. |
162
170
  | `ONECODE_DEBUG=1` | Report when a pi-internal patch in the bundled app didn't apply. |
163
- | `AA_API_KEY` | Artificial Analysis key for measured model selection. |
164
171
  | `BRAVE_SEARCH_API_KEY`, `TAVILY_API_KEY` | Web-search fallback keys. |
165
172
 
166
173
  ### Claude Code compatibility toggles
@@ -178,23 +185,26 @@ The `CC_` prefix is historical; `ONECODE_`-prefixed aliases are planned.
178
185
  | `CC_SESSION_TITLE=0` | Turn off the automatic session title. |
179
186
  | `CC_RECAP_IDLE_MS` | Idle time before a recap, in milliseconds (default 300000). |
180
187
  | `CC_COMPACTION=0` | Use pi's compaction summary instead of Claude Code's. |
188
+ | `CC_IDLE_COMPACT=0` | Turn off compaction of an idle session before its prompt cache expires. |
181
189
  | `CC_CLEAR_THINKING=0`, `=1` | Force the thinking-preservation request off or on for Anthropic models. Default: on for `api.anthropic.com` only. |
182
190
  | `CC_TOTAL_TOKENS=0` | Remove the `<total_tokens>` budget line. |
183
191
  | `CC_TOTAL_TOKENS_BUDGET` | The per-turn budget the line counts down from (default 15000000). |
184
192
  | `CC_PROMPT_TIER=frontier\|workhorse\|cheap\|tiny` | Force a system-prompt tier. |
193
+ | `CLAUDE_CODE_ENABLE_TODO_TOOLS=1` | Give frontier models and Sonnet 5 or later the task tools, which they run without by default. |
185
194
  | `CC_HOOKS_DEBUG=1` | Print hook dispatches to stderr and log decisions. |
186
195
  | `CC_AUTO_MODE_DEBUG=1` | Print classifier verdicts to stderr. `2` is more verbose. |
187
- | `CC_VERSION` | The version shown in the banner (set by the app). |
196
+ | `CC_VERSION` | The version shown in the banner (set by the app, and not passed on to the commands it runs). |
188
197
  | `CC_PERMISSION_MODE` | Set by One Code to the live mode for child processes. Not an input; use `--permission-mode`. |
189
198
 
190
199
  ### pi and Claude Code variables honored
191
200
 
192
201
  | Variable | Effect |
193
202
  |---|---|
194
- | `PI_CODING_AGENT_DIR` | pi's agent directory. The app sets `~/.onecode/agent`. |
203
+ | `PI_CODING_AGENT_DIR` | pi's agent directory on your own pi. The bundled app ignores it and uses `ONECODE_AGENT_DIR`; commands the app runs get your own value back. |
195
204
  | `PI_CACHE_RETENTION` | pi's prompt-cache lifetime. One Code sets `long` for interactive sessions unless you set it yourself. |
196
205
  | `PI_OFFLINE=1` | Same as `--offline`. |
197
206
  | `CLAUDE_CONFIG_DIR` | Where Claude Code's user configuration is read from. |
207
+ | `ONECODE_CONFIG_MODE` | `claude-compatible` or `independent`, overriding the mode saved by `/memory`. See [Run One Code on its own setup](bring-your-claude-code-setup.md#run-one-code-on-its-own-setup). |
198
208
  | `CLAUDE_CODE_USE_POWERSHELL_TOOL` | `1` turns the `powershell` tool on (the default on Windows), `0` turns it off. Off Windows it needs a `pwsh` on PATH. See [Windows](windows.md). |
199
209
  | `CLAUDE_CODE_GIT_BASH_PATH` | The bash that drives the `bash` tool, hooks, and background shells. Also read from the `env` block of `~/.claude/settings.json`; a non-bash binary is ignored with a warning. |
200
210
  | `CLAUDE_CODE_SUBAGENT_MODEL` | Default subagent model on a Claude session. |
@@ -211,8 +221,10 @@ hook's environment, `CC_PERMISSION_MODE` for child tool gates.
211
221
  |---|---|
212
222
  | `~/.onecode/` | One Code's state. See [What is stored under ~/.onecode](configuration.md#what-is-stored-under-onecode). |
213
223
  | `~/.onecode/agent/` | pi's state under the bundled app: credentials, sessions, pi's settings, plugins. |
214
- | `~/.claude/` | Claude Code's configuration, read only, except `projects/<slug>/memory/`. |
224
+ | `~/.claude/` | Claude Code's configuration, read only, except `projects/<slug>/memory/`. Not read in independent mode. |
215
225
  | `~/.claude/projects/<slug>/memory/` | Per-repository memory, shared with Claude Code. |
226
+ | `~/.onecode/projects/<slug>/memory/` | Per-repository memory in independent mode. |
227
+ | `.onecode/` | Project `commands/`, `agents/`, `workflows/` and `worktrees/` in independent mode. |
216
228
  | `.claude/` | Project configuration: `settings.json`, `settings.local.json`, `skills/`, `commands/`, `agents/`, `workflows/`, `worktrees/`. |
217
229
  | `.mcp.json` | Project MCP servers. |
218
230
  | `CLAUDE.md`, `CLAUDE.local.md`, `AGENTS.md`, `ONECODE.md` | Instruction files. |
@@ -17,14 +17,16 @@ it would there. The block contains, in order:
17
17
  working directory. In a directory that has no `CLAUDE.md`, an
18
18
  `AGENTS.md` is used instead. A `CLAUDE.local.md` next to either is
19
19
  included as your private, uncommitted instructions.
20
- 2. **The auto-memory index.** The first 200 lines or 25 KB of `MEMORY.md`
21
- from the repository's memory folder. See [Memory](#memory).
20
+ 2. **The auto-memory index.** The first 200 lines or 25,000 characters of
21
+ `MEMORY.md` from the repository's memory folder. When the index is
22
+ longer, a warning line after it tells the model how much was cut. See
23
+ [Memory](#memory).
22
24
  3. **Your email**, from `git config user.email` (or `GIT_AUTHOR_EMAIL` or
23
25
  `EMAIL`), for attribution.
24
- 4. **Today's date.**
26
+ 4. **Today's date**, as your own clock shows it. If a session runs past
27
+ midnight, the model hears the new date on its next turn.
25
28
 
26
- `@path` references inside a `CLAUDE.md` are expanded in place, up to five
27
- levels deep, so a file that imports shared instructions keeps working.
29
+ `@path` references inside a `CLAUDE.md` load shared instructions recursively.
28
30
  Paths resolve relative to the importing file; `~/` resolves to your home
29
31
  directory. References inside code spans and fenced blocks are left alone.
30
32
 
@@ -32,6 +34,30 @@ A `CLAUDE.md` larger than 40,000 characters, or a set of instruction files
32
34
  whose total exceeds that, triggers a warning at startup so you can trim it.
33
35
  Run `/memory` to open any of these files.
34
36
 
37
+ ### External instruction imports
38
+
39
+ At interactive startup, One Code asks **Allow external CLAUDE.md file imports?**
40
+ when project instructions (including `AGENTS.md`, private local instructions,
41
+ and startup `.claude/rules`) import files outside the working directory.
42
+ **No, disable external imports** is the default; Escape also records No.
43
+ User-global instruction imports do not require this project approval.
44
+
45
+ Both answers are remembered in `~/.onecode/projects/<slug>/settings.json`,
46
+ never in Claude Code's files or the checkout. Subdirectories, symlink aliases,
47
+ and linked worktrees share their repository's answer; outside Git, it applies
48
+ to the working directory. Yes also covers future external imports. Only allow
49
+ this for projects and imported files you trust, never third-party repositories.
50
+
51
+ Use `/config` → **External CLAUDE.md includes** to change the answer. The row
52
+ appears when external imports are detected. Changes affect future instruction
53
+ loads (including nested instructions and compaction), not text already in the
54
+ conversation or its frozen first-message block. Starting a new session loads
55
+ the instructions under the saved answer.
56
+
57
+ Print/JSON runs without a UI never ask and leave unapproved external imports
58
+ out of context without recording a decision. Pi's RPC mode has a dialog UI:
59
+ clients must answer the `extension_ui_request` before the first model request.
60
+
35
61
  ### ONECODE.md
36
62
 
37
63
  Instructions that only One Code should read go in `ONECODE.md`
@@ -50,7 +76,9 @@ The system prompt is an adaptation of Claude Code's, chosen by the
50
76
  capability of the model in use. Stronger models receive a terse prompt;
51
77
  smaller models receive more guidance and, on the smallest tier, extra
52
78
  search tools. It ends with a git status snapshot (branch, main branch, user,
53
- working-tree status, recent commits) taken once per session. See
79
+ working-tree status, recent commits) taken once per session. A status
80
+ longer than 2,000 characters is cut there, with a note telling the model
81
+ to run `git status` itself, as Claude Code does. See
54
82
  [Prompting adapts to the model](providers-and-models.md#prompting-adapts-to-the-model).
55
83
 
56
84
  ## Memory
@@ -62,13 +90,26 @@ and subdirectories of one repository share one memory folder. This is the
62
90
  one place One Code writes under `~/.claude`, so a real Claude Code session
63
91
  on the same repository reads the same memories.
64
92
 
93
+ In independent mode the folder is `~/.onecode/projects/<slug>/memory/`
94
+ instead, and Claude Code doesn't see it. See
95
+ [Run One Code on its own setup](bring-your-claude-code-setup.md#run-one-code-on-its-own-setup).
96
+
65
97
  The model writes one file per memory and keeps an index in `MEMORY.md`.
66
- When the index grows near its limit (200 lines or 25 KB), the model is
98
+ When the index grows near its limit (200 lines or 25,000 characters), the model is
67
99
  warned; past the limit, a write to it still succeeds but returns an error
68
100
  so the model trims the index.
69
101
 
70
102
  Run `/memory` to open the memory folder or any instruction file. Files open
71
- in `$VISUAL` or `$EDITOR`; folders open in your file manager.
103
+ in `$VISUAL` or `$EDITOR`; folders open in your file manager. The two rows
104
+ at the top are settings, and both take effect from the next session:
105
+
106
+ - **Auto-memory** turns memory on or off. Off, the model gets no memory
107
+ instructions and no `MEMORY.md` index, and the memory folder isn't
108
+ offered. It's saved as `autoMemoryEnabled` in `~/.onecode/settings.json`,
109
+ Claude Code's setting name, and `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1`
110
+ overrides it.
111
+ - **Config sources** switches between Claude-compatible and independent
112
+ mode. It asks you to confirm with a second **Enter**.
72
113
 
73
114
  ## The context window
74
115
 
@@ -88,6 +129,15 @@ can't reuse the cached prefix of the conversation.
88
129
 
89
130
  Set `CC_COMPACTION=0` to use pi's own summary instead.
90
131
 
132
+ If you step away from a big session, One Code compacts it before the prompt
133
+ cache runs out. On Claude models the session's cache lasts an hour, and once
134
+ it expires your next message pays to write the whole conversation to the cache
135
+ again. So after 54 idle minutes, a session holding 200,000 tokens or more is
136
+ compacted while reading the cache is still cheap, and you'll see "Compacted
137
+ while idle, before the prompt cache expired". It holds off while a turn is
138
+ running or if you typed in the last minute. Set `CC_IDLE_COMPACT=0` to turn
139
+ it off.
140
+
91
141
  ### The token budget line
92
142
 
93
143
  Like Claude Code, One Code tells the model how many tokens it has left in
@@ -123,10 +173,11 @@ Each session gets a scratchpad directory under the system temp directory,
123
173
  named by project and session. The model is told to use it for temporary
124
174
  files instead of `/tmp`; writes there need no approval.
125
175
 
126
- Tool output larger than 50 KB isn't truncated. It's written to a file
127
- under the session directory, and the model receives the path, the size,
128
- and a 2 KB preview in a `<persisted-output>` block, so it can read the part
129
- it needs.
176
+ Tool output larger than 50 KB (30,000 characters for a shell command)
177
+ isn't truncated. It's written to a file under the session directory, and
178
+ the model receives the path, the size, and a 2 KB preview from the start
179
+ of the output in a `<persisted-output>` block, so it can read the part it
180
+ needs.
130
181
 
131
182
  ## While you are away
132
183
 
@@ -204,7 +255,9 @@ footer's total. Set `CC_SESSION_TITLE=0` to turn it off.
204
255
 
205
256
  ## Turn timing
206
257
 
207
- After each turn, a dim line such as `✻ Cooked for 5m 12s` reports how long
208
- it took, with a random verb, as in Claude Code. When background shells are
209
- still running, the line adds a count. Set `CC_TURN_DURATION=0` to turn it
210
- off.
258
+ After each turn, a dim line such as `✻ Churned for 6m 59s · done 2:33 PM`
259
+ reports how long it took and when it finished, with a random verb, as in
260
+ Claude Code. The time follows your locale (`LC_ALL`, `LC_TIME` or `LANG`),
261
+ and gains the weekday, then the date, once the turn is a day or a week old.
262
+ When background shells are still running, the line adds a count, as in
263
+ `· 1 shell still running`. Set `CC_TURN_DURATION=0` to turn it off.
@@ -11,12 +11,14 @@ manage them.
11
11
  An Agent Skill is a packaged set of instructions for a kind of task. One
12
12
  Code discovers skills from these places, in order of precedence:
13
13
 
14
- 1. `.claude/skills/` in the project
15
- 2. `~/.claude/skills/` and `~/.agents/skills/`
16
- 3. Skills from installed plugins
17
- 4. The bundled catalog
14
+ 1. `~/.claude/skills/` and `~/.agents/skills/`, your own skills for every
15
+ project
16
+ 2. `.claude/skills/` and `.agents/skills/` in the project
17
+ 3. The bundled catalog
18
18
 
19
- A skill of the same name earlier in the list wins.
19
+ A skill of the same name earlier in the list wins, so your own copy of a
20
+ skill beats the one a repository ships. Skills from installed plugins keep
21
+ their plugin prefix, so they never clash with these.
20
22
 
21
23
  The model calls a skill with the `skill` tool when a task matches its
22
24
  description. You can also run one yourself by typing its name as a slash
@@ -24,6 +26,12 @@ command, as in Claude Code: `/simplify`, `/code-review`, or any skill from
24
26
  `.claude/skills/`. Anything after the name is passed to the skill as
25
27
  arguments. Plugin skills keep their plugin prefix and are run as
26
28
  `/skill:<plugin>:<name>`. pi's `/skill:<name>` form works for every skill.
29
+ The `/` list shows each skill once, by its bare name; type `/skill:` to list
30
+ the `/skill:` forms.
31
+
32
+ A skill whose frontmatter sets `disable-model-invocation: true` runs only
33
+ when you type its command. As in Claude Code, the model doesn't see it in
34
+ the skills listing, and the `skill` tool refuses it.
27
35
 
28
36
  A skill's slash command isn't created when the name is already taken by a
29
37
  built-in command, a `.claude/commands/` template, or another skill.
@@ -47,14 +55,20 @@ directory, never in the skill files.
47
55
 
48
56
  ### Bundled skills
49
57
 
50
- Four of Claude Code's built-in skills ship with One Code:
58
+ Six of Claude Code's built-in skills ship with One Code:
51
59
 
60
+ - `loop`: run a prompt on an interval, or let the model self-pace it. See
61
+ [Scheduled wake-ups and loops](tasks-and-background-work.md#scheduled-wake-ups-and-loops).
52
62
  - `simplify`: clean up recently changed code for clarity.
53
- - `code-review`: review changes for correctness bugs.
63
+ - `code-review`: review changes for correctness bugs. Put a level first
64
+ (`/code-review high`) or let it follow your `/effort`.
54
65
  - `security-review`: review changes for security issues.
55
66
  - `fewer-permission-prompts`: scan your usage and propose an allowlist.
67
+ - `artifact-design`: the page rules the model follows before publishing an
68
+ artifact. See [Artifacts](tools.md#artifacts).
56
69
 
57
- A skill of the same name in your own `.claude/skills/` takes precedence.
70
+ A skill of the same name in your user or project skills folder takes
71
+ precedence over the bundled one.
58
72
 
59
73
  ### Skills not bundled
60
74
 
@@ -63,12 +77,12 @@ doesn't have:
63
77
 
64
78
  | Group | Skills omitted |
65
79
  |---|---|
66
- | Hosted artifacts and design | `design`, `design-sync`, `dataviz`, the `artifact-*` guides, and the dashboard, report, table, explainer, plan, and whiteboard publishers. |
80
+ | Hosted artifacts and design | `design`, `design-sync`, `dataviz`, `artifact-capabilities`, `artifact-diagramming`, and the dashboard, report, table, explainer, plan, and whiteboard publishers. |
67
81
  | 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`. |
68
82
  | Run-skill generation | `run` and `run-skill-generator`. Use project-local run skills instead. |
69
83
  | API reference | `claude-api`. |
70
84
 
71
- One Code provides `/init` and `/loop` itself. Commit and pull-request
85
+ One Code provides `/init` itself. Commit and pull-request
72
86
  workflows are available through the `commit-commands` plugin.
73
87
 
74
88
  You can add your own skills under `.claude/skills/`. A skill that requires a
@@ -127,6 +141,15 @@ resources to the model. One Code reads server definitions from:
127
141
  - `~/.claude.json` (the `mcpServers` key)
128
142
  - `.claude/settings.local.json`
129
143
  - Installed plugins
144
+ - pi's own `mcp.json` files: `~/.pi/agent/mcp.json` and the project's
145
+ `.pi/mcp.json`
146
+
147
+ One Code takes the place of pi's built-in MCP, so it reads pi's files too.
148
+ If a server has the same name in one of them and in a Claude Code file, the
149
+ Claude Code one wins and One Code tells you. pi's `enabled: false`, a stdio
150
+ server's `cwd` and a leading `~/` work as they do in pi. A server whose `env`
151
+ or `headers` value runs a command (`"!…"`) is skipped with a note, and pi's
152
+ `oauth`, `auth`, `exposure` and `description` settings are ignored.
130
153
 
131
154
  Definitions may reference environment variables as `$VAR` or `${VAR}` in
132
155
  the command, arguments, environment, URL, and headers; an unset variable
@@ -135,20 +158,26 @@ verified; servers using server-sent events are untested.
135
158
 
136
159
  ### Approve a project's servers
137
160
 
138
- Servers listed in a project's `.mcp.json` run only after you approve them.
161
+ Servers listed in a project's `.mcp.json` or `.pi/mcp.json` run only after
162
+ you approve them.
139
163
  On the first start in a project, One Code shows the servers found, with the
140
- command each one runs, and offers to use this server, to use this and all
141
- future servers in the project, or to decline. Approvals are stored in
164
+ command each one runs and the environment variables it sets, and offers to
165
+ use this server, to use this and all future servers in the project, or to
166
+ decline. Variables that change what runs, such as `NODE_OPTIONS`, `PATH`,
167
+ `LD_PRELOAD` or `PYTHONPATH`, are shown with their values; for the rest
168
+ only the name is shown, since they usually hold credentials. Approvals are stored in
142
169
  `~/.onecode/mcp/project-approvals.json`, tied to the server's
143
170
  configuration, so a changed command asks again. If you decline, the server
144
171
  appears as disabled in `/mcp`; choosing Enable there approves it.
145
172
 
146
- Claude Code's `enabledMcpjsonServers`, `disabledMcpjsonServers`, and
147
- `enableAllProjectMcpServers` settings are honored from
148
- `~/.claude/settings.json`, and from `.claude/settings.local.json` when that
149
- file isn't tracked by git. They are never honored from a checked-in
150
- `.claude/settings.json`, which would let a repository approve its own
151
- servers.
173
+ Claude Code's `enabledMcpjsonServers` and `enableAllProjectMcpServers`
174
+ settings are honored from `~/.claude/settings.json` only.
175
+ `disabledMcpjsonServers` is honored from there and from
176
+ `.claude/settings.local.json`. A project's own settings files never approve
177
+ its servers: a checked-in file, or a `settings.local.json` that arrived
178
+ with a copied checkout, would let the repository approve itself. If Claude
179
+ Code approved a server in `.claude/settings.local.json`, One Code asks you
180
+ once.
152
181
 
153
182
  In non-interactive runs, unapproved servers are skipped with a note on
154
183
  stderr.
@@ -163,6 +192,11 @@ A permission rule naming `mcp__<server>` covers every tool of that server.
163
192
 
164
193
  ### Manage servers
165
194
 
195
+ When servers fail to connect at startup, for example with no network, One
196
+ Code shows a single line such as `2 MCP servers failed · /mcp`, and
197
+ `1 MCP server needs auth · /mcp` for servers waiting on sign-in. Each
198
+ server's error is in `/mcp`.
199
+
166
200
  `/mcp` opens the server manager: servers grouped by source (user, project,
167
201
  plugin), each with its status, tool and resource counts, and any warnings.
168
202
  **Enter** on a server shows its details and a numbered action list:
@@ -173,6 +207,9 @@ plugin), each with its status, tool and resource counts, and any warnings.
173
207
  **Enable** reverses it.
174
208
  - **Authenticate** appears for HTTP servers that need OAuth. It opens your
175
209
  browser for sign-in; tokens are stored under `~/.onecode/mcp-auth/` with
176
- owner-only permissions.
210
+ owner-only permissions. Tokens belong to the server's URL and headers, not
211
+ only its name: another server with the same name never receives them, and
212
+ a server whose URL or headers change asks you to sign in again. Only an
213
+ `https` sign-in page (or `http` on your own machine) is opened.
177
214
 
178
215
  Press the action's number to run it, or **Esc** to go back.
@@ -14,18 +14,43 @@ main conversation.
14
14
 
15
15
  ### Where subagents come from
16
16
 
17
- - Three ship with One Code: `general-purpose` (any task), `explore`
18
- (read-only search), and `plan` (design an implementation plan).
17
+ - Four ship with One Code: `general-purpose` (any task), `explore`
18
+ (read-only search), `plan` (design an implementation plan), and
19
+ `one-code-guide` (questions about One Code itself; see below).
19
20
  - Markdown definitions in `.claude/agents/` (project) and
20
21
  `~/.claude/agents/` (user), each setting an agent's model, tools, and
21
22
  system prompt. A project definition wins over a user definition of the
22
- same name.
23
+ same name. The `tools` and `disallowedTools` lists read as they do in
24
+ Claude Code: `tools: "*"` means every tool, and an entry written as a
25
+ rule, such as `Bash(git push:*)`, grants or removes the whole tool.
23
26
  - Plugins can add agents, namespaced by plugin.
24
27
  - `fork`, a synthetic type that copies the current conversation.
25
28
 
26
29
  Run `/agents` with no agents running to list the catalog with each agent's
27
30
  tools.
28
31
 
32
+ ### Ask One Code about itself
33
+
34
+ Ask "can One Code…?" or "how do I…?" and the model hands the question to
35
+ `one-code-guide`, the way Claude Code uses its `claude-code-guide`. The guide
36
+ answers from this user guide, installed with One Code, and from the docs of
37
+ the pi you run, so the answer matches your versions. If pi's docs aren't on
38
+ disk, it reads pi's published docs, which may describe a newer pi. It never
39
+ answers from memory, and it cites the page each fact came from.
40
+
41
+ It knows your setup too: your custom skills and agents, plugins, MCP
42
+ servers, installed pi packages, and which settings you've changed. When One
43
+ Code can't do what you want, it tells you so and suggests the smallest way
44
+ to get there: an existing setting, a skill, an agent, a hook, an MCP server,
45
+ or a pi extension of your own. For an extension it shows where the file goes
46
+ and how to install it for the way you run One Code, `onecode install` for
47
+ the app or `pi install` on your own pi.
48
+
49
+ The guide can only read. It uses the shell only for read-only searches,
50
+ never edits anything, and reads its docs without asking. It runs on your
51
+ subagent model. A `one-code-guide.md` in `.claude/agents/` or
52
+ `~/.claude/agents/` replaces it.
53
+
29
54
  ### Run a subagent
30
55
 
31
56
  The model delegates through the `Agent` tool. You steer it in plain
@@ -44,7 +69,9 @@ the `explore` agent". What happens next:
44
69
  too.
45
70
  - **A finished agent can be messaged later.** The `SendMessage` tool
46
71
  reaches a running agent live, or resumes a finished one from its saved
47
- session. `list_agents` lists the session's agents and their status.
72
+ session. In a `-p` or `--mode json` run, a resumed agent's turn runs to
73
+ completion and the reply is returned inline. `list_agents` lists the
74
+ session's agents and their status.
48
75
 
49
76
  Two options change how a subagent runs:
50
77
 
@@ -55,17 +82,19 @@ Two options change how a subagent runs:
55
82
  one more, but no further.
56
83
  - **Worktree isolation.** The subagent gets its own git worktree, branched
57
84
  from `HEAD`, so it can edit files without colliding with your working
58
- tree or other agents. A worktree the agent left unchanged is removed;
59
- otherwise it's kept and its path reported.
85
+ tree or other agents. A worktree the agent left unchanged is removed.
86
+ If the agent edited files or made commits there, the worktree is kept
87
+ and its path and branch are reported, so no work is lost.
60
88
 
61
89
  ### Choose the subagent model
62
90
 
63
91
  Subagents and workflow agents can run on a different model or provider
64
- from the main session. The default is chosen for you: the cheapest model on
65
- your provider that meets the same capability floor auto mode's classifier
66
- uses (a Sonnet-class model for a Sonnet-class or stronger session), never a
67
- dearer one than your main model. When an Artificial Analysis key is
68
- configured, measured coding ability is used for that floor; see
92
+ from the main session. The default is chosen for you. For the models people
93
+ use most, a pairing table picks it: an Opus session delegates to Sonnet 5.5,
94
+ a Sonnet 5.5 session to Haiku 5.5, GPT-6.1 Sol to GPT-6 Luna. For other
95
+ models, it's the cheapest model on your provider in your main model's tier or
96
+ above, and cheaper than it; if none costs less, subagents run on your main
97
+ model. See
69
98
  [Automatic model selection](providers-and-models.md#automatic-model-selection).
70
99
 
71
100
  To set the default yourself:
@@ -91,20 +120,37 @@ agent.
91
120
 
92
121
  ### Follow agents live
93
122
 
94
- While agents run, the panel below the editor shows a tree: `main` first,
95
- then each agent with its type, what it's doing right now ("Reading
96
- src/index.ts", "Running a command"), its elapsed time, and its token count.
97
- Nested agents appear under their parent. A finished agent stays for a few
98
- seconds.
123
+ While agents run, the panel below the editor shows a list: `main` first,
124
+ then each agent with its type (or its name, for a fork), its description,
125
+ its elapsed time and its token count. Nested agents appear under their
126
+ parent. A finished agent leaves the list, and the panel says
127
+ `/tasks to see subagents` for a few seconds.
99
128
 
100
129
  - Press **↓** from an empty editor to focus the rows (after the shells
101
130
  chip, if background shells exist).
102
- - **↑** and **↓** select an agent. **Enter** opens its live transcript.
131
+ - **↑** and **↓** select an agent. **Enter** views it.
103
132
  - **x** stops the selected agent. **ctrl+x** then **ctrl+k** stops all of
104
133
  them.
105
- - In the transcript: **↑** and **↓** scroll, **PgUp** and **PgDn** page,
106
- **Tab** moves to the next agent, **←** returns to the rows, **Enter**
107
- closes the view.
134
+ - **Esc** puts you back in the editor and keeps the agent on screen.
135
+
136
+ ### Talk to an agent
137
+
138
+ Viewing an agent points the editor at it. The editor's border shows the
139
+ agent, the empty editor reads `Message @<agent>…`, and whatever you send
140
+ goes to that agent. If it's working, it picks the message up mid-turn. If
141
+ it's idle, it starts a new turn. Either way, its reply reaches the main
142
+ conversation as a notification, the same as its first report did. The
143
+ agent stays in the panel, marked `idle`, while you have it open. **PgUp**
144
+ and **PgDn** scroll its transcript. To get back, select `main` and press
145
+ **Enter**, or press **Esc** in an empty editor. Slash commands and `!`
146
+ lines still go to the main conversation.
147
+
148
+ This is also what `f` in the `/btw` panel is for: it turns a side answer
149
+ into a forked agent you can keep talking to.
150
+
151
+ `/tasks` lists what's running in the background: shells, agents, and the
152
+ finished agents you've viewed. **Enter** opens one, **x** stops a running
153
+ one, **Esc** closes the list.
108
154
 
109
155
  `/agents` opens the panel on the newest agent.
110
156
 
@@ -117,17 +163,27 @@ and relative path then resolves there, and your main working tree stays
117
163
  untouched until `exit_worktree` leaves the worktree, keeping or removing
118
164
  it. Removal is refused while there is uncommitted or unmerged work. Ask for
119
165
  this when a task will make sweeping changes you want to review before
120
- merging.
166
+ merging. Subagents and workflow agents started while the session is in the
167
+ worktree run there too, and an isolated subagent's own worktree branches
168
+ from the worktree's `HEAD`.
121
169
 
122
170
  ## Ultracode workflows
123
171
 
124
172
  For a big job (a broad audit, a migration, a review worth double-checking),
125
173
  include the word **`ultracode`** in your message. The model writes a short
126
174
  JavaScript script that fans the work out across many agents in parallel,
127
- then runs it with the `workflow` tool.
128
-
129
- The keyword arms the turn it appears in. A message you queue while the
130
- model is still working doesn't arm the next turn. For a longer stretch of
175
+ then runs it with the `workflow` tool. Before it writes one, it loads the
176
+ bundled `workflow-authoring` skill, the reference for the script API.
177
+
178
+ By default the model keeps a workflow under 10 agents unless you ask for
179
+ more. Change that with `workflowSizeGuideline`, or turn workflows off with
180
+ `disableWorkflows`; both go in One Code's settings
181
+ ([Configuration](configuration.md#settings-reference)).
182
+
183
+ The keyword arms the turn it appears in. That includes a message you
184
+ queue while the model is still working: it arms once the model gets to
185
+ your message. (Queued messages need pi 0.86 or later; the `onecode` app
186
+ ships with it.) For a longer stretch of
131
187
  this kind of work, turn the mode on with `/effort ultracode`: it sets the
132
188
  reasoning effort to `xhigh` and keeps workflow orchestration armed until
133
189
  you change the effort again. The footer shows `✦ ultracode` while it's
@@ -151,8 +207,16 @@ armed.
151
207
  - Fan-out agents use the subagent default model, so a cheap subagent tier
152
208
  keeps a large run affordable while the main conversation stays on a
153
209
  frontier model.
210
+ - Workflow agents get the tools a subagent gets, your MCP servers
211
+ included. An agent call that names an agent type follows that agent
212
+ file's `tools` and `disallowedTools`, as a subagent does.
154
213
  - In a `-p` or `--mode json` run, the workflow runs to completion and
155
214
  returns its result inline.
215
+ - An agent the script runs with `isolation: 'worktree'` gets its own
216
+ worktree, like a subagent. If the agent leaves changes or commits there,
217
+ even when it fails, the worktree is kept: its path shows in the progress
218
+ strip and the agent's detail pane, and the final report lists every kept
219
+ worktree with its branch.
156
220
 
157
221
  ### The run viewer
158
222
 
@@ -184,12 +248,14 @@ the current run's script there.
184
248
 
185
249
  `/effort` sets how much reasoning the model spends: `off`, `minimal`,
186
250
  `low`, `medium`, `high`, `xhigh`, `max`, or `ultracode`. A bare `/effort`
187
- opens a slider (**←** and **→** or **h** and **l** move, **Enter** confirms).
251
+ opens a slider (**←** and **→** or **h** and **l** move, **Enter** confirms,
252
+ **s** applies the level to this session only).
188
253
  Levels the current model doesn't support are skipped. **shift+tab** cycles
189
254
  the plain levels; cycling away from `xhigh` while ultracode is armed turns
190
255
  ultracode off.
191
256
 
192
257
  Changing the effort re-caches the conversation, so the next request costs
193
- more than usual. `/effort` doesn't save the level across restarts; to
194
- save one, open pi's `/thinking` picker and press **ctrl+s**, or pass
195
- `--thinking <level>` at launch.
258
+ more than usual. `low`, `medium`, `high` and `xhigh` are saved for the
259
+ current model, so a new session on that model starts there; `max` and
260
+ `ultracode` last for this session only. `/effort auto` clears the saved
261
+ level, and `--thinking <level>` at launch overrides it.