one-code-extension 0.4.1 → 0.5.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 (419) 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 +32 -23
  7. package/docs/guide/doctor.md +20 -13
  8. package/docs/guide/hooks.md +18 -3
  9. package/docs/guide/installation.md +27 -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 +123 -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 +515 -0
  56. package/extensions/background/index.ts +514 -236
  57. package/extensions/background/loop-fire.ts +136 -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 +52 -0
  63. package/extensions/background/wakeup.ts +159 -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 +88 -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 +229 -71
  77. package/extensions/btw/panel.ts +228 -100
  78. package/extensions/btw/prompt.ts +41 -4
  79. package/extensions/claude-compat/index.ts +7 -11
  80. package/extensions/claude-context/index.ts +446 -58
  81. package/extensions/compaction/cut.ts +157 -0
  82. package/extensions/compaction/index.ts +216 -75
  83. package/extensions/compaction/kept-thinking.ts +62 -0
  84. package/extensions/compaction/prompt.ts +15 -12
  85. package/extensions/context-budget/index.ts +24 -5
  86. package/extensions/context-management/index.ts +25 -0
  87. package/extensions/doctor/build.ts +59 -8
  88. package/extensions/doctor/builtins.ts +84 -0
  89. package/extensions/doctor/cli.ts +7 -1
  90. package/extensions/doctor/compat.ts +88 -23
  91. package/extensions/doctor/dependencies.ts +41 -5
  92. package/extensions/doctor/fix-prompt.ts +9 -2
  93. package/extensions/doctor/index.ts +102 -58
  94. package/extensions/doctor/models.ts +102 -63
  95. package/extensions/doctor/presets.ts +42 -27
  96. package/extensions/doctor/report.ts +19 -2
  97. package/extensions/doctor/viewer.ts +49 -27
  98. package/extensions/effort/index.ts +72 -19
  99. package/extensions/effort/settings.ts +21 -0
  100. package/extensions/effort/slider.ts +24 -20
  101. package/extensions/exit/index.ts +32 -1
  102. package/extensions/file-tracker/index.ts +337 -26
  103. package/extensions/file-tracker/replay.ts +96 -10
  104. package/extensions/file-tracker/restore.ts +63 -0
  105. package/extensions/file-tracker/results.ts +66 -0
  106. package/extensions/file-tracker/shell-reads.ts +211 -0
  107. package/extensions/file-tracker/tracker.ts +32 -15
  108. package/extensions/footer/footer-line.ts +45 -24
  109. package/extensions/footer/index.ts +47 -2
  110. package/extensions/footer/pr.ts +34 -5
  111. package/extensions/hooks/compaction.ts +7 -0
  112. package/extensions/hooks/executor.ts +32 -30
  113. package/extensions/hooks/index.ts +198 -31
  114. package/extensions/hooks/matcher.ts +3 -0
  115. package/extensions/hooks/protocol.ts +41 -3
  116. package/extensions/hooks/settings.ts +50 -19
  117. package/extensions/hooks/subagent-bridge.ts +2 -0
  118. package/extensions/hooks/trust.ts +13 -5
  119. package/extensions/idle-compact/index.ts +119 -0
  120. package/extensions/idle-compact/policy.ts +143 -0
  121. package/extensions/init/index.ts +11 -10
  122. package/extensions/init/prompt.ts +25 -32
  123. package/extensions/interrupted/index.ts +13 -1
  124. package/extensions/kept-thinking/index.ts +27 -0
  125. package/extensions/lib/agent-cron.ts +130 -0
  126. package/extensions/lib/agent-loader.ts +15 -1
  127. package/extensions/lib/agent-view.ts +85 -0
  128. package/extensions/lib/anthropic-payload.ts +82 -1
  129. package/extensions/lib/anthropic-server-call.ts +230 -0
  130. package/extensions/lib/anthropic-server-tools.ts +485 -0
  131. package/extensions/lib/app-launch.mjs +94 -0
  132. package/extensions/lib/argument-hints.ts +190 -0
  133. package/extensions/lib/atomic-write.ts +6 -2
  134. package/extensions/lib/auto-memory.ts +75 -0
  135. package/extensions/lib/bash-parser.ts +84 -0
  136. package/extensions/lib/btw-fork.ts +93 -0
  137. package/extensions/lib/child-extensions.ts +42 -0
  138. package/extensions/lib/child-writes.ts +45 -0
  139. package/extensions/lib/claude-context.ts +515 -100
  140. package/extensions/lib/claude-external-includes.ts +68 -0
  141. package/extensions/lib/claude-id.ts +22 -0
  142. package/extensions/lib/claude-rules.ts +323 -0
  143. package/extensions/lib/claude-settings.ts +76 -4
  144. package/extensions/lib/compaction-boundary.ts +36 -0
  145. package/extensions/lib/compaction-keep.mjs +83 -0
  146. package/extensions/lib/config-mode.ts +112 -0
  147. package/extensions/lib/consent-dialogs.ts +63 -0
  148. package/extensions/lib/consent-preview.ts +5 -1
  149. package/extensions/lib/consent-stores.ts +48 -0
  150. package/extensions/lib/context-facts.ts +78 -0
  151. package/extensions/lib/context-stack.ts +81 -0
  152. package/extensions/lib/deferred.ts +219 -25
  153. package/extensions/lib/dock-rows.ts +60 -0
  154. package/extensions/lib/empty-tool-result.ts +27 -0
  155. package/extensions/lib/environment-block.ts +76 -0
  156. package/extensions/lib/fetch-timeout.ts +24 -6
  157. package/extensions/{system-prompt → lib}/git-status.ts +51 -13
  158. package/extensions/lib/git.ts +75 -13
  159. package/extensions/lib/grammars/LICENSE-tree-sitter-bash +21 -0
  160. package/extensions/lib/grammars/README.md +2 -0
  161. package/extensions/lib/grammars/tree-sitter-bash.wasm +0 -0
  162. package/extensions/lib/guide-docs.ts +45 -0
  163. package/extensions/lib/headless-output.ts +46 -0
  164. package/extensions/lib/hook-gate.ts +7 -7
  165. package/extensions/lib/interrupt.ts +20 -4
  166. package/extensions/lib/key-input.ts +455 -0
  167. package/extensions/lib/keys.ts +14 -1
  168. package/extensions/lib/local-command.ts +47 -13
  169. package/extensions/lib/mcp-overrides.ts +1 -1
  170. package/extensions/lib/mcp-share.ts +46 -0
  171. package/extensions/lib/memory-content.ts +146 -0
  172. package/extensions/lib/memory-index.ts +18 -0
  173. package/extensions/lib/memory.ts +134 -123
  174. package/extensions/lib/model-catalog/huggingface.json +174 -0
  175. package/extensions/lib/model-catalog/models-dev.json +18297 -0
  176. package/extensions/lib/model-catalog/openrouter.json +5252 -0
  177. package/extensions/lib/model-catalog-data.ts +513 -0
  178. package/extensions/lib/model-catalog.ts +462 -0
  179. package/extensions/lib/model-choice-warnings.ts +137 -0
  180. package/extensions/lib/model-pairings.ts +152 -0
  181. package/extensions/{auto-mode → lib}/model-picker.ts +26 -43
  182. package/extensions/lib/model-policy.ts +112 -15
  183. package/extensions/lib/model-tier.ts +283 -355
  184. package/extensions/lib/model-unusable.ts +1 -1
  185. package/extensions/lib/newer-model.ts +100 -0
  186. package/extensions/lib/notices.ts +87 -0
  187. package/extensions/lib/notifications.ts +308 -64
  188. package/extensions/lib/one-code-settings.ts +74 -8
  189. package/extensions/lib/open-browser.ts +63 -0
  190. package/extensions/lib/openrouter-generation.ts +94 -0
  191. package/extensions/lib/operation-deadline.ts +30 -0
  192. package/extensions/lib/original-command.ts +4 -4
  193. package/extensions/lib/package-version.ts +1 -1
  194. package/extensions/lib/panel-focus.ts +134 -0
  195. package/extensions/lib/paths.ts +17 -2
  196. package/extensions/lib/permission-gate.ts +72 -6
  197. package/extensions/lib/persisted-output.ts +60 -8
  198. package/extensions/lib/pi-ai-estimate.ts +19 -3
  199. package/extensions/lib/pi-version.ts +21 -2
  200. package/extensions/lib/plan-mode-channels.ts +20 -5
  201. package/extensions/lib/plugins.ts +26 -17
  202. package/extensions/lib/powershell-parse-script.ts +208 -0
  203. package/extensions/lib/powershell-parser.ts +344 -0
  204. package/extensions/lib/process-tree.ts +131 -8
  205. package/extensions/lib/prompt-options.ts +82 -0
  206. package/extensions/lib/queued-delivery.ts +44 -0
  207. package/extensions/lib/reminders.ts +364 -58
  208. package/extensions/lib/replaced-builtins.mjs +199 -0
  209. package/extensions/lib/replay-call.ts +70 -0
  210. package/extensions/lib/request-replay.ts +439 -0
  211. package/extensions/lib/scratchpad.ts +81 -14
  212. package/extensions/lib/send-now-channel.ts +7 -0
  213. package/extensions/lib/session-model-tier.ts +51 -0
  214. package/extensions/lib/session-work.ts +64 -0
  215. package/extensions/lib/settings-channels.ts +4 -4
  216. package/extensions/lib/shell-exit-semantics.ts +170 -0
  217. package/extensions/lib/shell-quote.ts +11 -0
  218. package/extensions/lib/shell-result.ts +70 -0
  219. package/extensions/lib/shell-spawn.ts +70 -6
  220. package/extensions/lib/shell-tool.ts +75 -25
  221. package/extensions/lib/side-call-cache.ts +124 -0
  222. package/extensions/lib/side-call-run.ts +96 -0
  223. package/extensions/lib/side-call-usage.ts +38 -0
  224. package/extensions/lib/side-call.ts +13 -1
  225. package/extensions/lib/single-flight.ts +18 -0
  226. package/extensions/lib/skill-body.ts +42 -0
  227. package/extensions/lib/skill-scan.ts +63 -24
  228. package/extensions/lib/spill-file.ts +140 -0
  229. package/extensions/lib/subagent-handback.ts +113 -0
  230. package/extensions/lib/system-role.ts +156 -0
  231. package/extensions/lib/terminal-text.ts +114 -0
  232. package/extensions/lib/text-width.ts +47 -16
  233. package/extensions/lib/timer-ops.ts +20 -0
  234. package/extensions/lib/tool-additions.ts +149 -0
  235. package/extensions/lib/tool-call-corruption.ts +134 -0
  236. package/extensions/lib/tool-path.ts +66 -0
  237. package/extensions/lib/tool-variants.ts +69 -0
  238. package/extensions/lib/tui-render.ts +255 -27
  239. package/extensions/lib/turn-budget-layout.ts +143 -0
  240. package/extensions/lib/update-check.mjs +15 -2
  241. package/extensions/lib/usage-bus.ts +1 -1
  242. package/extensions/lib/user-denial.ts +38 -0
  243. package/extensions/lib/workspace-channel.ts +16 -0
  244. package/extensions/lib/worktree-channel.ts +31 -3
  245. package/extensions/lib/worktree-isolation.ts +40 -10
  246. package/extensions/lsp/client.ts +8 -9
  247. package/extensions/lsp/index.ts +70 -4
  248. package/extensions/lsp/keep-alive.ts +1 -1
  249. package/extensions/lsp/trust.ts +119 -0
  250. package/extensions/lsp/watcher.ts +1 -1
  251. package/extensions/mcp/announce.ts +87 -5
  252. package/extensions/mcp/client.ts +161 -48
  253. package/extensions/mcp/config.ts +132 -8
  254. package/extensions/mcp/discovery.ts +19 -0
  255. package/extensions/mcp/index.ts +209 -71
  256. package/extensions/mcp/oauth/browser.ts +38 -17
  257. package/extensions/mcp/oauth/flow.ts +25 -17
  258. package/extensions/mcp/oauth/provider.ts +14 -8
  259. package/extensions/mcp/oauth/store.ts +34 -16
  260. package/extensions/mcp/panel/keys.ts +12 -11
  261. package/extensions/mcp/panel/render.ts +9 -6
  262. package/extensions/mcp/schema.ts +104 -5
  263. package/extensions/mcp/trust.ts +151 -67
  264. package/extensions/memory/entries.ts +23 -14
  265. package/extensions/memory/index.ts +134 -28
  266. package/extensions/memory/open-external.ts +33 -18
  267. package/extensions/memory/panel.ts +135 -26
  268. package/extensions/newer-model/index.ts +31 -0
  269. package/extensions/notebook/description.ts +18 -0
  270. package/extensions/notebook/index.ts +6 -5
  271. package/extensions/notebook/notebook.ts +1 -1
  272. package/extensions/permissions/index.ts +1300 -381
  273. package/extensions/permissions/matcher.ts +425 -74
  274. package/extensions/permissions/modes.ts +6 -4
  275. package/extensions/permissions/panel/host.ts +130 -0
  276. package/extensions/permissions/panel/keys.ts +48 -0
  277. package/extensions/permissions/panel/render.ts +450 -0
  278. package/extensions/permissions/panel/state.ts +550 -0
  279. package/extensions/permissions/powershell-cmdlets.ts +198 -0
  280. package/extensions/permissions/powershell-paths.ts +197 -0
  281. package/extensions/permissions/powershell-rules.ts +207 -280
  282. package/extensions/permissions/powershell-tree.ts +557 -0
  283. package/extensions/permissions/project-trust.ts +27 -11
  284. package/extensions/permissions/protected-paths.ts +14 -2
  285. package/extensions/permissions/session-grant.ts +6 -0
  286. package/extensions/permissions/settings.ts +166 -31
  287. package/extensions/permissions/subagent-gate.ts +25 -0
  288. package/extensions/permissions/workspace.ts +78 -0
  289. package/extensions/plan-mode/index.ts +156 -69
  290. package/extensions/plan-mode/reminder.ts +89 -21
  291. package/extensions/plan-mode/texts.ts +177 -0
  292. package/extensions/plan-mode/viewer.ts +92 -27
  293. package/extensions/plugins/counts.ts +3 -3
  294. package/extensions/plugins/index.ts +61 -46
  295. package/extensions/plugins/install/install.ts +16 -0
  296. package/extensions/plugins/marketplace/sync.ts +9 -3
  297. package/extensions/plugins/marketplace/types.ts +3 -1
  298. package/extensions/plugins/panel/keys.ts +21 -24
  299. package/extensions/plugins/panel/render.ts +12 -6
  300. package/extensions/plugins/shell-expand.ts +107 -0
  301. package/extensions/plugins/template.ts +32 -15
  302. package/extensions/powershell/child.ts +7 -0
  303. package/extensions/powershell/description.ts +38 -6
  304. package/extensions/powershell/guards.ts +1 -1
  305. package/extensions/powershell/index.ts +12 -7
  306. package/extensions/recap/index.ts +65 -60
  307. package/extensions/recap/prompt.ts +2 -2
  308. package/extensions/recap/scheduler.ts +3 -5
  309. package/extensions/search-tools/grep-merge.ts +39 -0
  310. package/extensions/search-tools/index.ts +0 -0
  311. package/extensions/send-now/chord.ts +62 -0
  312. package/extensions/send-now/index.ts +133 -0
  313. package/extensions/session-title/index.ts +3 -0
  314. package/extensions/session-title/title.ts +4 -1
  315. package/extensions/skill/code-review.ts +97 -0
  316. package/extensions/skill/index.ts +421 -101
  317. package/extensions/skill/invoke.ts +128 -18
  318. package/extensions/skill/listing.ts +133 -9
  319. package/extensions/skill/panel/keys.ts +15 -16
  320. package/extensions/skill/panel/render.ts +5 -2
  321. package/extensions/skill/panel/state.ts +12 -1
  322. package/extensions/subagents/agent-args.ts +39 -0
  323. package/extensions/subagents/agent-description.ts +132 -0
  324. package/extensions/subagents/agents.ts +116 -23
  325. package/extensions/subagents/announce.ts +69 -0
  326. package/extensions/subagents/default-model.ts +2 -3
  327. package/extensions/subagents/delegation-steer.ts +4 -4
  328. package/extensions/subagents/fork-cache.ts +76 -0
  329. package/extensions/subagents/guide-agent.ts +189 -0
  330. package/extensions/subagents/hand-back-review.ts +3 -0
  331. package/extensions/subagents/index.ts +1493 -824
  332. package/extensions/subagents/live-runs.ts +26 -6
  333. package/extensions/subagents/model-select.ts +38 -25
  334. package/extensions/subagents/outcome.ts +2 -2
  335. package/extensions/subagents/panel-keys.ts +73 -31
  336. package/extensions/subagents/panel-render.ts +120 -96
  337. package/extensions/subagents/panel-widget.ts +60 -89
  338. package/extensions/subagents/runner.ts +108 -80
  339. package/extensions/subagents/runs.ts +39 -5
  340. package/extensions/subagents/send-to-main-tool.ts +1 -1
  341. package/extensions/subagents/session-turns.ts +32 -8
  342. package/extensions/subagents/shell-panel.ts +36 -178
  343. package/extensions/subagents/tasks-dialog.ts +170 -0
  344. package/extensions/subagents/viewport-mirror.ts +95 -0
  345. package/extensions/subagents/worktree.ts +57 -13
  346. package/extensions/system-prompt/environment.ts +19 -19
  347. package/extensions/system-prompt/idle-turn.ts +65 -0
  348. package/extensions/system-prompt/index.ts +131 -47
  349. package/extensions/system-prompt/template.ts +24 -50
  350. package/extensions/system-prompt/tiers/common.ts +23 -64
  351. package/extensions/system-prompt/tiers/frontier.ts +32 -11
  352. package/extensions/system-prompt/tiers/low.ts +67 -45
  353. package/extensions/system-prompt/tiers/mid.ts +96 -38
  354. package/extensions/system-reminder/index.ts +175 -13
  355. package/extensions/tasks/descriptions.ts +190 -0
  356. package/extensions/tasks/index.ts +120 -41
  357. package/extensions/tasks/store.ts +83 -16
  358. package/extensions/tool-call-corruption/child.ts +7 -0
  359. package/extensions/tool-call-corruption/index.ts +237 -0
  360. package/extensions/tool-search/announce.ts +16 -0
  361. package/extensions/tool-search/index.ts +189 -41
  362. package/extensions/tool-style/index.ts +68 -10
  363. package/extensions/tool-style/write-description.ts +40 -0
  364. package/extensions/tool-style/write-render.ts +237 -0
  365. package/extensions/turn-duration/index.ts +7 -3
  366. package/extensions/turn-duration/line.ts +47 -4
  367. package/extensions/web/backends.ts +6 -9
  368. package/extensions/web/description.ts +50 -0
  369. package/extensions/web/index.ts +118 -53
  370. package/extensions/web/native-call.ts +15 -0
  371. package/extensions/web/native-results.ts +41 -0
  372. package/extensions/web-fetch/description.ts +42 -0
  373. package/extensions/web-fetch/extract.ts +53 -6
  374. package/extensions/web-fetch/index.ts +125 -76
  375. package/extensions/web-fetch/page-content.ts +19 -0
  376. package/extensions/web-fetch/response.ts +49 -0
  377. package/extensions/web-fetch/summarize.ts +9 -10
  378. package/extensions/workflow/agent-session.ts +105 -18
  379. package/extensions/workflow/args.ts +24 -0
  380. package/extensions/workflow/description.ts +67 -0
  381. package/extensions/workflow/globals.ts +17 -3
  382. package/extensions/workflow/index.ts +145 -162
  383. package/extensions/workflow/records.ts +1 -0
  384. package/extensions/workflow/run-manager.ts +29 -6
  385. package/extensions/workflow/saved-workflows.ts +3 -2
  386. package/extensions/workflow/types.ts +22 -1
  387. package/extensions/workflow/viewer.ts +54 -24
  388. package/extensions/workflow/widget.ts +20 -0
  389. package/extensions/worktree/descriptions.ts +91 -0
  390. package/extensions/worktree/guards.ts +316 -54
  391. package/extensions/worktree/index.ts +121 -39
  392. package/extensions/worktree/powershell-guards.ts +167 -0
  393. package/extensions/worktree/rewrite.ts +14 -16
  394. package/package.json +18 -7
  395. package/skills/artifact-design/SKILL.md +85 -0
  396. package/skills/code-review/SKILL.md +20 -20
  397. package/skills/code-review/cells/arguments-and-flags.md +19 -0
  398. package/skills/code-review/cells/high-3x5-recall-verify.md +137 -0
  399. package/skills/code-review/cells/high-8-inline.md +122 -0
  400. package/skills/code-review/cells/low-1-pass-max4.md +27 -0
  401. package/skills/code-review/cells/low-1-pass-min-files-4.md +28 -0
  402. package/skills/code-review/cells/max-5x5-verify-sweep.md +162 -0
  403. package/skills/code-review/cells/medium-3x5-verify.md +132 -0
  404. package/skills/code-review/cells/minimal-prompt.md +32 -0
  405. package/skills/code-review/cells/xhigh-10-inline-sweep.md +149 -0
  406. package/skills/code-review/cells/xhigh-5x5-verify-sweep.md +162 -0
  407. package/skills/fewer-permission-prompts/SKILL.md +1 -1
  408. package/skills/loop/SKILL.md +11 -0
  409. package/skills/security-review/SKILL.md +2 -5
  410. package/skills/simplify/SKILL.md +7 -5
  411. package/skills/workflow-authoring/SKILL.md +143 -0
  412. package/themes/onecode-light.json +1 -1
  413. package/themes/onecode.json +1 -1
  414. package/types/app.d.ts +58 -0
  415. package/types/community-packages.d.ts +26 -1
  416. package/extensions/auto-mode/recoverability.ts +0 -229
  417. package/extensions/lib/capability-index.ts +0 -466
  418. package/extensions/lib/model-facts.generated.json +0 -2675
  419. package/extensions/lib/model-facts.ts +0 -162
@@ -2,22 +2,41 @@
2
2
  * system-reminder extension — injects queued <system-reminder> blocks into the
3
3
  * outgoing LLM request (pi `context` event), and writes one-shots into the tool
4
4
  * result they follow (pi `tool_result` event) so they persist in the session
5
- * the way Claude Code's mid-turn reminders do. Standing and context reminders
6
- * stay transient: the session file never contains them. This extension owns
5
+ * the way Claude Code's mid-turn reminders do. Context and sticky anchors are
6
+ * restored from hidden custom entries; rendered messages stay untouched. This extension owns
7
7
  * the one queue instance; every other extension reaches it over
8
8
  * `one-code:system-reminder` (lib/reminders.ts has the placement contract).
9
+ *
10
+ * On a model that takes a mid-conversation system message (lib/system-role.ts),
11
+ * its `before_provider_request` hook then lifts the session-fact blocks off the
12
+ * first user message into one system message after it, Claude Code's layout.
13
+ * It loads before tool-search and compaction, so replays and forks inherit it.
9
14
  */
10
15
 
11
16
  import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
17
+ import { CLEAR_AT_BETA, MID_CONVERSATION_SYSTEM_BETA, reseatMessageMark, withBetas } from "../lib/anthropic-payload.ts";
12
18
  import {
13
19
  appendReminderBlocks,
20
+ framedReminderText,
14
21
  injectReminders,
22
+ movesToSystemRole,
15
23
  openingUserAnchor,
16
24
  REMINDER_CHANNEL,
17
25
  ReminderQueue,
26
+ type ReminderEntry,
18
27
  type ReminderPayload,
19
28
  tailAnchor,
20
29
  } from "../lib/reminders.ts";
30
+ import {
31
+ CONTEXT_BASELINE_CHANNEL, CONTEXT_RESTORE_CHANNEL, CONTEXT_STACK_ENTRY, CONTEXT_STATE_ENTRY, CONTEXT_FACTS_REFRESH_CHANNEL,
32
+ contextStackOnBranch, RESTORED_STACK_KEYS, LIVE_CONTEXT_KEYS,
33
+ type ContextBaseline, type ContextRestoreRequest, type ContextStackSnapshot, type ContextFactsRefresh,
34
+ } from "../lib/context-stack.ts";
35
+ import { CONTEXT_FACT_KEYS, DATE_CHANGE_KEY, RESUME_FACTS_KEY } from "../lib/context-facts.ts";
36
+ import { claudeFamily } from "../lib/model-tier.ts";
37
+ import { emptyToolResultContent } from "../lib/empty-tool-result.ts";
38
+ import { instructionRole, messagesKey, type MovedBlock, systemRoleLayout, wireShape, withSystemRoleContext } from "../lib/system-role.ts";
39
+ import { resolveCountdowns, withTurnBudgetMessages } from "../lib/turn-budget-layout.ts";
21
40
 
22
41
  /**
23
42
  * Roles a reminder can be attached to (see injectReminders). `custom` is a
@@ -30,6 +49,84 @@ const ANCHOR_ROLES = new Set(["user", "toolResult", "compactionSummary", "custom
30
49
 
31
50
  export default function systemReminderExtension(pi: ExtensionAPI) {
32
51
  const reminderQueue = new ReminderQueue();
52
+ let restored: ContextStackSnapshot | undefined;
53
+ let stored = false;
54
+ let baselines: Record<string, unknown> = {};
55
+ let lastState = "";
56
+ let lastStack = "";
57
+ pi.events.on(CONTEXT_RESTORE_CHANNEL, (data) => {
58
+ if (data && restored) (data as ContextRestoreRequest).restored = structuredClone(restored);
59
+ });
60
+ pi.events.on(CONTEXT_BASELINE_CHANNEL, (data) => {
61
+ const baseline = data as ContextBaseline | undefined;
62
+ if (typeof baseline?.key === "string") {
63
+ baselines[baseline.key] = structuredClone(baseline.value);
64
+ baselineChanges++;
65
+ }
66
+ });
67
+ pi.on("session_start", (_event, ctx) => {
68
+ restored = contextStackOnBranch(ctx.sessionManager.getBranch());
69
+ stored = restored !== undefined;
70
+ baselines = restored ? structuredClone(restored.baselines) : {};
71
+ lastState = restored ? JSON.stringify({ version: 1, sticky: restored.sticky, pinned: restored.pinned ?? [], baselines }) : "";
72
+ lastStack = restored ? JSON.stringify(restored.stack) : "";
73
+ comparedQueue = -1;
74
+ if (restored) reminderQueue.restore(restored.stack, restored.sticky, RESTORED_STACK_KEYS, LIVE_CONTEXT_KEYS, restored.pinned);
75
+ else reminderQueue.releaseRestore();
76
+ });
77
+ // A /tree switch fires only session_tree (findings §3). The selected branch's
78
+ // messages were sent with its own facts, sticky blocks and pins: take them
79
+ // from its last snapshot, as a resume would, while live state and every
80
+ // emitter's baseline stay current (claude-context republishes its own).
81
+ pi.on("session_tree", (_event, ctx) => {
82
+ const branch = contextStackOnBranch(ctx.sessionManager.getBranch());
83
+ stored = branch !== undefined;
84
+ lastState = branch ? JSON.stringify({ version: 1, sticky: branch.sticky, pinned: branch.pinned ?? [], baselines: branch.baselines }) : "";
85
+ lastStack = branch ? JSON.stringify(branch.stack) : "";
86
+ comparedQueue = -1;
87
+ if (branch) reminderQueue.restoreBranch(branch, CONTEXT_FACT_KEYS);
88
+ });
89
+ /**
90
+ * The queue version and baseline count the last comparison saw, or -1 when
91
+ * it must run again. A stack taken before a drain that changed the queue
92
+ * may not be the stack the queue holds after it, so that sets -1 too.
93
+ */
94
+ let comparedQueue = -1;
95
+ let comparedBaselines = -1;
96
+ let baselineChanges = 0;
97
+ /** `capturedAt`: the queue version when `stack` was taken. Unchanged since the last comparison, the snapshot is too. */
98
+ const persistSnapshot = (stack: ReminderEntry[] = reminderQueue.persistentEntries("first-prepend"), capturedAt = reminderQueue.version) => {
99
+ const version = reminderQueue.version;
100
+ if (stored && capturedAt === version && version === comparedQueue && baselineChanges === comparedBaselines) return;
101
+ comparedQueue = capturedAt === version ? version : -1;
102
+ comparedBaselines = baselineChanges;
103
+ const state = { version: 1 as const, sticky: reminderQueue.persistentEntries("sticky-append"), pinned: reminderQueue.persistentPins(), baselines };
104
+ const serialized = JSON.stringify(state);
105
+ const serializedStack = JSON.stringify(stack);
106
+ if (!stored) {
107
+ pi.appendEntry(CONTEXT_STACK_ENTRY, structuredClone({ ...state, stack }));
108
+ stored = true;
109
+ } else if (serialized !== lastState || serializedStack !== lastStack) {
110
+ // Compaction and explicit capability switches start a new prefix.
111
+ pi.appendEntry(CONTEXT_STATE_ENTRY, structuredClone({ ...state, ...(serializedStack !== lastStack ? { stack } : {}) }));
112
+ }
113
+ lastState = serialized;
114
+ lastStack = serializedStack;
115
+ };
116
+ pi.events.on(CONTEXT_FACTS_REFRESH_CHANNEL, (data) => {
117
+ const refresh = data as ContextFactsRefresh;
118
+ reminderQueue.replaceFirstPrepend(CONTEXT_FACT_KEYS, refresh.entries);
119
+ reminderQueue.cancelPending([DATE_CHANGE_KEY, RESUME_FACTS_KEY]);
120
+ baselines["claude-context"] = structuredClone(refresh.baseline);
121
+ baselineChanges++;
122
+ // /compact may be the last action before exit. Persist now, not just on
123
+ // the next request, so a resume cannot revive the pre-compaction facts.
124
+ persistSnapshot();
125
+ });
126
+ /** The blocks the last `context` pass placed for the system message; the payload hook moves them. */
127
+ let moved: MovedBlock[] = [];
128
+ /** The tool results' countdowns the last `context` pass lifted, by call id (lib/turn-budget-layout.ts). */
129
+ let countdowns = new Map<string, number>();
33
130
 
34
131
  pi.events.on(REMINDER_CHANNEL, (data) => {
35
132
  const payload = data as ReminderPayload;
@@ -44,8 +141,11 @@ export default function systemReminderExtension(pi: ExtensionAPI) {
44
141
  order: payload.order,
45
142
  suffix: payload.suffix,
46
143
  raw: payload.raw,
144
+ systemRoleOnly: payload.systemRoleOnly,
145
+ skipStackCarrier: payload.skipStackCarrier,
47
146
  since: payload.since,
48
147
  once: payload.once,
148
+ toolCallId: payload.toolCallId,
49
149
  });
50
150
  }
51
151
  });
@@ -59,32 +159,94 @@ export default function systemReminderExtension(pi: ExtensionAPI) {
59
159
  // the trailing reminder run when it applies a replacement (review M3,
60
160
  // applyPostToolUseOutcome / isAppendedReminderText).
61
161
  pi.on("tool_result", (event) => {
62
- if (!reminderQueue.hasPendingOneShots) return;
63
- const entries = reminderQueue.takeOneShots();
64
- return { content: appendReminderBlocks(event.content, entries) };
162
+ // Normalize the tool's result before reminders make an empty result look
163
+ // nonempty. Read's raw bytes stay for file-tracker's empty-file warning.
164
+ const replacement = emptyToolResultContent(event.content, event.toolName);
165
+ const entries = reminderQueue.hasPendingOneShots ? reminderQueue.takeOneShots(event.toolCallId) : [];
166
+ if (!replacement && entries.length === 0) return;
167
+ const content = replacement ?? event.content;
168
+ return {
169
+ content: entries.length ? appendReminderBlocks(content, entries) : content,
170
+ ...(event.structuredContent !== undefined ? { structuredContent: event.structuredContent } : {}),
171
+ };
65
172
  });
66
173
 
67
- pi.on("context", (event) => {
68
- if (reminderQueue.size === 0) return;
174
+ /** The request's messages with the queued reminders placed, or the input when nothing can be placed. */
175
+ const withReminders = (messages: Parameters<typeof injectReminders>[0], layout: ReturnType<typeof systemRoleLayout>) => {
176
+ if (reminderQueue.size === 0 && !stored) return messages;
69
177
  // injectReminders is a no-op when there is nothing to attach to. Only
70
178
  // consume the queue once there is somewhere to put the reminders, so they
71
179
  // survive to the next eligible request.
72
- if (!event.messages.some((m) => ANCHOR_ROLES.has(m.role))) return;
180
+ if (!messages.some((m) => ANCHOR_ROLES.has(m.role))) return messages;
73
181
  // A one-shot that arrived after the last tool result was stored (a mode
74
182
  // change while idle, a deferred-tool miss whose call had no tool_result
75
183
  // hook) rides this request's tail — and stays pinned there afterwards.
76
184
  if (reminderQueue.hasPendingOneShots) {
77
- const anchor = tailAnchor(event.messages);
78
- if (anchor) reminderQueue.pin(anchor);
185
+ const anchor = tailAnchor(messages);
186
+ if (anchor) reminderQueue.pin(anchor, "last-append", messages);
79
187
  }
80
188
  // A local-command breadcrumb rides the prompt that opens a request, before
81
189
  // the user's text (Claude Code's placement), and stays there. Mid-turn —
82
190
  // the request ends in a tool result — it waits for the next prompt.
83
191
  if (reminderQueue.hasPending("user-prepend")) {
84
- const anchor = openingUserAnchor(event.messages);
192
+ const anchor = openingUserAnchor(messages);
85
193
  if (anchor) reminderQueue.pin(anchor, "user-prepend");
86
194
  }
87
- const reminders = reminderQueue.drain(event.messages);
88
- return { messages: injectReminders(event.messages, reminders) };
195
+ // Capture first-prepend before draining (one may be next-turn), then save
196
+ // after drain resolves sticky anchors. Store logical entries before layout,
197
+ // including systemRoleOnly blocks even on a model that cannot carry them.
198
+ reminderQueue.finishRestore();
199
+ const capturedAt = reminderQueue.version;
200
+ const stack = reminderQueue.persistentEntries("first-prepend");
201
+ const drained = reminderQueue.drain(messages);
202
+ persistSnapshot(stack, capturedAt);
203
+ // A block meant only for the system message is left out where there is none.
204
+ const reminders = drained.filter((entry) => layout || !entry.systemRoleOnly);
205
+ if (layout) {
206
+ moved = reminders
207
+ .filter((entry) => entry.placement === "first-prepend" && movesToSystemRole(entry.order))
208
+ .sort((a, b) => a.order - b.order)
209
+ .map((entry) => ({ framed: framedReminderText(entry), inner: entry.text }));
210
+ }
211
+ return injectReminders(messages, reminders);
212
+ };
213
+
214
+ pi.on("context", (event, ctx) => {
215
+ moved = [];
216
+ countdowns = new Map();
217
+ const layout = systemRoleLayout(ctx.model);
218
+ const messages = withReminders(event.messages, layout);
219
+ // Each tool result's stored <total_tokens> countdown, on every request so
220
+ // the layout never depends on the queue: lifted for a system message or
221
+ // framed, while the result's blocks are still separate (lib/turn-budget-layout.ts).
222
+ // With the budget off no result carries one, so a tool's own such line stays its output.
223
+ const budgetOn = process.env.CC_TOTAL_TOKENS !== "0";
224
+ const resolved = budgetOn && ctx.model && wireShape(ctx.model.api) ? resolveCountdowns(messages, layout !== undefined) : undefined;
225
+ if (resolved) countdowns = resolved.left;
226
+ const out = resolved?.messages ?? messages;
227
+ return out === event.messages ? undefined : { messages: out };
228
+ });
229
+
230
+ pi.on("before_provider_request", (event, ctx) => {
231
+ const model = ctx.model;
232
+ const shape = model ? wireShape(model.api) : undefined;
233
+ if (!model || !shape) return undefined;
234
+ const layout = systemRoleLayout(model);
235
+ const role = instructionRole(shape, model);
236
+ let payload = event.payload as Record<string, unknown>;
237
+ if (layout) payload = withSystemRoleContext(payload, layout, moved, role) ?? payload;
238
+ // Claude Code's per-turn <total_tokens> shapes; first-party Fable also
239
+ // gets its clear_at nudge after each tool result.
240
+ const firstParty = model.provider === "anthropic";
241
+ const nudge = layout === "anthropic" && firstParty && claudeFamily(model.id) === "fable";
242
+ const markers = process.env.CC_TOTAL_TOKENS !== "0";
243
+ payload = withTurnBudgetMessages(payload, { shape, systemRole: layout !== undefined, role, left: countdowns, nudge, markers }) ?? payload;
244
+ if (payload === event.payload) return undefined;
245
+ if (shape === "anthropic") {
246
+ const key = messagesKey(shape);
247
+ payload = { ...payload, [key]: reseatMessageMark(payload[key] as Array<{ role?: unknown; content?: unknown }>) };
248
+ }
249
+ if (layout !== "anthropic" || !firstParty) return payload;
250
+ return withBetas(payload, nudge ? [MID_CONVERSATION_SYSTEM_BETA, CLEAR_AT_BETA] : [MID_CONVERSATION_SYSTEM_BETA]);
89
251
  });
90
252
  }
@@ -0,0 +1,190 @@
1
+ /**
2
+ * The task tools' model-facing texts: Claude Code's TaskCreate, TaskUpdate,
3
+ * TaskGet and TaskList descriptions and parameter texts, with One Code's tool
4
+ * names (pure). The schemas are the same on both sides.
5
+ */
6
+
7
+ export const TASK_CREATE_DESCRIPTION = `Use this tool to create a structured task list for your current coding session. This helps you track progress, organize complex tasks, and demonstrate thoroughness to the user.
8
+ It also helps the user understand the progress of the task and overall progress of their requests.
9
+
10
+ ## When to Use This Tool
11
+
12
+ Use this tool proactively in these scenarios:
13
+
14
+ - Complex multi-step tasks - When a task requires 3 or more distinct steps or actions
15
+ - Non-trivial and complex tasks - Tasks that require careful planning or multiple operations
16
+ - Plan mode - When using plan mode, create a task list to track the work
17
+ - User explicitly requests todo list - When the user directly asks you to use the todo list
18
+ - User provides multiple tasks - When users provide a list of things to be done (numbered or comma-separated)
19
+ - After receiving new instructions - Immediately capture user requirements as tasks
20
+ - When you start working on a task - Mark it as in_progress BEFORE beginning work
21
+ - After completing a task - Mark it as completed and add any new follow-up tasks discovered during implementation
22
+
23
+ ## When NOT to Use This Tool
24
+
25
+ Skip using this tool when:
26
+ - There is only a single, straightforward task
27
+ - The task is trivial and tracking it provides no organizational benefit
28
+ - The task can be completed in less than 3 trivial steps
29
+ - The task is purely conversational or informational
30
+
31
+ NOTE that you should not use this tool if there is only one trivial task to do. In this case you are better off just doing the task directly.
32
+
33
+ ## Task Fields
34
+
35
+ - **subject**: A brief, actionable title in imperative form (e.g., "Fix authentication bug in login flow")
36
+ - **description**: What needs to be done
37
+ - **activeForm** (optional): Present continuous form shown in the spinner when the task is in_progress (e.g., "Fixing authentication bug"). If omitted, the spinner shows the subject instead.
38
+
39
+ All tasks are created with status \`pending\`.
40
+
41
+ ## Tips
42
+
43
+ - Create tasks with clear, specific subjects that describe the outcome
44
+ - After creating tasks, use task_update to set up dependencies (blocks/blockedBy) if needed
45
+ - Check task_list first to avoid creating duplicate tasks
46
+ `;
47
+
48
+ export const TASK_UPDATE_DESCRIPTION = `Use this tool to update a task in the task list.
49
+
50
+ ## When to Use This Tool
51
+
52
+ **Mark tasks as resolved:**
53
+ - When you have completed the work described in a task
54
+ - When a task is no longer needed or has been superseded
55
+ - IMPORTANT: Always mark your assigned tasks as resolved when you finish them
56
+ - After resolving, call task_list to find your next task
57
+
58
+ - ONLY mark a task as completed when you have FULLY accomplished it
59
+ - If you encounter errors, blockers, or cannot finish, keep the task as in_progress
60
+ - When blocked, create a new task describing what needs to be resolved
61
+ - Never mark a task as completed if:
62
+ - Tests are failing
63
+ - Implementation is partial
64
+ - You encountered unresolved errors
65
+ - You couldn't find necessary files or dependencies
66
+
67
+ **Delete tasks:**
68
+ - When a task is no longer relevant or was created in error
69
+ - Setting status to \`deleted\` permanently removes the task
70
+
71
+ **Update task details:**
72
+ - When requirements change or become clearer
73
+ - When establishing dependencies between tasks
74
+
75
+ ## Fields You Can Update
76
+
77
+ - **status**: The task status (see Status Workflow below)
78
+ - **subject**: Change the task title (imperative form, e.g., "Run tests")
79
+ - **description**: Change the task description
80
+ - **activeForm**: Present continuous form shown in spinner when in_progress (e.g., "Running tests")
81
+ - **owner**: Change the task owner (agent name)
82
+ - **metadata**: Merge metadata keys into the task (set a key to null to delete it)
83
+ - **addBlocks**: Mark tasks that cannot start until this one completes
84
+ - **addBlockedBy**: Mark tasks that must complete before this one can start
85
+
86
+ ## Status Workflow
87
+
88
+ Status progresses: \`pending\` → \`in_progress\` → \`completed\`
89
+
90
+ Use \`deleted\` to permanently remove a task.
91
+
92
+ ## Staleness
93
+
94
+ Make sure to read a task's latest state using \`task_get\` before updating it.
95
+
96
+ ## Examples
97
+
98
+ Mark task as in progress when starting work:
99
+ \`\`\`json
100
+ {"taskId": "1", "status": "in_progress"}
101
+ \`\`\`
102
+
103
+ Mark task as completed after finishing work:
104
+ \`\`\`json
105
+ {"taskId": "1", "status": "completed"}
106
+ \`\`\`
107
+
108
+ Delete a task:
109
+ \`\`\`json
110
+ {"taskId": "1", "status": "deleted"}
111
+ \`\`\`
112
+
113
+ Claim a task by setting owner:
114
+ \`\`\`json
115
+ {"taskId": "1", "owner": "my-name"}
116
+ \`\`\`
117
+
118
+ Set up task dependencies:
119
+ \`\`\`json
120
+ {"taskId": "2", "addBlockedBy": ["1"]}
121
+ \`\`\`
122
+ `;
123
+
124
+ export const TASK_GET_DESCRIPTION = `Use this tool to retrieve a task by its ID from the task list.
125
+
126
+ ## When to Use This Tool
127
+
128
+ - When you need the full description and context before starting work on a task
129
+ - To understand task dependencies (what it blocks, what blocks it)
130
+ - After being assigned a task, to get complete requirements
131
+
132
+ ## Output
133
+
134
+ Returns full task details:
135
+ - **subject**: Task title
136
+ - **description**: Detailed requirements and context
137
+ - **status**: 'pending', 'in_progress', or 'completed'
138
+ - **blocks**: Tasks waiting on this one to complete
139
+ - **blockedBy**: Tasks that must complete before this one can start
140
+
141
+ ## Tips
142
+
143
+ - After fetching a task, verify its blockedBy list is empty before beginning work.
144
+ - Use task_list to see all tasks in summary form.
145
+ `;
146
+
147
+ export const TASK_LIST_DESCRIPTION = `Use this tool to list all tasks in the task list.
148
+
149
+ ## When to Use This Tool
150
+
151
+ - To see what tasks are available to work on (status: 'pending', no owner, not blocked)
152
+ - To check overall progress on the project
153
+ - To find tasks that are blocked and need dependencies resolved
154
+ - After completing a task, to check for newly unblocked work or claim the next available task
155
+ - **Prefer working on tasks in ID order** (lowest ID first) when multiple tasks are available, as earlier tasks often set up context for later ones
156
+
157
+ ## Output
158
+
159
+ Returns a summary of each task:
160
+ - **id**: Task identifier (use with task_get, task_update)
161
+ - **subject**: Brief description of the task
162
+ - **status**: 'pending', 'in_progress', or 'completed'
163
+ - **owner**: Agent ID if assigned, empty if available
164
+ - **blockedBy**: List of open task IDs that must be resolved first (tasks with blockedBy cannot be claimed until dependencies resolve)
165
+
166
+ Use task_get with a specific task ID to view full details including description and comments.
167
+ `;
168
+
169
+ export const TASK_CREATE_PARAMS = {
170
+ subject: `A brief title for the task`,
171
+ description: `What needs to be done`,
172
+ activeForm: `Present continuous form shown in spinner when in_progress (e.g., "Running tests")`,
173
+ metadata: `Arbitrary metadata to attach to the task`,
174
+ } as const;
175
+
176
+ export const TASK_UPDATE_PARAMS = {
177
+ taskId: `The ID of the task to update`,
178
+ subject: `New subject for the task`,
179
+ description: `New description for the task`,
180
+ activeForm: `Present continuous form shown in spinner when in_progress (e.g., "Running tests")`,
181
+ status: `New status for the task`,
182
+ addBlocks: `Task IDs that this task blocks`,
183
+ addBlockedBy: `Task IDs that block this task`,
184
+ owner: `New owner for the task`,
185
+ metadata: `Metadata keys to merge into the task. Set a key to null to delete it.`,
186
+ } as const;
187
+
188
+ export const TASK_GET_PARAMS = {
189
+ taskId: `The ID of the task to retrieve`,
190
+ } as const;